ソースを参照

作息变更安全检查逻辑优化

luojun 2 年 前
コミット
fa8446a4fa

+ 29 - 5
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/job/SafetyCheckJobBusiness.java

@@ -13,7 +13,6 @@ import com.xunmei.common.core.enums.CycleCommonEnum;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.utils.IDHelper;
 import com.xunmei.core.TaskCreatingServiceImplBase;
-import com.xunmei.core.retrieval.service.ICoreMonitoringRetrievalTaskService;
 import com.xunmei.core.safetyCheck.domain.*;
 import com.xunmei.core.safetyCheck.domain.CoreSafecheckPlan;
 import com.xunmei.core.safetyCheck.dto.SafetyTaskBuildDto;
@@ -650,7 +649,28 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
     public void rebuildTask(List<Long> orgIds, Date startDate, Date endDate, CycleCommonEnum cycle) {
         Map<Long, Boolean> workingMap = orgWorkTimeStatusMap(startDate, cycle, orgIds);
 //        List<Long> deleteTaskIds = new ArrayList<>();
+        Integer planCycle = 0;
+        switch (cycle) {
+            case WEEKLY:
+                planCycle = 1;
+                break;
+            case MONTHLY:
+                planCycle = 2;
+                break;
+            case QUARTERLY:
+                planCycle = 3;
+                break;
+            case HALF_YEARLY:
+                planCycle = 4;
+                break;
+            case YEARLY:
+                planCycle = 5;
+                break;
+            case NONE:
+                planCycle = 6;
+                break;
 
+        }
         List<SysOrg> orgs = remoteOrgService.selectByOrgIdList(orgIds, SecurityConstants.INNER);
         for (SysOrg worg : orgs) {
             if (ObjectUtil.isNull(worg.getType())) {
@@ -658,20 +678,24 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
             }
 
             Long orgId = worg.getId();
-            checkTaskService.deleteByOrgIdAndRange(orgId, startDate, endDate);
+            checkTaskService.deleteByOrgIdAndRange(orgId, startDate, endDate, planCycle);
             if (!workingMap.containsKey(orgId) || !workingMap.get(orgId)) {
                 //当前作息周期已经歇业,删除未进行的任务
-                checkTaskService.deleteByOrgIdAndRange(orgId, startDate, endDate);
+                checkTaskService.deleteByOrgIdAndRange(orgId, startDate, endDate, planCycle);
                 continue;
             } else {
                 //开始营业,重新生成任务
-                //拿到所有检查计划
-                List<CoreSafecheckPlan> plans = planMapper.selectByPlanStatus(1);
+                //拿到当前周期所有检查计划
+                List<CoreSafecheckPlan> plans = planMapper.selectByPlanStatus(1, planCycle);
                 Iterator<CoreSafecheckPlan> safecheckPlanIterator = plans.iterator();
                 //遍历计划
                 while (safecheckPlanIterator.hasNext()) {
                     //拿到计划所属受检机构
                     List<SysOrg> checkOrgList = safecheckPlanIterator.next().getCheckOrgList();
+//                    //如果检查机构数量为0表示未指定具体检查机构,默认当前计划拥有当前机构
+//                    if(checkOrgList.size()==0){
+//                        checkOrgList.add(worg);
+//                    }
                     //过滤掉不等于当前作息变更机构的受检机构
                     List<SysOrg> collect = checkOrgList.stream().filter(e -> e.getId().equals(orgId)).collect(Collectors.toList());
                     //过滤完数组长度0表示没有受检机构等于作息变更机构的数据

+ 1 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/mapper/CoreSafecheckPlanMapper.java

@@ -3,7 +3,6 @@ package com.xunmei.core.safetyCheck.mapper;
 import java.util.List;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.xunmei.core.resumption.domain.AppPlan;
 import com.xunmei.core.safetyCheck.domain.CoreSafecheckPlan;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
@@ -74,5 +73,5 @@ public interface CoreSafecheckPlanMapper extends BaseMapper<CoreSafecheckPlan> {
 
     List<CoreSafecheckPlan> selectChildren(@Param("check") CoreSafecheckPlan coreSafecheckPlan);
 
-    List<CoreSafecheckPlan> selectByPlanStatus(@Param("planStatus")int i);
+    List<CoreSafecheckPlan> selectByPlanStatus(@Param("planStatus") int i, @Param("cycle")Integer cycle);
 }

+ 2 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/ICoreSafetyTaskService.java

@@ -4,7 +4,6 @@ import java.util.Date;
 import java.util.List;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xunmei.common.core.domain.panel.dto.PanelListDto;
 import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.web.page.TableDataInfo;
@@ -83,6 +82,7 @@ public interface ICoreSafetyTaskService extends IService<CoreSafetyTask> {
      * @param orgId
      * @param startDate
      * @param endDate
+     * @param cycle
      */
-    void deleteByOrgIdAndRange(Long orgId, Date startDate, Date endDate);
+    void deleteByOrgIdAndRange(Long orgId, Date startDate, Date endDate, Integer cycle);
 }

+ 2 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafetyTaskServiceImpl.java

@@ -11,7 +11,6 @@ import com.xunmei.common.core.domain.panel.dto.PanelListDto;
 import com.xunmei.common.core.domain.panel.enums.PanelTypeEnums;
 import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.utils.DateUtils;
-import com.xunmei.core.safetyCheck.domain.CoreSafecheckPlanToRole;
 import com.xunmei.core.safetyCheck.domain.CoreSafetyTask;
 import com.xunmei.core.safetyCheck.mapper.CoreSafecheckPlanToRoleMapper;
 import com.xunmei.core.safetyCheck.mapper.CoreSafetyTaskMapper;
@@ -167,8 +166,8 @@ public class CoreSafetyTaskServiceImpl extends ServiceImpl<CoreSafetyTaskMapper,
     }
 
     @Override
-    public void deleteByOrgIdAndRange(Long orgId, Date startDate, Date endDate) {
-        coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getOrgId, orgId).between(CoreSafetyTask::getYmdDate, startDate, endDate).in(CoreSafetyTask::getStatus,1,2));
+    public void deleteByOrgIdAndRange(Long orgId, Date startDate, Date endDate, Integer cycle) {
+        coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getOrgId, orgId).eq(CoreSafetyTask::getCheckCycle,cycle).between(CoreSafetyTask::getYmdDate, startDate, endDate).in(CoreSafetyTask::getStatus,1,2));
     }
 
 

+ 3 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafecheckPlanMapper.xml

@@ -571,7 +571,9 @@
         <if test="planStatus != null ">
             and c.plan_status = #{planStatus}
         </if>
-
+        <if test="cycle != null ">
+            and c.plan_cycle = #{cycle}
+        </if>