Browse Source

报修完善

xiongchao 3 years ago
parent
commit
97ca33c3e8

+ 24 - 3
platform-common/src/main/java/com/platform/common/constant/RedisKeyConstants.java

@@ -25,17 +25,38 @@ public class RedisKeyConstants {
      * 过期监控业务分隔符
      */
     public static final String EXPIRE_BUSINESS_SEP = "-";
+    /**
+     * 过期监控业务前缀-报修业务逻辑前缀
+     */
+    public static final String EXPIRE_BUSINESS_KEY_REPAIR= "business_repair";
     /**
      * 过期监控业务前缀-报修过期监听-第一阶段-推送给第二维修人
      */
-    public static final String EXPIRE_BUSINESS_KEY_REPAIR = "business_repair";
+    public static final String EXPIRE_BUSINESS_KEY_REPAIR_PREFIX = EXPIRE_BUSINESS_KEY_REPAIR + "_receive";
     /**
      * 过期监控业务前缀-报修过期监听-第一阶段-推送给第二维修人
      */
-    public static final String EXPIRE_BUSINESS_KEY_REPAIR_STEP_FIRST = "business_repair_step_first";
+    public static final String EXPIRE_BUSINESS_KEY_REPAIR_STEP_FIRST = EXPIRE_BUSINESS_KEY_REPAIR_PREFIX + "_first";
+    /**
+     * 过期监控业务前缀-报修过期监听-第二阶段-推送给牛
+     */
+    public static final String EXPIRE_BUSINESS_KEY_REPAIR_STEP_SECOND = EXPIRE_BUSINESS_KEY_REPAIR_PREFIX + "_second";
+
     /**
      * 过期监控业务前缀-报修过期监听-第二阶段-推送给牛
      */
-    public static final String EXPIRE_BUSINESS_KEY_REPAIR_STEP_SECOND = "business_repair_step_second";
+    public static final String EXPIRE_BUSINESS_KEY_REPAIR_OVERTIME_PREFIX = EXPIRE_BUSINESS_KEY_REPAIR + "_overtime";
+    /**
+     * 过期超时监控业务前缀-报修过期监听-超过3个小时没修好,升级给牛工
+     */
+    public static final String EXPIRE_BUSINESS_KEY_REPAIR_OVERTIME_STEP_FIRST = EXPIRE_BUSINESS_KEY_REPAIR_OVERTIME_PREFIX + "_first";
+    /**
+     * 过期超时监控业务前缀-报修过期监听-超过8个小时没修好,升级给相工
+     */
+    public static final String EXPIRE_BUSINESS_KEY_REPAIR_OVERTIME_STEP_SECOND = EXPIRE_BUSINESS_KEY_REPAIR_OVERTIME_PREFIX + "_second";
+    /**
+     * 过期超时监控业务前缀-报修过期监听-超过24 没修好,升级给田总
+     */
+    public static final String EXPIRE_BUSINESS_KEY_REPAIR_OVERTIME_STEP_THIRD = EXPIRE_BUSINESS_KEY_REPAIR_OVERTIME_PREFIX + "_third";
 
 }

+ 32 - 0
platform-rest/src/main/resources/templates/repairEmailOverTimeFirst.ftl

@@ -0,0 +1,32 @@
+<div>维修超过3小时未完成</div>
+<div>有报修单维修超过3小时未完成,等待您的处理:
+    <table border="1">
+        <tr>
+            <td>维修单号</td>
+            <td>${no}</td>
+        </tr>
+        <tr>
+            <td>设备名称</td>
+            <td>${sbName}</td>
+        </tr>
+        <tr>
+            <td>设备编号</td>
+            <td>${sbNo}</td>
+        </tr>
+        <tr>
+            <td>设备使用位置</td>
+            <td>${sbCph}</td>
+        </tr>
+        <tr>
+            <td>报修人</td>
+            <td>${actualUser}</td>
+        </tr>
+        <tr>
+            <td>故障描述</td>
+            <td>${repairDesc}</td>
+        </tr>
+    </table>
+</div>
+<div>
+    <a href="${url}">点击链接跳转处理报修单</a>
+</div>

+ 32 - 0
platform-rest/src/main/resources/templates/repairEmailOverTimeSecond.ftl

