Browse Source

feature 代码提交

xiahan 11 months ago
parent
commit
a977c3901d

+ 1 - 10
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/SafeCheckSendNotifyService.java

@@ -20,17 +20,8 @@ public interface SafeCheckSendNotifyService {
 
     R sendDangerousTimelyNotify(String id);
 
-
-    void rectificationSystem();
-
-    void verifySystem();
-
-    void affirmSystem();
-
     R sendBackSystem(Map<String, String> map);
 
-    R submitSystem(Map<String, String> map);
-
 
-    R hiddenDangerTask();
+    R submitSystem(Map<String, String> map);
 }

+ 1 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/CheckTemplateServiceImpl.java

@@ -523,6 +523,7 @@ public class CheckTemplateServiceImpl extends ServiceImpl<CheckTemplateDao, Chec
         Map<String, List<CheckTemplateItemsDo>> shiftTypeAndTempMap = new HashMap<>();
         // 获取工作时间信息
         List<AspShiftTimeDo> aspShiftTimeDos = aspShiftTimeDao.selectByMap(SHIFT_TIME_QUERY);
+
         // 获取模板对应的检查项
         List<CheckTemplateItemsDo> templateItemsDos = checkTemplateItemsService.list(new LambdaQueryWrapper<CheckTemplateItemsDo>()
                 .in(CheckTemplateItemsDo::getChecktemplateid, checkTemplateDo.getId())

+ 6 - 255
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/SafeCheckSendNotifyServiceImpl.java

@@ -4,41 +4,25 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.rongwe.scentity.domian.HiddenDangerTrackDo;
 import com.rongwe.scentity.domian.ThemeCheckDo;
 import com.rongwe.scentity.domian.ThemeCheckItemDo;
-import com.rongwe.scentity.vo.ExportHiddenDangerVo;
-import com.rongwei.rwadmincommon.system.domain.SysDictDo;
-import com.rongwei.rwadmincommon.system.service.SysDictService;
 import com.rongwei.rwcommon.base.BaseDo;
 import com.rongwei.rwcommon.base.R;
-import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommon.utils.StringUtils;
 import com.rongwei.safecommon.utils.JSCommonUtils;
-import com.rongwei.safecommon.utils.ExportExcelByEasyExcel;
 import com.rongwei.sfcommon.sys.dao.DangerousDao;
-import com.rongwei.sfcommon.sys.dao.SaveCheckCommonDao;
 import com.rongwei.sfcommon.sys.service.SafeCheckSendNotifyService;
 import com.rongwei.sfcommon.sys.service.ThemeCheckItemService;
 import com.rongwei.sfcommon.sys.service.ThemeCheckService;
-import com.rongwei.sfcommon.sys.service.ThemeCheckWorkparkService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.text.SimpleDateFormat;
-import java.time.DayOfWeek;
-import java.time.LocalDate;
 import java.util.*;
 import java.util.stream.Collectors;
 
-import static com.rongwei.safecommon.utils.SaveConstans.COMPANY_MAP;
 import static com.rongwei.safecommon.utils.SaveConstans.DEFAULT_SEPARATOR;
-import static com.rongwei.safecommon.utils.SaveConstans.DatePattern.DATE_PATTERN_YMD;
-import static com.rongwei.safecommon.utils.SaveConstans.DictType.*;
-import static com.rongwei.safecommon.utils.SaveConstans.FileSuffix.XLSX;
 import static com.rongwei.safecommon.utils.SaveConstans.NotifyContent.*;
 import static com.rongwei.safecommon.utils.SaveConstans.NotifyTitle.*;
 import static com.rongwei.safecommon.utils.SaveConstans.NotifyType.*;
-import static com.rongwei.safecommon.utils.SaveConstans.RoleCode.*;
-import static com.rongwei.sfcommon.utils.MlConstants.DANGER_SOURCE_POINTCHECK;
 
 /**
  * SafeCheckSendNotifyServiceImpl class
@@ -49,55 +33,32 @@ import static com.rongwei.sfcommon.utils.MlConstants.DANGER_SOURCE_POINTCHECK;
 @Service
 @Slf4j
 public class SafeCheckSendNotifyServiceImpl implements SafeCheckSendNotifyService {
-
-    /**
-     * 隐患跟踪任务整改提醒内容
-     */
-    public static final String RECTIFICATION_MAIL_CONTENT = "总编号:【%s】\n 发现时间:【%tF】\n 发现人:【%s】\n 发现项:【%s】\n限整改期:【%tF】";
-
     /**
      * 隐患跟踪任务验证完成提醒内容
      */
-    public static final String VERIFICATION_REMIND_MAIL_CONTENT = "【%s】 已整改完成,请您验证关闭";
-
-    public static final String VERIFICATION_REMIND_TEMP = "总编号:【%s】 【%s】\n";
-
+    public static final String VERIFICATION_SYSTEM_CONTENT = "【%s】 整改确认未通过,请您重新验证";
     /**
      * 隐患跟踪任务验证重新整改内容
      */
     public static final String RECTIFICATE_MAIL_CONTENT = "总编号:【%s】 \n 发现时间:【%tF】 \n 发现人:【%s】 \n 发现项:【%s】 \n 限整改期:【%tF】 \n 整改验证未通过,请您重新整改 ";
+
+    public static final String VERIFICATION_REMIND_TEMP = "总编号:【%s】 【%s】\n";
     /**
      * 隐患跟踪任务验证完成提醒内容
      */
-    public static final String VERIFICATION_SYSTEM_CONTENT = "【%s】 整改确认未通过,请您重新验证";
+    public static final String VERIFICATION_REMIND_MAIL_CONTENT = "【%s】 已整改完成,请您验证关闭";
     /**
      * 隐患跟踪任务验证完成提醒内容
      */
     public static final String AFFIRM_REMIND_MAIL_CONTENT = "【%s】 已验证完成,请您确认关闭";
-    /**
-     * 生产
-     * 日常点巡检异常问题提醒 用来区分 消息提醒的角色
-     */
-    public static final String PRODUCTION = "production";
-    /**
-     * 维修
-     * 日常点巡检异常问题提醒 用来区分 消息提醒的角色
-     */
-    public static final String MAINTAIN = "maintain";
     @Autowired
     private DangerousDao dangerousDao;
     @Autowired
     private ThemeCheckService themeCheckService;
     @Autowired
-    private HiddenDangerTrackServiceImpl hiddenDangerTrackService;
-    @Autowired
-    private ThemeCheckWorkparkService themeCheckWorkparkService;
-    @Autowired
     private ThemeCheckItemService themeCheckItemService;
     @Autowired
-    private SaveCheckCommonDao saveCheckCommonDao;
-    @Autowired
-    private SysDictService sysDictService;
+    private HiddenDangerTrackServiceImpl hiddenDangerTrackService;
 
     @Override
     public void inspectionTasks() {
@@ -190,36 +151,6 @@ public class SafeCheckSendNotifyServiceImpl implements SafeCheckSendNotifyServic
                 }}, k.getId(), DANGERTASKS));
     }
 
