From 05dca4c7d716cf6fb20640faae8e48af082a2d11 Mon Sep 17 00:00:00 2001 From: wangzhijiang <12345678> Date: Thu, 24 Nov 2022 16:11:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E7=AC=A6=E5=90=88=E6=80=A7?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E6=88=AA=E6=AD=A2=E6=97=B6=E9=97=B4=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E5=99=A8=E5=BC=80=E5=8F=91=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../job/SyncComplianceProcessEndTimeJob.java | 106 ++++++++++++++++++ .../modules/wkflow/enums/FlowTypeEnum.java | 15 +++ 2 files changed, 121 insertions(+) create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/job/SyncComplianceProcessEndTimeJob.java diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/job/SyncComplianceProcessEndTimeJob.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/job/SyncComplianceProcessEndTimeJob.java new file mode 100644 index 000000000..d4c4297be --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/job/SyncComplianceProcessEndTimeJob.java @@ -0,0 +1,106 @@ +package com.jero.modules.todoCenter.job; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jero.modules.project.entity.ProjectLawsInventoryEO; +import com.jero.modules.project.service.IProjectLawsInventoryEOService; +import com.jero.modules.todoCenter.entity.ProcessInfoEO; +import com.jero.modules.todoCenter.service.IProcessInfoEOService; +import com.jero.modules.wkflow.enums.FlowTypeEnum; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 同步符合性流程截止时间定时器 + * @Author: wzj + * @Date: 2022/11/24 13:48 + **/ +@Slf4j +public class SyncComplianceProcessEndTimeJob implements Job { + @Autowired + private IProjectLawsInventoryEOService projectLawsInventoryEOService; + @Autowired + private IProcessInfoEOService processInfoEOService; + + @Override + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + log.info("同步符合性流程截止时间,定时任务开启 ====================================================="); + QueryWrapper processInfoQueryWrap = new QueryWrapper<>(); + List flowTypeList = new ArrayList<>(); + flowTypeList.add(FlowTypeEnum.SJFHXSHLC.getValue()); + flowTypeList.add(FlowTypeEnum.PREHOMOQRLC.getValue()); + flowTypeList.add(FlowTypeEnum.YZFHXSCLC.getValue()); + processInfoQueryWrap.lambda().in(ProcessInfoEO::getFlowType,flowTypeList); + List processInfoEOList = this.processInfoEOService.list(processInfoQueryWrap); + + if (CollectionUtils.isNotEmpty(processInfoEOList)) { + List lawsInventoryIdList = processInfoEOList.stream().map(ProcessInfoEO::getProjectLawsInventoryId).distinct().collect(Collectors.toList()); + + if (CollectionUtils.isNotEmpty(lawsInventoryIdList)) { + QueryWrapper lawsInventoryQueryWrap = new QueryWrapper<>(); + lawsInventoryQueryWrap.lambda().in(ProjectLawsInventoryEO::getId,lawsInventoryIdList); + List lawsInventoryEOList = this.projectLawsInventoryEOService.list(lawsInventoryQueryWrap); + + if (CollectionUtils.isNotEmpty(lawsInventoryEOList)) { + processInfoEOList.forEach(processInfo -> { + this.setProcessInfoEndTime(lawsInventoryEOList, processInfo); + }); + this.processInfoEOService.updateBatchById(processInfoEOList); + } + + } + + } + log.info("同步符合性流程截止时间,定时任务结束 ====================================================="); + } + + /** + * 设置流程信息的截止时间。 + * @param lawsInventoryEOList + * @param processInfoEO + */ + private void setProcessInfoEndTime(List lawsInventoryEOList, ProcessInfoEO processInfoEO) { + for (ProjectLawsInventoryEO projectLawsInventoryEO : lawsInventoryEOList) { + if(StringUtils.equals(processInfoEO.getProjectLawsInventoryId(),projectLawsInventoryEO.getId())){ + String flowType = processInfoEO.getFlowType(); + + // 停止循环标识 + boolean stopCycle = false; + FlowTypeEnum flowTypeEnumByValue = FlowTypeEnum.getFlowTypeEnumByValue(flowType); + switch (flowTypeEnumByValue){ + case SJFHXSHLC: + if(projectLawsInventoryEO.getDesignDueDate() != null){ + processInfoEO.setEndTime(projectLawsInventoryEO.getDesignDueDate()); + stopCycle = true; + } + break; + case PREHOMOQRLC: + if(projectLawsInventoryEO.getPrehomoDueDate() != null){ + processInfoEO.setEndTime(projectLawsInventoryEO.getPrehomoDueDate()); + stopCycle = true; + } + break; + case YZFHXSCLC: + if(projectLawsInventoryEO.getVerifyDueDate() != null){ + processInfoEO.setEndTime(projectLawsInventoryEO.getVerifyDueDate()); + stopCycle = true; + } + break; + } + + // 匹配到一个之后,将本次循环终止。 + if (stopCycle) { + break; + } + } + } + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/enums/FlowTypeEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/enums/FlowTypeEnum.java index 81d073225..5b4de5678 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/enums/FlowTypeEnum.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/enums/FlowTypeEnum.java @@ -74,4 +74,19 @@ public enum FlowTypeEnum { } return null; } + + /** + * 根据value获取枚举对象。 + * @param value + * @return + */ + public static FlowTypeEnum getFlowTypeEnumByValue(String value) { + FlowTypeEnum[] flowTypeEnumArr = FlowTypeEnum.values(); + for (FlowTypeEnum flowTypeEnum : flowTypeEnumArr) { + if(StringUtils.equals(value,flowTypeEnum.getValue())){ + return flowTypeEnum; + } + } + return null; + } }