Преглед на файлове

Merge remote-tracking branch 'origin/demo_' into demo_

hfxc226 преди 2 години
родител
ревизия
554d846419
променени са 36 файла, в които са добавени 1484 реда и са изтрити 18 реда
  1. 9 0
      platform-common/src/main/java/com/platform/common/constant/RedisKeyConstants.java
  2. 5 0
      platform-dao/src/main/java/com/platform/dao/dto/fill/FillGatherDTO.java
  3. 37 0
      platform-dao/src/main/java/com/platform/dao/dto/fill/FillGatherTaskDTO.java
  4. 90 0
      platform-dao/src/main/java/com/platform/dao/dto/fill/FillUpdateRecordDTO.java
  5. 5 0
      platform-dao/src/main/java/com/platform/dao/entity/fill/FillGather.java
  6. 15 0
      platform-dao/src/main/java/com/platform/dao/entity/fill/FillGatherTask.java
  7. 79 0
      platform-dao/src/main/java/com/platform/dao/entity/fill/FillUpdateRecord.java
  8. 42 0
      platform-dao/src/main/java/com/platform/dao/enums/FillGatherTaskStatusEnum.java
  9. 42 0
      platform-dao/src/main/java/com/platform/dao/enums/FillUpdateRecordTypeEnum.java
  10. 9 0
      platform-dao/src/main/java/com/platform/dao/enums/SysRoleCodeEnum.java
  11. 7 1
      platform-dao/src/main/java/com/platform/dao/enums/WorkplaceBacklogDetailTypeEnum.java
  12. 5 1
      platform-dao/src/main/java/com/platform/dao/enums/WorkplaceBacklogTypeEnum.java
  13. 2 0
      platform-dao/src/main/java/com/platform/dao/mapper/fill/FillGatherTaskDetailMapper.java
  14. 26 0
      platform-dao/src/main/java/com/platform/dao/mapper/fill/FillUpdateRecordMapper.java
  15. 44 0
      platform-dao/src/main/java/com/platform/dao/util/MessageTemplateUtil.java
  16. 82 0
      platform-dao/src/main/java/com/platform/dao/vo/export/fill/ExportFillUpdateRecordVO.java
  17. 4 0
      platform-dao/src/main/java/com/platform/dao/vo/query/fill/FillGatherTaskDetailVO.java
  18. 16 0
      platform-dao/src/main/java/com/platform/dao/vo/query/fill/FillGatherTaskVO.java
  19. 10 1
      platform-dao/src/main/java/com/platform/dao/vo/query/fill/FillGatherVO.java
  20. 2 0
      platform-dao/src/main/java/com/platform/dao/vo/query/fill/FillInfoVO.java
  21. 73 0
      platform-dao/src/main/java/com/platform/dao/vo/query/fill/FillUpdateRecordVO.java
  22. 6 0
      platform-dao/src/main/resources/mapper/fill/FillGatherTaskDetailMapper.xml
  23. 76 0
      platform-dao/src/main/resources/mapper/fill/FillUpdateRecordMapper.xml
  24. 2 2
      platform-rest/src/main/java/com/platform/rest/controller/fill/FillGatherController.java
  25. 52 2
      platform-rest/src/main/java/com/platform/rest/controller/fill/FillGatherTaskController.java
  26. 141 0
      platform-rest/src/main/java/com/platform/rest/controller/fill/FillUpdateRecordController.java
  27. 17 0
      platform-rest/src/main/java/com/platform/rest/controller/mobile/IgnoreController.java
  28. 18 1
      platform-rest/src/main/java/com/platform/rest/controller/upms/SysUserController.java
  29. 2 0
      platform-service/src/main/java/com/platform/service/fill/FillGatherService.java
  30. 41 2
      platform-service/src/main/java/com/platform/service/fill/FillGatherTaskService.java
  31. 35 0
      platform-service/src/main/java/com/platform/service/fill/FillUpdateRecordService.java
  32. 23 0
      platform-service/src/main/java/com/platform/service/fill/impl/FillGatherServiceImpl.java
  33. 289 8
      platform-service/src/main/java/com/platform/service/fill/impl/FillGatherTaskServiceImpl.java
  34. 50 0
      platform-service/src/main/java/com/platform/service/fill/impl/FillUpdateRecordServiceImpl.java
  35. 127 0
      platform-service/src/main/java/com/platform/service/redis/impl/RedisFillTaskService.java
  36. 1 0
      platform-service/src/main/java/com/platform/service/redis/impl/RedisTaskService.java

+ 9 - 0
platform-common/src/main/java/com/platform/common/constant/RedisKeyConstants.java

@@ -34,10 +34,19 @@ public class RedisKeyConstants {
      * 过期监控业务前缀-报修业务逻辑前缀
      */
     public static final String EXPIRE_BUSINESS_KEY_REPAIR= "business_repair";
+    /**
+     * 过期监控业务前缀-巡检业务逻辑前缀
+     */
+    public static final String EXPIRE_BUSINESS_KEY_FILL= "business_fill";
     /**
      * 过期监控业务前缀-报修过期监听-第一阶段-推送给第二维修人
      */
     public static final String EXPIRE_BUSINESS_KEY_REPAIR_PREFIX = EXPIRE_BUSINESS_KEY_REPAIR + "_receive";
+
+    /**
+     * 过期监控业务前缀-巡检过期监听-巡检人和主管
+     */
+    public static final String EXPIRE_BUSINESS_KEY_FILL_PREFIX = EXPIRE_BUSINESS_KEY_FILL + "_fill";
     /**
      * 过期监控业务前缀-报修过期监听-第一阶段-推送给第二维修人
      */

+ 5 - 0
platform-dao/src/main/java/com/platform/dao/dto/fill/FillGatherDTO.java

@@ -95,4 +95,9 @@ public class FillGatherDTO extends BaseDTO implements Serializable {
      */
     private List<String> infoIds;
 
+    /**
+     * 频次周期(天)
+     */
+    private Integer period;
+
 }

+ 37 - 0
platform-dao/src/main/java/com/platform/dao/dto/fill/FillGatherTaskDTO.java

@@ -2,6 +2,8 @@ package com.platform.dao.dto.fill;
 
 import com.platform.common.bean.BaseDTO;
 import com.platform.common.validation.group.UpdateGroup;
+import com.platform.dao.entity.fill.FillGatherTask;
+import com.platform.dao.entity.fill.FillGatherTaskDetail;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -10,6 +12,7 @@ import javax.validation.constraints.*;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.time.LocalDate;
+import java.util.List;
 
 /**
  * @Description 巡检任务表DTO
@@ -26,6 +29,10 @@ public class FillGatherTaskDTO extends BaseDTO implements Serializable {
      * 主键
      */
     private String id;
+    /**
+     * 标准ID
+     */
+    private String gatherId;
     /**
      * 巡检人
      */
@@ -111,4 +118,34 @@ public class FillGatherTaskDTO extends BaseDTO implements Serializable {
      */
     private String keyword;
 
+    /**
+     * 勾选的设备ID
+     */
+    private List<String> sbIds;
+
+    /**
+     * 暂停类型 1 暂停 2 取消暂停
+     */
+    private Integer pauseType;
+
+    /**
+     * 增加延时时间
+     */
+    private Integer extrahours;
+
+    /**
+     * 转派目标
+     */
+    private String anotherChecker;
+
+    /**
+     * 具体填报信息
+     */
+    private List<FillGatherTaskDetailDTO> details;
+
+    /**
+     * 巡检任务周期频次 (天)
+     */
+    private Integer period;
+
 }

+ 90 - 0
platform-dao/src/main/java/com/platform/dao/dto/fill/FillUpdateRecordDTO.java

@@ -0,0 +1,90 @@
+package com.platform.dao.dto.fill;
+
+import com.platform.common.bean.BaseDTO;
+import com.platform.common.validation.group.UpdateGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.*;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalDate;
+
+/**
+ * @Description 巡检修改记录表DTO
+ * @Author lsq
+ * @Date 2022-09-14 08:40:28
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+public class FillUpdateRecordDTO extends BaseDTO implements Serializable {
+
+    /**
+     * 主键
+     */
+    private String id;
+    /**
+     * 巡检人ID
+     */
+    private String createdUserId;
+    /**
+     * 巡检人
+     */
+    private String createdUserName;
+    /**
+     * 记录时间
+     */
+    private LocalDateTime createdTime;
+    /**
+     * 记录时间开始
+     */
+    private LocalDateTime createdTimeStart;
+    /**
+     * 记录时间结束
+     */
+    private LocalDateTime createdTimeEnd;
+    /**
+     * 主管ID
+     */
+    private String updateUserId;
+    /**
+     * 更新人
+     */
+    private String updateUserName;
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+    /**
+     * 更新时间开始
+     */
+    private LocalDateTime updateTimeStart;
+    /**
+     * 更新时间结束
+     */
+    private LocalDateTime updateTimeEnd;
+    /**
+     * 巡检任务ID
+     */
+    private String taskId;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 延迟小时
+     */
+    private Integer lateHour;
+    /**
+     * 关键字
+     */
+    private String keyword;
+    /**
+     * 类型 1 超时  2 暂停  3 延时  4 修改
+     */
+    private Integer type;
+
+}

