Quellcode durchsuchen

安全指数代码更新

jingyuanchao vor 2 Jahren
Ursprung
Commit
e56006b3f7

+ 1 - 1
project_data/sql/0.0.2/soc/soc.sql

@@ -2025,7 +2025,7 @@ INSERT INTO core_safety_dict (id, code, parent_code, name) VALUES (60, '100502',
 INSERT INTO core_safety_dict (id, code, parent_code, name) VALUES (61, '10050201', '100502', '已确认但未在规定时间内完成整改');
 INSERT INTO core_safety_dict (id, code, parent_code, name) VALUES (62, '1006', '-1', '监控调阅');
 INSERT INTO core_safety_dict (id, code, parent_code, name) VALUES (63, '100601', '1006', '监控调阅-未登');
-INSERT INTO core_safety_dict (id, code, parent_code, name) VALUES (64, '10060101', '100601', '未登-网点安全员(每周)');
+INSERT INTO core_safety_dict (id, code, parent_code, name) VALUES (64, '10060101', '100601', '未登-网点负责人(每周)');
 
 
 INSERT INTO core_safety_index_calculate_rule (id, type_code, project_code, point_code, deduction_type, score, formula, org_type, deleted, cycle, remark, create_time, create_by, update_time, update_by) VALUES (3846713285328896, '1005', '100501', '10050101', 2, 10, '扣分=问题数量*K+风险等级为“重大”的问题数量*K1+风险等级为“关注”的问题数量*K2+风险等级为“一般”的问题数量*K3+风险等级为“轻微”的问题数量*K4;得分大于10,取分值10。K为调节系数,可变更,建议测试期间K=0.05;K1=0.05;K2=0.15;K3=0.2;K4=0.25。', 3, 0, null, null, now(), null, now(), null);

+ 5 - 8
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ResumptionServiceImpl.java

@@ -4,8 +4,6 @@ import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
-import com.alibaba.nacos.shaded.com.google.gson.Gson;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
@@ -16,9 +14,7 @@ import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.utils.ResumptionType;
 import com.xunmei.common.core.utils.Ymd;
-import com.xunmei.core.TaskCreatingServiceImplBase;
 import com.xunmei.core.resumption.domain.AppPlan;
-import com.xunmei.core.resumption.domain.AppPlanToRole;
 import com.xunmei.core.resumption.domain.Resumption;
 import com.xunmei.core.resumption.dto.TaskDetailsDto;
 import com.xunmei.core.resumption.dto.resumptionRegister.ResumptionTaskDataDto;
@@ -32,14 +28,15 @@ import com.xunmei.core.resumption.vo.ResumptionTaskNewDto;
 import com.xunmei.core.resumption.vo.WorkChangeResumptionVo;
 import com.xunmei.system.api.RemoteRoleService;
 import com.xunmei.system.api.domain.SysRole;
-import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.*;
-import java.util.stream.Collectors;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 @Service
 public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumption> implements ResumptionService {
@@ -310,7 +307,7 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
 
     @Override
     public List<CoreSafetyExceptionData> findResumptionList(DateTime time) {
-        SysRole role = roleService.getRoleByName("网点安全员", SecurityConstants.FROM_SOURCE);
+        SysRole role = roleService.getRoleByName("网点安全员", SecurityConstants.INNER);
         return baseMapper.findResumptionExceptionList(time.year(), time.quarter(), time.month() + 1, role.getId());
     }
 }

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/mapper/CoreMonitoringRetrievalTaskMapper.java

@@ -175,4 +175,6 @@ 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<CoreSafetyExceptionData> selectMonitorExceptionData(@Param("year") int year, @Param("quarter") int quarter, @Param("month") int month, @Param("roleId") Long roleId);
 }

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

@@ -21,15 +21,14 @@ import com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTas
 import com.xunmei.common.core.domain.retrieval.dto.RetrievalTaskPageDto;
 import com.xunmei.common.core.domain.retrieval.vo.*;
 import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData;
-import com.xunmei.common.core.enums.edu.EduTrainingPlanCycleEnum;
 import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
 import com.xunmei.common.core.enums.CycleCommonEnum;
 import com.xunmei.common.core.enums.RetrievalTaskCycle;
+import com.xunmei.common.core.enums.edu.EduTrainingPlanCycleEnum;
 import com.xunmei.common.core.event.WorkTimeChangeEvent;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.utils.DateUtils;
-import com.xunmei.common.core.utils.KeyValue;
 import com.xunmei.common.core.utils.Ymd;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
@@ -41,9 +40,11 @@ import com.xunmei.core.retrieval.mapper.CoreMonitoringRetrievalTaskMapper;
 import com.xunmei.core.retrieval.service.ICoreMonitoringRetrievalTaskService;
 import com.xunmei.system.api.RemoteDictDataService;
 import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.RemoteRoleService;
 import com.xunmei.system.api.RemoteWorkTimeService;
 import com.xunmei.system.api.domain.SysDictData;
 import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.domain.SysRole;
 import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import com.xunmei.system.api.model.LoginUser;
 import org.springframework.beans.BeanUtils;
@@ -60,7 +61,6 @@ import java.net.URLEncoder;
 import java.time.*;
 import java.util.*;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 
 /**
@@ -83,7 +83,7 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
     @Autowired
     private CoreMonitoringTaskRegistrationMapper coreMonitoringTaskRegistrationMapper;
     @Autowired
-    private RemoteOrgService remoteOrgService;
+    private RemoteRoleService roleService;
     @Autowired
     RemoteWorkTimeService workTimeService;
 
@@ -251,7 +251,7 @@ 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)){
+        if (CollectionUtil.isNotEmpty(lista)) {
             this.saveBatch(lista);
         }
     }
@@ -405,10 +405,10 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
     @Override
     public void deleteAllTaskByPlanIds(List<Long> planId) {
         Long[] longs = planId.toArray(new Long[planId.size()]);
-     //   coreMonitoringRetrievalTaskMapper.deleteAllTaskByPlanIds(longs);
+        //   coreMonitoringRetrievalTaskMapper.deleteAllTaskByPlanIds(longs);
 
-        QueryWrapper queryWrapper=new QueryWrapper();
-        queryWrapper.in("plan_id",longs);
+        QueryWrapper queryWrapper = new QueryWrapper();
+        queryWrapper.in("plan_id", longs);
         coreMonitoringRetrievalTaskMapper.delete(queryWrapper);
     }
 
@@ -460,7 +460,7 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
             sysOrg.setPath(p.getOrgPath());
             sysOrg.setType(Integer.valueOf(p.getOrgType()));
             List<SysOrg> sysOrgs = remoteOrgService.listByParentIdAndType(sysOrg, SecurityConstants.INNER);*/
-            List<SysOrg> sysOrgs = orgList.stream().filter(s -> s.getPath().contains(p.getOrgPath()) && (s.getType()!=null&&s.getType().toString().equals(p.getOrgType()))).collect(Collectors.toList());
+            List<SysOrg> sysOrgs = orgList.stream().filter(s -> s.getPath().contains(p.getOrgPath()) && (s.getType() != null && s.getType().toString().equals(p.getOrgType()))).collect(Collectors.toList());
             for (SysOrg s : sysOrgs) {
                 TMonitoringRetrievalPlan plan = new TMonitoringRetrievalPlan();
                 BeanUtils.copyProperties(p, plan);
@@ -522,25 +522,25 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
         }
         Map<Integer, DateRange> dateRanges = DateUtils.splitDateRange(dateRange.getStartTime(), dateRange.getEndTime(), plan.getPlanFrequency().intValue());
         //判断作息(无周期排开)
