Browse Source

feature 安全检查模板增加生产任务的接口

xiahan 11 tháng trước cách đây
mục cha
commit
33e56fae98
14 tập tin đã thay đổi với 343 bổ sung340 xóa
  1. 46 22
      js-common/src/main/java/com/rongwei/safecommon/utils/JSCommonUtils.java
  2. 0 274
      js-common/src/main/java/com/rongwei/safecommon/utils/SaveConstans.java
  3. 16 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspShiftTimeDao.java
  4. 3 2
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/CheckTemplateService.java
  5. 3 2
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/CheckTemplateItemsServiceImpl.java
  6. 167 11
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/CheckTemplateServiceImpl.java
  7. 19 18
      js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/HazardInvestigationServiceImpl.java
  8. 1 0
      js-security/security-common/src/main/java/com/rongwei/sfcommon/utils/MlConstants.java
  9. 52 0
      js-security/security-entity/src/main/java/com/rongwe/scentity/domian/AspShiftTimeDo.java
  10. 6 0
      js-security/security-entity/src/main/java/com/rongwe/scentity/domian/CheckItemContentDo.java
  11. 12 0
      js-security/security-entity/src/main/java/com/rongwe/scentity/domian/CheckTemplateDo.java
  12. 4 8
      js-security/security-entity/src/main/java/com/rongwe/scentity/domian/ThemeCheckContentDo.java
  13. 13 2
      js-security/security-server/src/main/java/com/rongwei/savecheck/controller/CheckTemplateController.java
  14. 1 1
      js-security/security-server/src/main/java/com/rongwei/savecheck/controller/ThemeCheckController.java

+ 46 - 22
js-common/src/main/java/com/rongwei/safecommon/utils/JSCommonUtils.java

@@ -12,6 +12,7 @@ import com.rongwei.rwadmincommon.system.vo.SysOrganizationVo;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.base.BaseDo;
 import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.base.exception.CustomException;
 import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommon.utils.StringUtils;
 import com.rongwei.rwcommon.vo.generalsql.BatchSaveVo;
@@ -34,6 +35,7 @@ import javax.servlet.http.HttpServletRequest;
 import java.time.LocalDate;
 import java.util.*;
 import java.util.function.BooleanSupplier;
+import java.util.function.Consumer;
 import java.util.stream.Collectors;
 
 import static com.rongwei.safecommon.utils.SaveConstans.*;