+ 5 - 0
platform-dao/src/main/java/com/platform/dao/entity/fill/FillGather.java

@@ -75,4 +75,9 @@ public class FillGather implements Serializable {
     @Transient
     private DataScope dataScope;
 
+    /**
+     * 频次周期(天)
+     */
+    private Integer period;
+
 }

+ 15 - 0
platform-dao/src/main/java/com/platform/dao/entity/fill/FillGatherTask.java

@@ -29,6 +29,11 @@ public class FillGatherTask implements Serializable {
      */
     @Id
     private String id;
+
+    /**
+     * 标准ID
+     */
+    private String gatherId;
     /**
      * 巡检人
      */
@@ -94,6 +99,16 @@ public class FillGatherTask implements Serializable {
      */
     private String name;
 
+    /**
+     * 任务类型 1 派发任务  2 转派任务
+     */
+    private Integer taskType;
+
+    /**
+     * 巡检任务周期频次 (天)
+     */
+    private Integer period;
+
     /**
      * 数据权限
      */

+ 79 - 0
platform-dao/src/main/java/com/platform/dao/entity/fill/FillUpdateRecord.java

@@ -0,0 +1,79 @@
+package com.platform.dao.entity.fill;
+
+import lombok.Data;
+
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalDate;
+
+import lombok.experimental.Accessors;
+import com.platform.common.bean.DataScope;
+
+import javax.persistence.Transient;
+
+/**
+ * @Description 巡检修改记录表实体类
+ * @Author lsq
+ * @Date 2022-09-14 08:40:28
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Data
+@Accessors(chain = true)
+@Table(name = "t_fill_update_record")
+public class FillUpdateRecord implements Serializable {
+
+    /**
+     * 主键
+     */
+    @Id
+    private String id;
+    /**
+     * 类型 1 超时  2 暂停  3 延时  4 修改
+     */
+    private Integer type;
+    /**
+     * 巡检人ID
+     */
+    private String createdUserId;
+    /**
+     * 巡检人
+     */
+    private String createdUserName;
+    /**
+     * 记录时间
+     */
+    private LocalDateTime createdTime;
+    /**
+     * 主管ID
+     */
+    private String updateUserId;
+    /**
+     * 更新人
+     */
+    private String updateUserName;
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+    /**
+     * 巡检任务ID
+     */
+    private String taskId;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 延迟小时
+     */
+    private Integer lateHour;
+
+    /**
+     * 数据权限
+     */
+    @Transient
+    private DataScope dataScope;
+
+}

+ 42 - 0
platform-dao/src/main/java/com/platform/dao/enums/FillGatherTaskStatusEnum.java

@@ -0,0 +1,42 @@
+package com.platform.dao.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @Description 报修单状态枚举
+ * @Author liuyu
+ * @Date 2020/05/05
+ * @Version Copyright (c) 2020,合肥乾元坤合科技有限公司 All rights reserved.
+ * 0 待接单 1 巡检中 2 完成  3 延迟  4 暂停
+ */
+@Getter
+@AllArgsConstructor
+public enum FillGatherTaskStatusEnum {
+    /**
+     * 待接单
+     */
+    NOT_ALLOCATED(0),
+    /**
+     * 巡检中
+     */
+    PROCESSING(1),
+    /**
+     * 巡检完成
+     */
+    COMPLETED(2),
+    /**
+     * 巡检超时
+     */
+    OVER_TIME(3),
+    /**
+     * 巡检延时
+     */
+    LATE(4),
+    /**
+     * 巡检暂停
+     */
+    PAUSE(5),
+    ;
+    private final Integer value;
+}

+ 42 - 0
platform-dao/src/main/java/com/platform/dao/enums/FillUpdateRecordTypeEnum.java

@@ -0,0 +1,42 @@
+package com.platform.dao.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @Description 报修单状态枚举
+ * @Author liuyu
+ * @Date 2020/05/05
+ * @Version Copyright (c) 2020,合肥乾元坤合科技有限公司 All rights reserved.
+ * 0 待接单 1 巡检中 2 完成  3 延迟  4 暂停
+ */
+@Getter
+@AllArgsConstructor
+public enum FillUpdateRecordTypeEnum {
+    /**
+     * 超时
+     */
+    OVER_TIME(1),
+    /**
+     * 暂停
+     */
+    PAUSE(2),
+    /**
+     * 延时
+     */
+    LATE(3),
+    /**
+     * 修改
+     */
+    UPDATE(4),
+    /**
+     * 暂停结束
+     */
+    PAUSE_END(5),
+    /**
+     * 转派
+     */
+    DISPATCH(6),
+    ;
+    private final Integer value;
+}

+ 9 - 0
platform-dao/src/main/java/com/platform/dao/enums/SysRoleCodeEnum.java

@@ -149,6 +149,15 @@ public enum SysRoleCodeEnum {
      * 维修主管--区域负责人
      */
     MM,
+
+    /**
+     * 巡检人
+     */
+    FILL_CHECKER,
+    /**
+     * 巡检主管
+     */
+    FILL_CHECKER_LEADER,
     ;
 
 }

+ 7 - 1
platform-dao/src/main/java/com/platform/dao/enums/WorkplaceBacklogDetailTypeEnum.java

@@ -107,7 +107,13 @@ public enum WorkplaceBacklogDetailTypeEnum {
      */
     PURCHASE_WUZI_MESSAGE(502, "询价审批结果提醒"),
     SPARE_MIN_WARN(400, "备件不足提醒"),
-    SPARE_STORE_MIN_WARN(401, "仓库备件不足提醒");
+    SPARE_STORE_MIN_WARN(401, "仓库备件不足提醒"),
+
+    /**
+     * 巡检
+     */
+    FILL_TASK_NOTICE(201, "巡检通知"),
+    FILL_TASK_OVERTIME_NOTICE(202, "巡检超时通知");
     private Integer value;
 
     private final String description;

+ 5 - 1
platform-dao/src/main/java/com/platform/dao/enums/WorkplaceBacklogTypeEnum.java

@@ -80,7 +80,11 @@ public enum WorkplaceBacklogTypeEnum {
     /**
      * 仓库最低库存提醒
      */
-    SPARE_STORE_MIN_WARN(401) ;
+    SPARE_STORE_MIN_WARN(401),
+    /**
+     * 巡检
+     */
+    FILL_TASK(203);
     private Integer value;
 
 }

+ 2 - 0
platform-dao/src/main/java/com/platform/dao/mapper/fill/FillGatherTaskDetailMapper.java

@@ -23,4 +23,6 @@ public interface FillGatherTaskDetailMapper extends MyMapper<FillGatherTaskDetai
      */
     List<FillGatherTaskDetailVO> selectList(FillGatherTaskDetailDTO dto);
 
+    List<FillGatherTaskDetailVO> selectVOByTaskId(String taskId);
+
 }

+ 26 - 0
platform-dao/src/main/java/com/platform/dao/mapper/fill/FillUpdateRecordMapper.java

@@ -0,0 +1,26 @@
+package com.platform.dao.mapper.fill;
+
+import com.platform.dao.dto.fill.FillUpdateRecordDTO;
+import com.platform.dao.config.MyMapper;
+import com.platform.dao.entity.fill.FillUpdateRecord;
+import com.platform.dao.vo.query.fill.FillUpdateRecordVO;
+import org.springframework.stereotype.Component;
+import java.util.List;
+
+
+/**
+ * @Description 巡检修改记录表 mapper
+ * @Author lsq
+ * @Date 2022-09-14 08:40:28
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Component
+public interface FillUpdateRecordMapper extends MyMapper<FillUpdateRecord> {
+    /**
+     * 分页查询
+     * @param dto
+     * @return
+     */
+    List<FillUpdateRecordVO> selectList(FillUpdateRecordDTO dto);
+
+}

+ 44 - 0
platform-dao/src/main/java/com/platform/dao/util/MessageTemplateUtil.java

@@ -127,6 +127,50 @@ public class MessageTemplateUtil {
         return String.format("报修【%s】已超过%d小时未完成", id);
     }
 
