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 static final String START = "Activity_0v98tow";
/** 法规工程师确认是否开启征求意见 */
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 OPEN = "open";
/** 开启征求意见 */
public static final String CAN_REJECT = "canReject";
}
@@ -55,6 +55,14 @@ public class ESRevisionController {
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
@@ -12,4 +12,6 @@ public class ProcessRevisionVO {
ProcessEsRevision processInfo;
List<EsRevisionAdvice> adviceList;
boolean canReject;
}
@@ -19,4 +19,6 @@ public interface EsRevisionService extends IService<ProcessEsRevision> {
void startProcess(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.modules.activiti.entity.ProcessAll;
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.process.common.enums.ProcessType;
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.vo.ProcessInfoVO;
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.laws.common.constant.FieldCommon;
import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon;
@@ -45,6 +47,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import static com.jero.modules.activiti.common.ActivitiCommon.PASS;
import static com.jero.modules.activiti.process.esRevisionAdvice.common.RevisionTaskNodeIdConstant.*;
/**
@@ -94,6 +97,9 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
@Resource
private EnterpriseStandardUtil esUtil;
@Resource
private ProcessApprovalRecordService approvalRecordService;
@Override
public void startProcess(ProcessInfoVO<ProcessRevisionVO> processInfoVO) {
// 流程Key
@@ -157,8 +163,10 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
private Map<String, Object> setVariables(ProcessInfoVO<ProcessRevisionVO> processInfoVO) {
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
@@ -182,18 +190,12 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
if (Objects.nonNull(data)) {
detailQueryWrapper.eq(EsRevisionAdvice::getProcessInstanceId, processInstanceId);
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();
// 设置流程信息
switch (xmlNodeId) {
case START:
case CONFIRM_ADVISE:
case ADVICE:
case SET_STANDARD_NUMBER:
@@ -203,6 +205,8 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
}
// 设置流程变量等相关信息
processVo.setProcessInfo(data);
boolean canReject = (boolean) taskService.getVariable(taskId, CAN_REJECT);
processVo.setCanReject(canReject);
result.setBusinessInfoDTO(processVo);
return result;
}
@@ -245,6 +249,9 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
// 筛选出最新一轮
Integer maxBatchNum = this.calculateAdviceBatchNum(dbAdviceList);
switch (xmlNodeId) {
case START:
saveOrUpdate(data);
break;
case CONFIRM_ADVISE:
// 判断是否开启征求意见子流程 设置流程变量
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, STANDARD_ENGINEER, curUserId);
taskService.setVariable(taskId, OPEN, true);
taskService.setVariable(taskId, CAN_REJECT, false);
// 保存流程数据
saveOrUpdate(data);
userMap.put(STANDARD_ENGINEER, curUserId);
@@ -325,6 +333,41 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
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) {
return adviceList.stream().mapToInt(EsRevisionAdvice::getBatchNum).max().orElse(0);
}