-        if(!plan.getPlanCycle().equals(RetrievalTaskCycle.NOCYCLE.getCode().toString())){
+        if (!plan.getPlanCycle().equals(RetrievalTaskCycle.NOCYCLE.getCode().toString())) {
             boolean flag = checkWorkTime(dateRange.getStartTime(), dateRange.getEndTime(), sysOrg.getId());
-            if(flag){
+            if (flag) {
                 for (int i = 1; i <= plan.getPlanFrequency(); i++) {
                     DateRange dateRange1 = dateRanges.get(i);
                     CoreMonitoringRetrievalTask task = this.buildCoreMonitoringRetrievalTask(batchNum, i, plan, sysOrg, dateRange1, ymd);
                     taskList.add(task);
                 }
-            }else{
-                log.error("机构"+sysOrg.getName()+"在时间"+dateRange.getStartTime()+"-"+dateRange.getEndTime()+"没有作息,不生成监控调阅任务");
+            } else {
+                log.error("机构" + sysOrg.getName() + "在时间" + dateRange.getStartTime() + "-" + dateRange.getEndTime() + "没有作息,不生成监控调阅任务");
             }
-        }else{
+        } else {
             for (int i = 1; i <= plan.getPlanFrequency(); i++) {
                 DateRange dateRange1 = dateRanges.get(i);
                 CoreMonitoringRetrievalTask task = this.buildCoreMonitoringRetrievalTask(batchNum, i, plan, sysOrg, dateRange1, ymd);
                 taskList.add(task);
             }
         }
-         //
+        //
         return taskList;
 
     }
@@ -607,21 +607,23 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
 
     @Override
     public List<CoreSafetyExceptionData> selectMonitorExceptionData(DateTime time) {
-        //逾期数据
+        //获取监控调阅的异常数据 , 扩展字段2=overTime表示逾期数据  扩展字段2=nums表示异常通道数量数据
+       /* 逾期数据  扩展字段1:任务状态
         List<CoreSafetyExceptionData> overTimeExceptionData = baseMapper.selectMonitorOverTimeExceptionData(time);
-        //检查通道占比数量数据
-        List<CoreSafetyExceptionData> numsExceptionData = baseMapper.selectMonitorNumsExceptionData(time);
-
-        final List<CoreSafetyExceptionData> collect = Stream.of(overTimeExceptionData, numsExceptionData).flatMap(Collection::stream).collect(Collectors.toList());
-        collect.removeIf(item -> ObjectUtil.isNull(item.getDataId()));
-        return collect;
+        //检查通道占比数量数据  扩展字段1:通道数
+        List<CoreSafetyExceptionData> numsExceptionData = baseMapper.selectMonitorNumsExceptionData(time);*/
+        SysRole role = roleService.getRoleByName("网点安全员", SecurityConstants.INNER);
+        //扩展字段1:任务状态 扩展字段2 计划id
+        List<CoreSafetyExceptionData> exceptionData = baseMapper.selectMonitorExceptionData(time.year(), time.quarter(), time.month() + 1, role.getId());
+        exceptionData.removeIf(item -> ObjectUtil.isNull(item.getDataId()));
+        return exceptionData;
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-   public void taskChangeForTimeWorkChange(WorkTimeChangeEvent event) {
+    public void taskChangeForTimeWorkChange(WorkTimeChangeEvent event) {
         //修改的作息的日期
-        Date ymdDate  =  event.getDataList().get(0).getYmdDate();
+        Date ymdDate = event.getDataList().get(0).getYmdDate();
 
         //受影响的机构
         List<Long> orgIds = event.getOrgIds();
@@ -638,34 +640,34 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
         //要重新生成任务的机构和计划
         List<KeyValueVo> keyValues = new ArrayList<>();
 
-        Map<String,Object> dayObjectMap = null;
-        Map<String,Object> weekObjectMap=null;
-        Map<String,Object> monthObjectMap=null;
-        Map<String,Object> quarterObjectMap=null;
-        Map<String,Object> halfYearObjectMap=null;
-        Map<String,Object> yearObjectMap=null;
+        Map<String, Object> dayObjectMap = null;
+        Map<String, Object> weekObjectMap = null;
+        Map<String, Object> monthObjectMap = null;
+        Map<String, Object> quarterObjectMap = null;
+        Map<String, Object> halfYearObjectMap = null;
+        Map<String, Object> yearObjectMap = null;
         //判断ymdDate 月today是否是同一日期
-        if(DateUtil.isSameDay(ymdDate,today)){
-           //获取当天的调阅任务
-            dayObjectMap = this.deleteTaskList(ymdDate,orgIds,RetrievalTaskCycle.DAYCYCLE.getCode());
+        if (DateUtil.isSameDay(ymdDate, today)) {
+            //获取当天的调阅任务
+            dayObjectMap = this.deleteTaskList(ymdDate, orgIds, RetrievalTaskCycle.DAYCYCLE.getCode());
         }
-            weekObjectMap = this.deleteTaskList(ymdDate,orgIds,RetrievalTaskCycle.WEEKCYCLE.getCode());
-            monthObjectMap = this.deleteTaskList(ymdDate,orgIds,RetrievalTaskCycle.MONTHCYCLE.getCode());
-            quarterObjectMap = this.deleteTaskList(ymdDate,orgIds,RetrievalTaskCycle.QUARTERCYCLE.getCode());
-            halfYearObjectMap = this.deleteTaskList(ymdDate,orgIds,RetrievalTaskCycle.HALFYEARCYCLE.getCode());
-            yearObjectMap = this.deleteTaskList(ymdDate,orgIds,RetrievalTaskCycle.YEARCYCLE.getCode());
+        weekObjectMap = this.deleteTaskList(ymdDate, orgIds, RetrievalTaskCycle.WEEKCYCLE.getCode());
+        monthObjectMap = this.deleteTaskList(ymdDate, orgIds, RetrievalTaskCycle.MONTHCYCLE.getCode());
+        quarterObjectMap = this.deleteTaskList(ymdDate, orgIds, RetrievalTaskCycle.QUARTERCYCLE.getCode());
+        halfYearObjectMap = this.deleteTaskList(ymdDate, orgIds, RetrievalTaskCycle.HALFYEARCYCLE.getCode());
+        yearObjectMap = this.deleteTaskList(ymdDate, orgIds, RetrievalTaskCycle.YEARCYCLE.getCode());
 
-        Map<String,Object> allMap = this.buildDeleteTaskList(dayObjectMap,weekObjectMap,monthObjectMap,quarterObjectMap,halfYearObjectMap,yearObjectMap);
+        Map<String, Object> allMap = this.buildDeleteTaskList(dayObjectMap, weekObjectMap, monthObjectMap, quarterObjectMap, halfYearObjectMap, yearObjectMap);
         deleteTaskList = (List<CoreMonitoringRetrievalTask>) allMap.get("deleteTaskList");
         keyValues = (List<KeyValueVo>) allMap.get("keyValues");
         //删除任务
-        if(CollectionUtil.isNotEmpty(deleteTaskList)){
+        if (CollectionUtil.isNotEmpty(deleteTaskList)) {
             this.removeBatchByIds(deleteTaskList);
         }
         //生成新的任务
-       // if(CollectionUtil.isNotEmpty(keyValues)){
-           this.createNewtask(keyValues,ymdDate,orgIds);
-       // }
+        // if(CollectionUtil.isNotEmpty(keyValues)){
+        this.createNewtask(keyValues, ymdDate, orgIds);
+        // }
 
     }
 
@@ -674,10 +676,10 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
         List<CoreMonitoringRetrievalTask> deleteTaskList = new ArrayList<>();
         List<KeyValueVo> keyValues = new ArrayList<>();
         for (Map<String, Object> objMap : ObjMaps) {
-            if(objMap != null&&objMap.containsKey("deleteTaskList")&&objMap.containsKey("keyValues")){
+            if (objMap != null && objMap.containsKey("deleteTaskList") && objMap.containsKey("keyValues")) {
                 List<CoreMonitoringRetrievalTask> listTask = (List<CoreMonitoringRetrievalTask>) objMap.get("deleteTaskList");
                 List<KeyValueVo> keyValueList = (List<KeyValueVo>) objMap.get("keyValues");
-                if(CollectionUtil.isNotEmpty(listTask)){
+                if (CollectionUtil.isNotEmpty(listTask)) {
                     deleteTaskList.addAll(listTask);
                 }
                 if (CollectionUtil.isNotEmpty(keyValueList)) {
@@ -690,13 +692,14 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
         deleteTaskListMap.put("keyValues", keyValues);
         return deleteTaskListMap;
     }
-    private void createNewtask(List<KeyValueVo> keyValues,Date taskTime,List<Long> orgIds) {
+
+    private void createNewtask(List<KeyValueVo> keyValues, Date taskTime, List<Long> orgIds) {
         //获取所有机构
         List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.findAllOrg(SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
-        List<SysOrg> orgs = orgList.stream().filter(r->orgIds.contains(r.getId())).collect(Collectors.toList());
+        List<SysOrg> orgs = orgList.stream().filter(r -> orgIds.contains(r.getId())).collect(Collectors.toList());
         //通过parentId获取orgList中orgs的直属上级
-        List<SysOrg> parentOrgList =  orgList.stream().filter(r->orgs.stream().anyMatch(s->s.getParentId().equals(r.getId()))).collect(Collectors.toList());
-        List<Long> orgParentIds = parentOrgList.stream().map(r->r.getId()).collect(Collectors.toList());
+        List<SysOrg> parentOrgList = orgList.stream().filter(r -> orgs.stream().anyMatch(s -> s.getParentId().equals(r.getId()))).collect(Collectors.toList());
+        List<Long> orgParentIds = parentOrgList.stream().map(r -> r.getId()).collect(Collectors.toList());
 
         //获取计划
         List<CoreMonitoringRetrievalTask> taskList = new ArrayList<>();
@@ -710,16 +713,16 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
         List<TMonitoringRetrievalPlan> plans = itMonitoringRetrievalPlanService.list(queryWrapper);
         List<TMonitoringRetrievalPlan> planList = new ArrayList<>();
 
-        for(TMonitoringRetrievalPlan p:plans){
+        for (TMonitoringRetrievalPlan p : plans) {
             for (SysOrg s : orgs) {
-                if(CollectionUtil.isNotEmpty(keyValues)){
+                if (CollectionUtil.isNotEmpty(keyValues)) {
                     //机构和计划没有同时在排除的范围内的计划不生成任务
-                    if(keyValues.stream().filter(r->r.getValue().equals(p.getId())&&r.getKey().equals(s.getId())).count()>0){
+                    if (keyValues.stream().filter(r -> r.getValue().equals(p.getId()) && r.getKey().equals(s.getId())).count() > 0) {
                         continue;
                     }
                 }
                 //计划的机构id不是当前机构的直属父机构,不生成任务,计划的机构类型不是当前机构的机构类型不生成任务
-                if(!p.getOrgId().equals(s.getParentId())||(s.getType()!=null&&!s.getType().toString().equals(p.getOrgType()))){
+                if (!p.getOrgId().equals(s.getParentId()) || (s.getType() != null && !s.getType().toString().equals(p.getOrgType()))) {
                     continue;
                 }
                 TMonitoringRetrievalPlan plan = new TMonitoringRetrievalPlan();
@@ -747,7 +750,7 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
         }
         for (TMonitoringRetrievalPlan plan : planList) {
             //任务的开始时间按周期计算用下面的方式
-            DateRange dateRange =  DateUtils.getStartAndEnd(taskTime, Integer.valueOf(plan.getPlanCycle()));
+            DateRange dateRange = DateUtils.getStartAndEnd(taskTime, Integer.valueOf(plan.getPlanCycle()));
             Instant instant = dateRange.getStartTime().toInstant();
             // 创建 ZonedDateTime 对象,并指定时区
             ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault());
@@ -759,14 +762,14 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
             if (CollectionUtil.isNotEmpty(listByType)) {
                 List<CoreMonitoringRetrievalTask> list = this.buildCoreMonitoringRetrievalTask(plan, localDate, listByType.get(0));
                 if (CollectionUtil.isNotEmpty(list)) {
-                    if(!plan.getPlanCycle().equals(RetrievalTaskCycle.DAYCYCLE.getCode().toString())){
+                    if (!plan.getPlanCycle().equals(RetrievalTaskCycle.DAYCYCLE.getCode().toString())) {
                         List<CoreMonitoringRetrievalTask> lista = list.stream().filter(r -> r.getPlanEndTime().after(taskTime)).collect(Collectors.toList());
-                        if(CollectionUtil.isNotEmpty(lista)){
+                        if (CollectionUtil.isNotEmpty(lista)) {
                             taskList.addAll(lista);
                         }
-                    }else{
+                    } else {
                         List<CoreMonitoringRetrievalTask> lista = list.stream().filter(r -> r.getPlanEndTime().after(new Date())).collect(Collectors.toList());
-                        if(CollectionUtil.isNotEmpty(lista)){
+                        if (CollectionUtil.isNotEmpty(lista)) {
                             taskList.addAll(lista);
                         }
                     }
@@ -777,39 +780,39 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
         this.saveBatch(taskList);
     }
 
-    private Map<String,Object> deleteTaskList(Date ymdDate,List<Long> orgIds,Integer cycle){
-        Map<String,Object> objectMap = new HashMap<>();
+    private Map<String, Object> deleteTaskList(Date ymdDate, List<Long> orgIds, Integer cycle) {
+        Map<String, Object> objectMap = new HashMap<>();
         QueryWrapper<CoreMonitoringRetrievalTask> queryWrapper = new QueryWrapper<>();
-         //每日条件
+        //每日条件
         Date datetime = ymdDate;
-        if(!cycle.equals(RetrievalTaskCycle.DAYCYCLE.getCode())){
-             //根据ymdDate获取周的第一天的日期
-            DateRange dateRange =  DateUtils.getStartAndEnd(ymdDate,cycle);
+        if (!cycle.equals(RetrievalTaskCycle.DAYCYCLE.getCode())) {
+            //根据ymdDate获取周的第一天的日期
+            DateRange dateRange = DateUtils.getStartAndEnd(ymdDate, cycle);
             datetime = dateRange.getStartTime();
         }
-        LocalDate taskTime=DateUtils.toLocalDate(datetime);
+        LocalDate taskTime = DateUtils.toLocalDate(datetime);
 /*        queryWrapper.lambda().eq(CoreMonitoringRetrievalTask::getYmdDate,taskTime);
         //公共条件
         queryWrapper.lambda().in(CoreMonitoringRetrievalTask::getOrgId,orgIds);
         queryWrapper.lambda().eq(CoreMonitoringRetrievalTask::getCycle,cycle);
         List<CoreMonitoringRetrievalTask> taskList = this.list(queryWrapper);*/
-        List<CoreMonitoringRetrievalTask> taskList = baseMapper.selectTaskList(taskTime,orgIds,cycle);
+        List<CoreMonitoringRetrievalTask> taskList = baseMapper.selectTaskList(taskTime, orgIds, cycle);
         List<CoreMonitoringRetrievalTask> deleteTaskList = new ArrayList<>();
         List<KeyValueVo> keyValues = new ArrayList<>();
-        if(CollectionUtil.isNotEmpty(taskList)){
+        if (CollectionUtil.isNotEmpty(taskList)) {
             //将数据按机构分组
-            Map<Long,List<CoreMonitoringRetrievalTask>> taskMap = taskList.stream().collect(Collectors.groupingBy(CoreMonitoringRetrievalTask::getOrgId));
-            for(Long key:taskMap.keySet()){
+            Map<Long, List<CoreMonitoringRetrievalTask>> taskMap = taskList.stream().collect(Collectors.groupingBy(CoreMonitoringRetrievalTask::getOrgId));
+            for (Long key : taskMap.keySet()) {
                 List<CoreMonitoringRetrievalTask> taskList1 = taskMap.get(key);
-               //将taskList1 按batchNum进行分组
-                Map<Long,List<CoreMonitoringRetrievalTask>> taskMap1 = taskList1.stream().collect(Collectors.groupingBy(CoreMonitoringRetrievalTask::getBatchNum));
-                for(Long key1:taskMap1.keySet()){
+                //将taskList1 按batchNum进行分组
+                Map<Long, List<CoreMonitoringRetrievalTask>> taskMap1 = taskList1.stream().collect(Collectors.groupingBy(CoreMonitoringRetrievalTask::getBatchNum));
+                for (Long key1 : taskMap1.keySet()) {
                     List<CoreMonitoringRetrievalTask> taskList2 = taskMap1.get(key1);
-                    int num = (int) taskList2.stream().filter(t->t.getStatus().equals(2)).count();
+                    int num = (int) taskList2.stream().filter(t -> t.getStatus().equals(2)).count();
                     //没有完成的任务,改批次的任务删除
-                    if(num==0){
+                    if (num == 0) {
                         deleteTaskList.addAll(taskList2);
-                    }else{
+                    } else {
                         Long planId = taskList2.get(0).getPlanId();
                         KeyValueVo keyValue = new KeyValueVo();
                         keyValue.setKey(key);
@@ -819,24 +822,25 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
                 }
             }
         }
-        objectMap.put("deleteTaskList",deleteTaskList);
-        objectMap.put("keyValues",keyValues);
+        objectMap.put("deleteTaskList", deleteTaskList);
+        objectMap.put("keyValues", keyValues);
         return objectMap;
     }
 
 
-    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){
+    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;
+        } else {
+            return false;
         }
     }
+
     private List<SysWorkTime> selectWorkTimeList(Date now, CycleCommonEnum cycle, WorkTimeChangeEvent event) {
         DateRange range = DateUtils.getStartAndEnd(now, cycle);
         String startTime = DateUtil.format(range.getStartTime(), Constants.DAILY_FORMAT);

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

@@ -5,18 +5,14 @@ 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;
@@ -43,19 +39,22 @@ import java.util.stream.Collectors;
  */
 @Service
 public class CoreSafetyExceptionDataServiceImpl extends ServiceImpl<CoreSafetyExceptionDataMapper, CoreSafetyExceptionData> implements ICoreSafetyExceptionDataService {
-    public static final String RESUMPTION_DICT_CODE = "1004";
-    public static final String QUESTION_DICT_CODE = "1005";
-    public static final String MONITORING_DICT_CODE = "1006";
     public static final String CORE_RESUMPTION = "core_resumption";
     public static final String CORE_QUESTION = "core_question";
     public static final String CORE_MONITORING_RETRIEVAL_TASK = "core_monitoring_retrieval_task";
-    public static final String BEFORE_POINT_CODE = "10040201";
-    public static final String MIDDLE_POINT_CODE = "10040203";
-    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";
+
+    public static final String RESUMPTION_DICT_CODE = "1004";//安保履职
+    public static final String BEFORE_POINT_CODE = "10040201";//未登网点安全员(营业前)
+    public static final String MIDDLE_POINT_CODE = "10040203";//未登网点安全员(营业后)
+    public static final String AFTER_POINT_CODE = "10040202";//未登网点安全员(营业中)
+
+
+    public static final String QUESTION_DICT_CODE = "1005";//问题整改
+    public static final String UN_CONFIRM_POINT_CODE = "10050101";//未在规定时间内确认
+    public static final String UN_RECTIFY_POINT_CODE = "10050201";//已确认但未在规定时间内完成整改
+
+    public static final String MONITORING_DICT_CODE = "1006";//监控调阅
+    public static final String MONITORING_EXCEPTION_NUMS_POINT_CODE = "10060101";//未登-网点安全员(每周)
     @Autowired
     private CoreSafetyExceptionDataMapper coreSafetyExceptionDataMapper;
     @Autowired
@@ -72,6 +71,7 @@ public class CoreSafetyExceptionDataServiceImpl extends ServiceImpl<CoreSafetyEx
     private ICoreSafetySourceDataService sourceDataService;
     @Autowired
     private ICoreSafeMonthScoreService safeMonthScoreService;
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void countExceptionData(String date) {
@@ -125,7 +125,7 @@ public class CoreSafetyExceptionDataServiceImpl extends ServiceImpl<CoreSafetyEx
         calculateMonitoringData(monitoringIndexList, monitoringExceptionDataList, year, month, orgList);
 
 
-        calculateAll(year,month);
+        calculateAll(year, month);
     }
 
     private void calculateAll(int year, int month) {
@@ -182,22 +182,87 @@ public class CoreSafetyExceptionDataServiceImpl extends ServiceImpl<CoreSafetyEx
                 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));
-                }
+                calculateMonitorContinuousCumulativeCount(orgMonitoringIndexList, monitoringExceptionDataList.get(orgId), orgId, year, month);
+
             });
         }
 
     }
 
+    private void calculateMonitorContinuousCumulativeCount(List<SafeIndexRuleCountVo> orgMonitoringIndexList, List<CoreSafetyExceptionData> dataList, Long orgId, int year, int month) {
+        List<CoreSafetyExceptionData> errorDataList = dataList.stream().filter(data -> ObjectUtil.equal(3, data.getExtraField1())).collect(Collectors.toList());
+        int count = errorDataList.size();
+        if (count == 0) {
+            return;
+        }
+
+        List<CoreSafetySourceData> sourceDataList = new ArrayList<>();
+        //获取累计数
+        orgMonitoringIndexList.stream()
+                .filter(r -> r.getCalculateType().equals(Constants.ONE))
+                .findFirst()
+                .ifPresent(config -> {
+                    double deductScore = count * config.getItemValue();
+                    //计算累计数
+                    CoreSafetySourceData safeSourceData = doNewSafetySourceData(config, orgId, deductScore, year, month, count);
+                    sourceDataList.add(safeSourceData);
+                });
+
+        //获取连续数的配置,并根据配置的连续数日期进行倒序
+        List<SafeIndexRuleCountVo> monitoringContinuousNums = orgMonitoringIndexList.stream()
+                .filter(r -> r.getCalculateType().equals(Constants.TWO))
+                .sorted(Comparator.comparing(SafeIndexRuleCountVo::getIndicatorDays).reversed())
+                .collect(Collectors.toList());
+        //所有逾期的数据
+        List<CoreSafetyExceptionData> overDueDataList = dataList.stream().filter(data -> ObjectUtil.equal(data.getExtraField1(), 3)).collect(Collectors.toList());
+        List<SafeIndexRuleCountVo> usedConfigList = new ArrayList<>();
+        //循环配置的连续数
+        for (SafeIndexRuleCountVo monitoringContinuousNum : monitoringContinuousNums) {
+            if (usedConfigList.contains(monitoringContinuousNum)) {
+                //如果已经使用过了,则跳过
+                continue;
+            }
+            Integer indicatorDays = monitoringContinuousNum.getIndicatorDays();
+            int continuousNum = 1;
+            //循环所有逾期的数据
+            for (int i = 0; i < overDueDataList.size(); i++) {
+                //获取当前的逾期数据
+                CoreSafetyExceptionData curData = overDueDataList.get(i);
+                //获取下一个逾期的数据
+                CoreSafetyExceptionData nextData = overDueDataList.get(i + 1);
+                if (nextData == null) {
+                    //如果为null,说明走到了最后一个元素
+                    break;
+                }
+                //当前逾期任务的在原始数据中的下标
+                int curDataIndex = dataList.indexOf(curData);
+                //下一个逾期任务的在原始数据中的下标
+                int nextDataIndex = dataList.indexOf(nextData);
+                //如果两个元素下标相减等于1,说明两个元素相邻,也就是连续逾期未登
+                if (nextDataIndex - curDataIndex == 1) {
+                    continuousNum++;
+                    continue;
+                }
+                if (continuousNum >= indicatorDays) {
+                    //说明已经达到了连续数的要求
+                    double deductScore = continuousNum * monitoringContinuousNum.getItemValue();
+                    //计算连续数
+                    CoreSafetySourceData safeSourceData = doNewSafetySourceData(monitoringContinuousNum, orgId, deductScore, year, month, continuousNum);
+                    sourceDataList.add(safeSourceData);
+                    continuousNum=1;
+                    usedConfigList.add(monitoringContinuousNum);
+                    break;
+                }
+
+
+            }
+
+
+        }
+
+
+    }
+
 
     private void calculateQuestionData(List<SafeIndexRuleCountVo> questionIndexList, List<CoreSafetyExceptionData> dataList, int year, int month, List<SysOrgVO> orgList) {
         //将数据按机构分组
@@ -272,16 +337,17 @@ public class CoreSafetyExceptionDataServiceImpl extends ServiceImpl<CoreSafetyEx
                 //构建执行时刻的map,用于存储每个时刻的异常数据
                 Map<Integer, List<CoreSafetyExceptionData>> execTimeMap = buildExecTimeMap(resumptionExceptionDataListByOrg);
 
+                //营业前
                 if (ObjectUtil.isNotEmpty(resumptionBeforeUndoIndexList)) {
                     List<CoreSafetySourceData> sourceDataList = calculateContinuousCumulativeCount(resumptionBeforeUndoIndexList, execTimeMap.get(2), orgId, year, month);
                     saveSourceData(sourceDataList, resumptionBeforeUndoIndexList.get(0));
                 }
-
+                //营业中
                 if (ObjectUtil.isNotEmpty(resumptionMiddleIndexList)) {
                     List<CoreSafetySourceData> sourceDataList = calculateContinuousCumulativeCount(resumptionMiddleIndexList, execTimeMap.get(3), orgId, year, month);
                     saveSourceData(sourceDataList, resumptionMiddleIndexList.get(0));
                 }
-
+                //营业后
                 if (ObjectUtil.isNotEmpty(resumptionAfterUndoIndexList)) {
                     List<CoreSafetySourceData> sourceDataList = calculateContinuousCumulativeCount(resumptionAfterUndoIndexList, execTimeMap.get(4), orgId, year, month);
                     saveSourceData(sourceDataList, resumptionAfterUndoIndexList.get(0));
@@ -332,18 +398,17 @@ public class CoreSafetyExceptionDataServiceImpl extends ServiceImpl<CoreSafetyEx
         AtomicReference<Integer> atomicContinuousThreeDays = new AtomicReference<>(0);
         AtomicReference<Integer> atomicContinuousFiveDays = new AtomicReference<>(0);
         AtomicReference<Integer> atomicContinuousTenDays = new AtomicReference<>(0);
+        //计算连续天数并获取连续天数集合
         List<Map<Integer, List<String>>> mapList = groupContinuousDays(dataTimeList);
         mapList.stream().flatMap(m -> m.entrySet().stream()).forEach(e -> {
             Integer key = e.getKey();
             List<String> value = e.getValue();
-            if (key >= 3) {
-                atomicContinuousThreeDays.getAndSet(atomicContinuousThreeDays.get() + 1);
-            }
-            if (key >= 5) {
-                atomicContinuousFiveDays.getAndSet(atomicContinuousFiveDays.get() + 1);
-            }
             if (key >= 10) {
                 atomicContinuousTenDays.getAndSet(atomicContinuousTenDays.get() + 1);
+            } else if (key >= 5) {
+                atomicContinuousFiveDays.getAndSet(atomicContinuousFiveDays.get() + 1);
+            } else if (key >= 3) {
+                atomicContinuousThreeDays.getAndSet(atomicContinuousThreeDays.get() + 1);
             }
         });
 
@@ -374,6 +439,19 @@ public class CoreSafetyExceptionDataServiceImpl extends ServiceImpl<CoreSafetyEx
 
         return sourceDataList;
     }
+    /*public static void main(String[] args) {
+        String[] dates = {"2022-01-01", "2022-01-02", "2022-01-03", "2022-01-04", "2022-01-06", "2022-01-07", "2022-01-08", "2022-01-09", "2022-01-11"};
+        List<Map<Integer, List<String>>> result = groupContinuousDays(Arrays.asList(dates));
+
+        for (Map<Integer, List<String>> group : result) {
+            for (Map.Entry<Integer, List<String>> entry : group.entrySet()) {
+                int count = entry.getKey();
+                List<String> datesList = entry.getValue();
+                System.out.println("连续天数:" + count);
+                System.out.println("日期集合:" + datesList);
+            }
+        }
+    }*/
 
     public static List<Map<Integer, List<String>>> groupContinuousDays(List<String> days) {
         List<Map<Integer, List<String>>> result = new ArrayList<>();
@@ -407,25 +485,10 @@ public class CoreSafetyExceptionDataServiceImpl extends ServiceImpl<CoreSafetyEx
     private List<SafeIndexRuleCountVo> getResumptionUndoIndexList(String pointCode, List<SafeIndexRuleCountVo> resumptionIndexList) {
         return resumptionIndexList.stream()
                 .filter(r -> ObjectUtil.equal(pointCode, r.getPointCode()))
-                .filter(r -> r.getCalculateType() == 1)
+                //.filter(r -> r.getCalculateType().equals(Constants.ONE))
                 .collect(Collectors.toList());
     }
 
-   /* public static void main(String[] args) {
-        String[] dates = {"2022-01-01", "2022-01-02", "2022-01-03", "2022-01-04", "2022-01-06", "2022-01-07", "2022-01-08", "2022-01-09", "2022-01-11"};
-        List<Map<Integer, List<String>>> result = groupContinuousDays(dates);
-
-        for (Map<Integer, List<String>> group : result) {
-            for (Map.Entry<Integer, List<String>> entry : group.entrySet()) {
-                int count = entry.getKey();
-                List<String> datesList = entry.getValue();
-                System.out.println("连续天数:" + count);
-                System.out.println("日期集合:" + datesList);
-            }
-        }
-    }*/
-
-
     private CoreSafetySourceData doNewSafetySourceData(SafeIndexRuleCountVo indexConfigCountVo, Long orgId, double deductScore, int year, int month, int time) {
         CoreSafetySourceData safeSourceData = new CoreSafetySourceData();
         safeSourceData.setId(IdWorker.getId());
@@ -480,9 +543,6 @@ public class CoreSafetyExceptionDataServiceImpl extends ServiceImpl<CoreSafetyEx
     }
 
     private void doMonitorExceptionData(DateTime time) {
-        //获取监控调阅的异常数据 , 扩展字段2=overTime表示逾期数据  扩展字段2=nums表示异常通道数量数据
-        //逾期数据 扩展字段1:周期
-        //异常通道数量数据 扩展字段1:通道数
         List<CoreSafetyExceptionData> resumptionExceptionList = monitoringRetrievalTaskService.selectMonitorExceptionData(time);
         this.saveBatch(resumptionExceptionList);
     }

+ 1 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/ResumptionMapper.xml

@@ -282,7 +282,7 @@
         now() as createTime
         FROM core_resumption a
         inner join core_resumption_plan p on a.plan_id = p.id
-        where p.plan_cycle in (2, 3, 4) <!--营业前中后-->
+        where p.plan_exec in (2, 3, 4) <!--营业前中后-->
         and ymd_year =#{year}
         and ymd_quarter=#{quarter}
         and ymd_month=#{month}

+ 263 - 149
soc-modules/soc-modules-core/src/main/resources/mapper/retrieval/CoreMonitoringRetrievalTaskMapper.xml

@@ -3,7 +3,6 @@
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.xunmei.core.retrieval.mapper.CoreMonitoringRetrievalTaskMapper">
-
     <resultMap type="com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask"
                id="CoreMonitoringRetrievalTaskResult">
         <result property="id" column="id"/>
@@ -85,7 +84,6 @@
             <if test="planId !=null ">
                 and plan_id=#{planId}
             </if>
-
         </where>
     </select>
 
@@ -110,14 +108,14 @@
         <if test="request.cycle != null ">
             and a.cycle = #{request.cycle}
         </if>
-<!--        <if test="request.dateRange != null and request.dateRange.length>0">
-            and a.ymd_date >= #{request.dateRange[0]}
-            and #{request.dateRange[1]}>=a.ymd_date
-        </if>-->
+        <!--        <if test="request.dateRange != null and request.dateRange.length>0">
+                    and a.ymd_date >= #{request.dateRange[0]}
+                    and #{request.dateRange[1]}>=a.ymd_date
+                </if>-->
         <if test="request.dateRange != null and request.dateRange.length>0">
             and (a.plan_start_time BETWEEN #{request.dateRange[0]}
             and #{request.dateRange[1]}
-           OR a.plan_end_time BETWEEN #{request.dateRange[0]}
+            OR a.plan_end_time BETWEEN #{request.dateRange[0]}
             and #{request.dateRange[1]})
         </if>
 
@@ -215,114 +213,163 @@
             and a.role_id = #{request.roleId}
         </if>
         order by a.ymd_date desc
-
     </select>
 
     <insert id="insertCoreMonitoringRetrievalTask"
             parameterType="com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask">
         insert into core_monitoring_retrieval_task
         <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="id != null">id,
+            <if test="id != null">
+                id,
             </if>
-            <if test="planId != null">plan_id,
+            <if test="planId != null">
+                plan_id,
             </if>
-            <if test="taskName != null">task_name,
+            <if test="taskName != null">
+                task_name,
             </if>
-            <if test="orgId != null">org_id,
+            <if test="orgId != null">
+                org_id,
             </if>
-            <if test="orgPath != null">org_path,
+            <if test="orgPath != null">
+                org_path,
             </if>
-            <if test="orgName != null">org_name,
+            <if test="orgName != null">
+                org_name,
             </if>
-            <if test="ymdDate != null">ymd_date,
+            <if test="ymdDate != null">
+                ymd_date,
             </if>
-            <if test="ymdYear != null">ymd_year,
+            <if test="ymdYear != null">
+                ymd_year,
             </if>
-            <if test="ymdHalfyear != null">ymd_halfyear,
+            <if test="ymdHalfyear != null">
+                ymd_halfyear,
             </if>
-            <if test="ymdQuarter != null">ymd_quarter,
+            <if test="ymdQuarter != null">
+                ymd_quarter,
             </if>
-            <if test="ymdMonth != null">ymd_month,
+            <if test="ymdMonth != null">
+                ymd_month,
             </if>
-            <if test="ymdWeek != null">ymd_week,
+            <if test="ymdWeek != null">
+                ymd_week,
             </if>
-            <if test="ymdDay != null">ymd_day,
+            <if test="ymdDay != null">
+                ymd_day,
             </if>
-            <if test="cycle != null">cycle,
+            <if test="cycle != null">
+                cycle,
             </if>
-            <if test="planStartTime != null">plan_start_time,
+            <if test="planStartTime != null">
+                plan_start_time,
             </if>
-            <if test="planEndTime != null">plan_end_time,
+            <if test="planEndTime != null">
+                plan_end_time,
             </if>
-            <if test="startTime != null">start_time,
+            <if test="startTime != null">
+                start_time,
             </if>
-            <if test="endTime != null">end_time,
+            <if test="endTime != null">
+                end_time,
             </if>
-            <if test="status != null">status,
+            <if test="status != null">
+                status,
             </if>
-            <if test="roleId != null">role_id,
+            <if test="roleId != null">
+                role_id,
             </if>
-            <if test="retrievalUser != null">retrieval_user,
+            <if test="retrievalUser != null">
+                retrieval_user,
             </if>
-            <if test="orderNum != null">order_num,
+            <if test="orderNum != null">
+                order_num,
             </if>
-            <if test="batchNum != null">batch_num,
+            <if test="batchNum != null">
+                batch_num,
             </if>
-            <if test="submitTime != null">submit_time,
+            <if test="submitTime != null">
+                submit_time,
             </if>
-            <if test="exceptionCount != null">exception_count,
+            <if test="exceptionCount != null">
+                exception_count,
             </if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="id != null">#{id},
+            <if test="id != null">
+                #{id},
             </if>
-            <if test="planId != null">#{planId},
+            <if test="planId != null">
+                #{planId},
             </if>
-            <if test="taskName != null">#{taskName},
+            <if test="taskName != null">
+                #{taskName},
             </if>
-            <if test="orgId != null">#{orgId},
+            <if test="orgId != null">
+                #{orgId},
             </if>
-            <if test="orgPath != null">#{orgPath},
+            <if test="orgPath != null">
+                #{orgPath},
             </if>
-            <if test="orgName != null">#{orgName},
+            <if test="orgName != null">
+                #{orgName},
             </if>
-            <if test="ymdDate != null">#{ymdDate},
+            <if test="ymdDate != null">
+                #{ymdDate},
             </if>
-            <if test="ymdYear != null">#{ymdYear},
+            <if test="ymdYear != null">
+                #{ymdYear},
             </if>
-            <if test="ymdHalfyear != null">#{ymdHalfyear},
+            <if test="ymdHalfyear != null">
+                #{ymdHalfyear},
             </if>
-            <if test="ymdQuarter != null">#{ymdQuarter},
+            <if test="ymdQuarter != null">
+                #{ymdQuarter},
             </if>
-            <if test="ymdMonth != null">#{ymdMonth},
+            <if test="ymdMonth != null">
+                #{ymdMonth},
             </if>
-            <if test="ymdWeek != null">#{ymdWeek},
+            <if test="ymdWeek != null">
+                #{ymdWeek},
             </if>
-            <if test="ymdDay != null">#{ymdDay},
+            <if test="ymdDay != null">
+                #{ymdDay},
             </if>
-            <if test="cycle != null">#{cycle},
+            <if test="cycle != null">
+                #{cycle},
             </if>
-            <if test="planStartTime != null">#{planStartTime},
+            <if test="planStartTime != null">
+                #{planStartTime},
             </if>
-            <if test="planEndTime != null">#{planEndTime},
+            <if test="planEndTime != null">
+                #{planEndTime},
             </if>
-            <if test="startTime != null">#{startTime},
+            <if test="startTime != null">
+                #{startTime},
             </if>
-            <if test="endTime != null">#{endTime},
+            <if test="endTime != null">
+                #{endTime},
             </if>
-            <if test="status != null">#{status},
+            <if test="status != null">
+                #{status},
             </if>
-            <if test="roleId != null">#{roleId},
+            <if test="roleId != null">
+                #{roleId},
             </if>
-            <if test="retrievalUser != null">#{retrievalUser},
+            <if test="retrievalUser != null">
+                #{retrievalUser},
             </if>
-            <if test="orderNum != null">#{orderNum},
+            <if test="orderNum != null">
+                #{orderNum},
             </if>
-            <if test="batchNum != null">#{batchNum},
+            <if test="batchNum != null">
+                #{batchNum},
             </if>
-            <if test="submitTime != null">#{submitTime},
+            <if test="submitTime != null">
+                #{submitTime},
             </if>
-            <if test="exceptionCount != null">#{exceptionCount},
+            <if test="exceptionCount != null">
+                #{exceptionCount},
             </if>
         </trim>
     </insert>
@@ -331,76 +378,100 @@
             parameterType="com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask">
         update core_monitoring_retrieval_task
         <trim prefix="SET" suffixOverrides=",">
-            <if test="planId != null">plan_id =
+            <if test="planId != null">
+                plan_id =
                 #{planId},
             </if>
-            <if test="taskName != null">task_name =
+            <if test="taskName != null">
+                task_name =
                 #{taskName},
             </if>
-            <if test="orgId != null">org_id =
+            <if test="orgId != null">
+                org_id =
                 #{orgId},
             </if>
-            <if test="orgPath != null">org_path =
+            <if test="orgPath != null">
+                org_path =
                 #{orgPath},
             </if>
-            <if test="orgName != null">org_name =
+            <if test="orgName != null">
+                org_name =
                 #{orgName},
             </if>
-            <if test="ymdDate != null">ymd_date =
+            <if test="ymdDate != null">
+                ymd_date =
                 #{ymdDate},
             </if>
-            <if test="ymdYear != null">ymd_year =
+            <if test="ymdYear != null">
+                ymd_year =
                 #{ymdYear},
             </if>
-            <if test="ymdHalfyear != null">ymd_halfyear =
+            <if test="ymdHalfyear != null">
+                ymd_halfyear =
                 #{ymdHalfyear},
             </if>
-            <if test="ymdQuarter != null">ymd_quarter =
+            <if test="ymdQuarter != null">
+                ymd_quarter =
                 #{ymdQuarter},
             </if>
-            <if test="ymdMonth != null">ymd_month =
+            <if test="ymdMonth != null">
+                ymd_month =
                 #{ymdMonth},
             </if>
-            <if test="ymdWeek != null">ymd_week =
+            <if test="ymdWeek != null">
+                ymd_week =
                 #{ymdWeek},
             </if>
-            <if test="ymdDay != null">ymd_day =
+            <if test="ymdDay != null">
+                ymd_day =
                 #{ymdDay},
             </if>
-            <if test="cycle != null">cycle =
+            <if test="cycle != null">
+                cycle =
                 #{cycle},
             </if>
-            <if test="planStartTime != null">plan_start_time =
+            <if test="planStartTime != null">
+                plan_start_time =
                 #{planStartTime},
             </if>
-            <if test="planEndTime != null">plan_end_time =
+            <if test="planEndTime != null">
+                plan_end_time =
                 #{planEndTime},
             </if>
-            <if test="startTime != null">start_time =
+            <if test="startTime != null">
+                start_time =
                 #{startTime},
             </if>
-            <if test="endTime != null">end_time =
+            <if test="endTime != null">
+                end_time =
                 #{endTime},
             </if>
-            <if test="status != null">status =
+            <if test="status != null">
+                status =
                 #{status},
             </if>
-            <if test="roleId != null">role_id =
+            <if test="roleId != null">
+                role_id =
                 #{roleId},
             </if>
-            <if test="retrievalUser != null">retrieval_user =
+            <if test="retrievalUser != null">
+                retrieval_user =
                 #{retrievalUser},
             </if>
-            <if test="orderNum != null">order_num =
+            <if test="orderNum != null">
+                order_num =
                 #{orderNum},
             </if>
-            <if test="batchNum != null">batch_num =
+            <if test="batchNum != null">
+                batch_num =
                 #{batchNum},
             </if>
-            <if test="submitTime != null">submit_time =
+            <if test="submitTime != null">
+                submit_time =
                 #{submitTime},
             </if>
-            <if test="exceptionCount != null">exception_count =
+            <if test="exceptionCount != null">
+                exception_count =
                 #{exceptionCount},
             </if>
         </trim>
@@ -410,7 +481,7 @@
         update core_monitoring_retrieval_task
         set status=3
         where #{dateTimeNew} > plan_end_time
-          and status!=2
+          and status != 2
     </update>
 
 
@@ -448,32 +519,49 @@
         where plan_id = #{planId}
     </delete>
     <delete id="deleteDayTaskByPlanId">
-        DELETE FROM core_monitoring_retrieval_task WHERE cycle = #{cycle} AND ymd_date=#{ymdDate}
-                                                     AND plan_id IN(SELECT id FROM core_monitoring_retrieval_plan WHERE parent_id=#{planId})
+        DELETE
+        FROM core_monitoring_retrieval_task
+        WHERE cycle = #{cycle}
+          AND ymd_date = #{ymdDate}
+          AND plan_id IN (SELECT id FROM core_monitoring_retrieval_plan WHERE parent_id = #{planId})
     </delete>
     <delete id="deleteWeekTaskByPlanId">
-        DELETE FROM core_monitoring_retrieval_task WHERE cycle = #{cycle}  AND ymd_week=#{week}
-                                                     AND ymd_year=#{year}
-                                                     AND plan_id IN(SELECT id FROM core_monitoring_retrieval_plan WHERE plan_id=#{planId})
+        DELETE
+        FROM core_monitoring_retrieval_task
+        WHERE cycle = #{cycle}
+          AND ymd_week = #{week}
+          AND ymd_year = #{year}
+          AND plan_id IN (SELECT id FROM core_monitoring_retrieval_plan WHERE plan_id = #{planId})
     </delete>
     <delete id="deleteMonthTaskByPlanId">
-        DELETE FROM core_monitoring_retrieval_task WHERE cycle = #{cycle} AND ymd_month=#{month}
-                                                     AND ymd_year=#{year}
-                                                     AND plan_id IN(SELECT id FROM core_monitoring_retrieval_plan WHERE plan_id=#{planId})
+        DELETE
+        FROM core_monitoring_retrieval_task
+        WHERE cycle = #{cycle}
+          AND ymd_month = #{month}
+          AND ymd_year = #{year}
+          AND plan_id IN (SELECT id FROM core_monitoring_retrieval_plan WHERE plan_id = #{planId})
+    </delete>
+    <delete id="deleteQuarterTaskByPlanId">
     </delete>
-    <delete id="deleteQuarterTaskByPlanId"></delete>
     <delete id="deleteDayTaskByTime">
-        DELETE FROM core_monitoring_retrieval_task WHERE cycle = #{cycle} AND ymd_date BETWEEN #{startTime} AND #{endTime}
-                                                     AND plan_id IN(SELECT id FROM core_monitoring_retrieval_plan WHERE parent_id=#{planId})
+        DELETE
+        FROM core_monitoring_retrieval_task
+        WHERE cycle = #{cycle}
+          AND ymd_date BETWEEN #{startTime} AND #{endTime}
+          AND plan_id IN (SELECT id FROM core_monitoring_retrieval_plan WHERE parent_id = #{planId})
     </delete>
     <delete id="deleteDayTaskByTimeAndPlanId">
-        DELETE FROM core_monitoring_retrieval_task WHERE cycle = #{cycle} AND ymd_date BETWEEN #{startTime} AND #{endTime}
-                                                     AND plan_id =#{planId}
+        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 FROM core_monitoring_retrieval_task where plan_id in
+        <foreach collection="planIds" item="id" open="(" close=")">
+            #{id}
+        </foreach>
     </delete>
 
 
@@ -483,14 +571,23 @@
         where plan_id = #{planId}
     </update>
     <update id="initializationTask">
-        update core_monitoring_retrieval_task SET `status`=0, start_time=null WHERE `status`=1 AND start_time LIKE  concat(#{dateTime}, '%')
+        update core_monitoring_retrieval_task
+        SET `status`=0,
+            start_time=null
+        WHERE `status` = 1
+          AND start_time LIKE concat(#{dateTime}, '%')
     </update>
     <update id="initializationTaskByHand">
-        update core_monitoring_retrieval_task SET `status`=0, start_time=null WHERE `status`=1 AND id=#{id}
+        update core_monitoring_retrieval_task
+        SET `status`=0,
+            start_time=null
+        WHERE `status` = 1
+          AND id = #{id}
     </update>
 
     <select id="selectCurUserTaskList" resultType="com.xunmei.common.core.domain.panel.vo.PanelListVo">
-     select distinct t.id as id, task_name as taskName,t.plan_start_time as startTime,t.plan_end_time as endTime,t.status,
+        select distinct t.id as id, task_name as taskName,t.plan_start_time as startTime,t.plan_end_time as
+        endTime,t.status,
         IF
         (
         IF
@@ -500,81 +597,98 @@
         1,
         0
         ) AS isExist
-        from core_monitoring_retrieval_task t 	LEFT JOIN sys_device b ON t.org_id = b.org_id
+        from core_monitoring_retrieval_task t LEFT JOIN sys_device b ON t.org_id = b.org_id
         AND b.del_flag = '0'
         AND b.device_type = '0'
         LEFT JOIN sys_device c ON c.org_id = t.org_id
         AND c.del_flag = '0'
-        AND c.device_type = '2'  where t.org_id =#{request.orgId} and  t.role_id in
-         <foreach collection="request.roleIdList" item="roleId" open="(" separator="," close=")">
+        AND c.device_type = '2' where t.org_id =#{request.orgId} and t.role_id in
+        <foreach collection="request.roleIdList" item="roleId" open="(" separator="," close=")">
             #{roleId}
-         </foreach>
+        </foreach>
         and t.status in (0,1)
         and ((
-                #{request.startTime}   <![CDATA[<=]]> t.plan_start_time
-                and #{request.endTime} >= t.plan_start_time
-                )
-                or (
-                #{request.startTime}    <![CDATA[<=]]> t.plan_end_time
-                and #{request.endTime} >= t.plan_end_time
-                )
-                or (
-                #{request.startTime} >= t.plan_start_time
-                and #{request.endTime}  <![CDATA[<=]]>  t.plan_end_time
-             ))GROUP BY t.id
+        #{request.startTime}   <![CDATA[<=]]> t.plan_start_time
+        and #{request.endTime} >= t.plan_start_time
+        )
+        or (
+        #{request.startTime}    <![CDATA[<=]]> t.plan_end_time
+        and #{request.endTime} >= t.plan_end_time
+        )
+        or (
+        #{request.startTime} >= t.plan_start_time
+        and #{request.endTime}  <![CDATA[<=]]>  t.plan_end_time
+        ))GROUP BY t.id
     </select>
     <select id="selectTaskByTime" resultType="java.lang.Long">
-        SELECT * FROM core_monitoring_retrieval_task WHERE `status`=1 AND start_time LIKE  concat(#{dateTime}, '%')
+        SELECT *
+        FROM core_monitoring_retrieval_task
+        WHERE `status` = 1
+          AND start_time LIKE concat(#{dateTime}, '%')
     </select>
 
     <select id="selectMonitorOverTimeExceptionData"
             resultType="com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData">
-        SELECT  a.id                             as dataId,
-                a.org_id                         as orgId,
-                a.submit_time                    as dataTime,
-                'core_monitoring_retrieval_task' as dataSource,
-                now()                            as createTime,
-                a.cycle                          as extraField1,
-                'overTime'                       as extraField2
+        SELECT a.id                             as dataId,
+               a.org_id                         as orgId,
+               a.submit_time                    as dataTime,
+               'core_monitoring_retrieval_task' as dataSource,
+               now()                            as createTime,
+               a.cycle                          as extraField1,
+               'overTime'                       as extraField2
         FROM core_monitoring_retrieval_task a
         where a.plan_end_time <![CDATA[<]]> #{time}
-        and a.status = 3
+          and a.status = 3
     </select>
 
     <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">
-        SELECT
-            *
-        FROM
-            core_monitoring_retrieval_task
-        WHERE
-            plan_id = #{planId}
-        and    `status` IN (2,3)
+        SELECT *
+        FROM core_monitoring_retrieval_task
+        WHERE plan_id = #{planId}
+          and `status` IN (2, 3)
     </select>
     <select id="selectTaskList"
             resultType="com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask">
-       select * from  core_monitoring_retrieval_task where ymd_date = #{taskTime} and cycle=#{cycle} and org_id in
+        select * from core_monitoring_retrieval_task where ymd_date = #{taskTime} and cycle=#{cycle} and org_id in
         <foreach item="orgId" collection="orgIds" open="(" separator="," close=")">
             #{orgId}
         </foreach>
+    </select>
+
+    <select id="selectMonitorExceptionData"
+            resultType="com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData">
+        SELECT t.id as dataId,
+        t.org_id as orgId,
+        date_format(t.plan_start_time,'%Y-%m-%d') as dataTime,
+        'core_monitoring_retrieval_task' as dataSource,
+        now() as createTime,
+        t.status as extraField1,
+        t.plan_id as extraField2
 
+        FROM core_monitoring_retrieval_task t where
+        t.ymd_year =#{year}
+        and t.ymd_quarter=#{quarter}
+        and t.ymd_month=#{month}
+        <!--and t.status =3-->
+        and t.role_id = #{roleId}
     </select>
 </mapper>