|
|
@@ -19,10 +19,7 @@ import com.xunmei.common.core.domain.panel.enums.PanelTypeEnums;
|
|
|
import com.xunmei.common.core.domain.panel.vo.PanelListVo;
|
|
|
import com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask;
|
|
|
import com.xunmei.common.core.domain.retrieval.dto.RetrievalTaskPageDto;
|
|
|
-import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskExcelVo;
|
|
|
-import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskOneVo;
|
|
|
-import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskVo;
|
|
|
-import com.xunmei.common.core.domain.retrieval.vo.TaskDataVo;
|
|
|
+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;
|
|
|
@@ -108,6 +105,7 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
|
|
|
}
|
|
|
//获取数据
|
|
|
page = coreMonitoringRetrievalTaskMapper.selectPageList(page, request);
|
|
|
+ this.taskChangeForTimeWorkChange(null);
|
|
|
//抓换为TableDataInfo适配前端
|
|
|
return TableDataInfo.build(page);
|
|
|
}
|
|
|
@@ -606,112 +604,107 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void taskChangeForTimeWorkChange(WorkTimeChangeEvent event) {
|
|
|
+ public void taskChangeForTimeWorkChange(WorkTimeChangeEvent event) {
|
|
|
//修改的作息的日期
|
|
|
Date ymdDate = event.getDataList().get(0).getDate();
|
|
|
|
|
|
//受影响的机构
|
|
|
List<Long> orgIds = event.getOrgIds();
|
|
|
+ /* //测试用的数据
|
|
|
+ Date ymdDate = new Date();
|
|
|
+ //受影响的机构
|
|
|
+ List<Long> orgIds = new ArrayList<>();
|
|
|
+ orgIds.add(4358025846521957L);
|
|
|
+ orgIds.add(4358025846456575L);*/
|
|
|
//判断ymdDate是否是当天
|
|
|
Date today = new Date();
|
|
|
//要删除的任务
|
|
|
List<CoreMonitoringRetrievalTask> deleteTaskList = new ArrayList<>();
|
|
|
//要重新生成任务的机构和计划
|
|
|
- List<KeyValue> keyValues = new ArrayList<>();
|
|
|
+ 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;
|
|
|
//判断ymdDate 月today是否是同一日期
|
|
|
if(DateUtil.isSameDay(ymdDate,today)){
|
|
|
//获取当天的调阅任务
|
|
|
- Map<String,Object> dayObjectMap = this.deleteTaskList(ymdDate,orgIds,RetrievalTaskCycle.DAYCYCLE.getCode());
|
|
|
- List<CoreMonitoringRetrievalTask> list = (List<CoreMonitoringRetrievalTask>) dayObjectMap.get("deleteTaskList");
|
|
|
- if(CollectionUtil.isNotEmpty(list)){
|
|
|
- deleteTaskList.addAll(list);
|
|
|
- }
|
|
|
- List<KeyValue> keyValueList = (List<KeyValue>) dayObjectMap.get("keyValues");
|
|
|
- if(CollectionUtil.isNotEmpty(keyValueList)){
|
|
|
- keyValues.addAll(keyValueList);
|
|
|
- }
|
|
|
- }else{
|
|
|
- //周
|
|
|
- Map<String,Object> weekObjectMap = this.deleteTaskList(ymdDate,orgIds,RetrievalTaskCycle.WEEKCYCLE.getCode());
|
|
|
- List<CoreMonitoringRetrievalTask> listweek = (List<CoreMonitoringRetrievalTask>) weekObjectMap.get("deleteTaskList");
|
|
|
- if(CollectionUtil.isNotEmpty(listweek)){
|
|
|
- deleteTaskList.addAll(listweek);
|
|
|
- }
|
|
|
- List<KeyValue> keyValueListweek = (List<KeyValue>) weekObjectMap.get("keyValues");
|
|
|
- if(CollectionUtil.isNotEmpty(keyValueListweek)){
|
|
|
- keyValues.addAll(keyValueListweek);
|
|
|
- }
|
|
|
- //月
|
|
|
- Map<String,Object> monthObjectMap = this.deleteTaskList(ymdDate,orgIds,RetrievalTaskCycle.MONTHCYCLE.getCode());
|
|
|
- List<CoreMonitoringRetrievalTask> listmonth = (List<CoreMonitoringRetrievalTask>) monthObjectMap.get("deleteTaskList");
|
|
|
- if(CollectionUtil.isNotEmpty(listmonth)){
|
|
|
- deleteTaskList.addAll(listmonth);
|
|
|
- }
|
|
|
- List<KeyValue> keyValueListmonth = (List<KeyValue>) monthObjectMap.get("keyValues");
|
|
|
- if(CollectionUtil.isNotEmpty(keyValueListmonth)){
|
|
|
- keyValues.addAll(keyValueListmonth);
|
|
|
- }
|
|
|
- //季度
|
|
|
- Map<String,Object> quarterObjectMap = this.deleteTaskList(ymdDate,orgIds,RetrievalTaskCycle.QUARTERCYCLE.getCode());
|
|
|
- List<CoreMonitoringRetrievalTask> listquarter = (List<CoreMonitoringRetrievalTask>) quarterObjectMap.get("deleteTaskList");
|
|
|
- if(CollectionUtil.isNotEmpty(listquarter)){
|
|
|
- deleteTaskList.addAll(listquarter);
|
|
|
- }
|
|
|
- List<KeyValue> keyValueListquarter = (List<KeyValue>) quarterObjectMap.get("keyValues");
|
|
|
- if(CollectionUtil.isNotEmpty(keyValueListquarter)){
|
|
|
- keyValues.addAll(keyValueListquarter);
|
|
|
- }
|
|
|
- //半年
|
|
|
- Map<String,Object> halfYearObjectMap = this.deleteTaskList(ymdDate,orgIds,RetrievalTaskCycle.HALFYEARCYCLE.getCode());
|
|
|
- List<CoreMonitoringRetrievalTask> listhalfYear = (List<CoreMonitoringRetrievalTask>) halfYearObjectMap.get("deleteTaskList");
|
|
|
- if(CollectionUtil.isNotEmpty(listhalfYear)){
|
|
|
- deleteTaskList.addAll(listhalfYear);
|
|
|
- }
|
|
|
- List<KeyValue> keyValueListhalfYear = (List<KeyValue>) halfYearObjectMap.get("keyValues");
|
|
|
- if(CollectionUtil.isNotEmpty(keyValueListhalfYear)){
|
|
|
- keyValues.addAll(keyValueListhalfYear);
|
|
|
- }
|
|
|
- //年
|
|
|
- Map<String,Object> yearObjectMap = this.deleteTaskList(ymdDate,orgIds,RetrievalTaskCycle.YEARCYCLE.getCode());
|
|
|
- List<CoreMonitoringRetrievalTask> listYear = (List<CoreMonitoringRetrievalTask>) yearObjectMap.get("deleteTaskList");
|
|
|
- if(CollectionUtil.isNotEmpty(listYear)){
|
|
|
- deleteTaskList.addAll(listYear);
|
|
|
- }
|
|
|
- List<KeyValue> keyValueListYear = (List<KeyValue>) yearObjectMap.get("keyValues");
|
|
|
- if(CollectionUtil.isNotEmpty(keyValueListYear)){
|
|
|
- keyValues.addAll(keyValueListYear);
|
|
|
- }
|
|
|
+ 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());
|
|
|
+
|
|
|
+ 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)){
|
|
|
this.removeBatchByIds(deleteTaskList);
|
|
|
}
|
|
|
//生成新的任务
|
|
|
- if(CollectionUtil.isNotEmpty(keyValues)){
|
|
|
- this.createNewtask(keyValues,ymdDate);
|
|
|
- }
|
|
|
+ // if(CollectionUtil.isNotEmpty(keyValues)){
|
|
|
+ this.createNewtask(keyValues,ymdDate,orgIds);
|
|
|
+ // }
|
|
|
|
|
|
}
|
|
|
|
|
|
- private void createNewtask(List<KeyValue> keyValues,Date taskTime) {
|
|
|
- List<CoreMonitoringRetrievalTask> taskList = new ArrayList<>();
|
|
|
- Set<Long> planId = new HashSet<>();
|
|
|
- for(KeyValue keyValue:keyValues){
|
|
|
- planId.add((Long) keyValue.getValue());
|
|
|
+ private Map<String, Object> buildDeleteTaskList(Map<String, Object>... ObjMaps) {
|
|
|
+ Map<String, Object> deleteTaskListMap = new HashMap<>();
|
|
|
+ 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")){
|
|
|
+ List<CoreMonitoringRetrievalTask> listTask = (List<CoreMonitoringRetrievalTask>) objMap.get("deleteTaskList");
|
|
|
+ List<KeyValueVo> keyValueList = (List<KeyValueVo>) objMap.get("keyValues");
|
|
|
+ if(CollectionUtil.isNotEmpty(listTask)){
|
|
|
+ deleteTaskList.addAll(listTask);
|
|
|
+ }
|
|
|
+ if (CollectionUtil.isNotEmpty(keyValueList)) {
|
|
|
+ keyValues.addAll(keyValueList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
+ deleteTaskListMap.put("deleteTaskList", deleteTaskList);
|
|
|
+ deleteTaskListMap.put("keyValues", keyValues);
|
|
|
+ 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<KeyValue> keyValuesa = keyValues.stream().filter(r->r.getValue().toString().equals(p.getId().toString())).collect(Collectors.toList());
|
|
|
- List<SysOrg> orgs = orgList.stream().filter(r->keyValuesa.stream().anyMatch(s->s.getKey().toString().equals(r.getId().toString()))).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){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //计划的机构id不是当前机构的直属父机构,不生成任务
|
|
|
+ if(!p.getOrgId().equals(s.getParentId())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
TMonitoringRetrievalPlan plan = new TMonitoringRetrievalPlan();
|
|
|
BeanUtils.copyProperties(p, plan);
|
|
|
plan.setPlanName(p.getPlanName());
|
|
|
@@ -736,22 +729,34 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
|
|
|
}
|
|
|
}
|
|
|
for (TMonitoringRetrievalPlan plan : planList) {
|
|
|
- DateRange dateRange = DateUtils.getStartAndEnd(taskTime, Integer.valueOf(plan.getPlanCycle()+1));
|
|
|
+ //任务的开始时间按周期计算用下面的方式
|
|
|
+ DateRange dateRange = DateUtils.getStartAndEnd(taskTime, Integer.valueOf(plan.getPlanCycle()));
|
|
|
Instant instant = dateRange.getStartTime().toInstant();
|
|
|
-
|
|
|
// 创建 ZonedDateTime 对象,并指定时区
|
|
|
ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault());
|
|
|
// 转换为 LocalDate 对象
|
|
|
LocalDate localDate = zdt.toLocalDate();
|
|
|
- //获取计划关联的机构
|
|
|
+
|
|
|
+ //任务整体按周期日期计算,最终结果排除所修改的日期前面的数据
|
|
|
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)) {
|
|
|
List<CoreMonitoringRetrievalTask> list = this.buildCoreMonitoringRetrievalTask(plan, localDate, listByType.get(0));
|
|
|
if (CollectionUtil.isNotEmpty(list)) {
|
|
|
- taskList.addAll(list);
|
|
|
+ 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)){
|
|
|
+ taskList.addAll(lista);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ List<CoreMonitoringRetrievalTask> lista = list.stream().filter(r -> r.getPlanEndTime().after(new Date())).collect(Collectors.toList());
|
|
|
+ if(CollectionUtil.isNotEmpty(lista)){
|
|
|
+ taskList.addAll(lista);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
this.saveBatch(taskList);
|
|
|
}
|
|
|
|
|
|
@@ -762,16 +767,18 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
|
|
|
Date datetime = ymdDate;
|
|
|
if(!cycle.equals(RetrievalTaskCycle.DAYCYCLE.getCode())){
|
|
|
//根据ymdDate获取周的第一天的日期
|
|
|
- DateRange dateRange = DateUtils.getStartAndEnd(ymdDate,cycle+1);
|
|
|
+ DateRange dateRange = DateUtils.getStartAndEnd(ymdDate,cycle);
|
|
|
datetime = dateRange.getStartTime();
|
|
|
}
|
|
|
- queryWrapper.lambda().eq(CoreMonitoringRetrievalTask::getYmdDate,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 = this.list(queryWrapper);*/
|
|
|
+ List<CoreMonitoringRetrievalTask> taskList = baseMapper.selectTaskList(taskTime,orgIds,cycle);
|
|
|
List<CoreMonitoringRetrievalTask> deleteTaskList = new ArrayList<>();
|
|
|
- List<KeyValue> keyValues = new ArrayList<>();
|
|
|
+ List<KeyValueVo> keyValues = new ArrayList<>();
|
|
|
if(CollectionUtil.isNotEmpty(taskList)){
|
|
|
//将数据按机构分组
|
|
|
Map<Long,List<CoreMonitoringRetrievalTask>> taskMap = taskList.stream().collect(Collectors.groupingBy(CoreMonitoringRetrievalTask::getOrgId));
|
|
|
@@ -785,8 +792,9 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
|
|
|
//没有完成的任务,改批次的任务删除
|
|
|
if(num==0){
|
|
|
deleteTaskList.addAll(taskList2);
|
|
|
+ }else{
|
|
|
Long planId = taskList2.get(0).getPlanId();
|
|
|
- KeyValue keyValue = new KeyValue();
|
|
|
+ KeyValueVo keyValue = new KeyValueVo();
|
|
|
keyValue.setKey(key);
|
|
|
keyValue.setValue(planId);
|
|
|
keyValues.add(keyValue);
|