|
|
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.date.DateField;
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
+import cn.hutool.core.map.MapUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
@@ -26,7 +27,9 @@ import com.xunmei.common.redis.utils.RedisUtils;
|
|
|
import com.xunmei.common.security.utils.SecurityUtils;
|
|
|
import com.xunmei.core.TaskCreatingServiceImplBase;
|
|
|
import com.xunmei.core.access.domain.TMonitoringRetrievalPlan;
|
|
|
+import com.xunmei.core.access.domain.TMonitoringRetrievalPlanToExecOrg;
|
|
|
import com.xunmei.core.access.mapper.CoreMonitoringTaskRegistrationMapper;
|
|
|
+import com.xunmei.core.access.mapper.TMonitoringRetrievalPlanToExecOrgMapper;
|
|
|
import com.xunmei.core.access.service.ITMonitoringRetrievalPlanService;
|
|
|
import com.xunmei.core.retrieval.mapper.CoreMonitoringRetrievalTaskMapper;
|
|
|
import com.xunmei.core.retrieval.service.ICoreMonitoringRetrievalTaskBuilderService;
|
|
|
@@ -72,13 +75,16 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
|
|
|
@Autowired
|
|
|
CoreSafetyExceptionDataMapper exceptionDataMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ TMonitoringRetrievalPlanToExecOrgMapper tMonitoringRetrievalPlanToExecOrgMapper;
|
|
|
+
|
|
|
@Async
|
|
|
/**
|
|
|
* 无周期任务生成
|
|
|
*/
|
|
|
@Override
|
|
|
public void noCycleTask(List<TMonitoringRetrievalPlan> planList) {
|
|
|
- createTask(planList);
|
|
|
+ createAndSaveTask(planList);
|
|
|
}
|
|
|
|
|
|
@Async
|
|
|
@@ -94,33 +100,64 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
|
|
|
if (!hasKey) {
|
|
|
RedisUtils.setCacheObject(redisKey, parentPlanId, Duration.ofMillis(1000 * 60*5));
|
|
|
}
|
|
|
- createTask(planList);
|
|
|
+ createAndSaveTask(planList);
|
|
|
RedisUtils.deleteObject(redisKey);
|
|
|
}
|
|
|
|
|
|
- private void createTask(List<TMonitoringRetrievalPlan> planList)
|
|
|
+ private List<SysOrg> getExecOrgList(List<Long> planExecOrgIds, Integer execOrgType, String belongOrgPath) {
|
|
|
+ if (ObjectUtil.isEmpty(planExecOrgIds)) {
|
|
|
+ return RemoteCallHandlerExecutor.executeRemoteCall(() ->
|
|
|
+ orgService.selectByOrgPathAndOrgType(belongOrgPath, execOrgType, SecurityConstants.INNER),
|
|
|
+ ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
|
|
|
+ } else {
|
|
|
+ return RemoteCallHandlerExecutor.executeRemoteCall(() ->
|
|
|
+ orgService.selectOrgByIdList(planExecOrgIds, SecurityConstants.INNER),
|
|
|
+ ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ private void createAndSaveTask(List<TMonitoringRetrievalPlan> planList)
|
|
|
+ {
|
|
|
+ List<CoreMonitoringRetrievalTask> allTask = createTask(planList, null);
|
|
|
+ this.saveBatch(allTask);
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<CoreMonitoringRetrievalTask> createTask(List<TMonitoringRetrievalPlan> planList, LocalDate taskTime)
|
|
|
{
|
|
|
- List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.findAllOrg(SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
|
|
|
List<CoreMonitoringRetrievalTask> taskList = new ArrayList<>();
|
|
|
- LocalDate taskTime = planList.get(0).getStartTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
+ if(ObjectUtil.isNull(taskTime)){
|
|
|
+ taskTime = planList.get(0).getStartTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
+ }
|
|
|
+ LocalDate taskTime1=taskTime;
|
|
|
+
|
|
|
for (TMonitoringRetrievalPlan plan : planList) {
|
|
|
+
|
|
|
+ List<Long> execOrgIds = tMonitoringRetrievalPlanToExecOrgMapper.selectByMap(MapUtil.of("plan_id", plan.getId())).stream().map(x->x.getOrgId()).collect(Collectors.toList());
|
|
|
+
|
|
|
+ final List<SysOrg> execOrgList = getExecOrgList(execOrgIds, Integer.parseInt(plan.getOrgType()), plan.getOrgPath());
|
|
|
+
|
|
|
//获取计划关联的机构
|
|
|
- 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, taskTime, listByType.get(0));
|
|
|
- if (CollectionUtil.isNotEmpty(list)) {
|
|
|
- taskList.addAll(list);
|
|
|
- }
|
|
|
+// 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(execOrgList)) {
|
|
|
+ execOrgList.stream().forEach(org->{
|
|
|
+ List<CoreMonitoringRetrievalTask> list = this.buildCoreMonitoringRetrievalTask(plan, taskTime1, org);
|
|
|
+ if (CollectionUtil.isNotEmpty(list)) {
|
|
|
+ taskList.addAll(list);
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
+ List<CoreMonitoringRetrievalTask> listAll = new ArrayList<>();
|
|
|
//立即生效的计划要排除截至时间在当前时间之前的数据
|
|
|
List<CoreMonitoringRetrievalTask> lista = taskList.stream().filter(r -> r.getPlanEndTime().after(new Date())).collect(Collectors.toList());
|
|
|
/* if (CollectionUtil.isNotEmpty(lista)) {
|
|
|
this.saveBatch(lista);
|
|
|
}*/
|
|
|
if (CollectionUtil.isNotEmpty(lista)) {
|
|
|
- List<CoreMonitoringRetrievalTask> listAll = new ArrayList<>();
|
|
|
+
|
|
|
//对list进行重新编号和保存
|
|
|
//对lista 按机构进行分组
|
|
|
Map<Long, List<CoreMonitoringRetrievalTask>> map = lista.stream().collect(Collectors.groupingBy(CoreMonitoringRetrievalTask::getOrgId));
|
|
|
@@ -138,11 +175,9 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
|
|
|
}
|
|
|
listAll.addAll(listb);
|
|
|
}
|
|
|
-
|
|
|
- this.saveBatch(listAll);
|
|
|
}
|
|
|
+ return listAll;
|
|
|
}
|
|
|
-
|
|
|
/**
|
|
|
* 每天生成日任务 如果当天是周一还需生成周任务
|
|
|
*
|
|
|
@@ -160,13 +195,17 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
|
|
|
List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.findAllOrg(SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
|
|
|
//是周一生成周任务
|
|
|
if (taskTime.getDayOfWeek() == DayOfWeek.MONDAY) {
|
|
|
- List<CoreMonitoringRetrievalTask> listWeek = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.WEEKCYCLE.getCode(), taskTime, orgList);
|
|
|
+ List<TMonitoringRetrievalPlan> buildTaskWeekPlanList = getBuildTaskPlanList(RetrievalTaskCycle.WEEKCYCLE.getCode());
|
|
|
+ List<CoreMonitoringRetrievalTask> listWeek = createTask(buildTaskWeekPlanList,taskTime);
|
|
|
+// List<CoreMonitoringRetrievalTask> listWeek = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.WEEKCYCLE.getCode(), taskTime, orgList);
|
|
|
if (CollectionUtil.isNotEmpty(listWeek)) {
|
|
|
list.addAll(listWeek);
|
|
|
}
|
|
|
}
|
|
|
//生成每日任务
|
|
|
- List<CoreMonitoringRetrievalTask> listDay = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.DAYCYCLE.getCode(), taskTime, orgList);
|
|
|
+// List<CoreMonitoringRetrievalTask> listDay = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.DAYCYCLE.getCode(), taskTime, orgList);
|
|
|
+ List<TMonitoringRetrievalPlan> buildTaskDayPlanList = getBuildTaskPlanList(RetrievalTaskCycle.DAYCYCLE.getCode());
|
|
|
+ List<CoreMonitoringRetrievalTask> listDay = createTask(buildTaskDayPlanList,taskTime);
|
|
|
if (CollectionUtil.isNotEmpty(listDay)) {
|
|
|
list.addAll(listDay);
|
|
|
}
|
|
|
@@ -189,7 +228,7 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
|
|
|
}
|
|
|
List<CoreMonitoringRetrievalTask> list = new ArrayList<>();
|
|
|
//获取所有机构
|
|
|
- List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.findAllOrg(SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
|
|
|
+// List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.findAllOrg(SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
|
|
|
//判断taskTime不是每月1号将taskTime设置为每月1号
|
|
|
if (taskTime.getDayOfMonth() != 1) {
|
|
|
taskTime = taskTime.withDayOfMonth(1);
|
|
|
@@ -197,17 +236,23 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
|
|
|
//1.1生成周期为每月,每季,每半年,每年的任务
|
|
|
if (taskTime.getMonthValue() == 1) {
|
|
|
//季度任务
|
|
|
- List<CoreMonitoringRetrievalTask> listQuarter = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.QUARTERCYCLE.getCode(), taskTime, orgList);
|
|
|
+// List<CoreMonitoringRetrievalTask> listQuarter = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.QUARTERCYCLE.getCode(), taskTime, orgList);
|
|
|
+ List<TMonitoringRetrievalPlan> buildTaskQuarterPlanList = getBuildTaskPlanList(RetrievalTaskCycle.QUARTERCYCLE.getCode());
|
|
|
+ List<CoreMonitoringRetrievalTask> listQuarter = createTask(buildTaskQuarterPlanList,taskTime);
|
|
|
if (CollectionUtil.isNotEmpty(listQuarter)) {
|
|
|
list.addAll(listQuarter);
|
|
|
}
|
|
|
//半年任务
|
|
|
- List<CoreMonitoringRetrievalTask> listHalfYear = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.HALFYEARCYCLE.getCode(), taskTime, orgList);
|
|
|
+// List<CoreMonitoringRetrievalTask> listHalfYear = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.HALFYEARCYCLE.getCode(), taskTime, orgList);
|
|
|
+ List<TMonitoringRetrievalPlan> buildTaskHalfYearPlanList = getBuildTaskPlanList(RetrievalTaskCycle.HALFYEARCYCLE.getCode());
|
|
|
+ List<CoreMonitoringRetrievalTask> listHalfYear = createTask(buildTaskHalfYearPlanList,taskTime);
|
|
|
if (CollectionUtil.isNotEmpty(listHalfYear)) {
|
|
|
list.addAll(listHalfYear);
|
|
|
}
|
|
|
//年任务
|
|
|
- List<CoreMonitoringRetrievalTask> listYear = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.YEARCYCLE.getCode(), taskTime, orgList);
|
|
|
+// List<CoreMonitoringRetrievalTask> listYear = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.YEARCYCLE.getCode(), taskTime, orgList);
|
|
|
+ List<TMonitoringRetrievalPlan> buildTaskYearPlanList = getBuildTaskPlanList(RetrievalTaskCycle.YEARCYCLE.getCode());
|
|
|
+ List<CoreMonitoringRetrievalTask> listYear = createTask(buildTaskYearPlanList,taskTime);
|
|
|
if (CollectionUtil.isNotEmpty(listYear)) {
|
|
|
list.addAll(listYear);
|
|
|
}
|
|
|
@@ -215,7 +260,9 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
|
|
|
//4.1||10.1日生成周期为每月,每季
|
|
|
if (taskTime.getMonthValue() == 4 || taskTime.getMonthValue() == 10) {
|
|
|
//季度任务
|
|
|
- List<CoreMonitoringRetrievalTask> listQuarter = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.QUARTERCYCLE.getCode(), taskTime, orgList);
|
|
|
+// List<CoreMonitoringRetrievalTask> listQuarter = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.QUARTERCYCLE.getCode(), taskTime, orgList);
|
|
|
+ List<TMonitoringRetrievalPlan> buildTaskQuarterPlanList = getBuildTaskPlanList(RetrievalTaskCycle.QUARTERCYCLE.getCode());
|
|
|
+ List<CoreMonitoringRetrievalTask> listQuarter = createTask(buildTaskQuarterPlanList,taskTime);
|
|
|
if (CollectionUtil.isNotEmpty(listQuarter)) {
|
|
|
list.addAll(listQuarter);
|
|
|
}
|
|
|
@@ -223,18 +270,24 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
|
|
|
//7.1日获取执行周期为每月,每季,每半年的
|
|
|
if (taskTime.getMonthValue() == 7) {
|
|
|
//季度任务
|
|
|
- List<CoreMonitoringRetrievalTask> listQuarter = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.QUARTERCYCLE.getCode(), taskTime, orgList);
|
|
|
+// List<CoreMonitoringRetrievalTask> listQuarter = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.QUARTERCYCLE.getCode(), taskTime, orgList);
|
|
|
+ List<TMonitoringRetrievalPlan> buildTaskQuarterPlanList = getBuildTaskPlanList(RetrievalTaskCycle.QUARTERCYCLE.getCode());
|
|
|
+ List<CoreMonitoringRetrievalTask> listQuarter = createTask(buildTaskQuarterPlanList,taskTime);
|
|
|
if (CollectionUtil.isNotEmpty(listQuarter)) {
|
|
|
list.addAll(listQuarter);
|
|
|
}
|
|
|
//半年任务
|
|
|
- List<CoreMonitoringRetrievalTask> listHalfYear = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.HALFYEARCYCLE.getCode(), taskTime, orgList);
|
|
|
+// List<CoreMonitoringRetrievalTask> listHalfYear = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.HALFYEARCYCLE.getCode(), taskTime, orgList);
|
|
|
+ List<TMonitoringRetrievalPlan> buildTaskHalfYearPlanList = getBuildTaskPlanList(RetrievalTaskCycle.HALFYEARCYCLE.getCode());
|
|
|
+ List<CoreMonitoringRetrievalTask> listHalfYear = createTask(buildTaskHalfYearPlanList,taskTime);
|
|
|
if (CollectionUtil.isNotEmpty(listHalfYear)) {
|
|
|
list.addAll(listHalfYear);
|
|
|
}
|
|
|
}
|
|
|
//所有日期都要生成月任务
|
|
|
- List<CoreMonitoringRetrievalTask> listMonth = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.MONTHCYCLE.getCode(), taskTime, orgList);
|
|
|
+// List<CoreMonitoringRetrievalTask> listMonth = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.MONTHCYCLE.getCode(), taskTime, orgList);
|
|
|
+ List<TMonitoringRetrievalPlan> buildTaskMonthPlanList = getBuildTaskPlanList(RetrievalTaskCycle.HALFYEARCYCLE.getCode());
|
|
|
+ List<CoreMonitoringRetrievalTask> listMonth = createTask(buildTaskMonthPlanList,taskTime);
|
|
|
if (CollectionUtil.isNotEmpty(listMonth)) {
|
|
|
list.addAll(listMonth);
|
|
|
}
|
|
|
@@ -350,6 +403,16 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
|
|
|
coreMonitoringRetrievalTaskMapper.updateDeleteTaskByPlanId(planId, isDeleted);
|
|
|
}
|
|
|
|
|
|
+ private List<TMonitoringRetrievalPlan> getBuildTaskPlanList(Integer cycle){
|
|
|
+ //获取计划
|
|
|
+ QueryWrapper<TMonitoringRetrievalPlan> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.lambda().eq(TMonitoringRetrievalPlan::getPlanCycle, cycle);
|
|
|
+ queryWrapper.lambda().eq(TMonitoringRetrievalPlan::getPlanStatus, 1);
|
|
|
+ queryWrapper.lambda().eq(TMonitoringRetrievalPlan::getIsDeleted, 0);
|
|
|
+ queryWrapper.lambda().eq(TMonitoringRetrievalPlan::getCreateType, 1);
|
|
|
+ return itMonitoringRetrievalPlanService.list(queryWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* @param cycle 周期
|
|
|
* @param taskTime 日期
|