From 860ce533defaf097324306468007f44b58d58df8 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Thu, 18 Jul 2024 12:02:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20scc=E5=AD=90=E6=B5=81=E7=A8=8B=E8=BD=AC?= =?UTF-8?q?=E5=8A=9E=E4=B8=BB=E6=8E=92=E6=9F=A5=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/StandardComplianceCheckFlow.java | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/StandardComplianceCheckFlow.java diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/StandardComplianceCheckFlow.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/StandardComplianceCheckFlow.java new file mode 100644 index 00000000..4160c6f0 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/StandardComplianceCheckFlow.java @@ -0,0 +1,96 @@ +package com.jero.modules.activiti.process.standardComplianceCheck.service; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.jero.common.exception.JeroBootException; +import com.jero.modules.activiti.entity.ProcessAll; +import com.jero.modules.activiti.entity.ProcessApprovalRecord; +import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessStandardComplianceCheck; +import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessStandardComplianceCheckDetail; +import com.jero.modules.activiti.service.ProcessAllService; +import com.jero.modules.activiti.service.WorkCenterService; +import com.jero.modules.activiti.util.SpringContextUtil; +import com.jero.modules.activiti.vo.DelegateTaskParam; +import lombok.extern.slf4j.Slf4j; +import org.activiti.engine.RuntimeService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.jero.modules.activiti.common.ActivitiCommon.MAIN_INSTANCE_ID; +import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.MAIN_CHECK_USER; +import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.MAIN_CHECK_USER_APPROVAL; + +/** + * @ClassName: EsInspectPlanFlowService + * @Description: + * @Author: yjz + * @Date: 2024-01-11 21:19 + * @Version: 1.0 + **/ +@Slf4j +@Transactional(rollbackFor = {Exception.class, JeroBootException.class}) +@Service +public class StandardComplianceCheckFlow implements WorkCenterService { + + @Resource + private IProcessStandardComplianceCheckService sccService; + + @Resource + private IProcessStandardComplianceCheckDetailService sccDetailService; + + @Resource + private RuntimeService runtimeService; + + /** + * 强制撤回 + * @param processAll 流程总表 + */ + @Override + public void changeToDraft(ProcessAll processAll) { + + } + + /** + * 转办 + * @param processAll + * @param processApprovalRecord + * @param toUserId + * @param userId + */ + @Override + public void handleTransfer(ProcessAll processAll, ProcessApprovalRecord processApprovalRecord, String toUserId, String userId) { + ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class); + processAllService.specialTransfer(processAll, processApprovalRecord, toUserId, userId); + // 子流程中的主排查人的转办需要修改其余所有子流程及主流程中的数据 + String nodeId = processApprovalRecord.getNodeId(); + if (nodeId.equals(MAIN_CHECK_USER_APPROVAL)) { + String processInstanceId = processApprovalRecord.getProcessInstanceId(); + String mainInstanceId = (String) runtimeService.getVariable(processInstanceId, MAIN_INSTANCE_ID); + LambdaQueryWrapper sccWrapper = new LambdaQueryWrapper<>(); + sccWrapper.eq(ProcessStandardComplianceCheck::getProcessInstanceId, mainInstanceId); + ProcessStandardComplianceCheck scc = sccService.getOne(sccWrapper); + LambdaQueryWrapper sccDetailWrapper = new LambdaQueryWrapper<>(); + sccDetailWrapper.eq(ProcessStandardComplianceCheckDetail::getCheckId, scc.getId()); + sccDetailWrapper.isNotNull(ProcessStandardComplianceCheckDetail::getProcessInstanceId); + List sccDetailList = sccDetailService.list(sccDetailWrapper); + if (CollUtil.isEmpty(sccDetailList)) { + return; + } + List allChildProcessInstanceId = sccDetailList.stream() + .map(ProcessStandardComplianceCheckDetail::getProcessInstanceId).distinct().collect(Collectors.toList()); + allChildProcessInstanceId.forEach(childProcessInstanceId -> { + runtimeService.setVariable(childProcessInstanceId, MAIN_CHECK_USER, toUserId); + }); + } + } + + @Override + public void flowCountersign(DelegateTaskParam param) { + + } +}