-    @Override
-    public void rectificationSystem() {
-        List<HiddenDangerTrackDo> hiddenDangerTrackList = hiddenDangerTrackService.list(new LambdaQueryWrapper<HiddenDangerTrackDo>()
-                .eq(BaseDo::getDeleted, 0)
-                .eq(HiddenDangerTrackDo::getStatus, 20)
-                .isNotNull(HiddenDangerTrackDo::getTrackuserid)
-        );
-        rectificationNotify(hiddenDangerTrackList);
-    }
-
-    @Override
-    public void verifySystem() {
-        List<HiddenDangerTrackDo> hiddenDangerTrackList = hiddenDangerTrackService.list(new LambdaQueryWrapper<HiddenDangerTrackDo>()
-                .eq(BaseDo::getDeleted, 0)
-                .eq(HiddenDangerTrackDo::getStatus, 30)
-                .isNotNull(HiddenDangerTrackDo::getShopfacilitatorid)
-        );
-        verifyNotify(hiddenDangerTrackList);
-    }
-
-    @Override
-    public void affirmSystem() {
-        List<HiddenDangerTrackDo> hiddenDangerTrackDos = hiddenDangerTrackService.list(new LambdaQueryWrapper<HiddenDangerTrackDo>()
-                .eq(BaseDo::getDeleted, 0)
-                .eq(HiddenDangerTrackDo::getStatus, 40)
-                .isNotNull(HiddenDangerTrackDo::getSafetypromoterid)
-        );
-        affirmNotify(hiddenDangerTrackDos);
-    }
-
     @Override
     public R sendBackSystem(Map<String, String> map) {
         String id = map.getOrDefault("id", "");
@@ -266,6 +197,7 @@ public class SafeCheckSendNotifyServiceImpl implements SafeCheckSendNotifyServic
         return R.ok();
     }
 
+
     @Override
     public R submitSystem(Map<String, String> map) {
         String id = map.getOrDefault("id", "");
@@ -310,185 +242,4 @@ public class SafeCheckSendNotifyServiceImpl implements SafeCheckSendNotifyServic
         return R.ok();
     }
 