+    /**
+     * 巡检任务--巡检人通知
+     * @param name
+     * @return
+     */
+    public static String getFillGatherTaskNoticeForChecker(String name) {
+        return String.format("你有一条新的巡检任务【%s】", name);
+    }
+    /**
+     * 巡检任务--巡检人超时通知
+     * @param name
+     * @return
+     */
+    public static String getFillGatherTaskOverTimeForChecker(String name) {
+        return String.format("你的巡检任务【%s】,已超时!", name);
+    }
+
+    /**
+     * 巡检任务--巡检主管超时通知
+     * @param name
+     * @return
+     */
+    public static String getFillGatherTaskOverTimeForLeader(String name,String user) {
+        return String.format("你监管的巡检任务【%s】,已超时!巡检人【%s】", name,user);
+    }
+
+    /**
+     * 巡检任务--巡检主管通知
+     * @param name
+     * @return
+     */
+    public static String getFillGatherTaskNoticeForLeader(String name,String user) {
+        return String.format("有一条新的巡检任务【%s】,巡检人【%s】", name,user);
+    }
+
+    /**
+     * 巡检任务--巡检人超时通知
+     * @param name
+     * @return
+     */
+    public static String getFillGatherTaskOverTimeForLeader(String name) {
+        return String.format("你的巡检任务【%s】,已超时", name);
+    }
+
     public static String getSpareWarnNotic(int month, String str, int num) {
         return String.format("近【%s】个月内有【%s】种备件不足,请注意:明细如下:" + System.getProperty("line.separator") + "【%s】", month, num, str);
     }

+ 82 - 0
platform-dao/src/main/java/com/platform/dao/vo/export/fill/ExportFillUpdateRecordVO.java

@@ -0,0 +1,82 @@
+package com.platform.dao.vo.export.fill;
+
+import com.platform.office.annotation.Excel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalDate;
+
+/**
+ * @Description 巡检修改记录表导出VO
+ * @Author lsq
+ * @Date 2022-09-14 08:40:28
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Data
+@Accessors(chain = true)
+public class ExportFillUpdateRecordVO implements Serializable {
+
+    /**
+     * 主键
+     */
+    @Excel(name = "主键", orderNum = "1")
+    private String id;
+
+    /**
+     * 巡检人ID
+     */
+    @Excel(name = "巡检人ID", orderNum = "2")
+    private String createdUserId;
+
+    /**
+     * 巡检人
+     */
+    @Excel(name = "巡检人", orderNum = "3")
+    private String createdUserName;
+
+    /**
+     * 记录时间
+     */
+    @Excel(name = "记录时间", orderNum = "4")
+    private LocalDateTime createdTime;
+
+    /**
+     * 主管ID
+     */
+    @Excel(name = "主管ID", orderNum = "5")
+    private String updateUserId;
+
+    /**
+     * 更新人
+     */
+    @Excel(name = "更新人", orderNum = "6")
+    private String updateUserName;
+
+    /**
+     * 更新时间
+     */
+    @Excel(name = "更新时间", orderNum = "7")
+    private LocalDateTime updateTime;
+
+    /**
+     * 巡检任务ID
+     */
+    @Excel(name = "巡检任务ID", orderNum = "8")
+    private String taskId;
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注", orderNum = "9")
+    private String remark;
+
+    /**
+     * 延迟小时
+     */
+    @Excel(name = "延迟小时", orderNum = "10")
+    private Integer lateHour;
+
+
+}

+ 4 - 0
platform-dao/src/main/java/com/platform/dao/vo/query/fill/FillGatherTaskDetailVO.java

@@ -68,5 +68,9 @@ public class FillGatherTaskDetailVO extends BaseVO implements Serializable {
      */
     private Integer status;
 
+    private String sbName; // 设备名称
+    private String positionName; // 设备位置
+    private String sbNo; // 设备编号
+
 
 }

+ 16 - 0
platform-dao/src/main/java/com/platform/dao/vo/query/fill/FillGatherTaskVO.java

@@ -1,5 +1,8 @@
 package com.platform.dao.vo.query.fill;
 
+import com.platform.dao.entity.fill.FillGather;
+import com.platform.dao.entity.fill.FillGatherInfo;
+import com.platform.dao.entity.fill.FillInfo;
 import lombok.Data;
 import com.platform.common.bean.BaseVO;
 import com.platform.common.bean.BaseDTO;
@@ -11,6 +14,7 @@ import javax.validation.constraints.*;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.time.LocalDate;
+import java.util.List;
 
 /**
  * @Description 巡检任务表VO结果类
@@ -92,5 +96,17 @@ public class FillGatherTaskVO extends BaseVO implements Serializable {
      */
     private String name;
 
+    /**
+     * 标准ID
+     */
+    private String gatherId;
+
+    private List<FillGatherTaskDetailVO> details;
+
+    /**
+     * 巡检任务周期频次 (天)
+     */
+    private Integer period;
+
 
 }

+ 10 - 1
platform-dao/src/main/java/com/platform/dao/vo/query/fill/FillGatherVO.java

@@ -1,12 +1,14 @@
 package com.platform.dao.vo.query.fill;
 
 import com.platform.common.bean.BaseVO;
+import com.platform.dao.entity.fill.FillInfo;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * @Description 填报项目VO结果类
@@ -66,5 +68,12 @@ public class FillGatherVO extends BaseVO implements Serializable {
      */
     private LocalDateTime updateTime;
 
-
+    /**
+     * 频次周期(天)
+     */
+    private Integer period;
+    /**
+     * 巡检内容项集合
+     */
+    private List<FillInfo> fillInfos;
 }

+ 2 - 0
platform-dao/src/main/java/com/platform/dao/vo/query/fill/FillInfoVO.java

@@ -96,4 +96,6 @@ public class FillInfoVO extends BaseVO implements Serializable {
 
     private String selectValue;
 
+    private String fillValue;
+
 }

+ 73 - 0
platform-dao/src/main/java/com/platform/dao/vo/query/fill/FillUpdateRecordVO.java

@@ -0,0 +1,73 @@
+package com.platform.dao.vo.query.fill;
+
+import lombok.Data;
+import com.platform.common.bean.BaseVO;
+import com.platform.common.bean.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.*;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalDate;
+
+/**
+ * @Description 巡检修改记录表VO结果类
+ * @Author lsq
+ * @Date 2022-09-14 08:40:28
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+public class FillUpdateRecordVO extends BaseVO implements Serializable {
+
+    /**
+     * 主键
+     */
+    private String id;
+    /**
+     * 巡检人ID
+     */
+    private String createdUserId;
+    /**
+     * 巡检人
+     */
+    private String createdUserName;
+    /**
+     * 记录时间
+     */
+    private LocalDateTime createdTime;
+    /**
+     * 主管ID
+     */
+    private String updateUserId;
+    /**
+     * 更新人
+     */
+    private String updateUserName;
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+    /**
+     * 巡检任务ID
+     */
+    private String taskId;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 延迟小时
+     */
+    private Integer lateHour;
+
+    /**
+     * 类型 1 超时  2 暂停  3 延时  4 修改
+     */
+    private Integer type;
+
+
+}

+ 6 - 0
platform-dao/src/main/resources/mapper/fill/FillGatherTaskDetailMapper.xml

@@ -78,4 +78,10 @@
             <include refid="List_Condition"/>
         </where>
     </select>
+
+    <select id="selectVOByTaskId" parameterType="java.lang.String" resultType="com.platform.dao.vo.query.fill.FillGatherTaskDetailVO">
+        select fill.*,sb.name as sbName,sp.name as positionName,sb.no as sbNo from t_fill_gather_task_detail as fill
+        join t_sb_info sb on fill.sb_id = sb.id join t_sb_position sp on sb.position_id = sp.id
+        where fill.task_id = #{taskId}
+    </select>
 </mapper>

+ 76 - 0
platform-dao/src/main/resources/mapper/fill/FillUpdateRecordMapper.xml

@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.platform.dao.mapper.fill.FillUpdateRecordMapper">
+    <sql id="Base_Column_List">
+                             fill.id,
+                                     fill.created_user_id,
+                                     fill.created_user_name,
+                                     fill.created_time,
+                                     fill.update_user_id,
+                                     fill.update_user_name,
+                                     fill.update_time,
+                                     fill.task_id,
+                                     fill.remark,
+                                     fill.late_hour
+                        </sql>
+    <sql id="Ref_Column_List">
+                                                                                                                                                                                                                                                                                                                                                 fill.task_id,
+                                     fill.remark,
+                                     fill.late_hour
+                                </sql>
+    <sql id="List_Condition">
+        <if test="id != null and id != ''">
+            and fill.id = #{id}
+        </if>
+        <if test="createdUserId != null and createdUserId != ''">
+            and fill.created_user_id = #{createdUserId}
+        </if>
+        <if test="createdUserName != null and createdUserName != ''">
+            and fill.created_user_name = #{createdUserName}
+        </if>
+        <if test="createdTimeStart != null">
+            and fill.created_time <![CDATA[>=]]>; #{createdTimeStart}
+        </if>
+        <if test="createdTimeEnd != null">
+            and fill.created_time <![CDATA[<=]]> #{createdTimeEnd}
+        </if>
+        <if test="createdTime != null">
+            and fill.created_time = #{createdTime}
+        </if>
+        <if test="updateUserId != null and updateUserId != ''">
+            and fill.update_user_id = #{updateUserId}
+        </if>
+        <if test="updateUserName != null and updateUserName != ''">
+            and fill.update_user_name = #{updateUserName}
+        </if>
+        <if test="updateTimeStart != null">
+            and fill.update_time <![CDATA[>=]]>; #{updateTimeStart}
+        </if>
+        <if test="updateTimeEnd != null">
+            and fill.update_time <![CDATA[<=]]> #{updateTimeEnd}
+        </if>
+        <if test="updateTime != null">
+            and fill.update_time = #{updateTime}
+        </if>
+        <if test="taskId != null and taskId != ''">
+            and fill.task_id = #{taskId}
+        </if>
+        <if test="remark != null and remark != ''">
+            and fill.remark = #{remark}
+        </if>
+        <if test="lateHour != null">
+            and fill.late_hour = #{lateHour}
+        </if>
+        <if test="keyword != null and keyword != ''">
+            and fill.id like concat(concat('%',#{keyword}),'%')
+        </if>
+    </sql>
+    <select id="selectList" parameterType="com.platform.dao.dto.fill.FillUpdateRecordDTO"
+            resultType="com.platform.dao.vo.query.fill.FillUpdateRecordVO">
+        select fill.*
+        from t_fill_update_record as fill
+        <where>
+            <include refid="List_Condition"/>
+        </where>
+    </select>
+</mapper>

+ 2 - 2
platform-rest/src/main/java/com/platform/rest/controller/fill/FillGatherController.java

@@ -40,8 +40,8 @@ public class FillGatherController {
      * @return R
      */
     @GetMapping("/{id}")
-    public R<FillGather> getById(@PathVariable("id") String id) {
-        return new R<>(fillGatherService.getModelById(id));
+    public R<FillGatherVO> getById(@PathVariable("id") String id) {
+        return new R<>(fillGatherService.getVOById(id));
     }
 
     /**

+ 52 - 2
platform-rest/src/main/java/com/platform/rest/controller/fill/FillGatherTaskController.java

@@ -2,6 +2,7 @@ package com.platform.rest.controller.fill;
 
 import com.platform.common.util.R;
 import com.platform.dao.dto.fill.FillGatherTaskDTO;
+import com.platform.dao.dto.repair.RepairApplicationFormDTO;
 import com.platform.dao.entity.fill.FillGatherTask;
 import com.platform.service.fill.FillGatherTaskService;
 import com.platform.dao.util.ExcelUtil;
@@ -10,6 +11,7 @@ import com.platform.dao.vo.query.fill.FillGatherTaskVO;
 import com.platform.common.util.BeanConverterUtil;
 import com.platform.common.validation.group.AddGroup;
 import com.platform.common.validation.group.UpdateGroup;
+import com.platform.service.repair.strategy.RepairStrategyFactory;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -40,8 +42,8 @@ public class FillGatherTaskController {
      * @return R
      */
     @GetMapping("/{id}")
-    public R<FillGatherTask> getById(@PathVariable("id") String id) {
-        return new R<>(fillGatherTaskService.getModelById(id));
+    public R<FillGatherTaskVO> getById(@PathVariable("id") String id) {
+        return new R<>(fillGatherTaskService.getVOById(id));
     }
 
     /**
@@ -138,4 +140,52 @@ public class FillGatherTaskController {
         ExcelUtil.exportResponseDict(response, ExportFillGatherTaskVO.class, BeanConverterUtil.copyListProperties(list, ExportFillGatherTaskVO.class), "巡检任务表");
     }
 
+    /**
+     *  暂停巡检任务
+     * @param fillGatherTaskDTO 巡检任务DTO
+     * @return R
+     */
+    @SysLog("暂停巡检任务")
+    @PutMapping("/pause/{id}")
+    public R pause(@PathVariable("id") String id, @Validated({UpdateGroup.class}) @RequestBody FillGatherTaskDTO fillGatherTaskDTO) {
+        fillGatherTaskService.handlePauseTask(fillGatherTaskDTO);
+        return new R<>();
+    }
+
+    /**
+     *  延时巡检任务
+     * @param fillGatherTaskDTO 巡检任务DTO
+     * @return R
+     */
+    @SysLog("延时巡检任务")
+    @PutMapping("/overtime/{id}")
+    public R overtime(@PathVariable("id") String id, @Validated({UpdateGroup.class}) @RequestBody FillGatherTaskDTO fillGatherTaskDTO) {
+        fillGatherTaskService.overTimeTask(fillGatherTaskDTO);
+        return new R<>();
+    }
+
+    /**
+     *  转派巡检任务
+     * @param fillGatherTaskDTO 巡检任务DTO
+     * @return R
+     */
+    @SysLog("转派巡检任务")
+    @PutMapping("/dispatch/{id}")
+    public R dispatch(@PathVariable("id") String id, @Validated({UpdateGroup.class}) @RequestBody FillGatherTaskDTO fillGatherTaskDTO) {
+        fillGatherTaskService.dispatchTask(fillGatherTaskDTO);
+        return new R<>();
+    }
+
+    /**
+     *  巡检任务填报
+     * @param fillGatherTaskDTO 巡检任务DTO
+     * @return R
+     */
+    @SysLog("填报巡检任务")
+    @PutMapping("/fill/{id}")
+    public R fill(@PathVariable("id") String id, @Validated({UpdateGroup.class}) @RequestBody FillGatherTaskDTO fillGatherTaskDTO) {
+        fillGatherTaskService.handleFillInfo(fillGatherTaskDTO);
+        return new R<>();
+    }
+
 }

+ 141 - 0
platform-rest/src/main/java/com/platform/rest/controller/fill/FillUpdateRecordController.java

@@ -0,0 +1,141 @@
+package com.platform.rest.controller.fill;
+
+import com.platform.common.util.R;
+import com.platform.dao.dto.fill.FillUpdateRecordDTO;
+import com.platform.dao.entity.fill.FillUpdateRecord;
+import com.platform.service.fill.FillUpdateRecordService;
+import com.platform.dao.util.ExcelUtil;
+import com.platform.dao.vo.export.fill.ExportFillUpdateRecordVO;
+import com.platform.dao.vo.query.fill.FillUpdateRecordVO;
+import com.platform.common.util.BeanConverterUtil;
+import com.platform.common.validation.group.AddGroup;
+import com.platform.common.validation.group.UpdateGroup;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import lombok.AllArgsConstructor;
+import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.rest.log.annotation.SysLog;
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @Description 巡检修改记录表 控制器
+ * @Author lsq
+ * @Date 2022-09-14 08:40:28
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/fill/updates")
+public class FillUpdateRecordController {
+
+  private final  FillUpdateRecordService fillUpdateRecordService;
+
+  /**
+   * 通过id查询单条记录
+   *
+   * @param id 主键
+   * @return R
+   */
+  @GetMapping("/{id}")
+  public R<FillUpdateRecord> getById(@PathVariable("id") String id){
+      return new R<>(fillUpdateRecordService.getModelById(id));
+  }
+
+  /**
+   * 新增记录
+   *
+   * @param fillUpdateRecordDTO 巡检修改记录表DTO
+   * @return R
+   */
+  @SysLog("新增巡检修改记录表")
+  @PostMapping
+  @PreAuthorize("@pms.hasPermission('fill-updates-add')")
+  public R save(@Validated({AddGroup.class}) @RequestBody FillUpdateRecordDTO fillUpdateRecordDTO) {
+      return new R<>(fillUpdateRecordService.saveModelByDTO(fillUpdateRecordDTO));
+  }
+
+  /**
+   * 修改记录
+   *
+   * @param fillUpdateRecordDTO 巡检修改记录表DTO
+   * @return R
+   */
+  @SysLog("修改巡检修改记录表")
+  @PutMapping("/{id}")
+  @PreAuthorize("@pms.hasPermission('fill-updates-edit')")
+  public R update(@PathVariable("id") String id, @Validated({UpdateGroup.class}) @RequestBody FillUpdateRecordDTO fillUpdateRecordDTO) {
+      fillUpdateRecordService.modModelByDTO(fillUpdateRecordDTO);
+      return new R<>();
+  }
+
+
+                                                              
+  /**
+   * 通过id删除一条记录
+   *
+   * @param id 主键
+   * @return R
+   */
+  @SysLog("删除巡检修改记录表")
+  @DeleteMapping("/{id}")
+  @PreAuthorize("@pms.hasPermission('fill-updates-del')")
+  public R removeById(@PathVariable String id){
+    fillUpdateRecordService.deleteByPrimaryKey(id);
+    return new R<>();
+  }
+
+    /**
+     * 批量记录
+     *
+     * @param ids 主键
+     * @return R
+     */
+    @SysLog("批量删除巡检修改记录表")
+    @DeleteMapping("")
+    @PreAuthorize("@pms.hasPermission('fill-updates-del')")
+    public R removeIds(@RequestBody List<String> ids){
+        fillUpdateRecordService.batchDelete(ids);
+        return new R<>();
+    }
+
+  /**
+   * 获取分页
+   *
+   * @param pageNum 当前页码
+   * @param pageSize 每页条数
+   * @param fillUpdateRecordDTO 巡检修改记录表DTO
+   * @return R
+   */
+  @GetMapping("/page")
+  public R<AbstractPageResultBean<FillUpdateRecordVO>> query(FillUpdateRecordDTO fillUpdateRecordDTO, @RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "20") int pageSize) {
+      return new R<>(fillUpdateRecordService.selectPageList(fillUpdateRecordDTO, pageNum, pageSize));
+  }
+
+  /**
+   * 获取列表
+   *
+   * @param fillUpdateRecordDTO 巡检修改记录表DTO
+   * @return R
+   */
+  @GetMapping("")
+  public R query(FillUpdateRecordDTO fillUpdateRecordDTO) {
+      return new R<>(fillUpdateRecordService.getModelListByDTO(fillUpdateRecordDTO));
+  }
+
+  /**
+     * 巡检修改记录表导出
+     *
+     * @param fillUpdateRecordDTO 巡检修改记录表DTO
+     * @return R
+     */
+  @GetMapping("/export")
+  @SysLog("巡检修改记录表导出")
+  @PreAuthorize("@pms.hasPermission('fill-updates-export')")
+  public void export(HttpServletResponse response, FillUpdateRecordDTO fillUpdateRecordDTO) {
+    List<FillUpdateRecord> list = fillUpdateRecordService.getModelListByDTO(fillUpdateRecordDTO);
+    ExcelUtil.exportResponseDict(response, ExportFillUpdateRecordVO.class, BeanConverterUtil.copyListProperties(list, ExportFillUpdateRecordVO.class), "巡检修改记录表");
+  }
+
+}

+ 17 - 0
platform-rest/src/main/java/com/platform/rest/controller/mobile/IgnoreController.java

@@ -2,7 +2,9 @@ package com.platform.rest.controller.mobile;
 
 import cn.hutool.core.date.DateUtil;
 import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.common.cache.ConfigCache;
 import com.platform.common.constant.CommonConstants;
+import com.platform.common.constant.RedisKeyConstants;
 import com.platform.common.model.UserInfo;
 import com.platform.common.util.*;
 import com.platform.common.validation.group.AddGroup;
@@ -15,6 +17,7 @@ import com.platform.dao.entity.sb.SbInfo;
 import com.platform.dao.enums.CheckJobStatusEnum;
 import com.platform.dao.enums.CheckStandardTypeEnum;
 import com.platform.dao.enums.RepairApplicationFormStatusEnum;
+import com.platform.dao.enums.SysConfigEnum;
 import com.platform.dao.util.ExcelUtil;
 import com.platform.dao.util.TreeUtil;
 import com.platform.dao.vo.FileVO;
@@ -52,6 +55,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @Description 移动端不需要登录的接口,注意这里不能使用getUserInfo方法,该方法需要登录
@@ -278,4 +282,17 @@ public class IgnoreController {
     public R save(@Validated({AddGroup.class}) @RequestBody SbStatusLogDTO sbStatusLogDTO) {
         return new R<>(sbStatusLogService.saveModelByDTOAndUserInfo(sbStatusLogDTO, null));
     }
+
+    @GetMapping("/test/test")
+    public R testNum(){
+        // 启动接收超时监控
+        String minuteStr = "1";
+        int minute = 1;// 默认30分钟
+        if (com.platform.common.util.StringUtils.isNotBlank(minuteStr)) {
+            minute = Integer.valueOf(minuteStr);
+        }
+        RedisUtils.setString(RedisKeyConstants.EXPIRE_BUSINESS_KEY_REPAIR_STEP_FIRST + RedisKeyConstants.EXPIRE_BUSINESS_SEP + "repairId", "repairId", minute, TimeUnit.MINUTES);
+        return new R<>();
+    }
+
 }

+ 18 - 1
platform-rest/src/main/java/com/platform/rest/controller/upms/SysUserController.java

@@ -23,6 +23,7 @@ import com.platform.dao.dto.upms.SysUserDeptDTO;
 import com.platform.dao.entity.firm.FirmProducer;
 import com.platform.dao.entity.upms.SysMenu;
 import com.platform.dao.entity.upms.SysUser;
+import com.platform.dao.enums.SysRoleCodeEnum;
 import com.platform.dao.util.ExcelUtil;
 import com.platform.dao.util.TreeUtil;
 import com.platform.dao.vo.SysUserVO;
@@ -530,7 +531,7 @@ public class SysUserController {
     /**
      * 用户导出
      *
-     * @param firmProducerDTO 生产商DTO
+     * @param sysUserDTO 生产商DTO
      * @return R
      */
     @GetMapping("/exportUser")
@@ -550,4 +551,20 @@ public class SysUserController {
         }
         ExcelUtil.exportResponseDict(response, ExportSysUserVO.class, BeanConverterUtil.copyListProperties(voList, ExportSysUserVO.class), "用户数据");
     }
+
+    /**
+     * 指定部门的指定类型的负责人
+     * @param roleType :  1 巡检人 2 巡检主管
+     * @return :
+     */
+    @GetMapping("/query/user/{roleType}")
+    public R selectUsers(@PathVariable("roleType") Integer roleType) {
+        SysUserDTO dto = new SysUserDTO();
+        if(roleType == 1){
+            dto.setRoleCode(SysRoleCodeEnum.FILL_CHECKER.name());
+        }else if(roleType == 2){
+            dto.setRoleCode(SysRoleCodeEnum.FILL_CHECKER_LEADER.name());
+        }
+        return R.success(sysUserService.selectDeptRoleUser(dto));
+    }
 }

+ 2 - 0
platform-service/src/main/java/com/platform/service/fill/FillGatherService.java

@@ -42,4 +42,6 @@ public interface FillGatherService extends IBaseService<FillGather, FillGatherDT
      * @return :
      */
     FillGatherVO selectByCodeIdUseType(Integer codeId, Integer useType);
+
+    FillGatherVO getVOById(String id);
 }

+ 41 - 2
platform-service/src/main/java/com/platform/service/fill/FillGatherTaskService.java

@@ -1,10 +1,11 @@
 package com.platform.service.fill;
 
-import com.platform.dao.vo.query.fill.FillGatherTaskVO;
+import com.platform.common.bean.AbstractPageResultBean;
 import com.platform.dao.dto.fill.FillGatherTaskDTO;
 import com.platform.dao.entity.fill.FillGatherTask;
-import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.dao.vo.query.fill.FillGatherTaskVO;
 import com.platform.service.base.IBaseService;
+
 import java.util.List;
 
 /**
@@ -32,4 +33,42 @@ public interface FillGatherTaskService extends IBaseService<FillGatherTask, Fill
      */
     AbstractPageResultBean<FillGatherTaskVO> selectPageList(FillGatherTaskDTO record, int pageNum, int pageSize);
 
+    /**
+     * 新增巡检任务
+     * @param dto
+     * @return
+     */
+    FillGatherTask saveModelByDTO(FillGatherTaskDTO dto);
+
+    /**
+     * 暂停巡检任务
+     * @param model
+     */
+    void handlePauseTask(FillGatherTaskDTO model);
+
+    /**
+     * 延时巡检任务
+     * @param model
+     */
+    void overTimeTask(FillGatherTaskDTO model);
+
+    /**
+     * 转派巡检任务
+     * @param model
+     */
+    void dispatchTask(FillGatherTaskDTO model);
+
+    /**
+     * 巡检填报
+     * @param model
+     */
+    void handleFillInfo(FillGatherTaskDTO model);
+
+    /**
+     * 获取填报内容项
+     * @param id
+     * @return
+     */
+    FillGatherTaskVO getVOById(String id);
+
                                                                                                                                                                                                                 }

