feat: 制修订流程第二个节点支持驳回

This commit is contained in:
2024-10-14 17:14:57 +08:00
parent 15cfc5e3ca
commit 90e803fae6
5 changed files with 67 additions and 8 deletions
@@ -6,6 +6,8 @@ package com.jero.modules.activiti.process.esRevisionAdvice.common;
*/ */
public class RevisionTaskNodeIdConstant { public class RevisionTaskNodeIdConstant {
/** 主起草人发起 */
public static final String START = "Activity_0v98tow";
/** 法规工程师确认是否开启征求意见 */ /** 法规工程师确认是否开启征求意见 */
public static final String CONFIRM_ADVISE = "Activity_1siuksf"; public static final String CONFIRM_ADVISE = "Activity_1siuksf";
/** 设计工程师填写意见 */ /** 设计工程师填写意见 */
@@ -22,4 +24,6 @@ public class RevisionTaskNodeIdConstant {
public static final String ADVICE_USER_LIST = "adviceUserList"; public static final String ADVICE_USER_LIST = "adviceUserList";
/** 开启征求意见 */ /** 开启征求意见 */
public static final String OPEN = "open"; public static final String OPEN = "open";
/** 开启征求意见 */
public static final String CAN_REJECT = "canReject";
} }
@@ -55,6 +55,14 @@ public class ESRevisionController {
return Result.OK(); return Result.OK();
} }
@AutoLog(value = "整车企业标准报批流程-驳回")
@ApiOperation(value = "整车企业标准报批流程-驳回", notes = "整车企业标准报批流程-驳回")
@PostMapping("/reject")
public Result<T> reject(@RequestBody ProcessInfoVO<ProcessRevisionVO> processInfoVO) {
revisionService.approveTask(processInfoVO, false);
return Result.OK();
}
/** /**
* 保存到待办 * 保存到待办
* @param taskId * @param taskId
@@ -12,4 +12,6 @@ public class ProcessRevisionVO {
ProcessEsRevision processInfo; ProcessEsRevision processInfo;
List<EsRevisionAdvice> adviceList; List<EsRevisionAdvice> adviceList;
boolean canReject;
} }
@@ -19,4 +19,6 @@ public interface EsRevisionService extends IService<ProcessEsRevision> {
void startProcess(ProcessInfoVO<ProcessRevisionVO> processInfoVO); void startProcess(ProcessInfoVO<ProcessRevisionVO> processInfoVO);
void submit(ProcessInfoVO<ProcessRevisionVO> processInfoVO); void submit(ProcessInfoVO<ProcessRevisionVO> processInfoVO);
void approveTask(ProcessInfoVO<ProcessRevisionVO> processInfoVO, boolean pass);
} }
@@ -10,6 +10,7 @@ import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord; import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.CommitFlagEnum;
import com.jero.modules.activiti.enums.ProcessTypeEnum; import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.enums.ProcessType; import com.jero.modules.activiti.process.common.enums.ProcessType;
import com.jero.modules.activiti.process.common.service.ActFlowCommonService; import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
@@ -24,6 +25,7 @@ import com.jero.modules.activiti.process.fb.dto.BasicTaskInfoDTO;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService; import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.activiti.service.ProcessAllService; import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeLinkService; import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.laws.common.constant.FieldCommon; import com.jero.modules.laws.common.constant.FieldCommon;
import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon; import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon;
@@ -45,6 +47,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.*;
import static com.jero.modules.activiti.common.ActivitiCommon.PASS;
import static com.jero.modules.activiti.process.esRevisionAdvice.common.RevisionTaskNodeIdConstant.*; import static com.jero.modules.activiti.process.esRevisionAdvice.common.RevisionTaskNodeIdConstant.*;
/** /**
@@ -94,6 +97,9 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
@Resource @Resource
private EnterpriseStandardUtil esUtil; private EnterpriseStandardUtil esUtil;
@Resource
private ProcessApprovalRecordService approvalRecordService;
@Override @Override
public void startProcess(ProcessInfoVO<ProcessRevisionVO> processInfoVO) { public void startProcess(ProcessInfoVO<ProcessRevisionVO> processInfoVO) {
// 流程Key // 流程Key
@@ -157,8 +163,10 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
private Map<String, Object> setVariables(ProcessInfoVO<ProcessRevisionVO> processInfoVO) { private Map<String, Object> setVariables(ProcessInfoVO<ProcessRevisionVO> processInfoVO) {
Map<String, Object> userInfoMap = processInfoVO.getUserInfoMap(); Map<String, Object> userInfoMap = processInfoVO.getUserInfoMap();
HashMap<String, Object> result = new HashMap<>(userInfoMap);
result.put(CAN_REJECT, true);
// 获取分发人 // 获取分发人
return new HashMap<>(userInfoMap); return result;
} }
@Override @Override
@@ -182,18 +190,12 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
if (Objects.nonNull(data)) { if (Objects.nonNull(data)) {
detailQueryWrapper.eq(EsRevisionAdvice::getProcessInstanceId, processInstanceId); detailQueryWrapper.eq(EsRevisionAdvice::getProcessInstanceId, processInstanceId);
adviceList = adviceService.list(detailQueryWrapper); adviceList = adviceService.list(detailQueryWrapper);
// // 筛选出最新一轮
// if (!adviceList.isEmpty()) {
// Map<Integer, List<EsRevisionAdvice>> map = adviceList.stream().collect(Collectors.groupingBy(EsRevisionAdvice::getBatchNum));
// // 获取轮数最大的轮数
// Integer maxNum = this.calculateAdviceBatchNum(adviceList);
// adviceList = map.get(maxNum);
// }
} }
// 获取当前流程 // 获取当前流程
String xmlNodeId = record.getNodeId(); String xmlNodeId = record.getNodeId();
// 设置流程信息 // 设置流程信息
switch (xmlNodeId) { switch (xmlNodeId) {
case START:
case CONFIRM_ADVISE: case CONFIRM_ADVISE:
case ADVICE: case ADVICE:
case SET_STANDARD_NUMBER: case SET_STANDARD_NUMBER:
@@ -203,6 +205,8 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
} }
// 设置流程变量等相关信息 // 设置流程变量等相关信息
processVo.setProcessInfo(data); processVo.setProcessInfo(data);
boolean canReject = (boolean) taskService.getVariable(taskId, CAN_REJECT);
processVo.setCanReject(canReject);
result.setBusinessInfoDTO(processVo); result.setBusinessInfoDTO(processVo);
return result; return result;
} }
@@ -245,6 +249,9 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
// 筛选出最新一轮 // 筛选出最新一轮
Integer maxBatchNum = this.calculateAdviceBatchNum(dbAdviceList); Integer maxBatchNum = this.calculateAdviceBatchNum(dbAdviceList);
switch (xmlNodeId) { switch (xmlNodeId) {
case START:
saveOrUpdate(data);
break;
case CONFIRM_ADVISE: case CONFIRM_ADVISE:
// 判断是否开启征求意见子流程 设置流程变量 // 判断是否开启征求意见子流程 设置流程变量
boolean adviceFlag = !data.getAdviceFlag().equals(YesOrNoEnum.NO.getValue()); boolean adviceFlag = !data.getAdviceFlag().equals(YesOrNoEnum.NO.getValue());
@@ -253,6 +260,7 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
taskService.setVariable(taskId, ADVICE_USER_LIST, adviceUserList); taskService.setVariable(taskId, ADVICE_USER_LIST, adviceUserList);
taskService.setVariable(taskId, STANDARD_ENGINEER, curUserId); taskService.setVariable(taskId, STANDARD_ENGINEER, curUserId);
taskService.setVariable(taskId, OPEN, true); taskService.setVariable(taskId, OPEN, true);
taskService.setVariable(taskId, CAN_REJECT, false);
// 保存流程数据 // 保存流程数据
saveOrUpdate(data); saveOrUpdate(data);
userMap.put(STANDARD_ENGINEER, curUserId); userMap.put(STANDARD_ENGINEER, curUserId);
@@ -325,6 +333,41 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
processHandleService.saveToSnapshot(processInfoVO, curUserId); processHandleService.saveToSnapshot(processInfoVO, curUserId);
} }
@Override
public void approveTask(ProcessInfoVO<ProcessRevisionVO> processInfoVO, boolean pass) {
// 获取task
BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO();
String taskId = processTask.getTaskId();
// 校验是否有权限操作此待办
processHandleService.validTask(taskId);
String prcId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
BasicProcessInfoDTO processInfo = new BasicProcessInfoDTO();
processInfo.setProcessInstanceId(prcId);
processInfoVO.setBasicProcessInfoDTO(processInfo);
// 获取当前节点的id
ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId);
String xmlNodeId = record.getNodeId();
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
// 更新审批表为完成,填充数据
actFlowCommonService.updateApprovalInfo(processTask, taskId);
String curUserId = UserUtils.getUserId();
// 设置流程变量
runtimeService.setVariable(processInstanceId, PASS, pass);
// 会签节点驳回后修改其他节点的状态
approvalRecordService.updateApprovalRecordFinishFlag(pass, taskId, xmlNodeId, processInstanceId);
// 保存快照
processHandleService.saveToSnapshot(processInfoVO, curUserId);
// 审批节点
actFlowCommonService.completeTask(taskId, curUserId);
// 驳回,结束所有节点
approvalRecordService.updateApprovalRecordFinishFlag(pass, taskId, xmlNodeId, processInstanceId);
// 更新审批表为完成,填充数据
processTask.setCommitFlag(pass ? CommitFlagEnum.PASS.getValue() : CommitFlagEnum.REJECT.getValue());
actFlowCommonService.updateApprovalInfo(processTask, taskId);
// 删除草稿
actFlowCommonService.removeDraft(curUserId, taskId, processInstanceId);
}
private Integer calculateAdviceBatchNum(List<EsRevisionAdvice> adviceList) { private Integer calculateAdviceBatchNum(List<EsRevisionAdvice> adviceList) {
return adviceList.stream().mapToInt(EsRevisionAdvice::getBatchNum).max().orElse(0); return adviceList.stream().mapToInt(EsRevisionAdvice::getBatchNum).max().orElse(0);
} }