Przeglądaj źródła

修改公告通知bug

ouyang 2 lat temu
rodzic
commit
cdb1d31aa8

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

@@ -105,7 +105,7 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
         }
         //获取数据
         page = coreMonitoringRetrievalTaskMapper.selectPageList(page, request);
-       /* this.taskChangeForTimeWorkChange(null);*/
+        this.taskChangeForTimeWorkChange(null);
         //抓换为TableDataInfo适配前端
         return TableDataInfo.build(page);
     }
@@ -606,16 +606,16 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
     @Transactional(rollbackFor = Exception.class)
    public void taskChangeForTimeWorkChange(WorkTimeChangeEvent event) {
         //修改的作息的日期
-        /*Date ymdDate  =  event.getDataList().get(0).getDate();
+        Date ymdDate  =  event.getDataList().get(0).getDate();
 
         //受影响的机构
-        List<Long> orgIds = event.getOrgIds();*/
-        Date ymdDate  =  new Date();
-
+        List<Long> orgIds = event.getOrgIds();
+    /*    //测试用的数据
+         Date ymdDate  =  new Date();
         //受影响的机构
         List<Long> orgIds = new ArrayList<>();
         orgIds.add(4358025846521957L);
-        orgIds.add(4358025846456575L);
+        orgIds.add(4358025846456575L);*/
         //判断ymdDate是否是当天
         Date today = new Date();
         //要删除的任务
@@ -676,25 +676,35 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
         return deleteTaskListMap;
     }
     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());
+        //通过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<CoreMonitoringRetrievalTask> taskList = new ArrayList<>();
         QueryWrapper<TMonitoringRetrievalPlan> queryWrapper = new QueryWrapper<>();
-        //queryWrapper.lambda().in(TMonitoringRetrievalPlan::getId, planId);
+        queryWrapper.lambda().in(TMonitoringRetrievalPlan::getOrgId, orgParentIds);
         queryWrapper.lambda().eq(TMonitoringRetrievalPlan::getPlanStatus, 1);
         queryWrapper.lambda().eq(TMonitoringRetrievalPlan::getIsDeleted, 0);
-        queryWrapper.lambda().eq(TMonitoringRetrievalPlan::getCreateType, 1);
+        /*queryWrapper.lambda().eq(TMonitoringRetrievalPlan::getCreateType, 1);*/
         List<TMonitoringRetrievalPlan> plans = itMonitoringRetrievalPlanService.list(queryWrapper);
         List<TMonitoringRetrievalPlan> planList = new ArrayList<>();
-        //获取所有机构
-        List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.findAllOrg(SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+
         for(TMonitoringRetrievalPlan p:plans){
-            List<SysOrg> orgs = orgList.stream().filter(r->orgIds.contains(r.getId())).collect(Collectors.toList());
             for (SysOrg s : orgs) {
                 if(CollectionUtil.isNotEmpty(keyValues)){
-                    //机构和计划没有同时在排除的范围内并且满足机构计划的机构类型与指定的机构类型相同
-                    if(keyValues.stream().filter(r->r.getValue().equals(p.getId())&&r.getKey().equals(s.getId())).count()>0&&p.getOrgType().equals(s.getOrgType())){
+                    //机构和计划没有同时在排除的范围内的计划不生成任务
+                    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())){
+                    continue;
+                }
                 TMonitoringRetrievalPlan plan = new TMonitoringRetrievalPlan();
                 BeanUtils.copyProperties(p, plan);
                 plan.setPlanName(p.getPlanName());
@@ -733,14 +743,14 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
                 List<CoreMonitoringRetrievalTask> list = this.buildCoreMonitoringRetrievalTask(plan, localDate, listByType.get(0));
                 if (CollectionUtil.isNotEmpty(list)) {
                     if(!plan.getPlanCycle().equals(RetrievalTaskCycle.DAYCYCLE.getCode().toString())){
-                        List<CoreMonitoringRetrievalTask> lista = list.stream().filter(r -> r.getPlanEndTime().before(taskTime)).collect(Collectors.toList());
+                        List<CoreMonitoringRetrievalTask> lista = list.stream().filter(r -> r.getPlanEndTime().after(taskTime)).collect(Collectors.toList());
                         if(CollectionUtil.isNotEmpty(lista)){
-                            taskList.addAll(list);
+                            taskList.addAll(lista);
                         }
                     }else{
-                        List<CoreMonitoringRetrievalTask> lista = list.stream().filter(r -> r.getPlanEndTime().before(new Date())).collect(Collectors.toList());
+                        List<CoreMonitoringRetrievalTask> lista = list.stream().filter(r -> r.getPlanEndTime().after(new Date())).collect(Collectors.toList());
                         if(CollectionUtil.isNotEmpty(lista)){
-                            taskList.addAll(list);
+                            taskList.addAll(lista);
                         }
                     }
                 }