+ 35 - 0
platform-service/src/main/java/com/platform/service/fill/FillUpdateRecordService.java

@@ -0,0 +1,35 @@
+package com.platform.service.fill;
+
+import com.platform.dao.vo.query.fill.FillUpdateRecordVO;
+import com.platform.dao.dto.fill.FillUpdateRecordDTO;
+import com.platform.dao.entity.fill.FillUpdateRecord;
+import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.service.base.IBaseService;
+import java.util.List;
+
+/**
+ * @Description 巡检修改记录表 service
+ * @Author lsq
+ * @Date 2022-09-14 08:40:28
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+public interface FillUpdateRecordService extends IBaseService<FillUpdateRecord, FillUpdateRecordDTO> {
+
+   /**
+    * 批量删除
+    *
+    * @param ids :
+    * @return :
+    */
+    int batchDelete(List<String> ids);
+
+    /**
+     * 分页查询
+     * @param record
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    AbstractPageResultBean<FillUpdateRecordVO> selectPageList(FillUpdateRecordDTO record, int pageNum, int pageSize);
+
+                                                                                                                            }

+ 23 - 0
platform-service/src/main/java/com/platform/service/fill/impl/FillGatherServiceImpl.java

@@ -12,8 +12,12 @@ import com.platform.dao.bean.MyVOPage;
 import com.platform.dao.dto.fill.FillGatherDTO;
 import com.platform.dao.entity.fill.FillGather;
 import com.platform.dao.entity.fill.FillGatherInfo;
+import com.platform.dao.entity.fill.FillGatherTask;
+import com.platform.dao.entity.fill.FillInfo;
 import com.platform.dao.mapper.fill.FillGatherInfoMapper;
 import com.platform.dao.mapper.fill.FillGatherMapper;
+import com.platform.dao.mapper.fill.FillGatherTaskMapper;
+import com.platform.dao.mapper.fill.FillInfoMapper;
 import com.platform.dao.vo.query.fill.FillGatherVO;
 import com.platform.service.base.impl.BaseServiceImpl;
 import com.platform.service.fill.FillGatherService;
@@ -37,6 +41,8 @@ import java.util.List;
 public class FillGatherServiceImpl extends BaseServiceImpl<FillGatherMapper, FillGather, FillGatherDTO> implements FillGatherService {
 
     private final FillGatherInfoMapper fillGatherInfoMapper;
+    private final FillGatherTaskMapper fillGatherTaskMapper;
+    private final FillInfoMapper fillInfoMapper;
     @Override
     public int batchDelete(List<String> ids) {
         Weekend<FillGather> weekend = new Weekend<>(FillGather.class);
@@ -94,6 +100,10 @@ public class FillGatherServiceImpl extends BaseServiceImpl<FillGatherMapper, Fil
         if (fillGatherVO != null && !fillGatherVO.getId().equals(model.getId())) {
             throw new BusinessException("该类型已设置");
         }*/
+        int count = fillGatherTaskMapper.selectCount(new FillGatherTask().setGatherId(model.getId()));
+        if(count > 0){
+            throw new DeniedException("该标准已经有巡检任务,不可以修改!");
+        }
         super.modModelByDTO(model);
         addGatherInfos(model.getId(),model.getInfoIds(),2);
     }
@@ -123,4 +133,17 @@ public class FillGatherServiceImpl extends BaseServiceImpl<FillGatherMapper, Fil
         }
         return BeanConverterUtil.copyObjectProperties(fillGathers.get(0), new FillGatherVO());
     }
+
+    @Override
+    public FillGatherVO getVOById(String id) {
+        FillGather gather = mapper.selectByPrimaryKey(id);
+        FillGatherVO vo = BeanConverterUtil.copyObjectProperties(gather, FillGatherVO.class);
+        List<FillInfo> fillInfos = new ArrayList<>();
+        List<FillGatherInfo> infos = fillGatherInfoMapper.select(new FillGatherInfo().setGatherId(gather.getId()));
+        for(FillGatherInfo info : infos){
+            fillInfos.add(fillInfoMapper.selectByPrimaryKey(info.getInfoId()));
+        }
+        vo.setFillInfos(fillInfos);
+        return vo;
+    }
 }

+ 289 - 8
platform-service/src/main/java/com/platform/service/fill/impl/FillGatherTaskServiceImpl.java

@@ -1,20 +1,37 @@
 package com.platform.service.fill.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.github.pagehelper.PageHelper;
 import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.common.cache.ConfigCache;
+import com.platform.common.constant.RedisKeyConstants;
+import com.platform.common.util.*;
 import com.platform.dao.bean.MyPage;
-import com.github.pagehelper.PageHelper;
-import com.platform.dao.vo.query.fill.FillGatherTaskVO;
 import com.platform.dao.dto.fill.FillGatherTaskDTO;
-import com.platform.dao.entity.fill.FillGatherTask;
-import com.platform.dao.mapper.fill.FillGatherTaskMapper;
+import com.platform.dao.dto.fill.FillGatherTaskDetailDTO;
+import com.platform.dao.entity.fill.*;
+import com.platform.dao.entity.upms.SysUser;
+import com.platform.dao.enums.*;
+import com.platform.dao.mapper.fill.*;
+import com.platform.dao.mapper.upms.SysUserMapper;
+import com.platform.dao.util.MessageTemplateUtil;
+import com.platform.dao.vo.query.fill.FillGatherTaskVO;
+import com.platform.dao.vo.query.fill.FillInfoVO;
+import com.platform.service.base.impl.BaseServiceImpl;
+import com.platform.service.event.WorkplaceBacklogEvent;
 import com.platform.service.fill.FillGatherTaskService;
+import com.platform.service.util.SendMessageUtils;
+import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
-import com.platform.service.base.impl.BaseServiceImpl;
-import org.springframework.transaction.annotation.Transactional;
 import tk.mybatis.mapper.weekend.Weekend;
 import tk.mybatis.mapper.weekend.WeekendCriteria;
-import lombok.AllArgsConstructor;
 
+import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @Description 巡检任务表 service 实现类
@@ -26,6 +43,11 @@ import java.util.List;
 @Service("fillGatherTaskService")
 public class FillGatherTaskServiceImpl extends BaseServiceImpl<FillGatherTaskMapper, FillGatherTask, FillGatherTaskDTO> implements FillGatherTaskService {
 
+    private final FillGatherInfoMapper fillGatherInfoMapper;
+    private final FillInfoMapper fillInfoMapper;
+    private final FillGatherTaskDetailMapper fillGatherTaskDetailMapper;
+    private final SysUserMapper sysUserMapper;
+    private final FillUpdateRecordMapper fillUpdateRecordMapper;
     @Override
     public int batchDelete(List<String> ids) {
         Weekend<FillGatherTask> weekend = new Weekend<>(FillGatherTask.class);
@@ -47,4 +69,263 @@ public class FillGatherTaskServiceImpl extends BaseServiceImpl<FillGatherTaskMap
         return new MyPage(mapper.selectList(record));
     }
 
-                                                                                                                                                                                                                }
+    @Override
+    public FillGatherTask saveModelByDTO(FillGatherTaskDTO model) {
+        model.setTotalNum(model.getSbIds().size());
+        model.setWaitNum(model.getTotalNum());
+        FillGatherTask task = super.saveModelByDTO(model);
+        // 1、获取巡检内容
+        String content = getContentByGatherId(model.getGatherId());
+        // 2、根据设备IDs,生成内容列表并保存
+        saveDetails(content,model.getSbIds(),task.getId());
+        // 3、通知相关人员(巡检人和主管)
+        sendMessageToChecker(task,1);
+        sendMessageToChecker(task,2);
+        // 4、启动超时监控预警信息
+        int initMin = model.getRequireHour()*60;
+        int hours = model.getWarningHour() == null ? initMin + 120 : model.getWarningHour()*60 + initMin;
+        RedisUtils.setString(RedisKeyConstants.EXPIRE_BUSINESS_KEY_FILL_PREFIX + RedisKeyConstants.EXPIRE_BUSINESS_SEP + task.getId(), task.getId(), hours, TimeUnit.MINUTES);
+        return task;
+    }
+
+    @Override
+    public void handlePauseTask(FillGatherTaskDTO model) {
+        FillGatherTask task = mapper.selectByPrimaryKey(model.getId());
+        boolean overTimeFlag = Boolean.FALSE;
+        // 修改任务状态
+        FillGatherTask updTask = new FillGatherTask();
+        FillUpdateRecord record = new FillUpdateRecord();
+        record.setUpdateUserId(task.getCheckLeader());
+        record.setTaskId(task.getId());
+        record.setCreatedUserId(task.getChecker());
+        record.setCreatedTime(LocalDateTime.now());
+        record.setId(IdGeneratorUtils.getObjectId());
+        if(model.getPauseType() == 1){
+            record.setType(FillUpdateRecordTypeEnum.PAUSE.getValue());
+            updTask.setStatus(FillGatherTaskStatusEnum.PAUSE.getValue());
+        }else if(model.getPauseType() == 2){
+            // 取消暂停
+            overTimeFlag = Boolean.TRUE;
+            updTask.setRequireHour(model.getRequireHour());
+            updTask.setStatus(FillGatherTaskStatusEnum.PROCESSING.getValue());
+            record.setType(FillUpdateRecordTypeEnum.PAUSE_END.getValue());
+        }
+        updTask.setUpdateTime(LocalDateTime.now());
+        updTask.setUpdateUserId(SecurityUtils.getUserInfo().getUserId());
+        updTask.setUpdateUserName(SecurityUtils.getUserInfo().getUsername());
+        mapper.updateByPrimaryKeySelective(updTask);
+        // 添加修改记录
+        fillUpdateRecordMapper.insert(record);
+        // 启动超时监控
+        if(overTimeFlag){
+            RedisUtils.setString(RedisKeyConstants.EXPIRE_BUSINESS_KEY_FILL_PREFIX + RedisKeyConstants.EXPIRE_BUSINESS_SEP + task.getId(), task.getId(), model.getRequireHour()*60, TimeUnit.MINUTES);
+        }
+    }
+
+    @Override
+    public void overTimeTask(FillGatherTaskDTO model) {
+        FillGatherTask task = mapper.selectByPrimaryKey(model.getId());
+        // 修正巡检任务状态
+        FillGatherTask updTask = new FillGatherTask();
+        updTask.setId(model.getId());
+        updTask.setStatus(FillGatherTaskStatusEnum.LATE.getValue());
+        updTask.setLateHistoryHours(task.getLateHistoryHours() == null ? model.getExtrahours() : task.getLateHistoryHours() + model.getExtrahours());
+        updTask.setRequireHour(task.getRequireHour() + model.getExtrahours());
+        updTask.setUpdateTime(LocalDateTime.now());
+        updTask.setUpdateUserId(SecurityUtils.getUserInfo().getUserId());
+        updTask.setUpdateUserName(SecurityUtils.getUserInfo().getUsername());
+        // 保存巡检更新记录
+        FillUpdateRecord record = new FillUpdateRecord();
+        record.setUpdateUserId(task.getCheckLeader());
+        record.setTaskId(task.getId());
+        record.setCreatedUserId(task.getChecker());
+        record.setCreatedTime(LocalDateTime.now());
+        record.setId(IdGeneratorUtils.getObjectId());
+        record.setLateHour(model.getExtrahours());
+        record.setType(FillUpdateRecordTypeEnum.LATE.getValue());
+        fillUpdateRecordMapper.insert(record);
+    }
+
+    @Override
+    public void dispatchTask(FillGatherTaskDTO model) {
+        FillGatherTask task = mapper.selectByPrimaryKey(model.getId());
+        FillGatherTask updTask = new FillGatherTask();
+        updTask.setId(task.getId());
+        updTask.setTaskType(2);
+        updTask.setStatus(FillGatherTaskStatusEnum.PROCESSING.getValue());
+        updTask.setChecker(model.getAnotherChecker());
+        updTask.setUpdateUserName(SecurityUtils.getUserInfo().getUsername());
+        updTask.setUpdateUserId(SecurityUtils.getUserInfo().getUserId());
+        updTask.setRequireHour(model.getRequireHour());
+        updTask.setUpdateTime(LocalDateTime.now());
+        mapper.updateByPrimaryKeySelective(updTask);
+        // 记录
+        FillUpdateRecord record = new FillUpdateRecord();
+        record.setUpdateUserId(task.getCheckLeader());
+        record.setTaskId(task.getId());
+        record.setCreatedUserId(updTask.getChecker());
+        record.setCreatedTime(LocalDateTime.now());
+        record.setId(IdGeneratorUtils.getObjectId());
+        record.setType(FillUpdateRecordTypeEnum.DISPATCH.getValue());
+        fillUpdateRecordMapper.insert(record);
+        // 给被转派人发送信息
+        sendMessageToChecker(updTask,1);
+        // 启动超时监控
+        int initMin = task.getWarningHour()*60;
+        int hours = initMin + model.getRequireHour()*60;
+        RedisUtils.setString(RedisKeyConstants.EXPIRE_BUSINESS_KEY_FILL_PREFIX + RedisKeyConstants.EXPIRE_BUSINESS_SEP + task.getId(), task.getId(), hours, TimeUnit.MINUTES);
+    }
+
+    @Override
+    public void handleFillInfo(FillGatherTaskDTO model) {
+        // 已填报数据
+        FillGatherTask task = mapper.selectByPrimaryKey(model.getId());
+        FillGatherTask updTask = new FillGatherTask();
+        int waitNum = task.getTotalNum() - getFilledDataNum(model.getDetails());
+        updTask.setId(task.getId());
+        updTask.setWaitNum(waitNum);
+        if(waitNum == 0){
+            updTask.setStatus(FillGatherTaskStatusEnum.COMPLETED.getValue());
+        }
+        mapper.updateByPrimaryKeySelective(updTask);
+    }
+
+    /**
+     * 保存填报内容
+     * @param details
+     * @return
+     */
+    private int getFilledDataNum(List<FillGatherTaskDetailDTO> details){
+        int num = 0;
+        for(FillGatherTaskDetailDTO detail : details){
+            FillGatherTaskDetail updDetail = new FillGatherTaskDetail();
+            updDetail.setId(detail.getId());
+            // 判断是否完成填报
+            isCompleted(detail.getContent());
+            updDetail.setContent(detail.getContent());
+            updDetail.setUpdateUserName(SecurityUtils.getUserInfo().getUsername());
+            updDetail.setUpdateUserId(SecurityUtils.getUserInfo().getUserId());
+            updDetail.setUpdateTime(LocalDateTime.now());
+            if(isCompleted(detail.getContent())){
+                updDetail.setStatus(1);
+                num++;
+            }
+            fillGatherTaskDetailMapper.updateByPrimaryKeySelective(updDetail);
+        }
+        return num;
+    }
+
+    /**
+     * 单项是否完成填报
+     * @param content
+     * @return
+     */
+    private boolean isCompleted(String content){
+        boolean flag = Boolean.TRUE;
+        JSONArray array = JSON.parseArray(content);
+        for(int i=0;i<array.size();i++){
+            JSONObject jsonObject = array.getJSONObject(i);
+            if(StringUtils.isBlank(jsonObject.getString("fillValue"))){
+                flag = Boolean.FALSE;
+                break;
+            }
+        }
+        return flag;
+    }
+
+
+    @Override
+    public FillGatherTaskVO getVOById(String id) {
+        FillGatherTask task = mapper.selectByPrimaryKey(id);
+        FillGatherTaskVO vo = BeanConverterUtil.copyObjectProperties(task,FillGatherTaskVO.class);
+        vo.setDetails(fillGatherTaskDetailMapper.selectVOByTaskId(id));
+        return vo;
+    }
+
+    /**
+     * 给巡检人发送消息
+     * @param task
+     * @param type 1 巡检人  2 巡检主管
+     */
+    private void sendMessageToChecker(FillGatherTask task,Integer type){
+        SysUser user = null; // 用户
+        String info = "";  // 站内信内容
+        String[] values = new String[]{"你有一条巡检任务!","请知悉"}; // 默认是巡检人
+        switch (type){
+            case 1 :
+                user = sysUserMapper.selectByPrimaryKey(task.getChecker());
+                info = MessageTemplateUtil.getFillGatherTaskNoticeForChecker(task.getName());
+                break;
+            case 2 :
+                user = sysUserMapper.selectByPrimaryKey(task.getCheckLeader());
+                info = MessageTemplateUtil.getFillGatherTaskNoticeForLeader(task.getName(),user.getRealName());
+                values = new String[]{"你有一条待监管的巡检任务!","请知悉"};
+                break;
+        }
+        // 1、站内信
+        SpringContextHolder.publishEvent(new WorkplaceBacklogEvent(WorkplaceBacklogTypeEnum.FILL_TASK.getValue(), WorkplaceBacklogDetailTypeEnum.FILL_TASK_NOTICE.getValue(),
+                task.getId(), info, task.getId(), ListUtils.newArrayList(user.getUserId()), ListUtils.newArrayList(user.getEmail())));
+        // 2、微信
+        String wechatTemplateId = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_NOTICE_SUCCESS_WECHAT_TEMPLATE_ID.name());
+        String detailUrl = "pages/repair-detail/repair-detail?detailId=" + task.getId();
+        SendMessageUtils.sendWechatNew(ListUtils.newArrayList(user.getWxOpenId()),detailUrl,values,wechatTemplateId);
+        // 3、短信
+        SendMessageUtils.sendCommonSms(ListUtils.newArrayList(user.getPhone()),info);
+    }
+
+    /**
+     * 获取巡检标准json
+     * @param gatherId
+     * @return
+     */
+    private String getContentByGatherId(String gatherId){
+        List<FillInfoVO> contents = new ArrayList<>();
+        List<FillGatherInfo> infos = fillGatherInfoMapper.select(new FillGatherInfo().setGatherId(gatherId));
+        for(FillGatherInfo info : infos){
+            FillInfo fillInfo = fillInfoMapper.selectByPrimaryKey(info.getInfoId());
+            FillInfoVO vo = new FillInfoVO();
+            vo.setName(fillInfo.getName());
+            vo.setRemark(fillInfo.getRemark());
+            vo.setSelectValue(fillInfo.getSelectValue());
+            vo.setType(fillInfo.getType());
+            contents.add(vo);
+        }
+        return JsonUtils.objectToJson(contents);
+    }
+
+    public static void main(String[] args) {
+        List<FillInfoVO> contents = new ArrayList<>();
+        for(int i=0;i<3;i++){
+            FillInfoVO vo = new FillInfoVO();
+            vo.setName("12");
+            vo.setRemark("12");
+            vo.setSelectValue("[\"value\" : \"正常\",\"value\" : \"不良\" ]");
+            vo.setType(1);
+            vo.setFillValue("");
+            contents.add(vo);
+        }
+        System.out.println(JsonUtils.objectToJson(contents));
+    }
+
+    /**
+     * 保存巡检具体填报项
+     * @param content
+     * @param sbIds
+     * @param taskId
+     */
+    private void saveDetails(String content,List<String> sbIds,String taskId){
+        List<FillGatherTaskDetail> details = new ArrayList<>();
+        for(String sbId : sbIds){
+            FillGatherTaskDetail detail = new FillGatherTaskDetail();
+            detail.setContent(content);
+            detail.setCreatedTime(LocalDateTime.now());
+            detail.setCreatedUserId(SecurityUtils.getUserInfo().getUserId());
+            detail.setCreatedUserName(SecurityUtils.getUserInfo().getUsername());
+            detail.setSbId(sbId);
+            detail.setTaskId(taskId);
+            detail.setId(IdGeneratorUtils.getObjectId());
+            details.add(detail);
+        }
+        fillGatherTaskDetailMapper.insertListforComplex(details);
+    }
+}

