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