Bläddra i källkod

Merge branch 'V0.0.2' of http://10.87.10.227:4000/jzyd_yyds/soc into V0.0.2

jiawuxian 2 år sedan
förälder
incheckning
9846fd9096
15 ändrade filer med 288 tillägg och 160 borttagningar
  1. 3 3
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/safetyindex/domain/CoreSafeMonthScore.java
  2. 21 83
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/TMonitoringRetrievalPlanServiceImpl.java
  3. 19 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillPlanServiceImpl.java
  4. 4 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingPlanServiceImpl.java
  5. 18 12
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java
  6. 3 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/mapper/CoreMonitoringRetrievalTaskMapper.java
  7. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/ICoreMonitoringRetrievalTaskService.java
  8. 17 8
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/impl/CoreMonitoringRetrievalTaskServiceImpl.java
  9. 43 6
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/job/SafetyCheckJobBusiness.java
  10. 13 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafecheckPlanServiceImpl.java
  11. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/service/ICoreSafeMonthScoreService.java
  12. 23 6
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/service/impl/CoreSafeMonthScoreServiceImpl.java
  13. 96 23
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/service/impl/CoreSafetyExceptionDataServiceImpl.java
  14. 2 1
      soc-modules/soc-modules-core/src/main/resources/mapper/access/TMonitoringRetrievalPlanMapper.xml
  15. 20 15
      soc-modules/soc-modules-core/src/main/resources/mapper/retrieval/CoreMonitoringRetrievalTaskMapper.xml

+ 3 - 3
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/safetyindex/domain/CoreSafeMonthScore.java

@@ -39,11 +39,11 @@ public class CoreSafeMonthScore extends BaseEntity {
 
     @TableField(value  = "data_year")
     @ApiModelProperty(value = "数据所在年")
-    private Long dataYear;
+    private Integer dataYear;
 
     @TableField(value  = "data_month")
     @ApiModelProperty(value = "数据所在月")
-    private Long dataMonth;
+    private Integer dataMonth;
 
     @TableField(value  = "org_score")
     @ApiModelProperty(value = "机构得分")
@@ -51,7 +51,7 @@ public class CoreSafeMonthScore extends BaseEntity {
 
     @TableField(value  = "release_status")
     @ApiModelProperty(value = "${comment}", notes = "$column.readConverterExp()")
-    private Long releaseStatus;
+    private Integer releaseStatus;
 
     @TableField(value  = "org_path")
     @ApiModelProperty(value = "机构path")

+ 21 - 83
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/TMonitoringRetrievalPlanServiceImpl.java

@@ -279,8 +279,14 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
                     tMonitoringRetrievalPlan1.setParentId(id);
                     tMonitoringRetrievalPlan1.setIsDistribute("1");
                     tMonitoringRetrievalPlan1.setCreateType(1);
-                    i = insertTMonitoringRetrievalPlan(tMonitoringRetrievalPlan1);
+                    if (!tMonitoringRetrievalPlan.getOrgType().equals("3")) {
+                        i = insertTMonitoringRetrievalPlan(tMonitoringRetrievalPlan1);
+                    }
                     if (tMonitoringRetrievalPlan.getOrgType().equals("3")) {
+                        tMonitoringRetrievalPlan.setCreateType(1);
+                        tMonitoringRetrievalPlan.setUpdateBy(SecurityUtils.getUsername());
+                        tMonitoringRetrievalPlan.setUpdateTime(DateUtils.getNowDate());
+                        baseMapper.updateById(tMonitoringRetrievalPlan);
                         if (!tMonitoringRetrievalPlan.getPlanCycle().equals(ZERO.toString()) &&
                                 tMonitoringRetrievalPlan.getImmediately().equals(Boolean.TRUE)) {
                             tMonitoringRetrievalPlan1.setStartTime(new Date());
@@ -313,7 +319,6 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
                             cal.add(Calendar.DATE, amount);
                             Date time = cal.getTime();
                             tMonitoringRetrievalPlan1.setEndTime(time);
-                            //   List<TMonitoringRetrievalPlan> tMonitoringRetrievalPlans1 = tMonitoringRetrievalPlans(l.getPath(), l.getType(), tMonitoringRetrievalPlan1);
                         }
                         tMonitoringRetrievalPlans.add(tMonitoringRetrievalPlan1);
                     } else {
@@ -326,6 +331,7 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
                             BeanUtils.copyProperties(tMonitoringRetrievalPlan, plan);
                             plan.setPlanName(tMonitoringRetrievalPlan.getPlanName());
                             plan.setOrgId(s.getId());
+                            plan.setId(tMonitoringRetrievalPlan1.getId());
                             plan.setOrgName(s.getShortName());
                             plan.setRoleId(tMonitoringRetrievalPlan.getRoleId());
                             plan.setRoleName(tMonitoringRetrievalPlan.getRoleName());
@@ -526,14 +532,18 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
         QueryWrapper queryWrapper = new QueryWrapper();
         queryWrapper.eq(PARENT_ID, id);
         List<TMonitoringRetrievalPlan> list1 = tMonitoringRetrievalPlanMapper.selectList(queryWrapper);
+        List<Long> collect = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(list1)) {
+            collect = list1.stream().map(TMonitoringRetrievalPlan::getId).collect(Collectors.toList());
+            if (plan.getPlanCycle().equals("0")) {
+                iCoreMonitoringRetrievalTaskService.deleteAllTaskByPlanIds(collect);
+            }
             for (TMonitoringRetrievalPlan tMonitoringRetrievalPlan : list1) {
                 tMonitoringRetrievalPlan.setPlanStatus(2);
                 tMonitoringRetrievalPlan.setIsDistribute("0");
                 baseMapper.updateById(tMonitoringRetrievalPlan);
                 //删除所有的任务,现在删除本周期的任务
                 if (plan.getPlanCycle().equals("0")) {
-                    iCoreMonitoringRetrievalTaskService.deleteAllTaskByPlanId(tMonitoringRetrievalPlan.getId());
                     //如果无周期删除计划
                     baseMapper.deleteById(tMonitoringRetrievalPlan.getId());
                 }
@@ -551,6 +561,11 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
                         break;
                 }
             }
+        } else if (plan.getOrgType().equals("3")) {
+            collect.add(id);
+            if (plan.getPlanCycle().equals("0")) {
+                iCoreMonitoringRetrievalTaskService.deleteAllTaskByPlanIds(collect);
+            }
         }
         plan.setPlanStatus(2);
         plan.setIsDistribute("0");
@@ -623,88 +638,12 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
         long id = IdWorker.getId();
         tMonitoringRetrievalPlan.setId(id);
         tMonitoringRetrievalPlan.setOrgPath(data.getPath());
-        //    SysOrg sysOrg1 = remoteOrgService.selectSysOrgById(sysUser.getOrgId(), SecurityConstants.INNER);
-        //如果是行社新增就没有下发的按钮
-/*        if (sysOrg1.getType() == 3) {
-            tMonitoringRetrievalPlan.setCreateType(1);
-            tMonitoringRetrievalPlan.setIsDistribute("1");
-            SysOrg sysOrg = new SysOrg();
-            sysOrg.setPath(sysOrg1.getPath());
-            sysOrg.setType(Integer.valueOf(tMonitoringRetrievalPlan.getOrgType()));
-            List<SysOrg> sysOrgs = remoteOrgService.listByParentIdAndType(sysOrg, SecurityConstants.INNER);
-            List<TMonitoringRetrievalPlan> tMonitoringRetrievalPlans = new ArrayList<>();
-            for (SysOrg s : sysOrgs) {
-                TMonitoringRetrievalPlan plan = new TMonitoringRetrievalPlan();
-                BeanUtils.copyProperties(tMonitoringRetrievalPlan, plan);
-                plan.setPlanName(tMonitoringRetrievalPlan.getPlanName());
-                plan.setOrgId(s.getId());
-                plan.setOrgName(s.getShortName());
-                plan.setRoleId(tMonitoringRetrievalPlan.getRoleId());
-                plan.setRoleName(tMonitoringRetrievalPlan.getRoleName());
-                plan.setOrgPath(s.getPath());
-                plan.setOrgType(tMonitoringRetrievalPlan.getOrgType());
-                plan.setPlanCycle(tMonitoringRetrievalPlan.getPlanCycle());
-                plan.setPlanFrequency(tMonitoringRetrievalPlan.getPlanFrequency());
-                plan.setPlanStatus(ZERO);
-                plan.setCreateBy(SecurityUtils.getUsername());
-                plan.setUpdateTime(DateUtils.getNowDate());
-                plan.setUpdateBy(SecurityUtils.getUsername());
-                plan.setCreateTime(DateUtils.getNowDate());
-                plan.setDescription(tMonitoringRetrievalPlan.getDescription());
-                plan.setCreateType(1);
-                plan.setParentId(tMonitoringRetrievalPlan.getId());
-                plan.setIsDistribute("1");
-                if (!tMonitoringRetrievalPlan.getPlanCycle().equals(ZERO.toString()) &&
-                        tMonitoringRetrievalPlan.getImmediately().equals(Boolean.TRUE)) {
-                    plan.setStartTime(new Date());
-                    int amount = 0;
-                    LocalDate lastDayOfMonth;
-                    switch (tMonitoringRetrievalPlan.getPlanCycle()) {
-                        case "1":
-                            amount = 1;
-                            break;
-                        case "2":
-                            amount = 7;
-                            break;
-                        case "3":
-                            LocalDate currentDate = LocalDate.now();
-                            lastDayOfMonth = currentDate.withDayOfMonth(currentDate.lengthOfMonth());
-                            amount = lastDayOfMonth.getDayOfMonth() - currentDate.getDayOfMonth();
-                            break;
-                        case "4":
-                            amount = getDayNum(3);
-                            break;
-                        case "5":
-                            amount = getDayNum(6);
-                            break;
-                        case "6":
-                            amount = getDayNum(12);
-                            break;
-                    }
-                    Calendar cal = Calendar.getInstance();
-                    cal.setTime(new Date());
-                    cal.add(Calendar.DATE, amount);
-                    Date time = cal.getTime();
-                    plan.setEndTime(time);
-                }
-                tMonitoringRetrievalPlans.add(plan);
-            }
-            if ((tMonitoringRetrievalPlan.getImmediately().equals(Boolean.TRUE) || tMonitoringRetrievalPlan.getPlanCycle().equals(ZERO.toString())) && CollectionUtils.isNotEmpty(tMonitoringRetrievalPlans)) {
-                try {
-                    iCoreMonitoringRetrievalTaskService.noCycleTask(tMonitoringRetrievalPlans);
-                } catch (Exception e) {
-                    throw new ServiceException("下发任务异常,请联系管理员");
-                }
-            }
-        } else {*/
         if (tMonitoringRetrievalPlan.getCreateType() == null) {
             tMonitoringRetrievalPlan.setCreateType(ZERO);
         }
         if (tMonitoringRetrievalPlan.getIsDistribute() == null) {
             tMonitoringRetrievalPlan.setIsDistribute(ZERO.toString());
         }
-
-        //  }
         return tMonitoringRetrievalPlanMapper.insert(tMonitoringRetrievalPlan);
     }
 