+ 50 - 0
platform-service/src/main/java/com/platform/service/fill/impl/FillUpdateRecordServiceImpl.java

@@ -0,0 +1,50 @@
+package com.platform.service.fill.impl;
+import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.dao.bean.MyPage;
+import com.github.pagehelper.PageHelper;
+import com.platform.dao.vo.query.fill.FillUpdateRecordVO;
+import com.platform.dao.dto.fill.FillUpdateRecordDTO;
+import com.platform.dao.entity.fill.FillUpdateRecord;
+import com.platform.dao.mapper.fill.FillUpdateRecordMapper;
+import com.platform.service.fill.FillUpdateRecordService;
+import org.springframework.stereotype.Service;
+import com.platform.service.base.impl.BaseServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+import tk.mybatis.mapper.weekend.Weekend;
+import tk.mybatis.mapper.weekend.WeekendCriteria;
+import lombok.AllArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @Description 巡检修改记录表 service 实现类
+ * @Author lsq
+ * @Date 2022-09-14 08:40:28
+ * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@AllArgsConstructor
+@Service("fillUpdateRecordService")
+public class FillUpdateRecordServiceImpl extends BaseServiceImpl<FillUpdateRecordMapper, FillUpdateRecord, FillUpdateRecordDTO> implements FillUpdateRecordService {
+
+    @Override
+    public int batchDelete(List<String> ids) {
+        Weekend<FillUpdateRecord> weekend = new Weekend<>(FillUpdateRecord.class);
+        WeekendCriteria<FillUpdateRecord, Object> weekendCriteria = weekend.weekendCriteria();
+        weekendCriteria.andIn(FillUpdateRecord::getId, ids);
+        mapper.deleteByExample(weekend);
+        return 1;
+    }
+
+    @Override
+    public AbstractPageResultBean<FillUpdateRecordVO> selectPageList(FillUpdateRecordDTO record, int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        return new MyPage(mapper.selectList(record));
+    }
+
+    @Override
+    public AbstractPageResultBean<FillUpdateRecord> selectPageInfo(FillUpdateRecordDTO record, int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        return new MyPage(mapper.selectList(record));
+    }
+
+                                                                                                                            }

+ 127 - 0
platform-service/src/main/java/com/platform/service/redis/impl/RedisFillTaskService.java

@@ -0,0 +1,127 @@
+package com.platform.service.redis.impl;
+
+import com.platform.common.cache.ConfigCache;
+import com.platform.common.constant.RedisKeyConstants;
+import com.platform.common.util.IdGeneratorUtils;
+import com.platform.common.util.ListUtils;
+import com.platform.common.util.SpringContextHolder;
+import com.platform.dao.entity.fill.FillGatherTask;
+import com.platform.dao.entity.fill.FillUpdateRecord;
+import com.platform.dao.entity.upms.SysUser;
+import com.platform.dao.enums.*;
+import com.platform.dao.util.MessageTemplateUtil;
+import com.platform.service.event.WorkplaceBacklogEvent;
+import com.platform.service.fill.FillGatherTaskService;
+import com.platform.service.fill.FillUpdateRecordService;
+import com.platform.service.upms.SysUserService;
+import com.platform.service.util.SendMessageUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.data.redis.connection.Message;
+import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
+import org.springframework.data.redis.listener.RedisMessageListenerContainer;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+
+/**
+ * description: RedisKey键监听以及业务逻辑处理
+ *
+ * @author: zhouhong
+ * @version: V1.0.0
+ * @date: 2021年3月19日 上午10:58:52
+ */
+@Service
+@Component
+public class RedisFillTaskService extends KeyExpirationEventMessageListener {
+
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Resource
+    private FillGatherTaskService fillGatherTaskService;
+
+    @Resource
+    private FillUpdateRecordService fillUpdateRecordService;
+
+    @Resource
+    private SysUserService sysUserService;
+    /**
+     * @param listenerContainer
+     */
+    public RedisFillTaskService(RedisMessageListenerContainer listenerContainer) {
+        super(listenerContainer);
+    }
+    @Override
+    public void onMessage(Message message, byte[] pattern) {
+        String expiredKey = message.toString();
+        // 将拿到的过期键使用之前拼接时的特殊符号分割成字符数组 ,拿到保函id
+        String[] expiredKeyArr = expiredKey.split(RedisKeyConstants.EXPIRE_BUSINESS_SEP);
+        if(expiredKeyArr.length == 0){
+            logger.info("redis过期,非监听业务,不处理:");
+            return;
+        }
+        // 判断是否报修业务逻辑
+        if(expiredKeyArr[0] == null || !expiredKeyArr[0].contains(RedisKeyConstants.EXPIRE_BUSINESS_KEY_FILL)){
+            logger.info("redis过期,非巡检监控业务,不处理。");
+            return;
+        }
+        // 获取巡检任务ID
+        String taskId = expiredKeyArr[1];
+        FillGatherTask task = fillGatherTaskService.getModelById(taskId);
+        if(expiredKeyArr[0].contains(RedisKeyConstants.EXPIRE_BUSINESS_KEY_FILL_PREFIX)){
+            if(task.getStatus() != FillGatherTaskStatusEnum.PROCESSING.getValue() || task.getStatus() != FillGatherTaskStatusEnum.LATE.getValue()){
+                return;
+            }
+            // 给巡检人和主管发送消息
+            sendMessageToChecker(task,1);
+            sendMessageToChecker(task,2);
+            // 记录超时记录
+            FillUpdateRecord record = new FillUpdateRecord();
+            record.setCreatedTime(LocalDateTime.now());
+            record.setCreatedUserId(task.getChecker());
+            record.setId(IdGeneratorUtils.getObjectId());
+            record.setTaskId(task.getId());
+            record.setUpdateUserId(task.getCheckLeader());
+            record.setType(FillUpdateRecordTypeEnum.OVER_TIME.getValue());
+            fillUpdateRecordService.saveModelNoId(record);
+            // 修正巡检任务状态为 超时
+            FillGatherTask upd = new FillGatherTask();
+            upd.setId(taskId);
+            upd.setStatus(FillGatherTaskStatusEnum.OVER_TIME.getValue());
+            fillGatherTaskService.modModelByPrimaryKey(upd);
+        }
+    }
+
+    /**
+     * 给巡检人发送消息
+     * @param task
+     * @param type 1 巡检人  2 巡检主管
+     */
+    private void sendMessageToChecker(FillGatherTask task,Integer type){
+        SysUser user = null; // 用户
+        String info = "";  // 站内信内容
+        String[] values = new String[]{"你有一条巡检任务已超时!","请知悉"}; // 默认是巡检人
+        switch (type){
+            case 1 :
+                user = sysUserService.getModelById(task.getChecker());
+                info = MessageTemplateUtil.getFillGatherTaskOverTimeForChecker(task.getName());
+                break;
+            case 2 :
+                user = sysUserService.getModelById(task.getCheckLeader());
+                info = MessageTemplateUtil.getFillGatherTaskOverTimeForLeader(task.getName(),user.getRealName());
+                values = new String[]{"你有一条待监管的巡检任务已超时!","请知悉"};
+                break;
+        }
+        // 1、站内信
+        SpringContextHolder.publishEvent(new WorkplaceBacklogEvent(WorkplaceBacklogTypeEnum.FILL_TASK.getValue(), WorkplaceBacklogDetailTypeEnum.FILL_TASK_OVERTIME_NOTICE.getValue(),
+                task.getId(), info, task.getId(), ListUtils.newArrayList(user.getUserId()), ListUtils.newArrayList(user.getEmail())));
+        // 2、微信
+        String wechatTemplateId = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_NOTICE_SUCCESS_WECHAT_TEMPLATE_ID.name());
+        String detailUrl = "pages/repair-detail/repair-detail?detailId=" + task.getId();
+        SendMessageUtils.sendWechatNew(ListUtils.newArrayList(user.getWxOpenId()),detailUrl,values,wechatTemplateId);
+        // 3、短信
+        SendMessageUtils.sendCommonSms(ListUtils.newArrayList(user.getPhone()),info);
+    }
+}

+ 1 - 0
platform-service/src/main/java/com/platform/service/redis/impl/RedisTaskService.java

@@ -69,6 +69,7 @@ public class RedisTaskService extends KeyExpirationEventMessageListener {
     @Override
     public void onMessage(Message message, byte[] pattern) {
         String expiredKey = message.toString();
+        logger.info("----------------------------taskredis-----------------" + expiredKey);
         // 将拿到的过期键使用之前拼接时的特殊符号分割成字符数组 ,拿到保函id
         String[] expiredKeyArr = expiredKey.split(RedisKeyConstants.EXPIRE_BUSINESS_SEP);
         if(expiredKeyArr.length == 0){