feat: 制修订流程第二个节点支持驳回
This commit is contained in:
+4
@@ -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";
|
||||
}
|
||||
|
||||
+8
@@ -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
|
||||
|
||||
+2
@@ -12,4 +12,6 @@ public class ProcessRevisionVO {
|
||||
ProcessEsRevision processInfo;
|
||||
|
||||
List<EsRevisionAdvice> adviceList;
|
||||
|
||||
boolean canReject;
|
||||
}
|
||||
|
||||
+2
@@ -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);
|
||||
}
|
||||
|
||||
+51
-8
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user