@@ -722,7 +661,7 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
         tMonitoringRetrievalPlan.setUpdateBy(SecurityUtils.getUsername());
         TMonitoringRetrievalPlan plan = baseMapper.selectById(tMonitoringRetrievalPlan.getId());
         BeanUtils.copyProperties(tMonitoringRetrievalPlan, plan);
-        plan.setIsDistribute("0");
+        // plan.setIsDistribute("0");
         int i = tMonitoringRetrievalPlanMapper.updateById(plan);
         if (CollectionUtils.isEmpty(coreMonitoringRetrievalTasks)) {
             iCoreMonitoringRetrievalTaskService.deleteTaskByPlanId(tMonitoringRetrievalPlan.getId());
@@ -732,7 +671,7 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
                 baseMapper.delete(queryWrapper);
                 SysOrg sysOrg1 = remoteOrgService.selectSysOrgById(SecurityUtils.getLoginUser().getOrgId(), SecurityConstants.INNER);
                 List<TMonitoringRetrievalPlan> tMonitoringRetrievalPlans = new ArrayList<>();
-                if (sysOrg1.getType() == 1) {
+                if (sysOrg1.getType() == 1 && plan.getIsDistribute().equals("1")) {
                     distribute(plan.getId());
                 } else {
                     SysOrg sysOrg = new SysOrg();
@@ -795,7 +734,7 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
                         }
                         tMonitoringRetrievalPlans.add(plan1);
                     }
-                    if ((tMonitoringRetrievalPlan.getImmediately().equals(Boolean.TRUE) || tMonitoringRetrievalPlan.getPlanCycle().equals(ZERO.toString())) && CollectionUtils.isNotEmpty(tMonitoringRetrievalPlans)) {
+                    if ((tMonitoringRetrievalPlan.getImmediately().equals(Boolean.TRUE) || tMonitoringRetrievalPlan.getPlanCycle().equals(ZERO.toString())) && CollectionUtils.isNotEmpty(tMonitoringRetrievalPlans) && tMonitoringRetrievalPlan.getIsDistribute().equals("1")) {
                         try {
                             iCoreMonitoringRetrievalTaskService.noCycleTask(tMonitoringRetrievalPlans);
                         } catch (Exception e) {
@@ -803,7 +742,6 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
                         }
                     }
                 }
-
             } catch (Exception e) {
                 e.getMessage();
             }

