소스 검색

带抄送人撤回修改

tags/24080901
CMM 1 년 전
부모
커밋
5d24d85de6
3개의 변경된 파일40개의 추가작업 그리고 4개의 파일을 삭제
  1. +1
    -1
      pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/controller/DeclaredProjectController.java
  2. +1
    -1
      pmapi/src/main/java/com/ningdatech/pmapi/sys/controller/FormController.java
  3. +38
    -2
      pmapi/src/main/java/com/ningdatech/pmapi/todocenter/handle/WithDrawHandle.java

+ 1
- 1
pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/controller/DeclaredProjectController.java 파일 보기

@@ -78,7 +78,7 @@ public class DeclaredProjectController {

@ApiOperation(value = "申报项目草稿箱详情", notes = "申报项目草稿箱详情")
@GetMapping("/draft/{id}")
public ProjectDraftVO draft(@PathVariable Long id) {
public ProjectDraftVO draft(@PathVariable(value = "id") Long id) {
return declaredProjectManage.draftDatail(id);
}



+ 1
- 1
pmapi/src/main/java/com/ningdatech/pmapi/sys/controller/FormController.java 파일 보기

@@ -28,7 +28,7 @@ public class FormController {

@ApiOperation(value = "获取系统表单", notes = "获取系统表单")
@GetMapping("/{regionCode}")
public WflowFormVo detail(@PathVariable String regionCode) {
public WflowFormVo detail(@PathVariable(value = "regionCode") String regionCode) {
return formService.getFormByRegionCode(regionCode);
}



+ 38
- 2
pmapi/src/main/java/com/ningdatech/pmapi/todocenter/handle/WithDrawHandle.java 파일 보기

@@ -17,7 +17,9 @@ import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.assertj.core.util.Lists;
import org.flowable.bpmn.model.*;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.history.HistoricActivityInstance;
import org.flowable.engine.history.HistoricProcessInstance;
import org.springframework.stereotype.Component;
@@ -41,6 +43,7 @@ public class WithDrawHandle {
private final UserInfoHelper userInfoHelper;

private final HistoryService historyService;
private final RepositoryService repositoryService;

/**
* 判断 当前流程 可否被当前登录人 所撤回
@@ -66,7 +69,7 @@ public class WithDrawHandle {
return checkUserIsBefore(progressInstanceDetail.getProgressInfo(),null);
}

//判断当前操作人 是上一个节点的审批人
// 判断当前操作人 是上一个节点的审批人
public Boolean checkUserIsBefore(List<ProgressNode> currentProgressInfo, ReqProcessHandlerDTO param) {
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
//1.判断出 当前审批人和上一个审批人
@@ -74,18 +77,32 @@ public class WithDrawHandle {
ProgressNode beforeProgressNode = null;
ProgressNode currentProgressNode = null;

// 先排除掉抄送任务节点
currentProgressInfo = currentProgressInfo.stream()
.filter(c -> !NodeTypeEnum.CC.name().equals(c.getNodeType().name()))
.collect(Collectors.toList());
if (CollUtil.isEmpty(currentProgressInfo)){
return Boolean.FALSE;
}
// 说明当前节点是子流程节点
// 如果是会签 或签 当前和上个
List<ProgressNode> thisAndOr = Lists.newArrayList();
List<ProgressNode> beforeAndOr = Lists.newArrayList();
if (progressNode.getNodeType().name().equals(NodeTypeEnum.SUB.name())) {
List<ProgressNode> children = progressNode.getChildren();
// 先排除掉子流程中抄送的节点,避免塞入错误的taskId
children = children.stream()
.filter(c -> !NodeTypeEnum.CC.name().equals(c.getNodeType().name()))
.collect(Collectors.toList());
if (CollUtil.isEmpty(currentProgressInfo)){
return Boolean.FALSE;
}
currentProgressNode = children.get(children.size() - 1);
//把当前和上一个节点和 会签或签的情况 都check出来
beforeProgressNode = checkBeforeNodeAndOr(children,currentProgressNode,thisAndOr,beforeAndOr);
} else {
currentProgressNode = currentProgressInfo.get(currentProgressInfo.size() - 1);
//把把当前和上一个节点和 会签或签的情况 都check出来
// 把当前和上一个节点和 会签或签的情况 都check出来
beforeProgressNode = checkBeforeNodeAndOr(currentProgressInfo,currentProgressNode,thisAndOr,beforeAndOr);
}
// 判断当前工作流任务前一个审核人的部门和当前登录用户的部门是否是同一个,如果是同一个才可以撤回,否则抛出异常
@@ -131,8 +148,27 @@ public class WithDrawHandle {
|| !user.getEmployeeCode().equals(beforeProgressNode.getUserId()))){
return Boolean.FALSE;
}

//如果是true 把对应操作人 在上个审批节点的task 也传入
if(Objects.nonNull(param)){
// 获取bpmn文件中节点的连线关系,如果前一个节点的下一个节点是抄送节点,
// 获取抄送节点传入param中,在执行撤回操作时,将抄送信息从抄送表中删除
HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery()
.processInstanceId(param.getInstanceId())
.singleResult();
BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId());
// 传节点定义key 获取撤回操作人在流程配置中所在的节点
FlowNode flowNode = (FlowNode) bpmnModel.getFlowElement(beforeProgressNode.getNodeId());
List<SequenceFlow> outgoingFlows = flowNode.getOutgoingFlows();
for (SequenceFlow outgoingFlow : outgoingFlows) {
//获取输出节点元素
FlowElement targetFlowElement = outgoingFlow.getTargetFlowElement();
// 获取下一个抄送任务的节点
if(targetFlowElement instanceof ServiceTask){
param.setCcNodeId(targetFlowElement.getId());
break;
}
}
param.setTaskId(beforeProgressNode.getTaskId());
}
return Boolean.TRUE;


불러오는 중...
취소
저장