@@ -0,0 +1,32 @@
+<div>维修超过8小时未完成</div>
+<div>有报修单维修超过8小时未完成,等待您的处理:
+    <table border="1">
+        <tr>
+            <td>维修单号</td>
+            <td>${no}</td>
+        </tr>
+        <tr>
+            <td>设备名称</td>
+            <td>${sbName}</td>
+        </tr>
+        <tr>
+            <td>设备编号</td>
+            <td>${sbNo}</td>
+        </tr>
+        <tr>
+            <td>设备使用位置</td>
+            <td>${sbCph}</td>
+        </tr>
+        <tr>
+            <td>报修人</td>
+            <td>${actualUser}</td>
+        </tr>
+        <tr>
+            <td>故障描述</td>
+            <td>${repairDesc}</td>
+        </tr>
+    </table>
+</div>
+<div>
+    <a href="${url}">点击链接跳转处理报修单</a>
+</div>

+ 32 - 0
platform-rest/src/main/resources/templates/repairEmailOverTimeThird.ftl

@@ -0,0 +1,32 @@
+<div>维修超过三小时未完成</div>
+<div>有报修单维修超过24小时未完成,等待您的处理:
+    <table border="1">
+        <tr>
+            <td>维修单号</td>
+            <td>${no}</td>
+        </tr>
+        <tr>
+            <td>设备名称</td>
+            <td>${sbName}</td>
+        </tr>
+        <tr>
+            <td>设备编号</td>
+            <td>${sbNo}</td>
+        </tr>
+        <tr>
+            <td>设备使用位置</td>
+            <td>${sbCph}</td>
+        </tr>
+        <tr>
+            <td>报修人</td>
+            <td>${actualUser}</td>
+        </tr>
+        <tr>
+            <td>故障描述</td>
+            <td>${repairDesc}</td>
+        </tr>
+    </table>
+</div>
+<div>
+    <a href="${url}">点击链接跳转处理报修单</a>
+</div>

+ 96 - 34
platform-service/src/main/java/com/platform/service/redis/impl/RedisTaskService.java

@@ -73,7 +73,7 @@ public class RedisTaskService extends KeyExpirationEventMessageListener {
         }
         // 判断是否报修业务逻辑
         if(expiredKeyArr[0] == null || !expiredKeyArr[0].contains(RedisKeyConstants.EXPIRE_BUSINESS_KEY_REPAIR)){
-            logger.info("redis过期,非报修业务,不处理:");
+            logger.info("redis过期非报修业务,不处理。");
             return;
         }
 
@@ -83,45 +83,107 @@ public class RedisTaskService extends KeyExpirationEventMessageListener {
 
         SbInfoVO sbInfoVO = sbInfoService.getById(repairApplicationForm.getSbId());
         SysUserVO userVO = null;
-        if(!repairApplicationForm.getStatus().equals(RepairApplicationFormStatusEnum.NOT_ALLOCATED.getValue())){
-            return;
-        }
-        String minuteStr = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_WARN_MINUTE.name());
-        int minute = 30;// 默认30分钟
-        if(StringUtils.isNotBlank(minuteStr)){
-            minute = Integer.valueOf(minuteStr);
-        }
-        if(expiredKeyArr[0].equalsIgnoreCase(RedisKeyConstants.EXPIRE_BUSINESS_KEY_REPAIR_STEP_FIRST)){
-            if(StringUtils.isNotBlank(sbInfoVO.getRepairUserSecond())){
-                logger.info("处理第一阶段过期,发送消息给第二维修人");
-                userVO = sysUserService.selectUserVO(sbInfoVO.getRepairUserSecond());
-                sendMessage(repairId, repairApplicationForm,userVO,sbInfoVO,"repairEmailFirst.ftl");
-            }else{
-                logger.info("处理第一阶段过期,设备第二维修人未设置,无法发送消息,设备编号:" + sbInfoVO.getNo());
+
+        if(expiredKeyArr[0].equalsIgnoreCase(RedisKeyConstants.EXPIRE_BUSINESS_KEY_REPAIR_PREFIX)){
+            if(!repairApplicationForm.getStatus().equals(RepairApplicationFormStatusEnum.NOT_ALLOCATED.getValue())){
+                return;
             }
+            String minuteStr = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_WARN_MINUTE.name());
+            int minute = 30;// 默认30分钟
+            if(StringUtils.isNotBlank(minuteStr)){
+                minute = Integer.valueOf(minuteStr);
+            }
+            if(expiredKeyArr[0].equalsIgnoreCase(RedisKeyConstants.EXPIRE_BUSINESS_KEY_REPAIR_STEP_FIRST)){
+                if(StringUtils.isNotBlank(sbInfoVO.getRepairUserSecond())){
+                    logger.info("处理第一阶段过期,发送消息给第二维修人");
+                    userVO = sysUserService.selectUserVO(sbInfoVO.getRepairUserSecond());
+                    sendMessage(repairId, repairApplicationForm,userVO,sbInfoVO,"repairEmailFirst.ftl");
+                }else{
+                    logger.info("处理第一阶段过期,设备第二维修人未设置,无法发送消息,设备编号:" + sbInfoVO.getNo());
+                }
 
-            // redis登记2级监控
-            RedisUtils.setString(RedisKeyConstants.EXPIRE_BUSINESS_KEY_REPAIR_STEP_SECOND + RedisKeyConstants.EXPIRE_BUSINESS_SEP + repairId,repairId,minute, TimeUnit.MINUTES);
-            return;
-        }
+                // redis登记2级监控
+                RedisUtils.setString(RedisKeyConstants.EXPIRE_BUSINESS_KEY_REPAIR_STEP_SECOND + RedisKeyConstants.EXPIRE_BUSINESS_SEP + repairId,repairId,minute, TimeUnit.MINUTES);
+                return;
+            }
 
-        // 发送给牛工,通过角色来查询
-        if(expiredKeyArr[0].equalsIgnoreCase(RedisKeyConstants.EXPIRE_BUSINESS_KEY_REPAIR_STEP_SECOND)){
-            logger.info("处理第二阶段过期,发送消息给牛");
-            List<SysUser> userList = sysUserService.getRepairUser(new SysUserDTO());
-            List<SysUser> filterUsers = userList.stream().filter(item -> item.getWorkFlag()).collect(Collectors.toList());
-            if (CollectionUtil.isEmpty(filterUsers)) {
-                filterUsers = userList.stream().filter(item -> item.getIdentityType().equals(SysUserIdentityType.WXZGMANAGER.getValue())).collect(Collectors.toList());
+            // 发送给牛工,通过角色来查询
+            if(expiredKeyArr[0].equalsIgnoreCase(RedisKeyConstants.EXPIRE_BUSINESS_KEY_REPAIR_STEP_SECOND)){
+                logger.info("处理第二阶段过期,发送消息给牛");
+                List<SysUser> userList = sysUserService.getRepairUser(new SysUserDTO());
+                List<SysUser> filterUsers = userList.stream().filter(item -> item.getWorkFlag()).collect(Collectors.toList());
+                if (CollectionUtil.isEmpty(filterUsers)) {
+                    filterUsers = userList.stream().filter(item -> item.getIdentityType().equals(SysUserIdentityType.WXZGMANAGER.getValue())).collect(Collectors.toList());
+                }
+                if (CollectionUtil.isEmpty(filterUsers)) {
+                    logger.info("处理第三阶段过期,维修主管领导身份未设置,无法发送消息,设备编号:" + sbInfoVO.getNo());
+                    return;
+                }else{
+                    SysUser user = filterUsers.get(0);
+                    // 通过给当天值班维修人员
+                    sendMessage(repairId, repairApplicationForm,BeanConverterUtil.copyObjectProperties(user, SysUserVO.class),sbInfoVO, "repairEmailSecond.ftl");
+                }
+                return;
             }
-            if (CollectionUtil.isEmpty(filterUsers)) {
-                logger.info("处理第三阶段过期,维修主管领导身份未设置,无法发送消息,设备编号:" + sbInfoVO.getNo());
+        }else{
+            if(repairApplicationForm.getStatus().compareTo(RepairApplicationFormStatusEnum.PROCESSING.getValue())>0){
+                return;
+            }
+            // 超时3小时发送给牛工,通过角色来查询
+            if(expiredKeyArr[0].equalsIgnoreCase(RedisKeyConstants.EXPIRE_BUSINESS_KEY_REPAIR_OVERTIME_STEP_FIRST)){
+                logger.info("超时3小时发送给牛工");
+                List<SysUser> userList = sysUserService.getRepairUser(new SysUserDTO());
+                List<SysUser> filterUsers = userList.stream().filter(item -> item.getWorkFlag()).collect(Collectors.toList());
+                if (CollectionUtil.isEmpty(filterUsers)) {
+                    filterUsers = userList.stream().filter(item -> item.getIdentityType().equals(SysUserIdentityType.WXZGMANAGER.getValue())).collect(Collectors.toList());
+                }
+                if (CollectionUtil.isEmpty(filterUsers)) {
+                    logger.info("超时3小时发送给牛工,维修主管领导身份未设置,无法发送消息,设备编号:" + sbInfoVO.getNo());
+                    return;
+                }else{
+                    SysUser user = filterUsers.get(0);
+                    // 通过给当天值班维修人员
+                    sendMessage(repairId, repairApplicationForm,BeanConverterUtil.copyObjectProperties(user, SysUserVO.class),sbInfoVO, "repairEmailOverTimeFirst.ftl");
+                }
+                return;
+            }
+            // 超过8个小时没修好,升级给相工,通过角色来查询
+            if(expiredKeyArr[0].equalsIgnoreCase(RedisKeyConstants.EXPIRE_BUSINESS_KEY_REPAIR_OVERTIME_STEP_SECOND)){
+                logger.info("处理第二阶段过期,发送消息给牛");
+                List<SysUser> userList = sysUserService.getRepairUser(new SysUserDTO());
+                List<SysUser> filterUsers = userList.stream().filter(item -> item.getWorkFlag()).collect(Collectors.toList());
+                if (CollectionUtil.isEmpty(filterUsers)) {
+                    filterUsers = userList.stream().filter(item -> item.getIdentityType().equals(SysUserIdentityType.WXZGMANAGER.getValue())).collect(Collectors.toList());
+                }
+                if (CollectionUtil.isEmpty(filterUsers)) {
+                    logger.info("处理第三阶段过期,维修主管领导身份未设置,无法发送消息,设备编号:" + sbInfoVO.getNo());
+                    return;
+                }else{
+                    SysUser user = filterUsers.get(0);
+                    // 通过给当天值班维修人员
+                    sendMessage(repairId, repairApplicationForm,BeanConverterUtil.copyObjectProperties(user, SysUserVO.class),sbInfoVO, "repairEmailOverTimeSecond.ftl");
+                }
+                return;
+            }
+
+            // 超时超过24 没修好,升级给田总,通过角色来查询
+            if(expiredKeyArr[0].equalsIgnoreCase(RedisKeyConstants.EXPIRE_BUSINESS_KEY_REPAIR_OVERTIME_STEP_THIRD)){
+                logger.info("处理第二阶段过期,发送消息给牛");
+                List<SysUser> userList = sysUserService.getRepairUser(new SysUserDTO());
+                List<SysUser> filterUsers = userList.stream().filter(item -> item.getWorkFlag()).collect(Collectors.toList());
+                if (CollectionUtil.isEmpty(filterUsers)) {
+                    filterUsers = userList.stream().filter(item -> item.getIdentityType().equals(SysUserIdentityType.WXZGMANAGER.getValue())).collect(Collectors.toList());
+                }
+                if (CollectionUtil.isEmpty(filterUsers)) {
+                    logger.info("处理第三阶段过期,维修主管领导身份未设置,无法发送消息,设备编号:" + sbInfoVO.getNo());
+                    return;
+                }else{
+                    SysUser user = filterUsers.get(0);
+                    // 通过给当天值班维修人员
+                    sendMessage(repairId, repairApplicationForm,BeanConverterUtil.copyObjectProperties(user, SysUserVO.class),sbInfoVO, "repairEmailOverTimeThird.ftl");
+                }
                 return;
-            }else{
-                SysUser user = filterUsers.get(0);
-                // 通过给当天值班维修人员
-                sendMessage(repairId, repairApplicationForm,BeanConverterUtil.copyObjectProperties(user, SysUserVO.class),sbInfoVO, "repairEmailSecond.ftl");
             }
-            return;
         }
     }
 

+ 6 - 0
platform-service/src/main/java/com/platform/service/repair/impl/RepairApplicationFormServiceImpl.java

@@ -307,6 +307,12 @@ public class RepairApplicationFormServiceImpl extends BaseServiceImpl<RepairAppl
             minute = Integer.valueOf(minuteStr);
         }
         RedisUtils.setString(RedisKeyConstants.EXPIRE_BUSINESS_KEY_REPAIR_STEP_FIRST + RedisKeyConstants.EXPIRE_BUSINESS_SEP + model.getId(),model.getId(),minute, TimeUnit.MINUTES);
+
+        // 维修时间升级流程:超过3个小时没修好,升级给牛工,超过8个小时没修好,升级给相工,超过24 没修好,升级给田总,现在把三阶段的人员位置留好,可以先暂时升级给我,后期再改为具体的人。
+        RedisUtils.setString(RedisKeyConstants.EXPIRE_BUSINESS_KEY_REPAIR_STEP_FIRST + RedisKeyConstants.EXPIRE_BUSINESS_SEP + model.getId(),model.getId(),3, TimeUnit.HOURS);
+        RedisUtils.setString(RedisKeyConstants.EXPIRE_BUSINESS_KEY_REPAIR_STEP_FIRST + RedisKeyConstants.EXPIRE_BUSINESS_SEP + model.getId(),model.getId(),8, TimeUnit.HOURS);
+        RedisUtils.setString(RedisKeyConstants.EXPIRE_BUSINESS_KEY_REPAIR_STEP_FIRST + RedisKeyConstants.EXPIRE_BUSINESS_SEP + model.getId(),model.getId(),24, TimeUnit.HOURS);
+
         return form;
     }