+ 19 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillPlanServiceImpl.java

@@ -42,6 +42,7 @@ import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -347,7 +348,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         List<Long> execOrgIdList = coreDrillPlanToExecOrgMapper.selectOrgIdByPlanId(plan.getId());
         validateListForStandard(execOrgIdList, request.getPlanExecOrgIdList(), errorMsg);
         validateFieldForStandard(request.getRemark(), plan.getRemark(), errorMsg);
-        validateFieldForStandard(JSON.toJSONString(request.getFileList()), plan.getFileList(), errorMsg);
+        validateFileListForStandard(request.getFileList(), JSON.parseArray(plan.getFileList(), String.class), errorMsg);
         if (type == 0) {
             //标准计划可以修改名称
             validateFieldForStandard(request.getPlanName(), plan.getPlanName(), errorMsg);
@@ -359,6 +360,9 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
     }
 
     private void validateFieldForStandard(Object requestValue, Object planValue, String errorMessage) {
+        if (ObjectUtils.allNull(requestValue, planValue)){
+            return;
+        }
         if (ObjectUtil.notEqual(requestValue, planValue)) {
             throw new RuntimeException(errorMessage);
         }
@@ -369,7 +373,21 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             throw new RuntimeException(errorMessage);
         }
     }
+    private void validateFileListForStandard(List<String> requestFileList, List<String> sourceFileList, String errorMsg) {
+        if (ObjectUtil.isEmpty(requestFileList) && ObjectUtil.isEmpty(sourceFileList)) {
+            return;
+        }
+        if (ObjectUtil.isEmpty(requestFileList) && ObjectUtil.isNotEmpty(sourceFileList)) {
+            throw new RuntimeException(errorMsg);
+        }
+        if (ObjectUtil.isNotEmpty(requestFileList) && ObjectUtil.isEmpty(sourceFileList)) {
+            throw new RuntimeException(errorMsg);
+        }
+        if (sourceFileList.size() != requestFileList.size() || !sourceFileList.containsAll(requestFileList)) {
+            throw new RuntimeException(errorMsg);
+        }
 
+    }
 
     public void batchSavePlanToRole(List<Long> roleIdList, Long planId) {
         List<CoreDrillPlanToRole> planRoleList = new ArrayList<>();

+ 4 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingPlanServiceImpl.java

@@ -372,7 +372,10 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
     }
 
     private void validateFieldForStandard(Object requestValue, Object planValue, String errorMessage) {
-        if (ObjectUtil.notEqual(requestValue, planValue) || ObjectUtils.allNull(requestValue, planValue)) {
+        if (ObjectUtils.allNull(requestValue, planValue)) {
+            return;
+        }
+        if (ObjectUtil.notEqual(requestValue, planValue)) {
             throw new RuntimeException(errorMessage);
         }
     }

+ 18 - 12
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java

@@ -146,14 +146,14 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
                     dto.getOrgAndStatus()) {
 
 
-                AppPlan tempplan = baseMapper.selectOne(new LambdaQueryWrapper<AppPlan>().eq(AppPlan::getPlanOfOrgId,d.getOrgId()).eq(AppPlan::getParentId,dto.getId()));
+                AppPlan tempplan = baseMapper.selectOne(new LambdaQueryWrapper<AppPlan>().eq(AppPlan::getPlanOfOrgId, d.getOrgId()).eq(AppPlan::getParentId, dto.getId()));
                 //如果子计划已存在
-                if(tempplan!=null){
-                    tempplan.setPlanStatus(d.getStatus()>0?1:2);
+                if (tempplan != null) {
+                    tempplan.setPlanStatus(d.getStatus() > 0 ? 1 : 2);
                     tempplan.setDistributePlanStatus(d.getStatus().toString());
                     tempplan.setDistributeStatus("1");
                     baseMapper.updateById(tempplan);
-                }else {
+                } else {
                     AppPlan plan = baseMapper.selectById(dto.getId());
                     plan.setOrgId(d.getOrgId().toString());
                     plan.setDistributeStatus("1");
@@ -234,7 +234,13 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
         AppPlan plan = baseMapper.selectById(id);
         //设置计划状态
         plan.setPlanStatus(1);
-
+        //如果是行社撤回需要修改下发状态
+        //行社下发
+        if (plan.getPlanOfOrgType() == 3 && "0".equals(plan.getDistribute())) {
+            plan.setDistribute("1");
+        } else {
+            plan.setDistribute("0");
+        }
         baseMapper.updateById(plan);
         return 1;
     }
@@ -359,7 +365,7 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
                 }
 
                 QueryWrapper<AppPlanToPoint> api = new QueryWrapper<>();
-                api.lambda().eq(AppPlanToPoint::getPlanId, ap.getId()).eq(AppPlanToPoint::getOfOrgId,app.getPlanCreateOrgId());
+                api.lambda().eq(AppPlanToPoint::getPlanId, ap.getId()).eq(AppPlanToPoint::getOfOrgId, app.getPlanCreateOrgId());
                 appPlanToItemMapper.delete(api);
 
                 List<Long> roleList = app.getRoleList();
@@ -373,7 +379,7 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
 
 
                 List<RuleItemVo> valitemList = app.getItemList();
-                List<RuleItemVo> itemList = valitemList.stream().filter(e-> e.getOfOrgId().equals(app.getPlanCreateOrgId())).collect(Collectors.toList());
+                List<RuleItemVo> itemList = valitemList.stream().filter(e -> e.getOfOrgId().equals(app.getPlanCreateOrgId())).collect(Collectors.toList());
 
                 if (valitemList.size() == 0) {
                     throw new RuntimeException("请选择履职要点");
@@ -391,9 +397,9 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
                 //如果计划是编辑全部,代表不存在已完成或者逾期的任务,需要删除重新生成
                 if (app.getHasEdit() == null) {
                     resumptionMapper.delete(new LambdaQueryWrapper<Resumption>().eq(Resumption::getPlanId, ap.getId()));
-                }else {
+                } else {
                     //否则代表编辑名称,需要同步未进行的任务名称
-                    resumptionMapper.updateNameByPlanId(app.getPlanName(),ap.getId());
+                    resumptionMapper.updateNameByPlanId(app.getPlanName(), ap.getId());
                 }
 
             }
@@ -409,7 +415,7 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
 
 
             QueryWrapper<AppPlanToPoint> api = new QueryWrapper<>();
-            api.lambda().eq(AppPlanToPoint::getPlanId, id).eq(AppPlanToPoint::getOfOrgId,app.getPlanCreateOrgId());
+            api.lambda().eq(AppPlanToPoint::getPlanId, id).eq(AppPlanToPoint::getOfOrgId, app.getPlanCreateOrgId());
             appPlanToItemMapper.delete(api);
 
 
@@ -429,7 +435,7 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
             }
 
             List<RuleItemVo> valitemList = app.getItemList();
-            List<RuleItemVo> itemList = valitemList.stream().filter(e-> e.getOfOrgId().equals(app.getPlanCreateOrgId())).collect(Collectors.toList());
+            List<RuleItemVo> itemList = valitemList.stream().filter(e -> e.getOfOrgId().equals(app.getPlanCreateOrgId())).collect(Collectors.toList());
 
             if (valitemList.size() == 0) {
                 throw new RuntimeException("请选择履职要点");
@@ -549,7 +555,7 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
         /**
          * 验证计划是否被应用
          */
-        Long num = resumptionMapper.selectCount(new QueryWrapper<Resumption>().eq("plan_id", id).in("status", 3,4));
+        Long num = resumptionMapper.selectCount(new QueryWrapper<Resumption>().eq("plan_id", id).in("status", 3, 4));
         if (num > 0) {
             throw new RuntimeException("计划有已完成或者已逾期的任务,不能被删除。");
         }

+ 3 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/mapper/CoreMonitoringRetrievalTaskMapper.java

@@ -112,6 +112,8 @@ public interface CoreMonitoringRetrievalTaskMapper extends BaseMapper<CoreMonito
      */
     void deleteAllTaskByPlanId(@Param("planId") Long planId);
 
+    void deleteAllTaskByPlanIds(@Param("planIds") Long[] planIds);
+
     void deleteDayTaskByTime(@Param("planId") Long planId, @Param("cycle") String cycle, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
 
     void deleteDayTaskByTimeAndPlanId(@Param("planId") Long planId, @Param("cycle") String cycle, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
@@ -175,5 +177,5 @@ public interface CoreMonitoringRetrievalTaskMapper extends BaseMapper<CoreMonito
 
     List<CoreSafetyExceptionData> selectMonitorNumsExceptionData(@Param("time") DateTime time);
 
-    List<CoreMonitoringRetrievalTask> selectTaskList(@Param("taskTime")LocalDate taskTime, @Param("orgIds")List<Long> orgIds,  @Param("cycle")Integer cycle);
+    List<CoreMonitoringRetrievalTask> selectTaskList(@Param("taskTime") LocalDate taskTime, @Param("orgIds") List<Long> orgIds, @Param("cycle") Integer cycle);
 }

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/ICoreMonitoringRetrievalTaskService.java

@@ -117,6 +117,8 @@ public interface ICoreMonitoringRetrievalTaskService extends IService<CoreMonito
      */
     void deleteAllTaskByPlanId(Long planId);
 
+    void deleteAllTaskByPlanIds(List<Long> planId);
+
     /**
      * 删除日任务
      *

+ 17 - 8
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/impl/CoreMonitoringRetrievalTaskServiceImpl.java

@@ -243,7 +243,6 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
             //获取计划关联的机构
             List<SysOrg> listByType = orgList.stream().filter(r -> r.getId().equals(plan.getOrgId()) && r.getDeleted() == 0 && r.getIsLock().equals(0)).collect(Collectors.toList());
             if (CollectionUtil.isNotEmpty(listByType)) {
-                //最后参数1标识立即生效0表示按周期生成任务
                 List<CoreMonitoringRetrievalTask> list = this.buildCoreMonitoringRetrievalTask(plan, taskTime, listByType.get(0));
                 if (CollectionUtil.isNotEmpty(list)) {
                     taskList.addAll(list);
@@ -253,9 +252,8 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
         //立即生效的计划要排除截至时间在当前时间之前的数据
         List<CoreMonitoringRetrievalTask> lista = taskList.stream().filter(r -> r.getPlanEndTime().after(new Date())).collect(Collectors.toList());
         if(CollectionUtil.isNotEmpty(lista)){
-            taskList.addAll(lista);
+            this.saveBatch(lista);
         }
-        this.saveBatch(taskList);
     }
 
     /**
@@ -405,22 +403,31 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
     }
 
     @Override
+    public void deleteAllTaskByPlanIds(List<Long> planId) {
+        Long[] longs = planId.toArray(new Long[planId.size()]);
+     //   coreMonitoringRetrievalTaskMapper.deleteAllTaskByPlanIds(longs);
+
+        QueryWrapper queryWrapper=new QueryWrapper();
+        queryWrapper.in("plan_id",longs);
+        coreMonitoringRetrievalTaskMapper.delete(queryWrapper);
+    }
+
+    @Override
     public void deleteDayTaskByPlanId(Long planId, String cycle, LocalDate ymdDate) {
-        coreMonitoringRetrievalTaskMapper.deleteDayTaskByPlanId(planId,cycle,ymdDate.toString());
+        coreMonitoringRetrievalTaskMapper.deleteDayTaskByPlanId(planId, cycle, ymdDate.toString());
     }
 
     @Override
     public void deleteDayTaskByTime(Long planId, String cycle, Date startTime, Date endTime) {
-        coreMonitoringRetrievalTaskMapper.deleteDayTaskByTime(planId,cycle,startTime,endTime);
+        coreMonitoringRetrievalTaskMapper.deleteDayTaskByTime(planId, cycle, startTime, endTime);
     }
 
     @Override
     public void deleteDayTaskByTimeAndPlanId(Long planId, String cycle, Date startTime, Date endTime) {
-        coreMonitoringRetrievalTaskMapper.deleteDayTaskByTimeAndPlanId(planId,cycle,startTime,endTime);
+        coreMonitoringRetrievalTaskMapper.deleteDayTaskByTimeAndPlanId(planId, cycle, startTime, endTime);
     }
 
 
-
     @Override
     public void deleteWaitTaskByPlanId(Long planId) {
         coreMonitoringRetrievalTaskMapper.deleteWaitTaskByPlanId(planId);
@@ -605,7 +612,9 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
         //检查通道占比数量数据
         List<CoreSafetyExceptionData> numsExceptionData = baseMapper.selectMonitorNumsExceptionData(time);
 
-        return Stream.of(overTimeExceptionData, numsExceptionData).flatMap(Collection::stream).collect(Collectors.toList());
+        final List<CoreSafetyExceptionData> collect = Stream.of(overTimeExceptionData, numsExceptionData).flatMap(Collection::stream).collect(Collectors.toList());
+        collect.removeIf(item -> ObjectUtil.isNull(item.getDataId()));
+        return collect;
     }
 
     @Override

+ 43 - 6
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/job/SafetyCheckJobBusiness.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.utils.IDHelper;
+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;
@@ -20,6 +21,7 @@ import com.xunmei.core.safetyCheck.mapper.CoreSafecheckPlanToRoleMapper;
 import com.xunmei.core.safetyCheck.service.ICoreSafetyTaskService;
 import com.xunmei.core.safetyCheck.vo.PlanTaskBuildVo;
 import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.RemoteWorkTimeService;
 import com.xunmei.system.api.domain.SysOrg;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -55,7 +57,8 @@ public class SafetyCheckJobBusiness {
     CoreSafecheckPlanToRoleMapper planToRoleMapper;
     @Autowired
     private RemoteOrgService orgService;
-
+    @Autowired
+    RemoteWorkTimeService workTimeService;
 
     @Transactional(rollbackFor = Exception.class)
     public void createTaskForNow(Long planId, Date start, Date end, Boolean isNeedSendTodo, Integer sourceType) throws Exception {
@@ -90,6 +93,19 @@ public class SafetyCheckJobBusiness {
         buildTask(dateTime, planTask, start, end, isNeedSendTodo, sourceType);
     }
 
+    //检查指定机构有无作息
+    private boolean checkWorkTime(Date workstartTime, Date workendTime, Long orgId) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("workstartTime", DateUtil.format(workstartTime, "yyyy-MM-dd"));
+        map.put("workendTime", DateUtil.format(workendTime, "yyyy-MM-dd"));
+        map.put("orgId", orgId);
+        Integer num = workTimeService.checkWorkTime(map, SecurityConstants.INNER);
+        if (num > 0) {
+            return true;
+        } else {
+            return false;
+        }
+    }
 
     /**
      * 有周期计划生成任务
@@ -107,6 +123,16 @@ public class SafetyCheckJobBusiness {
         qw.lambda().eq(CoreSafecheckPlan::getIsDeleted, 0);
         qw.lambda().eq(CoreSafecheckPlan::getPlanStatus, 1);
         List<CoreSafecheckPlan> plans = planMapper.selectByCycle((long) planCycle);
+
+//        //检查计划所属机构是否存在当前周期内的作息
+//        Iterator<CoreSafecheckPlan> iterator = plans.iterator();
+//        while (iterator.hasNext()){
+//            boolean hasWorkTime = checkWorkTime(start, end, iterator.next().getPlanOfOrgId());
+//            if (!hasWorkTime){
+//                iterator.remove();
+//            }
+//        }
+
         List<PlanTaskBuildVo> tasks = new ArrayList<>();
         for (CoreSafecheckPlan plan : plans) {
             List<PlanTaskBuildVo> planTask = createPlanTask(plan);
@@ -144,15 +170,15 @@ public class SafetyCheckJobBusiness {
         List<CoreSafecheckPlanToRole> roles = planToRoleMapper.selectList(ros);
 
         List<SysOrg> execOrgs = null;
-        SysOrg ownOrg= orgService.selectOrgById(plan.getPlanOfOrgId(), SecurityConstants.INNER);
+        SysOrg ownOrg = orgService.selectOrgById(plan.getPlanOfOrgId(), SecurityConstants.INNER);
         if (ObjectUtil.isEmpty(execOrg)) {
             //如果没有选择具体执行检查的机构,则根据执行机构类型查询
-            execOrgs = orgService.findByOrgTypeAndParent(execOrgType,ownOrg.getPath(), SecurityConstants.INNER);
+            execOrgs = orgService.findByOrgTypeAndParent(execOrgType, ownOrg.getPath(), SecurityConstants.INNER);
         } else {
             //选择了具体执行检查的机构
             List<Long> orgIds = execOrg.stream().map(CoreSafecheckPlanToExecOrg::getOrgId).collect(Collectors.toList());
             execOrgs = orgService.selectOrgByIdList(orgIds, SecurityConstants.INNER);
-            execOrgs=execOrgs.stream().filter(o->o.getPath().startsWith(ownOrg.getPath())).collect(Collectors.toList());
+            execOrgs = execOrgs.stream().filter(o -> o.getPath().startsWith(ownOrg.getPath())).collect(Collectors.toList());
         }
         execOrgs = execOrgs.stream().filter(o -> o.getIsLock() < 1).collect(Collectors.toList());
 
@@ -281,6 +307,8 @@ public class SafetyCheckJobBusiness {
 
         PlanTaskBuildVo vo = null;
         for (SysOrg org : execOrgList) {
+
+
 //            vo = new PlanTaskBuildVo();
 //            vo.setPlanId(plan.getId());
 //            vo.setEndTime(plan.getEndDate());
@@ -299,9 +327,9 @@ public class SafetyCheckJobBusiness {
                 vo.setCheckOrg(check);
                 vo.setExecOrg(org);
                 vo.setPlanCycle(Math.toIntExact(plan.getPlanCycle()));
-                if (plan.getCount()==1){
+                if (plan.getCount() == 1) {
                     vo.setPlanName(plan.getPlanName());
-                }else {
+                } else {
                     vo.setPlanName(plan.getPlanName() + "第" + (i + 1) + "次");
                 }
                 list.add(vo);
@@ -350,6 +378,15 @@ public class SafetyCheckJobBusiness {
         sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
         end = sdfa.parse(sdf.format(end) + " 23:59:59");
 
+        //检查任务受检机构是否存在作息,如果不存在直接丢弃
+        Iterator<PlanTaskBuildVo> iterator = tasks.iterator();
+        while (iterator.hasNext()) {
+            boolean hasWorkTime = checkWorkTime(start, end, iterator.next().getExecOrg().getId());
+            if (!hasWorkTime) {
+                iterator.remove();
+            }
+        }
+
         DateHelper dateHelper = new DateHelper(datetime);
         List<CoreSafetyTask> ats = new ArrayList<>();
         Map<Long, Long> hashMap = new HashMap<>();

+ 13 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafecheckPlanServiceImpl.java

@@ -221,6 +221,14 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
     public int distributeCheHui(Long id) {
         CoreSafecheckPlan plan = baseMapper.selectById(id);
         plan.setPlanStatus(1L);
+
+        //行社下发
+        if (plan.getPlanOfOrgType() == 3 && "0".equals(plan.getDistribute())) {
+            plan.setDistribute("1");
+        } else {
+            plan.setDistribute("0");
+        }
+
         baseMapper.updateById(plan);
         return 1;
     }
@@ -287,6 +295,11 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
             coreSafecheckPlan.setDistribute("0");
             //计划所属机构类型
             coreSafecheckPlan.setPlanOfOrgType(orgService.selectSysOrgById(coreSafecheckPlan.getPlanOfOrgId(), SecurityConstants.INNER).getType());
+            if (coreSafecheckPlan.getPlanOfOrgType()==3){
+                coreSafecheckPlan.setPlanStatus(1L);
+            }else{
+                coreSafecheckPlan.setPlanStatus(0L);
+            }
             coreSafecheckPlanMapper.insert(coreSafecheckPlan);
 
         } else {

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/service/ICoreSafeMonthScoreService.java

@@ -68,4 +68,8 @@ public interface ICoreSafeMonthScoreService extends IService<CoreSafeMonthScore>
      * @return Page
      */
     TableDataInfo<CoreSafeMonthScore> selectPage(CoreSafeMonthScore coreSafeMonthScore);
+
+    void checkAndSaveBatchData(List<CoreSafeMonthScore> listSafeMonthScore);
+
+
 }

+ 23 - 6
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/service/impl/CoreSafeMonthScoreServiceImpl.java

@@ -1,5 +1,6 @@
 package com.xunmei.core.safetyindex.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -32,10 +33,9 @@ public class CoreSafeMonthScoreServiceImpl extends ServiceImpl<CoreSafeMonthScor
 
         Page<CoreSafeMonthScore> page;
         //分页
-        if (coreSafeMonthScore.getPageNum()!=null&&coreSafeMonthScore.getPageSize()!=null)
-        {
+        if (coreSafeMonthScore.getPageNum() != null && coreSafeMonthScore.getPageSize() != null) {
             page = new Page<>(coreSafeMonthScore.getPageNum(), coreSafeMonthScore.getPageSize());
-        }else{
+        } else {
             page = new Page<>();
         }
         //查询条件
@@ -47,8 +47,6 @@ public class CoreSafeMonthScoreServiceImpl extends ServiceImpl<CoreSafeMonthScor
         return TableDataInfo.build(page);
 
 
-
-
     }
 
 
@@ -82,7 +80,7 @@ public class CoreSafeMonthScoreServiceImpl extends ServiceImpl<CoreSafeMonthScor
      */
     @Override
     public int insertCoreSafeMonthScore(CoreSafeMonthScore coreSafeMonthScore) {
-            return coreSafeMonthScoreMapper.insert(coreSafeMonthScore);
+        return coreSafeMonthScoreMapper.insert(coreSafeMonthScore);
     }
 
     /**
@@ -117,4 +115,23 @@ public class CoreSafeMonthScoreServiceImpl extends ServiceImpl<CoreSafeMonthScor
     public int deleteCoreSafeMonthScoreById(Long id) {
         return coreSafeMonthScoreMapper.deleteById(id);
     }
+
+    @Override
+    public void checkAndSaveBatchData(List<CoreSafeMonthScore> listSafeMonthScore) {
+        for (CoreSafeMonthScore monthScore : listSafeMonthScore) {
+            checkAndSave(monthScore);
+        }
+    }
+
+    private void checkAndSave(CoreSafeMonthScore monthScore) {
+        CoreSafeMonthScore safeMonthScore = baseMapper.selectOne(new LambdaQueryWrapper<CoreSafeMonthScore>()
+                .eq(CoreSafeMonthScore::getOrgId, monthScore.getOrgId())
+                .eq(CoreSafeMonthScore::getDataYear, monthScore.getDataYear())
+                .eq(CoreSafeMonthScore::getDataMonth, monthScore.getDataMonth()));
+        if (safeMonthScore == null) {
+            save(monthScore);
+        } else {
+            updateById(monthScore);
+        }
+    }
 }

+ 96 - 23
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/service/impl/CoreSafetyExceptionDataServiceImpl.java

@@ -5,23 +5,24 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.CacheConstants;
 import com.xunmei.common.core.constant.Constants;
+import com.xunmei.common.core.domain.safetyindex.domain.CoreSafeMonthScore;
 import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyDeductData;
 import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData;
 import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetySourceData;
 import com.xunmei.common.core.domain.safetyindex.vo.SafeIndexRuleCountVo;
+import com.xunmei.common.core.enums.OrgTypeEnum;
+import com.xunmei.common.core.utils.IDHelper;
 import com.xunmei.common.redis.utils.RedisUtils;
 import com.xunmei.core.question.service.IQuestionService;
 import com.xunmei.core.resumption.service.ResumptionService;
 import com.xunmei.core.retrieval.service.ICoreMonitoringRetrievalTaskService;
 import com.xunmei.core.safetyindex.mapper.CoreSafetyExceptionDataMapper;
-import com.xunmei.core.safetyindex.service.ICoreSafetyDeductDataService;
-import com.xunmei.core.safetyindex.service.ICoreSafetyExceptionDataService;
-import com.xunmei.core.safetyindex.service.ICoreSafetyIndexCalculateRuleService;
-import com.xunmei.core.safetyindex.service.ICoreSafetySourceDataService;
+import com.xunmei.core.safetyindex.service.*;
 import com.xunmei.system.api.vo.SysOrgVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -53,6 +54,8 @@ public class CoreSafetyExceptionDataServiceImpl extends ServiceImpl<CoreSafetyEx
     public static final String AFTER_POINT_CODE = "10040202";
     public static final String UN_CONFIRM_POINT_CODE = "10050101";
     public static final String UN_RECTIFY_POINT_CODE = "10050101";
+    public static final String MONITORING_EXCEPTION_NUMS_POINT_CODE = "10060101";
+    public static final String MONITORING_OVERDUE_POINT_CODE = "10060201";
     @Autowired
     private CoreSafetyExceptionDataMapper coreSafetyExceptionDataMapper;
     @Autowired
@@ -67,7 +70,8 @@ public class CoreSafetyExceptionDataServiceImpl extends ServiceImpl<CoreSafetyEx
     private ICoreSafetyDeductDataService safetyDeductDataService;
     @Autowired
     private ICoreSafetySourceDataService sourceDataService;
-
+    @Autowired
+    private ICoreSafeMonthScoreService safeMonthScoreService;
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void countExceptionData(String date) {
@@ -121,28 +125,83 @@ public class CoreSafetyExceptionDataServiceImpl extends ServiceImpl<CoreSafetyEx
         calculateMonitoringData(monitoringIndexList, monitoringExceptionDataList, year, month, orgList);
 
 
+        calculateAll(year,month);
+    }
+
+    private void calculateAll(int year, int month) {
+        /*List<CoreSafetyDeductData> list =safetyDeductDataService.list((new QueryWrapper<CoreSafetyDeductData>()).lambda().eq(CoreSafetyDeductData::getDataYear,year).eq(CoreSafetyDeductData::getDataMonth,month));
+        List<SysOrgVO> orgList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
+        List<SysOrgVO> orgLista  = orgList.stream().filter(r->r.getType()!=null).filter(r->ObjectUtil.equal(OrgTypeEnum.YINGYE_WANGDIAN.getCode(),r.getType())).collect(Collectors.toList());
+        List<SafeLevel> levels =safeLevelService.list();
+        Map<Long, List<CoreSafetyDeductData>> safeSourceDataList = list.stream().collect(Collectors.groupingBy(CoreSafetyDeductData::getOrgId));
+        List<CoreSafeMonthScore> listSafeMonthScore = new ArrayList<>();
+        for(SysOrgVO o:orgLista){
+            CoreSafeMonthScore monthScore = new CoreSafeMonthScore();
+            monthScore.setDataMonth(month);
+            monthScore.setDataYear(year);
+            monthScore.setId(IDHelper.id());
+            monthScore.setOrgId(o.getId());
+            monthScore.setReleaseStatus(true);
+            List<CoreSafetyDeductData> listdata = safeSourceDataList.get(o.getId());
+            double deduct = 0;
+            if(listdata!=null){
+                for(CoreSafetyDeductData data:listdata){
+                    deduct+=data.getScoreReal();
+                }
+            }
+            double orgscore = 100-deduct;
+            List<SafeLevel>  levelList = levels.stream().sorted(Comparator.comparing(r->r.getId())).collect(Collectors.toList());
+            if(orgscore>levelList.get(0).getMinValue()){
+                monthScore.setLevelId(Long.valueOf(levelList.get(0).getId()));
+            }else if(orgscore>levelList.get(1).getMinValue()&&orgscore<=levelList.get(1).getMaxValue()){
+                monthScore.setLevelId(Long.valueOf(levelList.get(1).getId()));
+            }else if(orgscore>levelList.get(2).getMinValue()&&orgscore<=levelList.get(2).getMaxValue()){
+                monthScore.setLevelId(Long.valueOf(levelList.get(2).getId()));
+            }else {
+                monthScore.setLevelId(Long.valueOf(levelList.get(3).getId()));
+            }
+            monthScore.setOrgScore(orgscore);
+            listSafeMonthScore.add(monthScore);
+        }
+         *//* QueryWrapper<SafeMonthScore> qw = new QueryWrapper<>();
+          qw.lambda().eq(SafeMonthScore::getDataYear,year);
+          qw.lambda().eq(SafeMonthScore::getDataMonth,month);
+          safeMonthScoreService.remove(qw);*//*
+        //safeMonthScoreService.saveBatch(listSafeMonthScore);
+        // 根据机构id+年+月判断重复 存在则更新 不存在则新增
+        safeMonthScoreService.checkAndSaveBatchData(listSafeMonthScore);*/
     }
 
     private void calculateMonitoringData(List<SafeIndexRuleCountVo> monitoringIndexList, List<CoreSafetyExceptionData> dataList, int year, int month, List<SysOrgVO> orgList) {
         //将数据按机构分组
         Map<Long, List<CoreSafetyExceptionData>> monitoringExceptionDataList = dataList.stream().collect(Collectors.groupingBy(CoreSafetyExceptionData::getOrgId));
-
+        for (Long orgId : monitoringExceptionDataList.keySet()) {
+            orgList.stream().filter(o -> ObjectUtil.equal(o.getId(), orgId)).findFirst().ifPresent(org -> {
+                //获取机构的指标配置
+                List<SafeIndexRuleCountVo> orgMonitoringIndexList = monitoringIndexList.stream().filter(r -> ObjectUtil.equal(r.getOrgType(), org.getType())).collect(Collectors.toList());
+                if (orgMonitoringIndexList.isEmpty()) {
+                    return;
+                }
+                //逾期的规则
+                List<SafeIndexRuleCountVo> overdueIndexList = orgMonitoringIndexList.stream()
+                        .filter(r -> ObjectUtil.equal(MONITORING_OVERDUE_POINT_CODE, r.getPointCode()))
+                        .filter(r -> r.getCalculateType().equals(Constants.ONE))
+                        .collect(Collectors.toList());
+                //获取机构的异常数据并计算逾期分数
+                List<CoreSafetyExceptionData> monitoringExceptionDataListByOrg = monitoringExceptionDataList.get(orgId);
+                if (ObjectUtil.isNotEmpty(monitoringIndexList)) {
+                    List<CoreSafetySourceData> sourceDataList = calculateContinuousCumulativeCount(overdueIndexList, monitoringExceptionDataListByOrg, orgId, year, month);
+                    saveSourceData(sourceDataList, monitoringIndexList.get(0));
+                }
+            });
+        }
 
     }
 
+
     private void calculateQuestionData(List<SafeIndexRuleCountVo> questionIndexList, List<CoreSafetyExceptionData> dataList, int year, int month, List<SysOrgVO> orgList) {
         //将数据按机构分组
         Map<Long, List<CoreSafetyExceptionData>> questionExceptionDataList = dataList.stream().collect(Collectors.groupingBy(CoreSafetyExceptionData::getOrgId));
-        //未在规定时间内确认
-        List<SafeIndexRuleCountVo> unConfirmIndexList = questionIndexList.stream()
-                .filter(r -> ObjectUtil.equal(UN_CONFIRM_POINT_CODE, r.getPointCode()))
-                .filter(r -> r.getCalculateType().equals(Constants.ONE))
-                .collect(Collectors.toList());
-        //已确认但未在规定时间内完成整改
-        List<SafeIndexRuleCountVo> unRectifyIndexList = questionIndexList.stream()
-                .filter(r -> ObjectUtil.equal(UN_RECTIFY_POINT_CODE, r.getPointCode()))
-                .filter(r -> r.getCalculateType().equals(Constants.ONE))
-                .collect(Collectors.toList());
         for (Long orgId : questionExceptionDataList.keySet()) {
             orgList.stream().filter(o -> ObjectUtil.equal(o.getId(), orgId)).findFirst().ifPresent(org -> {
                 //获取机构的指标配置
@@ -150,6 +209,18 @@ public class CoreSafetyExceptionDataServiceImpl extends ServiceImpl<CoreSafetyEx
                 if (orgResumptionIndexList.isEmpty()) {
                     return;
                 }
+                //未在规定时间内确认
+                List<SafeIndexRuleCountVo> unConfirmIndexList = orgResumptionIndexList.stream()
+                        .filter(r -> ObjectUtil.equal(UN_CONFIRM_POINT_CODE, r.getPointCode()))
+                        .filter(r -> r.getCalculateType().equals(Constants.ONE))
+                        .collect(Collectors.toList());
+                //已确认但未在规定时间内完成整改
+                List<SafeIndexRuleCountVo> unRectifyIndexList = orgResumptionIndexList.stream()
+                        .filter(r -> ObjectUtil.equal(UN_RECTIFY_POINT_CODE, r.getPointCode()))
+                        .filter(r -> r.getCalculateType().equals(Constants.ONE))
+                        .collect(Collectors.toList());
+
+
                 List<CoreSafetyExceptionData> safetyExceptionData = questionExceptionDataList.get(orgId);
                 //未确认的数据
                 long unConfirmDataCount = safetyExceptionData.stream().filter(data -> ObjectUtil.equal(data.getExtraField2(), 2)).count();
@@ -181,12 +252,6 @@ public class CoreSafetyExceptionDataServiceImpl extends ServiceImpl<CoreSafetyEx
         //扩展字段1:计划id  扩展字段2:计划执行时刻 (2,3,4 营业前中后)
         //将数据按机构分组
         Map<Long, List<CoreSafetyExceptionData>> safetyExceptionDataMapList = resumptionExceptionDataList.stream().collect(Collectors.groupingBy(CoreSafetyExceptionData::getOrgId));
-        //营业前
-        List<SafeIndexRuleCountVo> resumptionBeforeUndoIndexList = getResumptionUndoIndexList(BEFORE_POINT_CODE, resumptionIndexList);
-        //营业中
-        List<SafeIndexRuleCountVo> resumptionMiddleIndexList = getResumptionUndoIndexList(MIDDLE_POINT_CODE, resumptionIndexList);
-        //营业后
-        List<SafeIndexRuleCountVo> resumptionAfterUndoIndexList = getResumptionUndoIndexList(AFTER_POINT_CODE, resumptionIndexList);
 
         for (Long orgId : safetyExceptionDataMapList.keySet()) {
             orgList.stream().filter(o -> ObjectUtil.equal(o.getId(), orgId)).findFirst().ifPresent(org -> {
@@ -195,6 +260,13 @@ public class CoreSafetyExceptionDataServiceImpl extends ServiceImpl<CoreSafetyEx
                 if (orgResumptionIndexList.isEmpty()) {
                     return;
                 }
+                //营业前
+                List<SafeIndexRuleCountVo> resumptionBeforeUndoIndexList = getResumptionUndoIndexList(BEFORE_POINT_CODE, orgResumptionIndexList);
+                //营业中
+                List<SafeIndexRuleCountVo> resumptionMiddleIndexList = getResumptionUndoIndexList(MIDDLE_POINT_CODE, orgResumptionIndexList);
+                //营业后
+                List<SafeIndexRuleCountVo> resumptionAfterUndoIndexList = getResumptionUndoIndexList(AFTER_POINT_CODE, orgResumptionIndexList);
+
                 //获取机构的异常数据
                 List<CoreSafetyExceptionData> resumptionExceptionDataListByOrg = safetyExceptionDataMapList.get(orgId);
                 //构建执行时刻的map,用于存储每个时刻的异常数据
@@ -206,7 +278,7 @@ public class CoreSafetyExceptionDataServiceImpl extends ServiceImpl<CoreSafetyEx
                 }
 
                 if (ObjectUtil.isNotEmpty(resumptionMiddleIndexList)) {
-                    List<CoreSafetySourceData> sourceDataList = calculateContinuousCumulativeCount(resumptionMiddleIndexList, execTimeMap.get(4), orgId, year, month);
+                    List<CoreSafetySourceData> sourceDataList = calculateContinuousCumulativeCount(resumptionMiddleIndexList, execTimeMap.get(3), orgId, year, month);
                     saveSourceData(sourceDataList, resumptionMiddleIndexList.get(0));
                 }
 
@@ -218,6 +290,7 @@ public class CoreSafetyExceptionDataServiceImpl extends ServiceImpl<CoreSafetyEx
         }
     }
 
+
     /**
      * 计算连续数与累计数
      *

+ 2 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/access/TMonitoringRetrievalPlanMapper.xml

@@ -93,7 +93,8 @@
         a.end_time,
         a.description,
         a.is_distribute,
-        a.parent_id
+        a.parent_id,
+        a.create_type
         FROM
         core_monitoring_retrieval_plan a
         LEFT JOIN core_monitoring_retrieval_plan b ON a.parent_id = b.id

+ 20 - 15
soc-modules/soc-modules-core/src/main/resources/mapper/retrieval/CoreMonitoringRetrievalTaskMapper.xml

@@ -453,6 +453,11 @@
         DELETE FROM core_monitoring_retrieval_task WHERE cycle = #{cycle} AND ymd_date BETWEEN #{startTime} AND #{endTime}
                                                      AND plan_id =#{planId}
     </delete>
+    <delete id="deleteAllTaskByPlanIds">
+        delete  FROM core_monitoring_retrieval_task where  plan_id in <foreach collection="planIds" item="id" open="(" close=")">
+        #{id}
+    </foreach>
+    </delete>
 
 
     <update id="updateDeleteTaskByPlanId">
@@ -507,21 +512,21 @@
 
     <select id="selectMonitorNumsExceptionData"
             resultType="com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData">
-        SELECT t.id                             as dataId,
-               t.org_id                         as orgId,
-               t.submit_time                    as dataTime,
-               'core_monitoring_retrieval_task' as dataSource,
-               now()                            as createTime,
-               count(t1.mid)                    as extraField1,  <!--异常通道数量-->
-               'nums'                           as extraField2
-        FROM core_monitoring_retrieval_task t
-                 inner join core_monitoring_task_registration tr on t.id = tr.task_id
-                 inner join core_monitoring_task_registration_monitor trm on tr.id = trm.task_registration_id
-                 inner join (select distinct m.id as mid, m.video_channel as channelId
-                             from core_monitoring_task_registration_monitor m
-                                      inner join core_monitoring_task_monitor_info i on m.id = i.task_monitor_id
-                             where i.situation = 1) t1 on trm.id=t1.mid
-        where t.plan_end_time <![CDATA[<]]> #{time}
+            SELECT t.id                             as dataId,
+                   t.org_id                         as orgId,
+                   t.submit_time                    as dataTime,
+                   'core_monitoring_retrieval_task' as dataSource,
+                   now()                            as createTime,
+                   count(t1.mid)                    as extraField1,  <!--异常通道数量-->
+                   'nums'                           as extraField2
+            FROM core_monitoring_retrieval_task t
+                     inner join core_monitoring_task_registration tr on t.id = tr.task_id
+                     inner join core_monitoring_task_registration_monitor trm on tr.id = trm.task_registration_id
+                     inner join (select distinct m.id as mid, m.video_channel as channelId
+                                 from core_monitoring_task_registration_monitor m
+                                          inner join core_monitoring_task_monitor_info i on m.id = i.task_monitor_id
+                                 where i.situation = 1) t1 on trm.id=t1.mid
+            where t.plan_end_time <![CDATA[<]]> #{time}
     </select>
     <select id="selectCompleteByPlanId"
             resultType="com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask">