fix(企标稽查计划): 驳回若驳回到的节点之前经过转办,则发给之前的转办人
This commit is contained in:
+56
-5
@@ -2,12 +2,14 @@ package com.jero.modules.activiti.process.aspect;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.jero.common.constant.enums.LanguageEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.common.util.MessageUtils;
|
||||
import com.jero.modules.activiti.entity.ProcessAll;
|
||||
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||
import com.jero.modules.activiti.process.esinspectplan.common.EsInspectPlanCommon;
|
||||
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.activiti.bpmn.model.Process;
|
||||
@@ -17,8 +19,10 @@ import org.activiti.engine.RepositoryService;
|
||||
import org.activiti.engine.TaskService;
|
||||
import org.activiti.engine.history.HistoricProcessInstance;
|
||||
import org.activiti.engine.task.Task;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.aspectj.lang.JoinPoint;
|
||||
import org.aspectj.lang.annotation.AfterReturning;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.aspectj.lang.annotation.Before;
|
||||
import org.aspectj.lang.annotation.Pointcut;
|
||||
@@ -26,9 +30,7 @@ import org.springframework.core.annotation.Order;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @ClassName: 流程aop
|
||||
@@ -49,6 +51,8 @@ public class ProcessAspect {
|
||||
private RepositoryService repositoryService;
|
||||
@Resource
|
||||
private ProcessApprovalRecordService processApprovalRecordService;
|
||||
private static final String PROCESS_ALL = "processAll";
|
||||
private static final List<String> SPECIAL_NODE = Arrays.asList(EsInspectPlanCommon.PROCESS_NODE_3);
|
||||
|
||||
// 流程审批
|
||||
@Pointcut("execution(public * com.jero.modules.activiti.process..*Controller.flowApproval(..))")
|
||||
@@ -71,7 +75,7 @@ public class ProcessAspect {
|
||||
log.info("==========流程合法性校验前置方法开始==========");
|
||||
if (!Objects.isNull(jp.getArgs())) {
|
||||
Map<String, Objects> map = JSON.parseObject(JSON.toJSONString(jp.getArgs()[0]), Map.class);
|
||||
Object object = map.get("processAll");
|
||||
Object object = map.get(PROCESS_ALL);
|
||||
ProcessAll processAll = JSON.parseObject(JSON.toJSONString(object), ProcessAll.class);
|
||||
if (checkTaskExistence(processAll.getTaskId())){
|
||||
if (LanguageEnum.CN.getValue().equals(MessageUtils.getLanguage().getValue())){
|
||||
@@ -99,7 +103,7 @@ public class ProcessAspect {
|
||||
log.info("==========流程会签节点驳回一票否决前置方法开始==========");
|
||||
if (!Objects.isNull(jp.getArgs())) {
|
||||
Map<String, Objects> map = JSON.parseObject(JSON.toJSONString(jp.getArgs()[0]), Map.class);
|
||||
Object object = map.get("processAll");
|
||||
Object object = map.get(PROCESS_ALL);
|
||||
ProcessAll processAll = JSON.parseObject(JSON.toJSONString(object), ProcessAll.class);
|
||||
|
||||
Object objectMap = map.get("map");
|
||||
@@ -120,6 +124,53 @@ public class ProcessAspect {
|
||||
log.info("==========流程会签节点驳回一票否决前置方法结束==========");
|
||||
}
|
||||
|
||||
@AfterReturning("processServiceFlowReject()")
|
||||
public void doAfter(JoinPoint jp) {
|
||||
log.info("==========流程驳回,若驳回到的节点之前经过转办,则驳回到转办人手里后置方法开始==========");
|
||||
if (!Objects.isNull(jp.getArgs())) {
|
||||
Map<String, Objects> map = JSON.parseObject(JSON.toJSONString(jp.getArgs()[0]), Map.class);
|
||||
Object object = map.get(PROCESS_ALL);
|
||||
ProcessAll processAll = JSON.parseObject(JSON.toJSONString(object), ProcessAll.class);
|
||||
|
||||
Object objectMap = map.get("map");
|
||||
Map<String, Object> stringObjectMap = JSON.parseObject(JSON.toJSONString(objectMap), Map.class);
|
||||
// 特殊节点排除
|
||||
if ((stringObjectMap.containsKey("pass") && !(boolean) stringObjectMap.get("pass")) && !SPECIAL_NODE.contains(processAll.getNodeId())){
|
||||
// 驳回的节点
|
||||
List<ProcessApprovalRecord> processApprovalRecordList = processApprovalRecordService.list(
|
||||
new LambdaQueryWrapper<ProcessApprovalRecord>()
|
||||
.eq(ProcessApprovalRecord::getProcessInstanceId, processAll.getProcessInstanceId())
|
||||
.orderByDesc(ProcessApprovalRecord::getCreateTime));
|
||||
if (!processApprovalRecordList.isEmpty()){
|
||||
ProcessApprovalRecord processApprovalRecord = processApprovalRecordList.get(0);
|
||||
processApprovalRecordList.remove(0);
|
||||
Optional<ProcessApprovalRecord> optional = processApprovalRecordList.stream().filter(v ->
|
||||
v.getTaskName().equals(processApprovalRecord.getTaskName())
|
||||
&& v.getNodeId().equals(processApprovalRecord.getNodeId())).findFirst();
|
||||
optional.ifPresent(v -> {
|
||||
// 是否转办过
|
||||
if (StringUtils.isNotBlank(v.getTransferBy())){
|
||||
// 转办给转办人
|
||||
taskService.setAssignee(processApprovalRecord.getTaskId(), v.getUserId());
|
||||
// 更新流程审批记录表
|
||||
processApprovalRecordService.update(
|
||||
new LambdaUpdateWrapper<ProcessApprovalRecord>()
|
||||
.eq(ProcessApprovalRecord::getTaskId, processApprovalRecord.getTaskId())
|
||||
.set(ProcessApprovalRecord::getUserId, v.getUserId())
|
||||
.set(ProcessApprovalRecord::getOriginUserId, v.getUserId()));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
log.info("==========流程驳回,若驳回到的节点之前经过转办,则驳回到转办人手里后置方法结束==========");
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否会签节点
|
||||
* @param taskId
|
||||
* @return
|
||||
*/
|
||||
public boolean isMultiTask(String taskId){
|
||||
// 根据流程实例id查询
|
||||
Task task = taskService.createTaskQuery()
|
||||
|
||||
Reference in New Issue
Block a user