@@ -60,7 +62,13 @@ public class JSCommonUtils {
     private CXAdminFeginClient autoAdminFeginClient;
     @Autowired
     private SysSerialNumberService autoSysSerialNumberService;
-
+    @PostConstruct
+    public void info() {
+        redisService = autoRedisService;
+        commonFeginClient = autoCommonFeginClient;
+        adminFeginClient = autoAdminFeginClient;
+        sysSerialNumberService = autoSysSerialNumberService;
+    }
     /**
      * 发送消息提醒
      *
@@ -228,14 +236,8 @@ public class JSCommonUtils {
      * @return
      */
     public static String streamCodeGeneration(String moduleCode, String ruleTemplateStr, String tenantId) {
-        String orgCode = ORG_CODE_MAP.getOrDefault(tenantId, "");
-        log.info("开始生成流水码");
-        SysSerialVo sysSerialVo = new SysSerialVo();
-        sysSerialVo.setModulecode(String.format("%s_%s", moduleCode, orgCode));
-        sysSerialVo.setRuleTemplateStr(String.format("%s-%s", orgCode, ruleTemplateStr));
-        String streamCode = sysSerialNumberService.getCodeByTemplate(sysSerialVo);
-        log.info("流水码生成成功:{}", streamCode);
-        return streamCode;
+
+        return streamCodeGeneration(moduleCode, ruleTemplateStr, null, tenantId);
     }
 
     /**
@@ -247,13 +249,20 @@ public class JSCommonUtils {
      * @return
      */
     public static String streamCodeGeneration(String moduleCode, String ruleTemplateStr, String resetRule, String tenantId) {
-
-        String orgCode = (moduleCode.contains("_aq") ? AQ_ORG_CODE_MAP : ORG_CODE_MAP).getOrDefault(tenantId, "");
         log.info("开始生成流水码");
         SysSerialVo sysSerialVo = new SysSerialVo();
-        sysSerialVo.setModulecode(String.format("%s_%s", moduleCode, orgCode));
-        sysSerialVo.setRuleTemplateStr(String.format("%s-%s", orgCode, ruleTemplateStr));
-        sysSerialVo.setResetrule(resetRule);
+        if (StringUtils.isNotBlank(tenantId)) {
+            String orgCode = (moduleCode.contains("_aq") ? AQ_ORG_CODE_MAP : ORG_CODE_MAP).getOrDefault(tenantId, "");
+            sysSerialVo.setModulecode(String.format("%s_%s", moduleCode, orgCode));
+            sysSerialVo.setRuleTemplateStr(String.format("%s-%s", orgCode, ruleTemplateStr));
+        } else {
+            sysSerialVo.setModulecode(moduleCode);
+            sysSerialVo.setRuleTemplateStr(ruleTemplateStr);
+        }
+        if (StringUtils.isNotBlank(resetRule)) {
+            sysSerialVo.setResetrule(resetRule);
+        }
+        sysSerialVo.setIfautomaticreset("n");
         String streamCode = sysSerialNumberService.getCodeByTemplate(sysSerialVo);
         log.info("流水码生成成功:{}", streamCode);
         return streamCode;
@@ -344,14 +353,15 @@ public class JSCommonUtils {
         if (booleanSupplier.getAsBoolean()) {
             log.error(errorMsg, errorMsgParameter);
             if (org.apache.commons.lang.StringUtils.isNotBlank(returnMsg)) {
-                throw new RuntimeException(returnMsg);
+                throw new CustomException(returnMsg);
             }
         }
     }
+
     public static <T extends BaseDo> void setBaseDetail(T t, SysUserVo userVo) {
         t.setCreatedate(new Date());
         t.setModifydate(new Date());
-        if(userVo!=null){
+        if (userVo != null) {
             t.setCreateuserid(userVo.getId());
             t.setCreateusername(userVo.getName());
             t.setModifyuserid(userVo.getId());
@@ -359,11 +369,25 @@ public class JSCommonUtils {
         }
         t.setDeleted("0");
     }
-    @PostConstruct
-    public void info() {
-        redisService = autoRedisService;
-        commonFeginClient = autoCommonFeginClient;
-        adminFeginClient = autoAdminFeginClient;
-        sysSerialNumberService = autoSysSerialNumberService;
+
+    /**
+     * 执行批量修改数据操作
+     *
+     * @param infos           执行插入的数据 List<Obj>
+     * @param batchFunction   mapper 的insert方法 参数时 List<obj>
+     * @param batchInsertSize 一次插入多少条数据
+     * @param <T>
+     */
+    public static <T> void batchChunk(List<T> infos,
+                                      Consumer<List<T>> batchFunction,
+                                      int batchInsertSize) {
+        log.info("begin batch Handle by infos:{}", infos);
+        List<List<T>> partition = Lists.partition(infos, batchInsertSize);
+        partition.forEach(batchList -> {
+            batchFunction.accept(batchList);
+        });
     }
+
+
+
 }

+ 0 - 274
js-common/src/main/java/com/rongwei/safecommon/utils/SaveConstans.java

@@ -344,16 +344,6 @@ public class SaveConstans {
          */
         public static final String WEEK_HIDDEN_DANGER_TASK = "每周点检异常问题提醒";
 
-        /**
-         * 订单评审提醒
-         */
-        public static final String ORDEROUTTIMEAUDIT_TITLE = "订单评审提醒";
-
-        /**
-         * 辅料申购提醒
-         */
-        public static final String AUXILIARYMATERIAL_TITLE = "辅料申购提醒";
-
         /**
          * 作业延期提醒
          */
@@ -362,10 +352,6 @@ public class SaveConstans {
          * 特种设备提醒
          */
         public static final String SPECIALEQUIPMENT_TITLE = "特种设备提醒";
-        /**
-         * 报工不合格提醒
-         */
-        public static final String REPORTUNQUALIFY_TITLE = "订单作业报工不合格";
         /**
          * 安全观察指标提醒
          */
@@ -526,18 +512,6 @@ public class SaveConstans {
         public static final String EQUIPMENT_CHECK_CONTENT = " 您好,有如下设备即将年检到期,请及时处理! 设备类型:【%s】,设备编号:【%s】,设备名称:【%s】,年检日期:【%tF】";
     }
 
-    /**
-     * 模板路径
-     */
-    public static class TemplatePath {
-
-        /**
-         * 设备部位重复故障问题excel 模板名称
-         */
-        public static final String DEVICE_REPEATEDLY_FAILS_TEMPLATE_NAME = "template/设备部位重复故障问题.xls";
-
-
-    }
 
     /**
      * 模板路径
@@ -628,258 +602,10 @@ public class SaveConstans {
         public static final String HIDDEN_DANGER_STATUS = "hidden_danger_status";
     }
 
-    /**
-     * 加工方式
-     */
-    public static class ProcessWay {
-        /**
-         * 合并加工
-         */
-        public static final String PROCESS_WAY_MERGE = "合并加工";
-        /**
-         * 逐批加工
-         */
-        public static final String PROCESS_WAY_BATCH = "逐批加工";
-    }
-
-    /**
-     * 工序类型
-     */
-    public static class ProcessType {
-        /**
-         * 成退
-         */
-        public static final String PROCESS_TYPE_CHENTUI = "成退";
-        /**
-         * 中退
-         */
-        public static final String PROCESS_TYPE_ZHONGTUI = "中退";
-    }
-
-    public static class SchedulstatusTyep {
-        /**
-         * 待排程
-         */
-        public static final String SCHEDULSTATUS_TOSCHEDULE = "10";
-        /**
-         * 待发布
-         */
-        public static final String SCHEDULSTATUS_TORELEASE = "20";
-        /**
-         * 已发布
-         */
-        public static final String SCHEDULSTATUS_HASRELEASE = "30";
-    }
-
-    /**
-     * 是否锁定
-     */
-    public static class LockmarkType {
-        /**
-         * 是
-         */
-        public static final String LOCKMARK_Y = "y";
-        /**
-         * 否
-         */
-        public static final String LOCKMARK_N = "n";
-
-    }
-
-    /**
-     * 坯料计划生产状态
-     */
-    public static class ProductionStatus {
-        /**
-         * 已完工
-         */
-        public static final String COMPLETED = "50";
-        /**
-         * 加工中
-         */
-        public static final String PROCESSING = "40";
-        /**
-         * 待开工
-         */
-        public static final String TO_BE_STARTED = "30";
-        /**
-         * 待发布
-         */
-        public static final String TO_BE_PUBLISHED = "20";
-        /**
-         * 待排程
-         */
-        public static final String TO_BE_SCHEDULED = "10";
-    }
-
-    /**
-     * 生产状态
-     */
-    public static class SchedulingStatus {
-        /**
-         * 已发布
-         */
-        public static final String PUBLISHED = "30";
-        /**
-         * 待发布
-         */
-        public static final String TO_BE_PUBLISHED = "20";
-        /**
-         * 待排程
-         */
-        public static final String TO_BE_SCHEDULED = "10";
-    }
-
-    /**
-     * 作业状态
-     */
-    public static class JobStatus {
-        /**
-         * 待开工
-         */
-        public static final String JOBSTATUS_TO_BE_START = "待开工";
-        /**
-         * 加工中
-         */
-        public static final String JOBSTATUS_TO_BE_STARTING = "加工中";
-        /**
-         * 已完工
-         */
-        public static final String JOBSTATUS_TO_BE_END = "已完工";
-    }
-
-    public static class CloseStatus {
-        /**
-         * 未完工
-         */
-        public static final String UNFINISHED = "未完工";
-        /**
-         * 已完工
-         */
-        public static final String COMPLETED = "已完工";
-    }
-
-    /**
-     * 强制冲突描述
-     */
-    public static class ForcedConflictsDescription {
-        /**
-         * 工序作业所需的设备必须在工序的可选设备之内
-         */
-        public static final String EQ_TYPE_SAME = "工序作业所需的设备必须在工序的可选设备之内";
-        /**
-         * 第一步工序作业要小于开始排程时间
-         */
-        public static final String NO_PRE_GB_AFTER_NOW = "第一步工序作业要小于开始排程时间";
-        /**
-         * 当前工序作业开始时间违反上一步工序作业最大等待时间限制
-         */
-        public static final String HAS_ONE_PRE_GB_AFTER_NOW = "当前工序作业开始时间违反上一步工序作业最大等待时间限制";
-        /**
-         * 加工设备该加工时间段不可用
-         */
-        public static final String EQUIPMENT_RUN_TIME = "加工设备该加工时间段不可用";
-        /**
-         * 上一工序作业流转时间不能大于上一工序作业最大等待时间
-         */
-        public static final String LZ_TIME_LESS_MAX_WAIT = "上一工序作业流转时间不能大于上一工序作业最大等待时间";
-        /**
-         * 与加工设备其他作业加工时间重叠
-         */
-        public static final String EQ_TIME_CROSS = "与加工设备其他作业加工时间重叠";
-
-    }
-
-    /**
-     * 非强制冲突描述
-     */
-    public static class UNForcedConflictsDescription {
-        /**
-         * 订单交货期不满足
-         */
-        public static final String DELIVERY_DATE = "订单交货期不满足";
-        /**
-         * 订单的连续生产要求不满足
-         */
-        public static final String SERIES_PRODUCE = "订单的连续生产要求不满足";
-    }
 
-    /**
-     * 产品类型的外观 字典ID
-     */
-    public static class ProductionType {
-        /**
-         * 铝板ID
-         */
-        public static final String LVBAN_ID = "4a30f22e8c574b568b0715021f4641e8";
-        /**
-         * 板锭ID
-         */
-        public static final String BANDING_ID = "cc22dafdf4d845d4b9b4de23a57ab473";
 
-    }
 
-    /**
-     * 枚举数量单位
-     */
-    public static class CountUnit {
-        /**
-         * 千克、公斤
-         */
-        public static final String KG = "kg";
-        /**
-         * 吨
-         */
-        public static final String TON = "ton";
-    }
 
-    /**
-     * 在制品状态
-     */
-    public static class WorkInProgressStatus {
-        /**
-         * 待检验
-         */
-        public static final String WAIT_CHECK = "待检验";
-        /**
-         * 加工中
-         */
-        public static final String WORKING = "加工中";
-        /**
-         * 待加工
-         */
-        public static final String WAIT_WORK = "待加工";
-        /**
-         * 备料中
-         */
-        public static final String WAITING = "备料中";
-        /**
-         * 待入库
-         */
-        public static final String TO_BE_PUT_INTO_STORAGE = "待入库";
-    }
 
-    public static class CheckLevel {
-        /**
-         * B级
-         */
-        public static final String B = "B级";
-        /**
-         * BC级
-         */
-        public static final String B_C = "BC级";
-        /**
-         * 待判
-         */
-        public static final String WAITING_JUDGMENT = "待判";
-    }
 
-    /**
-     * 外观类型
-     */
-    public static class BlankAppearanceType {
-        public static final String ALUMINUM_COIL = "铝卷";
-        public static final String ALUMINUM_PLATE = "铝板";
-        public static final String ALUMINUM_INGOT = "铝锭";
-    }
 }

+ 16 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspShiftTimeDao.java

@@ -0,0 +1,16 @@
+package com.rongwei.sfcommon.sys.dao;
+
+import com.rongwe.scentity.domian.AspShiftTimeDo;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Entity generator.domain.AspShiftTime
+ */
+public interface AspShiftTimeDao extends BaseMapper<AspShiftTimeDo> {
+
+}
+
+
+
+

+ 3 - 2
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/CheckTemplateService.java

@@ -3,8 +3,8 @@ package com.rongwei.sfcommon.sys.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.rongwe.scentity.domian.CheckTemplateDo;
 import com.rongwe.scentity.vo.CheckTemplateVo;
+import com.rongwei.rwcommon.base.R;
 
-import java.util.List;
 import java.util.Map;
 
 /**
@@ -19,10 +19,11 @@ public interface CheckTemplateService extends IService<CheckTemplateDo> {
     CheckTemplateVo mapToCheckTemplateVo(Map<String, Object> map);
 
     void saveByVersion(CheckTemplateVo checkTemplateVo);
-
+    @Deprecated
     void pointCheckCreate(Map<String, Object> map);
 
     void updateStatusByHiId(Map<String, Object> map);
 
+    R createCheckPlanByTempId(String id);
 }
 

+ 3 - 2
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/CheckTemplateItemsServiceImpl.java

@@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Service("checkTemplateItemsService")
@@ -22,7 +23,7 @@ public class CheckTemplateItemsServiceImpl extends ServiceImpl<CheckTemplateItem
 
     @Override
     public List<CheckTemplateItemsDo> getItemByContentId(List<String> ids) {
-        if (ids != null && ids.size() > 0) {
+        if (ids != null && !ids.isEmpty()) {
             String id = "";
             for (String idstr : ids) {
                 if ("".equals(id)) {
@@ -34,7 +35,7 @@ public class CheckTemplateItemsServiceImpl extends ServiceImpl<CheckTemplateItem
             List<CheckTemplateItemsDo> list = checkTemplateItemsDao.getItemByContentId(id);
             return list;
         } else {
-            return null;
+            return new ArrayList<>();
         }
     }
 

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

@@ -8,15 +8,16 @@ import com.rongwe.scentity.domian.*;
 import com.rongwe.scentity.vo.CheckTemplateItemsVo;
 import com.rongwe.scentity.vo.CheckTemplateVo;
 import com.rongwei.commonservice.serial.service.CommonDictService;
-import com.rongwei.commonservice.serial.service.SysSerialNumberService;
-import com.rongwei.rwadmincommon.system.dao.SysUserDao;
 import com.rongwei.rwadmincommon.system.domain.SysDictDo;
+import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 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.rwcommon.vo.generalsql.GeneralApiParameter;
 import com.rongwei.rwcommon.vo.generalsql.SlaveDMLVo;
 import com.rongwei.safecommon.utils.JSCommonUtils;
+import com.rongwei.sfcommon.sys.dao.AspShiftTimeDao;
 import com.rongwei.sfcommon.sys.dao.CheckTemplateDao;
 import com.rongwei.sfcommon.sys.service.*;
 import com.rongwei.sfcommon.utils.MlConstants;
@@ -28,10 +29,12 @@ import org.springframework.stereotype.Service;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static com.rongwei.safecommon.utils.JSCommonUtils.parameterCheck;
 import static com.rongwei.safecommon.utils.JSCommonUtils.streamCodeGeneration;
 import static com.rongwei.safecommon.utils.SaveConstans.NotifyContent.INSPECTION_CONTENT;
 import static com.rongwei.safecommon.utils.SaveConstans.NotifyTitle.INSPECTION_TITLE;
 import static com.rongwei.safecommon.utils.SaveConstans.NotifyType.INSPECTION;
+import static com.rongwei.sfcommon.utils.MlConstants.*;
 
 @Service("checkTemplateService")
 public class CheckTemplateServiceImpl extends ServiceImpl<CheckTemplateDao, CheckTemplateDo> implements CheckTemplateService {
@@ -50,14 +53,15 @@ public class CheckTemplateServiceImpl extends ServiceImpl<CheckTemplateDao, Chec
         add("november");
         add("december");
     }};
+    public static final HashMap<String, Object> SHIFT_TIME_QUERY = new HashMap<String, Object>() {{
+        put("DELETED", "0");
+    }};
     private static final Logger logger = LoggerFactory.getLogger(CheckTemplateServiceImpl.class);
     @Autowired
     private CheckTemplateItemsService checkTemplateItemsService;
     @Autowired
     private CommonDictService commonDictService;
     @Autowired
-    private SysSerialNumberService sysSerialNumberService;
-    @Autowired
     private CheckItemsService checkItemsService;
     @Autowired
     private CheckItemsDutyuserService checkItemsDutyuserService;
@@ -68,7 +72,11 @@ public class CheckTemplateServiceImpl extends ServiceImpl<CheckTemplateDao, Chec
     @Autowired
     private CheckItemContentService checkItemContentService;
     @Autowired
-    private SysUserDao sysUserDao;
+    private AspShiftTimeDao aspShiftTimeDao;
+    @Autowired
+    private ThemeCheckItemService themeCheckItemService;
+    @Autowired
+    private ThemeCheckContentService themeCheckContentService;
 
     /**
      * 通用Map转自定义业务实体类
@@ -128,6 +136,7 @@ public class CheckTemplateServiceImpl extends ServiceImpl<CheckTemplateDao, Chec
     /**
      * 定时调度(每天)创建点检任务
      */
+    @Deprecated
     public void pointCheckCreate(Map<String, Object> map) {
         logger.info("点检定时任务生成开始.....");
         if (map == null) {
@@ -205,15 +214,15 @@ public class CheckTemplateServiceImpl extends ServiceImpl<CheckTemplateDao, Chec
             }
 
             // 白班
-            if (MlConstants.CHECK_SHIFT_EVERY_SHIFT.equals(shift) || MlConstants.CHECK_SHIFT_EVERY_DAY_SHIFT.equals(shift)) {
+            if (CHECK_SHIFT_EVERY_SHIFT.equals(shift) || MlConstants.CHECK_SHIFT_EVERY_DAY_SHIFT.equals(shift)) {
                 addCheckItems(dayItems, shiftcount, checkTemplateItem);
             }
             // 夜班
-            if (MlConstants.CHECK_SHIFT_EVERY_SHIFT.equals(shift) || MlConstants.CHECK_SHIFT_EVERY_NIGHT_SHIFT.equals(shift)) {
+            if (CHECK_SHIFT_EVERY_SHIFT.equals(shift) || CHECK_SHIFT_EVERY_NIGHT_SHIFT.equals(shift)) {
                 addCheckItems(nightItems, shiftcount, checkTemplateItem);
             }
             // 中班
-            if (MlConstants.CHECK_SHIFT_EVERY_SHIFT.equals(shift) || MlConstants.CHECK_SHIFT_EVERY_MIDDLE_SHIFT.equals(shift)) {
+            if (CHECK_SHIFT_EVERY_SHIFT.equals(shift) || CHECK_SHIFT_EVERY_MIDDLE_SHIFT.equals(shift)) {
                 addCheckItems(middleItems, shiftcount, checkTemplateItem);
             }
             // 长白班 每班数据不需要生成长白班
@@ -226,9 +235,9 @@ public class CheckTemplateServiceImpl extends ServiceImpl<CheckTemplateDao, Chec
         // 白班任务
         createPointCheckByTemplate(checkTemplate, dayItems, MlConstants.CHECK_SHIFT_EVERY_DAY_SHIFT);
         // 中班任务
-        createPointCheckByTemplate(checkTemplate, middleItems, MlConstants.CHECK_SHIFT_EVERY_MIDDLE_SHIFT);
+        createPointCheckByTemplate(checkTemplate, middleItems, CHECK_SHIFT_EVERY_MIDDLE_SHIFT);
         // 夜班任务
-        createPointCheckByTemplate(checkTemplate, nightItems, MlConstants.CHECK_SHIFT_EVERY_NIGHT_SHIFT);
+        createPointCheckByTemplate(checkTemplate, nightItems, CHECK_SHIFT_EVERY_NIGHT_SHIFT);
         // 长白班任务
         createPointCheckByTemplate(checkTemplate, changbaiClassItems, MlConstants.CHECK_SHIFT_EVERY_CHANGBAI_CLASS_SHIFT);
     }
@@ -240,9 +249,12 @@ public class CheckTemplateServiceImpl extends ServiceImpl<CheckTemplateDao, Chec
      * @return 是否可以生成任务
      */
     private boolean isNowCreateByFrequency(String frequency) {
+        if (StringUtils.isBlank(frequency)) {
+            return false;
+        }
         boolean isCreate = true;
         String[] frequencys = frequency.split("/");
-        if (frequencys != null && frequencys.length > 0) {
+        if (frequencys.length > 0) {
             // 每天
             if ("day".equals(frequencys[0])) {
                 isCreate = true;
@@ -484,4 +496,148 @@ public class CheckTemplateServiceImpl extends ServiceImpl<CheckTemplateDao, Chec
             this.updateById(checkTemplate);
         }
     }
+
+    /**
+     * 根据模板ID创建计划
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    public R createCheckPlanByTempId(String id) {
+        CheckTemplateDo checkTemplateDo = this.getById(id);
+        parameterCheck(() -> checkTemplateDo == null, "检查模板不存在", "检查模板不存在");
+        // 生产检查任务
+        assembleCheckPlan(Collections.singletonList(checkTemplateDo), true);
+        return R.ok();
+    }
+
+
+    public void assembleCheckPlan(List<CheckTemplateDo> checkTemplateDos, boolean singleExecution) {
+        // 各班次需要生产任务的模板信息
+        Map<String, List<CheckTemplateDo>> shiftTypeAndTempMap = new HashMap<>();
+        if (!singleExecution) {
+            // 获取本次可以生成计划的模板信息
+            checkTemplateDos = checkTemplateDos.stream().filter(data -> isNowCreateByFrequency(data.getFrequency())).collect(Collectors.toList());
+        }
+        // 获取工作时间信息
+        List<AspShiftTimeDo> aspShiftTimeDos = aspShiftTimeDao.selectByMap(SHIFT_TIME_QUERY);
+
+        log.debug("本次需要生成");
+        checkTemplateDos.forEach(tempDao -> {
+            if (tempDao.getShift().contains(CHECK_SHIFT_EVERY_DAY_SHIFT)) {
+                shiftTypeAndTempMap.computeIfAbsent(CHECK_SHIFT_EVERY_DAY_SHIFT, k -> new ArrayList<>()).add(tempDao);
+            } else if (tempDao.getShift().contains(CHECK_SHIFT_EVERY_MIDDLE_SHIFT)) {
+                // 中班
+                shiftTypeAndTempMap.computeIfAbsent(CHECK_SHIFT_EVERY_MIDDLE_SHIFT, k -> new ArrayList<>()).add(tempDao);
+            } else if (tempDao.getShift().contains(CHECK_SHIFT_EVERY_NIGHT_SHIFT)) {
+                // 夜班
+                shiftTypeAndTempMap.computeIfAbsent(CHECK_SHIFT_EVERY_NIGHT_SHIFT, k -> new ArrayList<>()).add(tempDao);
+            } else if (tempDao.getShift().contains(CHECK_SHIFT_EVERY_CHANGBAI_CLASS_SHIFT)) {
+                // 长白班
+                shiftTypeAndTempMap.computeIfAbsent(CHECK_SHIFT_EVERY_CHANGBAI_CLASS_SHIFT, k -> new ArrayList<>()).add(tempDao);
+            } else if (tempDao.getShift().contains(CHECK_SHIFT_EVERY_SHIFT)) {
+                // 每班
+                shiftTypeAndTempMap.computeIfAbsent(CHECK_SHIFT_EVERY_DAY_SHIFT, k -> new ArrayList<>()).add(tempDao);
+                shiftTypeAndTempMap.computeIfAbsent(CHECK_SHIFT_EVERY_MIDDLE_SHIFT, k -> new ArrayList<>()).add(tempDao);
+                shiftTypeAndTempMap.computeIfAbsent(CHECK_SHIFT_EVERY_NIGHT_SHIFT, k -> new ArrayList<>()).add(tempDao);
+            }
+        });
+        // 获取检查模板ID
+        List<String> tempId = checkTemplateDos.stream().map(CheckTemplateDo::getId).collect(Collectors.toList());
+        // 获取模板对应的检查项
+        List<CheckTemplateItemsDo> templateItemsDos = checkTemplateItemsService.list(new LambdaQueryWrapper<CheckTemplateItemsDo>()
+                .in(CheckTemplateItemsDo::getChecktemplateid, tempId)
+                .eq(BaseDo::getDeleted, "0"));
+        SysUserVo currentUser = JSCommonUtils.getCurrentUser();
+        // 获取当前时间的0点0分0秒
+        Calendar startCalendar = Calendar.getInstance();
+        startCalendar.setTime(new Date());
+        startCalendar.set(Calendar.HOUR_OF_DAY, 0);
+        startCalendar.set(Calendar.MINUTE, 0);
+        startCalendar.set(Calendar.SECOND, 1);
+        Calendar endCalendar = Calendar.getInstance();
+        endCalendar.setTime(new Date());
+        // 获取当前时间的23点59分59秒
+        endCalendar.set(Calendar.HOUR_OF_DAY, 23);
+        endCalendar.set(Calendar.MINUTE, 59);
+        endCalendar.set(Calendar.SECOND, 59);
+        endCalendar.set(Calendar.MILLISECOND, 999);
+        // 检查任务
+        List<ThemeCheckItemDo> themeCheckItemSaveDos = new ArrayList<>();
+        // 检查任务对应的检查项
+        List<ThemeCheckContentDo> themeCheckContentDos = new ArrayList<>();
+        ThemeCheckItemDo checkItemDo;
+        ThemeCheckContentDo themeCheckContentDo;
+        Date startTime = startCalendar.getTime();
+        Date endTime = endCalendar.getTime();
+        // 模板对应的检查项
+        List<CheckTemplateItemsDo> items;
+        for (Map.Entry<String, List<CheckTemplateDo>> entry : shiftTypeAndTempMap.entrySet()) {
+            String k = entry.getKey();
+            AspShiftTimeDo aspShiftTimeDo = aspShiftTimeDos.stream().filter(info -> k.equals(info.getShift())).findFirst().orElse(null);
+            basedOnShiftGenerateTime(aspShiftTimeDo, startTime, endTime);
+            for (CheckTemplateDo checkTemplateDo : entry.getValue()) {
+                checkItemDo = new ThemeCheckItemDo();
+                checkItemDo.setId(SecurityUtil.getUUID());
+                JSCommonUtils.setBaseDetail(checkItemDo, currentUser);
+                checkItemDo.setThemechecknum(JSCommonUtils.streamCodeGeneration("asp_theme_check_item_number",
+                        "SC@{date:yyyyMM}@{serialNumber:#000000}", "date:yyyyMM", ""));
+                checkItemDo.setThemecheckid(checkTemplateDo.getId());
+                checkItemDo.setThemecheckname(checkTemplateDo.getTemplatename());
+                checkItemDo.setPlanstarttime(startTime);
+                checkItemDo.setPlanendtime(endTime);
+                checkItemDo.setChecktype(checkTemplateDo.getTemplatetype());
+                checkItemDo.setTenantid(checkTemplateDo.getTenantid());
+                // TODO:XH add 2024/8/16 暂不止如何处理
+//                checkItemDo.setChecker();
+//                checkItemDo.setCheckerid();
+                // TODO:XH add 2024/8/16 检查区域暂不处理
+//                checkItemDo.setThemecheckworkspartid();
+//                checkItemDo.setCheckworkspart();
+                checkItemDo.setCheckresult("20");
+                checkItemDo.setCheckstatus(THEME_CHECK_STATUS_WAIT);
+                themeCheckItemSaveDos.add(checkItemDo);
+                items = templateItemsDos.stream().filter(data -> checkTemplateDo.getId().equals(data.getChecktemplateid())).collect(Collectors.toList());
+                for (int i = 0; i < items.size(); i++) {
+                    themeCheckContentDo = new ThemeCheckContentDo();
+                    themeCheckContentDo.setItemsort(i+1);
+                    themeCheckContentDo.setTenantid(checkTemplateDo.getTenantid());
+                    themeCheckContentDo.setId(SecurityUtil.getUUID());
+                    themeCheckContentDo.setThemecheckitemid(checkItemDo.getId());
+                    JSCommonUtils.setBaseDetail(themeCheckContentDo, currentUser);
+                    themeCheckContentDo.setCheckposition(items.get(i).getCheckposition());
+                    themeCheckContentDo.setCheckmethod(items.get(i).getChecktype());
+                    themeCheckContentDo.setCheckcontent(items.get(i).getCheckcontent());
+                    themeCheckContentDo.setManagement(items.get(i).getManagement());
+                    themeCheckContentDos.add(themeCheckContentDo);
+                }
+            }
+        }
+        // 数据存表
+        JSCommonUtils.batchChunk(themeCheckItemSaveDos, themeCheckItemService::saveBatch, 20);
+        JSCommonUtils.batchChunk(themeCheckContentDos, themeCheckContentService::saveBatch, 20);
+    }
+
+    public void basedOnShiftGenerateTime(AspShiftTimeDo aspShiftTimeDo,
+                                         Date startTime, Date endTime) {
+        if (aspShiftTimeDo == null) {
+            return;
+        }
+        String starttime = aspShiftTimeDo.getStarttime();
+        String endtime = aspShiftTimeDo.getEndtime();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(new Date());
+        calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(starttime.split(":")[0]));
+        calendar.set(Calendar.MINUTE, Integer.parseInt(starttime.split(":")[1]));
+        calendar.set(Calendar.SECOND, Integer.parseInt(starttime.split(":")[2]));
+        startTime = calendar.getTime();
+        calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(endtime.split(":")[0]));
+        calendar.set(Calendar.MINUTE, Integer.parseInt(endtime.split(":")[1]));
+        calendar.set(Calendar.SECOND, Integer.parseInt(endtime.split(":")[2]));
+        endTime = calendar.getTime();
+
+    }
+
+
 }

+ 19 - 18
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/HazardInvestigationServiceImpl.java

@@ -95,33 +95,34 @@ public class HazardInvestigationServiceImpl implements HazardInvestigationServic
         List<ApsDetailsHazardInvestigationTasksJcxzibiaoDo> taskDetailSaveList = new ArrayList<>();
         // 按照风险点 分开生成隐患排查任务
         ApsDetailsHazardInvestigationTasksDo apsDetailsHazardInvestigationTasksDo;
+        // 获取当前时间的0点0分0秒
+        Calendar startOfDay = Calendar.getInstance();
+        startOfDay.setTime(new Date());
+        startOfDay.set(Calendar.HOUR_OF_DAY, 0);
+        startOfDay.set(Calendar.MINUTE, 0);
+        startOfDay.set(Calendar.SECOND, 1);
+        Date startTime = startOfDay.getTime();
+        // 获取当前时间的23点59分59秒
+        startOfDay.set(Calendar.HOUR_OF_DAY, 23);
+        startOfDay.set(Calendar.MINUTE, 59);
+        startOfDay.set(Calendar.SECOND, 59);
+        startOfDay.set(Calendar.MILLISECOND, 999);
+        Date endTime = startOfDay.getTime();
         for (AspRiskUnitDo s : aspRiskUnitDos) {
             apsDetailsHazardInvestigationTasksDo = new ApsDetailsHazardInvestigationTasksDo();
             JSCommonUtils.setBaseDetail(apsDetailsHazardInvestigationTasksDo, currentUser);
             apsDetailsHazardInvestigationTasksDo.setId(SecurityUtil.getUUID());
             apsDetailsHazardInvestigationTasksDo.setRiskunit(tempData.getHiddendangerid());
             apsDetailsHazardInvestigationTasksDo.setRiskanalysisobjectcode(tempData.getHiddendanger());
-            SysSerialVo sysSerialVo = new SysSerialVo();
-            sysSerialVo.setModulecode("aps_details_hazard_investigation_tasks_NUMBER");
-            sysSerialVo.setRuleTemplateStr("YH@{date:yyyyMMdd}@{serialNumber:#000000}");
-            sysSerialVo.setIfautomaticreset("n");
-            apsDetailsHazardInvestigationTasksDo.setNumber(autoSysSerialNumberService.getCodeByTemplate(sysSerialVo));
+            apsDetailsHazardInvestigationTasksDo.setNumber(
+                    JSCommonUtils.streamCodeGeneration("aps_details_hazard_investigation_tasks_NUMBER",
+                            "YH@{date:yyyyMMdd}@{serialNumber:#000000}","date:yyyyMM",
+                            ""));
             apsDetailsHazardInvestigationTasksDo.setIdentifyperple(s.getDutyofficername());
             apsDetailsHazardInvestigationTasksDo.setIdentifyperpleid(s.getDutyofficerid());
 
-            // 获取当前时间的0点0分0秒
-            Calendar startOfDay = Calendar.getInstance();
-            startOfDay.setTime(new Date());
-            startOfDay.set(Calendar.HOUR_OF_DAY, 0);
-            startOfDay.set(Calendar.MINUTE, 0);
-            startOfDay.set(Calendar.SECOND, 1);
-            apsDetailsHazardInvestigationTasksDo.setPlannedstarttime(startOfDay.getTime());
-            // 获取当前时间的23点59分59秒
-            startOfDay.set(Calendar.HOUR_OF_DAY, 23);
-            startOfDay.set(Calendar.MINUTE, 59);
-            startOfDay.set(Calendar.SECOND, 59);
-            startOfDay.set(Calendar.MILLISECOND, 999);
-            apsDetailsHazardInvestigationTasksDo.setPlannedendtime(startOfDay.getTime());
+            apsDetailsHazardInvestigationTasksDo.setPlannedstarttime(startTime);
+            apsDetailsHazardInvestigationTasksDo.setPlannedendtime(endTime);
             taskSaveList.add(apsDetailsHazardInvestigationTasksDo);
             taskDetailSaveList.addAll(assembleTaskDetails(currentUser,apsDetailsHazardInvestigationTasksDo, checkItemList));
         }

+ 1 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/utils/MlConstants.java

@@ -30,6 +30,7 @@ public class MlConstants {
      */
     public static final String CHECK_SHIFT_EVERY_CHANGBAI_CLASS_SHIFT = "50";
 
+
     // 点检状态  待点检
     public static final String POINT_CHECK_STATUS_WAIT = "10";
     // 点检状态  已点检

+ 52 - 0
js-security/security-entity/src/main/java/com/rongwe/scentity/domian/AspShiftTimeDo.java

@@ -0,0 +1,52 @@
+package com.rongwe.scentity.domian;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+/**
+ * 班组和时间对应关系
+ * @TableName asp_shift_time
+ */
+@TableName(value ="asp_shift_time")
+@Data
+public class AspShiftTimeDo extends BaseDo implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 班次
+     */
+    private String shift;
+
+    /**
+     * 开始时间
+     */
+    private String starttime;
+
+    /**
+     * 结束时间
+     */
+    private String endtime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 6 - 0
js-security/security-entity/src/main/java/com/rongwe/scentity/domian/CheckItemContentDo.java

@@ -46,14 +46,17 @@ public class CheckItemContentDo extends BaseDo implements Serializable {
     /**
      * 频次IDS
      */
+    @Deprecated
     private String frequencyids;
     /**
      * 频次
      */
+    @Deprecated
     private String frequency;
     /**
      * 频次一级
      */
+    @Deprecated
     private String frequencyone;
     /**
      * 频次二级
@@ -62,14 +65,17 @@ public class CheckItemContentDo extends BaseDo implements Serializable {
     /**
      * 频次三级
      */
+    @Deprecated
     private String frequencythree;
     /**
      * 班次
      */
+    @Deprecated
     private String shift;
     /**
      * 次数
      */
+    @Deprecated
     private Integer shiftcount;
     /**
      * 处置

+ 12 - 0
js-security/security-entity/src/main/java/com/rongwe/scentity/domian/CheckTemplateDo.java

@@ -84,4 +84,16 @@ public class CheckTemplateDo extends BaseDo implements Serializable {
      */
     private String roption;
 
+    /**
+     * 频次IDS
+     */
+    private String frequencyids;
+    /**
+     * 频次
+     */
+    private String frequency;
+    /**
+     * 班次
+     */
+    private String shift;
 }

+ 4 - 8
js-security/security-entity/src/main/java/com/rongwe/scentity/domian/ThemeCheckContentDo.java

@@ -56,7 +56,7 @@ public class ThemeCheckContentDo extends BaseDo implements Serializable {
      */
     private String managementresult;
     /**
-     * 
+     * 序
      */
     private Integer itemsort;
     /**
@@ -76,13 +76,9 @@ public class ThemeCheckContentDo extends BaseDo implements Serializable {
      * 处理说明
      */
     private String processexplain;
+
     /**
-     * 创建人名称
-     */
-    private String createusername;
-    /**
-     * 修改人名称
+     * 检查方式
      */
-    private String modifyusername;
-
+    private String checkmethod;
 }

+ 13 - 2
js-security/security-server/src/main/java/com/rongwei/savecheck/controller/CheckTemplateController.java

@@ -26,7 +26,7 @@ import java.util.Map;
  * @date 2020-07-17 09:33:23
  */
 @RestController
-@RequestMapping("checkTemplate")
+@RequestMapping("/checkTemplate")
 @Slf4j
 public class CheckTemplateController {
     @Autowired
@@ -164,6 +164,17 @@ public class CheckTemplateController {
         }
     }
 
+    /**
+     * 根据模板生成任务
+     * @return
+     */
+    @PostMapping("/create/check/plan/{id}")
+    public R createCheckPlan(@PathVariable(name = "id") String id){
+        log.info("开始根据模板:{}创建检查任务",id);
+        return checkTemplateService.createCheckPlanByTempId(id);
+    }
+
+
     /**
      * 查询检查内容是否存在被未删除的模板引用
      * 如未存在则直接删除,否则弹框告知
@@ -172,7 +183,7 @@ public class CheckTemplateController {
     public R getItemByContentId(@RequestBody List<String> ids) {
         try {
             List<CheckTemplateItemsDo> list = checkTemplateItemsService.getItemByContentId(ids);
-            if (list == null || list.size() == 0) {
+            if (list == null || list.isEmpty()) {
                 checkItemContentService.removeByIds(ids);
                 return R.ok("canDelete");
             } else {

+ 1 - 1
js-security/security-server/src/main/java/com/rongwei/savecheck/controller/ThemeCheckController.java

@@ -92,7 +92,7 @@ public class ThemeCheckController {
     }
 
     /**
-     * 日常检查新增保存生成检查任务发送邮件
+     * 安全检查计划生产检查任务
      *
      * @param themeCheckDo
      * @return