-    /**
-     * 点巡检隐患任务提醒
-     *
-     * @param map
-     * @return
-     */
-    @Override
-    public R hiddenDangerTask() {
-        List<HiddenDangerTrackDo> hiddenDangerTrackDos = hiddenDangerTrackService.list(new LambdaQueryWrapper<HiddenDangerTrackDo>()
-                .eq(BaseDo::getDeleted, "0")
-                .eq(HiddenDangerTrackDo::getSource, "1")
-                .eq(HiddenDangerTrackDo::getDangersource, DANGER_SOURCE_POINTCHECK)
-                .last(" AND  DATEDIFF(NOW(),FINDTIME) BETWEEN 0 AND 7  "));
-        if (hiddenDangerTrackDos.isEmpty()) {
-            return R.ok();
-        }
-        LocalDate date = LocalDate.now(); // 获取当前日期
-        DayOfWeek dayOfWeek = date.getDayOfWeek(); // 获取日期对应的星期几
-        // 周五发送维修和生产提醒 周三发送生产提醒
-        if (dayOfWeek != DayOfWeek.WEDNESDAY && dayOfWeek != DayOfWeek.FRIDAY) {
-            return R.ok();
-        }
-        // 获取数据字典
-        List<SysDictDo> dicts = sysDictService.list(new LambdaQueryWrapper<SysDictDo>().eq(BaseDo::getDeleted, "0").in(SysDictDo::getDicttype,
-                TASK_SOURCE_TYPE, HIDDEN_DANGER_TYPE, HIDDEN_DANGER_STATUS));
-        hiddenDangerTrackDos.forEach(info -> {
-            if (StringUtils.isNotBlank(info.getDangersource())) {
-                info.setDangersource(dicts.stream().filter(dict -> TASK_SOURCE_TYPE.equals(dict.getDicttype()) &&
-                                info.getDangersource().equals(dict.getValue())).map(SysDictDo::getName)
-                        .collect(Collectors.joining(",")));
-            }
-
-            if (StringUtils.isNotBlank(info.getHiddendangertype())) {
-                info.setHiddendangertype(dicts.stream().filter(dict -> HIDDEN_DANGER_TYPE.equals(dict.getDicttype()) &&
-                                info.getHiddendangertype().equals(dict.getValue())).map(SysDictDo::getName)
-                        .collect(Collectors.joining(",")));
-            }
-
-            if (StringUtils.isNotBlank(info.getStatus())) {
-                info.setStatus(dicts.stream().filter(dict -> HIDDEN_DANGER_STATUS.equals(dict.getDicttype()) &&
-                                info.getStatus().equals(dict.getValue())).map(SysDictDo::getName)
-                        .collect(Collectors.joining(",")));
-            }
-        });
-
-        // 对业务数据按照厂区进行分组
-        Map<String, List<HiddenDangerTrackDo>> collect = hiddenDangerTrackDos.stream().collect(Collectors.groupingBy(HiddenDangerTrackDo::getTenantid));
-        collect.forEach((k, v) -> {
-            // 周三和周五生成 生产提醒维修提醒
-            if (DayOfWeek.WEDNESDAY == dayOfWeek) {
-                // 生产提醒
-                sendNotify(HIDDEN_DANGER_TASK_PRODUCTION, k, v);
-            } else {
-                // 生产提醒
-                sendNotify(HIDDEN_DANGER_TASK_PRODUCTION, k, v);
-                // 维修提醒
-                sendNotify(HIDDEN_DANGER_TASK_MAINTAIN, k, v);
-            }
-        });
-        return R.ok();
-    }
-
-    /**
-     * 发送消息提醒
-     */
-    public void sendNotify(String notifyType, String tenantId, List<HiddenDangerTrackDo> dangerTrackDos) {
-        // 已读以往提醒信息
-        saveCheckCommonDao.updateNotifyState(notifyType, tenantId);
-
-        /****************************获取提醒人信息*******************************/
-        List<String> recipientIds = new ArrayList<>();
-        if (HIDDEN_DANGER_TASK_MAINTAIN.equals(notifyType)) {
-            // 维修 对应工厂的设备部部长 + 设备部维修主管
-            recipientIds = saveCheckCommonDao.getUserIdByRoleCodeAndOrgIdAndTenantId(Arrays.asList(HOED, EDMS), null, tenantId);
-        } else {
-            // 生产 根据 隐患地点 取对应部门车间的 车间主任、车间维修主管 角色中人员
-            List<String> orgId = dangerTrackDos.stream().map(HiddenDangerTrackDo::getDangerworkpark).distinct().collect(Collectors.toList());
-            if (!orgId.isEmpty()) {
-                recipientIds.addAll(saveCheckCommonDao.getUserIdByRoleCodeAndOrgIdAndTenantId(Arrays.asList(WMS, LCZG), orgId, tenantId));
-            }
-            // 整改状态为“待整改”记录中的 指派跟踪人
-            recipientIds.addAll(dangerTrackDos.stream().filter(info -> "待整改".equals(info.getStatus()))
-                    .map(HiddenDangerTrackDo::getTrackuserid)
-                    .filter(StringUtils::isNotBlank)
-                    .distinct()
-                    .collect(Collectors.toList()));
-        }
-        if (recipientIds.isEmpty()) {
-            return;
-        }
-        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_PATTERN_YMD);
-        // 附件生成
-        List<ExportHiddenDangerVo> exportData = dangerTrackDos.stream().map((data) -> {
-            ExportHiddenDangerVo exportHiddenDangerVo = new ExportHiddenDangerVo();
-            exportHiddenDangerVo.setTenantId(COMPANY_MAP.get(data.getTenantid()));
-            exportHiddenDangerVo.setStatus(data.getStatus());
-            exportHiddenDangerVo.setCode(data.getCode());
-            exportHiddenDangerVo.setHiddendangertype(data.getHiddendangertype());
-            exportHiddenDangerVo.setHiddendangercontent(data.getHiddendangercontent());
-            exportHiddenDangerVo.setTrackusername(data.getTrackusername());
-            exportHiddenDangerVo.setFindUser(data.getFindusername());
-            exportHiddenDangerVo.setFindDate(data.getFindtime() == null ? "" : simpleDateFormat.format(data.getFindtime()));
-            exportHiddenDangerVo.setRectificationdate(data.getRectificationdate() == null ? "" : simpleDateFormat.format(data.getRectificationdate()));
-            exportHiddenDangerVo.setCompletionschedule(data.getCompletionschedule());
-            exportHiddenDangerVo.setFinishdate(data.getFinishdate() == null ? "" : simpleDateFormat.format(data.getFinishdate()));
-            exportHiddenDangerVo.setDangersource(data.getDangersource());
-            return exportHiddenDangerVo;
-        }).collect(Collectors.toList());
-
-        // 消息提醒ID
-        String notifyId = SecurityUtil.getUUID();
-
-        String fileNameAndId = ExportExcelByEasyExcel.generateExcel("file", WEEK_HIDDEN_DANGER_TASK + simpleDateFormat.format(new Date()) + XLSX,
-                notifyId, exportData, ExportHiddenDangerVo.class);
-        if (StringUtils.isBlank(fileNameAndId)) {
-            return;
-        }
-        JSCommonUtils.sendNotify(notifyId, tenantId, WEEK_HIDDEN_DANGER_TASK,
-                String.format(HIDDEN_DANGER_TASK_CONTENT, dangerTrackDos.size()), fileNameAndId, recipientIds, null,
-                notifyType, false);
-    }
-
-
-    /**
-     * 隐患任务整改提醒
-     *
-     * @param hiddenDangerTrackList
-     * @return
-     * @date 2023/12/20 9:54
-     * @author shangmi
-     */
-
-    public void rectificationNotify(List<HiddenDangerTrackDo> hiddenDangerTrackList) {
-        hiddenDangerTrackList.forEach(hiddenDangerTrack -> {
-            List<String> userIds = Arrays.asList(hiddenDangerTrack.getTrackuserid().split(","));
-            JSCommonUtils.sendNotify(RECTIFICATION_MAIL_TITLE,
-                    String.format(RECTIFICATION_MAIL_CONTENT, hiddenDangerTrack.getCode(), hiddenDangerTrack.getFindtime(),
-                            hiddenDangerTrack.getFindusername(), hiddenDangerTrack.getHiddendangercontent(),
-                            hiddenDangerTrack.getRectificationdate()), null, userIds, hiddenDangerTrack.getId(), DANGERTASKS);
-        });
-
-    }
-
-
-    /**
-     * 隐患任务验证提醒
-     *
-     * @param hiddenDangerTrackList
-     * @return
-     * @date 2023/12/20 9:54
-     * @author shangmi
-     */
-
-    public void verifyNotify(List<HiddenDangerTrackDo> hiddenDangerTrackList) {
-        hiddenDangerTrackList.forEach(hiddenDangerTrack -> {
-            List<String> userIds = Arrays.asList(hiddenDangerTrack.getShopfacilitatorid().split(","));
-            String format = String.format(VERIFICATION_REMIND_TEMP, hiddenDangerTrack.getCode(), hiddenDangerTrack.getHiddendangercontent());
-            JSCommonUtils.sendNotify(VERIFICATION_MAIL_TITLE,
-                    String.format(VERIFICATION_REMIND_MAIL_CONTENT, format), null, userIds, hiddenDangerTrack.getId(), DANGERTASKS);
-        });
-
-    }
-
-    /**
-     * 隐患任务确认提醒
-     *
-     * @param hiddenDangerTrackList
-     * @return
-     * @date 2023/12/20 9:54
-     * @author shangmi
-     */
-
-    public void affirmNotify(List<HiddenDangerTrackDo> hiddenDangerTrackList) {
-        hiddenDangerTrackList.forEach(hiddenDangerTrack -> {
-            List<String> userIds = Arrays.asList(hiddenDangerTrack.getSafetypromoterid().split(","));
-            String format = String.format(VERIFICATION_REMIND_TEMP, hiddenDangerTrack.getCode(), hiddenDangerTrack.getHiddendangercontent());
-            JSCommonUtils.sendNotify(AFFIRM_MAIL_TITLE,
-                    String.format(AFFIRM_REMIND_MAIL_CONTENT, format), null, userIds, hiddenDangerTrack.getId(), DANGERTASKS);
-        });
-
-    }
 }

+ 25 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/ScheduledTasksService.java

@@ -0,0 +1,25 @@
+package com.rongwei.sfcommon.sys.service.impl;
+
+import com.rongwei.rwcommon.base.R;
+
+import java.util.Map;
+
+/**
+ * ScheduledTasksService class
+ *
+ * @author XH
+ * @date 2024/08/27
+ */
+public interface ScheduledTasksService {
+
+    void rectificationSystem();
+
+    void verifySystem();
+
+    void affirmSystem();
+
+
+    R hiddenDangerTask();
+
+    R createCheckPlanByTemp();
+}

+ 304 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/ScheduledTasksServiceImpl.java

@@ -0,0 +1,304 @@
+package com.rongwei.sfcommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.rongwe.scentity.domian.CheckTemplateDo;
+import com.rongwe.scentity.domian.HiddenDangerTrackDo;
+import com.rongwe.scentity.vo.ExportHiddenDangerVo;
+import com.rongwei.rwadmincommon.system.domain.SysDictDo;
+import com.rongwei.rwadmincommon.system.service.SysDictService;
+import com.rongwei.rwcommon.base.BaseDo;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.utils.SecurityUtil;
+import com.rongwei.rwcommon.utils.StringUtils;
+import com.rongwei.safecommon.utils.ExportExcelByEasyExcel;
+import com.rongwei.safecommon.utils.JSCommonUtils;
+import com.rongwei.sfcommon.sys.dao.SaveCheckCommonDao;
+import com.rongwei.sfcommon.sys.service.ThemeCheckWorkparkService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.rongwei.safecommon.utils.SaveConstans.COMPANY_MAP;
+import static com.rongwei.safecommon.utils.SaveConstans.DatePattern.DATE_PATTERN_YMD;
+import static com.rongwei.safecommon.utils.SaveConstans.DictType.*;
+import static com.rongwei.safecommon.utils.SaveConstans.DictType.HIDDEN_DANGER_STATUS;
+import static com.rongwei.safecommon.utils.SaveConstans.FileSuffix.XLSX;
+import static com.rongwei.safecommon.utils.SaveConstans.NotifyContent.HIDDEN_DANGER_TASK_CONTENT;
+import static com.rongwei.safecommon.utils.SaveConstans.NotifyTitle.*;
+import static com.rongwei.safecommon.utils.SaveConstans.NotifyType.*;
+import static com.rongwei.safecommon.utils.SaveConstans.NotifyType.DANGERTASKS;
+import static com.rongwei.safecommon.utils.SaveConstans.RoleCode.*;
+import static com.rongwei.safecommon.utils.SaveConstans.RoleCode.LCZG;
+import static com.rongwei.sfcommon.utils.MlConstants.DANGER_SOURCE_POINTCHECK;
+
+/**
+ * ScheduledTasksServiceImpl class
+ *
+ * @author XH
+ * @date 2024/08/27
+ */
+@Service
+public class ScheduledTasksServiceImpl implements ScheduledTasksService{
+    private final Logger log = LoggerFactory.getLogger(this.getClass().getName());
+    /**
+     * 隐患跟踪任务整改提醒内容
+     */
+    public static final String RECTIFICATION_MAIL_CONTENT = "总编号:【%s】\n 发现时间:【%tF】\n 发现人:【%s】\n 发现项:【%s】\n限整改期:【%tF】";
+
+    /**
+     * 隐患跟踪任务验证完成提醒内容
+     */
+    public static final String VERIFICATION_REMIND_MAIL_CONTENT = "【%s】 已整改完成,请您验证关闭";
+
+    public static final String VERIFICATION_REMIND_TEMP = "总编号:【%s】 【%s】\n";
+
+
+    /**
+     * 隐患跟踪任务验证完成提醒内容
+     */
+    public static final String AFFIRM_REMIND_MAIL_CONTENT = "【%s】 已验证完成,请您确认关闭";
+
+    @Autowired
+    private SaveCheckCommonDao saveCheckCommonDao;
+    @Autowired
+    private SysDictService sysDictService;
+    @Autowired
+    private HiddenDangerTrackServiceImpl hiddenDangerTrackService;
+    @Autowired
+    private CheckTemplateServiceImpl checkTemplateService;
+
+
+    @Override
+    public void rectificationSystem() {
+        List<HiddenDangerTrackDo> hiddenDangerTrackList = hiddenDangerTrackService.list(new LambdaQueryWrapper<HiddenDangerTrackDo>()
+                .eq(BaseDo::getDeleted, 0)
+                .eq(HiddenDangerTrackDo::getStatus, 20)
+                .isNotNull(HiddenDangerTrackDo::getTrackuserid)
+        );
+        rectificationNotify(hiddenDangerTrackList);
+    }
+
+    @Override
+    public void verifySystem() {
+        List<HiddenDangerTrackDo> hiddenDangerTrackList = hiddenDangerTrackService.list(new LambdaQueryWrapper<HiddenDangerTrackDo>()
+                .eq(BaseDo::getDeleted, 0)
+                .eq(HiddenDangerTrackDo::getStatus, 30)
+                .isNotNull(HiddenDangerTrackDo::getShopfacilitatorid)
+        );
+        verifyNotify(hiddenDangerTrackList);
+    }
+    @Override
+    public void affirmSystem() {
+        List<HiddenDangerTrackDo> hiddenDangerTrackDos = hiddenDangerTrackService.list(new LambdaQueryWrapper<HiddenDangerTrackDo>()
+                .eq(BaseDo::getDeleted, 0)
+                .eq(HiddenDangerTrackDo::getStatus, 40)
+                .isNotNull(HiddenDangerTrackDo::getSafetypromoterid)
+        );
+        affirmNotify(hiddenDangerTrackDos);
+    }
+
+    /**
+     * 点巡检隐患任务提醒
+     *
+     * @return
+     */
+    @Override
+    public R hiddenDangerTask() {
+        List<HiddenDangerTrackDo> hiddenDangerTrackDos = hiddenDangerTrackService.list(new LambdaQueryWrapper<HiddenDangerTrackDo>()
+                .eq(BaseDo::getDeleted, "0")
+                .eq(HiddenDangerTrackDo::getSource, "1")
+                .eq(HiddenDangerTrackDo::getDangersource, DANGER_SOURCE_POINTCHECK)
+                .last(" AND  DATEDIFF(NOW(),FINDTIME) BETWEEN 0 AND 7  "));
+        if (hiddenDangerTrackDos.isEmpty()) {
+            return R.ok();
+        }
+        LocalDate date = LocalDate.now(); // 获取当前日期
+        DayOfWeek dayOfWeek = date.getDayOfWeek(); // 获取日期对应的星期几
+        // 周五发送维修和生产提醒 周三发送生产提醒
+        if (dayOfWeek != DayOfWeek.WEDNESDAY && dayOfWeek != DayOfWeek.FRIDAY) {
+            return R.ok();
+        }
+        // 获取数据字典
+        List<SysDictDo> dicts = sysDictService.list(new LambdaQueryWrapper<SysDictDo>().eq(BaseDo::getDeleted, "0").in(SysDictDo::getDicttype,
+                TASK_SOURCE_TYPE, HIDDEN_DANGER_TYPE, HIDDEN_DANGER_STATUS));
+        hiddenDangerTrackDos.forEach(info -> {
+            if (StringUtils.isNotBlank(info.getDangersource())) {
+                info.setDangersource(dicts.stream().filter(dict -> TASK_SOURCE_TYPE.equals(dict.getDicttype()) &&
+                                info.getDangersource().equals(dict.getValue())).map(SysDictDo::getName)
+                        .collect(Collectors.joining(",")));
+            }
+
+            if (StringUtils.isNotBlank(info.getHiddendangertype())) {
+                info.setHiddendangertype(dicts.stream().filter(dict -> HIDDEN_DANGER_TYPE.equals(dict.getDicttype()) &&
+                                info.getHiddendangertype().equals(dict.getValue())).map(SysDictDo::getName)
+                        .collect(Collectors.joining(",")));
+            }
+
+            if (StringUtils.isNotBlank(info.getStatus())) {
+                info.setStatus(dicts.stream().filter(dict -> HIDDEN_DANGER_STATUS.equals(dict.getDicttype()) &&
+                                info.getStatus().equals(dict.getValue())).map(SysDictDo::getName)
+                        .collect(Collectors.joining(",")));
+            }
+        });
+
+        // 对业务数据按照厂区进行分组
+        Map<String, List<HiddenDangerTrackDo>> collect = hiddenDangerTrackDos.stream().collect(Collectors.groupingBy(HiddenDangerTrackDo::getTenantid));
+        collect.forEach((k, v) -> {
+            // 周三和周五生成 生产提醒维修提醒
+            if (DayOfWeek.WEDNESDAY == dayOfWeek) {
+                // 生产提醒
+                sendNotify(HIDDEN_DANGER_TASK_PRODUCTION, k, v);
+            } else {
+                // 生产提醒
+                sendNotify(HIDDEN_DANGER_TASK_PRODUCTION, k, v);
+                // 维修提醒
+                sendNotify(HIDDEN_DANGER_TASK_MAINTAIN, k, v);
+            }
+        });
+        return R.ok();
+    }
+
+    /**
+     * 根据安全检查模板 生成安全检查计划信息
+     * @return
+     */
+    @Override
+    public R createCheckPlanByTemp() {
+        List<CheckTemplateDo> list = checkTemplateService.list(new LambdaQueryWrapper<CheckTemplateDo>()
+                .eq(BaseDo::getDeleted, "0")
+                .eq(CheckTemplateDo::getJobstarttype, "10"));
+        JSCommonUtils.parameterCheck(list::isEmpty,"","安全检查模板暂无定时任务");
+
+
+
+
+        return R.ok();
+    }
+
+    /**
+     * 发送消息提醒
+     */
+    public void sendNotify(String notifyType, String tenantId, List<HiddenDangerTrackDo> dangerTrackDos) {
+        // 已读以往提醒信息
+        saveCheckCommonDao.updateNotifyState(notifyType, tenantId);
+
+        /****************************获取提醒人信息*******************************/
+        List<String> recipientIds = new ArrayList<>();
+        if (HIDDEN_DANGER_TASK_MAINTAIN.equals(notifyType)) {
+            // 维修 对应工厂的设备部部长 + 设备部维修主管
+            recipientIds = saveCheckCommonDao.getUserIdByRoleCodeAndOrgIdAndTenantId(Arrays.asList(HOED, EDMS), null, tenantId);
+        } else {
+            // 生产 根据 隐患地点 取对应部门车间的 车间主任、车间维修主管 角色中人员
+            List<String> orgId = dangerTrackDos.stream().map(HiddenDangerTrackDo::getDangerworkpark).distinct().collect(Collectors.toList());
+            if (!orgId.isEmpty()) {
+                recipientIds.addAll(saveCheckCommonDao.getUserIdByRoleCodeAndOrgIdAndTenantId(Arrays.asList(WMS, LCZG), orgId, tenantId));
+            }
+            // 整改状态为“待整改”记录中的 指派跟踪人
+            recipientIds.addAll(dangerTrackDos.stream().filter(info -> "待整改".equals(info.getStatus()))
+                    .map(HiddenDangerTrackDo::getTrackuserid)
+                    .filter(StringUtils::isNotBlank)
+                    .distinct()
+                    .collect(Collectors.toList()));
+        }
+        if (recipientIds.isEmpty()) {
+            return;
+        }
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_PATTERN_YMD);
+        // 附件生成
+        List<ExportHiddenDangerVo> exportData = dangerTrackDos.stream().map((data) -> {
+            ExportHiddenDangerVo exportHiddenDangerVo = new ExportHiddenDangerVo();
+            exportHiddenDangerVo.setTenantId(COMPANY_MAP.get(data.getTenantid()));
+            exportHiddenDangerVo.setStatus(data.getStatus());
+            exportHiddenDangerVo.setCode(data.getCode());
+            exportHiddenDangerVo.setHiddendangertype(data.getHiddendangertype());
+            exportHiddenDangerVo.setHiddendangercontent(data.getHiddendangercontent());
+            exportHiddenDangerVo.setTrackusername(data.getTrackusername());
+            exportHiddenDangerVo.setFindUser(data.getFindusername());
+            exportHiddenDangerVo.setFindDate(data.getFindtime() == null ? "" : simpleDateFormat.format(data.getFindtime()));
+            exportHiddenDangerVo.setRectificationdate(data.getRectificationdate() == null ? "" : simpleDateFormat.format(data.getRectificationdate()));
+            exportHiddenDangerVo.setCompletionschedule(data.getCompletionschedule());
+            exportHiddenDangerVo.setFinishdate(data.getFinishdate() == null ? "" : simpleDateFormat.format(data.getFinishdate()));
+            exportHiddenDangerVo.setDangersource(data.getDangersource());
+            return exportHiddenDangerVo;
+        }).collect(Collectors.toList());
+
+        // 消息提醒ID
+        String notifyId = SecurityUtil.getUUID();
+
+        String fileNameAndId = ExportExcelByEasyExcel.generateExcel("file", WEEK_HIDDEN_DANGER_TASK + simpleDateFormat.format(new Date()) + XLSX,
+                notifyId, exportData, ExportHiddenDangerVo.class);
+        if (StringUtils.isBlank(fileNameAndId)) {
+            return;
+        }
+        JSCommonUtils.sendNotify(notifyId, tenantId, WEEK_HIDDEN_DANGER_TASK,
+                String.format(HIDDEN_DANGER_TASK_CONTENT, dangerTrackDos.size()), fileNameAndId, recipientIds, null,
+                notifyType, false);
+    }
+
+
+    /**
+     * 隐患任务整改提醒
+     *
+     * @param hiddenDangerTrackList
+     * @return
+     * @date 2023/12/20 9:54
+     * @author shangmi
+     */
+
+    public void rectificationNotify(List<HiddenDangerTrackDo> hiddenDangerTrackList) {
+        hiddenDangerTrackList.forEach(hiddenDangerTrack -> {
+            List<String> userIds = Arrays.asList(hiddenDangerTrack.getTrackuserid().split(","));
+            JSCommonUtils.sendNotify(RECTIFICATION_MAIL_TITLE,
+                    String.format(RECTIFICATION_MAIL_CONTENT, hiddenDangerTrack.getCode(), hiddenDangerTrack.getFindtime(),
+                            hiddenDangerTrack.getFindusername(), hiddenDangerTrack.getHiddendangercontent(),
+                            hiddenDangerTrack.getRectificationdate()), null, userIds, hiddenDangerTrack.getId(), DANGERTASKS);
+        });
+
+    }
+
+
+    /**
+     * 隐患任务验证提醒
+     *
+     * @param hiddenDangerTrackList
+     * @return
+     * @date 2023/12/20 9:54
+     * @author shangmi
+     */
+
+    public void verifyNotify(List<HiddenDangerTrackDo> hiddenDangerTrackList) {
+        hiddenDangerTrackList.forEach(hiddenDangerTrack -> {
+            List<String> userIds = Arrays.asList(hiddenDangerTrack.getShopfacilitatorid().split(","));
+            String format = String.format(VERIFICATION_REMIND_TEMP, hiddenDangerTrack.getCode(), hiddenDangerTrack.getHiddendangercontent());
+            JSCommonUtils.sendNotify(VERIFICATION_MAIL_TITLE,
+                    String.format(VERIFICATION_REMIND_MAIL_CONTENT, format), null, userIds, hiddenDangerTrack.getId(), DANGERTASKS);
+        });
+
+    }
+
+    /**
+     * 隐患任务确认提醒
+     *
+     * @param hiddenDangerTrackList
+     * @return
+     * @date 2023/12/20 9:54
+     * @author shangmi
+     */
+
+    public void affirmNotify(List<HiddenDangerTrackDo> hiddenDangerTrackList) {
+        hiddenDangerTrackList.forEach(hiddenDangerTrack -> {
+            List<String> userIds = Arrays.asList(hiddenDangerTrack.getSafetypromoterid().split(","));
+            String format = String.format(VERIFICATION_REMIND_TEMP, hiddenDangerTrack.getCode(), hiddenDangerTrack.getHiddendangercontent());
+            JSCommonUtils.sendNotify(AFFIRM_MAIL_TITLE,
+                    String.format(AFFIRM_REMIND_MAIL_CONTENT, format), null, userIds, hiddenDangerTrack.getId(), DANGERTASKS);
+        });
+
+    }
+}

+ 4 - 0
js-security/security-server/src/main/java/com/rongwei/savecheck/controller/CheckTemplateController.java

@@ -179,6 +179,10 @@ public class CheckTemplateController {
     }
 
 
+
+
+
+
     /**
      * 查询检查内容是否存在被未删除的模板引用
      * 如未存在则直接删除,否则弹框告知

+ 0 - 63
js-security/security-server/src/main/java/com/rongwei/savecheck/controller/SafeSendNotifyController.java

@@ -54,61 +54,6 @@ public class SafeSendNotifyController {
         return R.ok();
     }
 
-
-    /**
-     * 隐患任务整改提醒 系统
-     * 定时任务 每天8点
-     *
-     * @param
-     * @return
-     * @date 2023/12/20 9:55
-     * @author shangmi
-     */
-
-    @Scheduled(cron = "0 0 8 ? * *")
-    @PostMapping("/rectification/system")
-    public R rectificationSystem() {
-        log.info("隐患跟踪任务整改提现定时任务!");
-        sendNotifyService.rectificationSystem();
-        return R.ok();
-    }
-
-    /**
-     * 隐患任务验证提醒 系统
-     * 定时任务 每天8点
-     *
-     * @param
-     * @return
-     * @date 2023/12/20 9:55
-     * @author shangmi
-     */
-
-    @Scheduled(cron = "0 0 8 ? * *")
-    @PostMapping("/verify/system")
-    public R verifySystem() {
-        log.info("隐患跟踪任务整改提醒定时任务!");
-        sendNotifyService.verifySystem();
-        return R.ok();
-    }
-
-    /**
-     * 隐患任务确认提醒 系统
-     * 定时任务 每天8点
-     *
-     * @param
-     * @return
-     * @date 2023/12/20 9:55
-     * @author shangmi
-     */
-
-    @Scheduled(cron = "0 0 8 ? * *")
-    @PostMapping("/affirm/system")
-    public R affirmSystem() {
-        log.info("隐患跟踪任务整改提醒定时任务!");
-        sendNotifyService.affirmSystem();
-        return R.ok();
-    }
-
     /**
      * 退回提醒
      *
@@ -125,7 +70,6 @@ public class SafeSendNotifyController {
         return R.ok();
     }
 
-
     /**
      * 提交提醒
      *
@@ -142,12 +86,5 @@ public class SafeSendNotifyController {
         return R.ok();
     }
 
-    @Scheduled(cron = "0 0 7 ? * WED,FRI")
-    @PostMapping("/hidden/danger")
-    public R hiddenDangerTak() {
-        log.info("点巡检隐患任务提醒");
-        sendNotifyService.hiddenDangerTask();
-        return R.ok();
-    }
 
 }

+ 96 - 0
js-security/security-server/src/main/java/com/rongwei/savecheck/controller/ScheduledTasksController.java

@@ -0,0 +1,96 @@
+package com.rongwei.savecheck.controller;
+
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.sfcommon.sys.service.impl.ScheduledTasksService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * ScheduledTasksController class
+ *
+ * @author XH
+ * @date 2024/08/27
+ */
+@RestController
+@RequestMapping("/scheduled/task")
+public class ScheduledTasksController {
+    private final Logger log = LoggerFactory.getLogger(this.getClass().getName());
+
+    @Autowired
+    private ScheduledTasksService scheduledTasksService;
+
+    /**
+     * 隐患任务整改提醒 系统
+     * 定时任务 每天8点
+     *
+     * @param
+     * @return
+     * @date 2023/12/20 9:55
+     * @author shangmi
+     */
+
+    @Scheduled(cron = "0 0 8 ? * *")
+    @PostMapping("/rectification/system")
+    public R rectificationSystem() {
+        log.info("隐患跟踪任务整改提现定时任务!");
+        scheduledTasksService.rectificationSystem();
+        return R.ok();
+    }
+
+    /**
+     * 隐患任务验证提醒 系统
+     * 定时任务 每天8点
+     *
+     * @param
+     * @return
+     * @date 2023/12/20 9:55
+     * @author shangmi
+     */
+
+    @Scheduled(cron = "0 0 8 ? * *")
+    @PostMapping("/verify/system")
+    public R verifySystem() {
+        log.info("隐患跟踪任务整改提醒定时任务!");
+        scheduledTasksService.verifySystem();
+        return R.ok();
+    }
+
+    /**
+     * 隐患任务确认提醒 系统
+     * 定时任务 每天8点
+     *
+     * @param
+     * @return
+     * @date 2023/12/20 9:55
+     * @author shangmi
+     */
+
+    @Scheduled(cron = "0 0 8 ? * *")
+    @PostMapping("/affirm/system")
+    public R affirmSystem() {
+        log.info("隐患跟踪任务整改提醒定时任务!");
+        scheduledTasksService.affirmSystem();
+        return R.ok();
+    }
+
+
+    @Scheduled(cron = "0 0 7 ? * WED,FRI")
+    @PostMapping("/hidden/danger")
+    public R hiddenDangerTak() {
+        log.info("点巡检隐患任务提醒");
+        scheduledTasksService.hiddenDangerTask();
+        return R.ok();
+    }
+
+    @Scheduled(cron = "0 0 8 ? * *")
+    @PostMapping("/save/check/plan")
+    public R createCheckPlanByTemp() {
+        log.info("点巡检隐患任务提醒");
+        return R.ok();
+    }
+}