From 04b4a68e84cae0330400313d8ade6eb14a1f667a Mon Sep 17 00:00:00 2001 From: caihaohan Date: Tue, 30 Jan 2024 11:12:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=2080454=20=E4=BC=81=E6=A0=87=E5=88=B6?= =?UTF-8?q?=E4=BF=AE=E8=AE=A2=E6=B5=81=E7=A8=8B--=E5=85=B6=E4=BB=96?= =?UTF-8?q?=E8=B5=B7=E8=8D=89=E4=BA=BA=E5=88=97=E8=A1=A8=E6=88=AA=E6=AD=A2?= =?UTF-8?q?=E6=97=A5=E6=9C=9F=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E6=9C=AA?= =?UTF-8?q?=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/service/ActFlowCommonService.java | 12 +++ .../entity/vo/OtherDraftUserVO.java | 3 + .../job/OtherDraftUserUploadDeadlineJob.java | 97 ++++++++++++++----- ...ionOtherDraftUserUploadCreateListener.java | 77 --------------- .../service/impl/EsRevisionServiceImpl.java | 19 +++- 5 files changed, 101 insertions(+), 107 deletions(-) delete mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/listener/ProcessESRevisionOtherDraftUserUploadCreateListener.java diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java index 11143e00..9d32bc7f 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java @@ -173,6 +173,18 @@ public class ActFlowCommonService { processApprovalRecordService.updateById(approvalRecord); } + public void updateApprovalInfoWithoutNodeId(String taskId) { + ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(taskId); + if (approvalRecord == null) { + return; + } + approvalRecord.setCommitText(null); + approvalRecord.setCommitFile(null); + approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue()); + approvalRecord.setEndTime(new Date()); + processApprovalRecordService.updateById(approvalRecord); + } + public ProcessApprovalRecord getNodeIdByTaskId(String taskId) { return processApprovalRecordService.getToDoByTaskId(taskId); } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/vo/OtherDraftUserVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/vo/OtherDraftUserVO.java index 12466f19..a54b4b59 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/vo/OtherDraftUserVO.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/vo/OtherDraftUserVO.java @@ -43,6 +43,9 @@ public class OtherDraftUserVO { @ApiModelProperty(value = "绑定的taskId") private String taskId; + @ApiModelProperty(value = "未完成为0 已完成为1") + private String finishFlag; + public String getISODeadlineTime() { SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); return isoFormat.format(this.deadline); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/job/OtherDraftUserUploadDeadlineJob.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/job/OtherDraftUserUploadDeadlineJob.java index cbe72eaf..71043890 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/job/OtherDraftUserUploadDeadlineJob.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/job/OtherDraftUserUploadDeadlineJob.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.modules.activiti.entity.ProcessApprovalRecord; import com.jero.modules.activiti.enums.FinishFlagEnum; +import com.jero.modules.activiti.process.common.entity.CommonVO; import com.jero.modules.activiti.process.common.enums.ProcessType; import com.jero.modules.activiti.process.common.service.ActFlowCommonService; import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision; @@ -14,6 +15,8 @@ import com.jero.modules.activiti.process.esRevision.entity.vo.OtherDraftUserVO; import com.jero.modules.activiti.process.esRevision.service.EsRevisionService; import com.jero.modules.activiti.service.ProcessApprovalRecordService; import lombok.extern.slf4j.Slf4j; +import org.activiti.engine.RuntimeService; +import org.activiti.engine.TaskService; import org.apache.tomcat.jni.Proc; import org.jetbrains.annotations.NotNull; import org.quartz.Job; @@ -21,12 +24,11 @@ import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import javax.annotation.Resource; -import java.util.Calendar; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; +import static org.apache.tools.ant.taskdefs.SetPermissions.NonPosixMode.pass; + /** * @author: Mzaxd * @Date: 2023/12/28 18:40 @@ -40,6 +42,15 @@ public class OtherDraftUserUploadDeadlineJob implements Job { @Resource private ProcessApprovalRecordService approvalRecordService; + @Resource + private ActFlowCommonService actFlowCommonService; + + @Resource + private TaskService taskService; + + @Resource + private RuntimeService runtimeService; + @Override public void execute(JobExecutionContext context) throws JobExecutionException { LambdaQueryWrapper revisionLambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -59,40 +70,76 @@ public class OtherDraftUserUploadDeadlineJob implements Job { arWrapper.eq(ProcessApprovalRecord::getProcessInstanceId, prcId); List arList = approvalRecordService.list(arWrapper); arWrapper.clear(); - Map> arMap = arList.stream() - .collect(Collectors.groupingBy(ProcessApprovalRecord::getOriginUserId)); + + // 将task和记录进行绑定 + this.bundleTaskAndApprovalRecord(otherDraftUserVOS, arList); + Date curDate = new Date(); for (OtherDraftUserVO otherDraftUser : otherDraftUserVOS) { - String originUserId = otherDraftUser.getUser(); if (StrUtil.isNotBlank(otherDraftUser.getFileId())) { continue; } + if (StrUtil.isBlank(otherDraftUser.getTaskId())) { + log.error("未找到对应待办"); + continue; + } // 获取TaskId Date deadline = getDeadlineDate(otherDraftUser); // 如果当前日期大于该条数据的截止日期 则自动完成任务 if (curDate.after(deadline)) { - List ar = arMap.get(originUserId); - if (ar == null || ar.isEmpty()) { - log.error("未找到对应待办"); + // 审批节点 + // 更新审批表为完成,填充数据 + actFlowCommonService.updateApprovalInfoWithoutNodeId(otherDraftUser.getTaskId()); + // 判断能否根据TaskId找到有效的Task + if (taskService.createTaskQuery().taskId(otherDraftUser.getTaskId()).singleResult() == null) { + log.error("未找到对应Task"); continue; } - for (ProcessApprovalRecord processApprovalRecord : ar) { - String taskId = processApprovalRecord.getTaskId(); - String taskName = processApprovalRecord.getTaskName(); - if (StrUtil.isBlank(taskId)) { - log.error("任务Id为空"); - continue; - } - if (!taskName.equals("其他起草人上传企标")) { - continue; - } - // - ESRevisionDataVO handleData = revisionService.getHandleData(taskId); - handleData.getCommon().setTaskId(taskId); - revisionService.approval(handleData, true); - } + taskService.complete(otherDraftUser.getTaskId()); + otherDraftUser.setFinishFlag(YesOrNoEnum.YES.getValue()); } } + revision.setOtherDrafterUploadFileJson(otherDraftUserVOS); + revisionService.updateById(revision); + } + } + + private void bundleTaskAndApprovalRecord(List otherDraftUserVOS, List arList) { + Map> arMap = arList.stream() + .collect(Collectors.groupingBy(ProcessApprovalRecord::getOriginUserId)); + List alreadyTaskId = new ArrayList<>(); + otherDraftUserVOS.forEach(o -> alreadyTaskId.add(o.getTaskId())); + for (OtherDraftUserVO otherDraftUser : otherDraftUserVOS) { + if (StrUtil.isNotBlank(otherDraftUser.getTaskId())) { + continue; + } + if (YesOrNoEnum.YES.getValue().equals(otherDraftUser.getFinishFlag())) { + continue; + } + String originUserId = otherDraftUser.getUser(); + List ar = arMap.get(originUserId); + if (ar == null || ar.isEmpty()) { + log.error("未找到对应待办"); + continue; + } + + for (ProcessApprovalRecord processApprovalRecord : ar) { + if (alreadyTaskId.contains(processApprovalRecord.getTaskId())) { + continue; + } + String taskId = processApprovalRecord.getTaskId(); + String taskName = processApprovalRecord.getTaskName(); + if (StrUtil.isBlank(taskId)) { + log.error("任务Id为空"); + continue; + } + if (!taskName.equals("其他起草人上传企标")) { + continue; + } + otherDraftUser.setTaskId(taskId); + alreadyTaskId.add(taskId); + break; + } } } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/listener/ProcessESRevisionOtherDraftUserUploadCreateListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/listener/ProcessESRevisionOtherDraftUserUploadCreateListener.java deleted file mode 100644 index 1bcca4bd..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/listener/ProcessESRevisionOtherDraftUserUploadCreateListener.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.listener; - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.jero.modules.activiti.entity.ProcessApprovalRecord; -import com.jero.modules.activiti.enums.FinishFlagEnum; -import com.jero.modules.activiti.process.esRevision.entity.OperateTypeEnum; -import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision; -import com.jero.modules.activiti.process.esRevision.entity.vo.OtherDraftUserVO; -import com.jero.modules.activiti.process.esRevision.service.EsRevisionService; -import com.jero.modules.activiti.service.ProcessApprovalRecordService; -import org.activiti.engine.delegate.DelegateTask; -import org.activiti.engine.delegate.TaskListener; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - - -/** - * @author: Mzaxd - * @Date: 2023/12/19 11:59 - */ -@Component("processESRevisionOtherDraftUserUploadCreateListener") -public class ProcessESRevisionOtherDraftUserUploadCreateListener implements TaskListener { - - @Resource - private EsRevisionService esRevisionService; - - @Resource - private ProcessApprovalRecordService approvalRecordService; - - @Override - public void notify(DelegateTask delegateTask) { -// // 获取流程实例Id -// String processInstanceId = delegateTask.getProcessInstanceId(); -// // 获取流程变量otherDraftUser -// String otherDraftUser = (String) delegateTask.getVariable("otherDraftUser"); -// // 获取相关数据 -// LambdaQueryWrapper revisionWrapper = new LambdaQueryWrapper<>(); -// revisionWrapper.eq(ProcessEsRevision::getProcessInstanceId, processInstanceId); -// ProcessEsRevision revision = esRevisionService.getOne(revisionWrapper); -// LambdaQueryWrapper arWrapper = new LambdaQueryWrapper<>(); -// arWrapper.eq(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.INCOMPLETE.getValue()); -// List arList = approvalRecordService.list(arWrapper); -// Map> arMap = arList.stream() -// .collect(Collectors.groupingBy(ProcessApprovalRecord::getOriginUserId)); -// -// // 将task和记录进行绑定 -// List otherDraftUserVOS = revision.parseOtherDraftUserVOS(); -// // 已经分配出去的TaskId -// List alreadyTaskId = new ArrayList<>(); -// otherDraftUserVOS.forEach(u -> { -// if (StrUtil.isNotBlank(u.getTaskId())) { -// alreadyTaskId.add(u.getTaskId()); -// } -// }); -// for (OtherDraftUserVO o : otherDraftUserVOS) { -// if (StrUtil.isNotBlank(o.getTaskId()) || !o.getUser().equals(otherDraftUser)) { -// continue; -// } -// List processApprovalRecords = arMap.get(otherDraftUser); -// List taskIdList = processApprovalRecords.stream() -// .map(ProcessApprovalRecord::getTaskId).collect(Collectors.toList()); -// // 去除已经分配出去的TaskId -// taskIdList.removeAll(alreadyTaskId); -// o.setTaskId(taskIdList.get(0)); -// break; -// } -// revision.setOtherDraftUserVOS(otherDraftUserVOS); -// revision.setOtherDrafterUploadFileJson(otherDraftUserVOS); -// esRevisionService.updateById(revision); - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/impl/EsRevisionServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/impl/EsRevisionServiceImpl.java index 38600026..8db3565c 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/impl/EsRevisionServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/impl/EsRevisionServiceImpl.java @@ -129,6 +129,7 @@ public class EsRevisionServiceImpl extends ServiceImpl o.setFinishFlag(YesOrNoEnum.NO.getValue())); data.setOtherDrafterUploadFileJson(data.getOtherDraftUserVOS()); save(data); // 手动设置所有流程变量 @@ -142,14 +143,14 @@ public class EsRevisionServiceImpl extends ServiceImpl setVariables(ESRevisionDataVO revisionData) { @@ -310,7 +311,9 @@ public class EsRevisionServiceImpl extends ServiceImpl {o.setOperateType(null);}); + otherDraftUserVOS.forEach(o -> { + o.setOperateType(null); + }); for (OtherDraftUserVO o : otherDraftUserVOS) { if (findFlag) { o.setOperateType(OperateTypeEnum.CANNOT_OPERATE.getValue()); @@ -411,6 +414,7 @@ public class EsRevisionServiceImpl extends ServiceImpl o.setFinishFlag(YesOrNoEnum.NO.getValue())); data.setOtherDraftUserVOS(otherDraftUserVOS); data.setOtherDrafterUploadFileJson(otherDraftUserVOS); } @@ -423,8 +427,13 @@ public class EsRevisionServiceImpl extends ServiceImpl otherDraftUserVOListDB = data.getOtherDraftUserVOS(); - dataDb.setOtherDrafterUploadFileJson(otherDraftUserVOListDB); + List otherDraftUserVOList = data.getOtherDraftUserVOS(); + otherDraftUserVOList.forEach(o -> { + if (StrUtil.isNotBlank(o.getFileId())) { + o.setFinishFlag(YesOrNoEnum.YES.getValue()); + } + }); + dataDb.setOtherDrafterUploadFileJson(otherDraftUserVOList); saveOrUpdate(dataDb); break; case MAIN_DRAFT_USER_COLLECT_FIRST: