feat: scc子流程转办主排查人

This commit is contained in:
2024-07-18 12:03:58 +08:00
parent 7d04c215c6
commit 860ce533de
@@ -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<ProcessStandardComplianceCheck> sccWrapper = new LambdaQueryWrapper<>();
sccWrapper.eq(ProcessStandardComplianceCheck::getProcessInstanceId, mainInstanceId);
ProcessStandardComplianceCheck scc = sccService.getOne(sccWrapper);
LambdaQueryWrapper<ProcessStandardComplianceCheckDetail> sccDetailWrapper = new LambdaQueryWrapper<>();
sccDetailWrapper.eq(ProcessStandardComplianceCheckDetail::getCheckId, scc.getId());
sccDetailWrapper.isNotNull(ProcessStandardComplianceCheckDetail::getProcessInstanceId);
List<ProcessStandardComplianceCheckDetail> sccDetailList = sccDetailService.list(sccDetailWrapper);
if (CollUtil.isEmpty(sccDetailList)) {
return;
}
List<String> 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) {
}
}