|
@@ -1,6 +1,5 @@
|
|
|
package com.fjhx.service.process.impl;
|
|
|
|
|
|
-import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fjhx.constants.FlowConstant;
|
|
@@ -34,26 +33,13 @@ import java.util.stream.Collectors;
|
|
|
public class ProcessNodeServiceImpl extends ServiceImpl<ProcessNodeMapper, ProcessNode> implements ProcessNodeService {
|
|
|
|
|
|
@Override
|
|
|
- public void addOrEditNodeList(Long id, List<ProcessNodeVo> processNodeVoList) {
|
|
|
-
|
|
|
-
|
|
|
- List<ProcessNode> processNodeList = processNodeVoList.stream().map(processNodeVo -> {
|
|
|
-
|
|
|
- verificationField(processNodeVo);
|
|
|
-
|
|
|
- ProcessNode processNode = BeanUtil.toBean(processNodeVo, ProcessNode.class);
|
|
|
-
|
|
|
- processNode.setProcessInfoId(id);
|
|
|
-
|
|
|
- processNode.setHandleObjectIdSet(String.join(",", processNodeVo.getHandleObjectIdList()));
|
|
|
- return processNode;
|
|
|
- }).collect(Collectors.toList());
|
|
|
-
|
|
|
-
|
|
|
- saveOrUpdateBatch(processNodeList);
|
|
|
+ public void addOrEditNodeList(List<ProcessNode> ProcessNodeList) {
|
|
|
+
|
|
|
+
|
|
|
+ updateBatchById(ProcessNodeList);
|
|
|
|
|
|
|
|
|
- insertNodeButton(processNodeList);
|
|
|
+ insertNodeButton(ProcessNodeList);
|
|
|
|
|
|
}
|
|
|
|
|
@@ -63,6 +49,10 @@ public class ProcessNodeServiceImpl extends ServiceImpl<ProcessNodeMapper, Proce
|
|
|
*/
|
|
|
private void verificationField(ProcessNodeVo processNodeVo) {
|
|
|
|
|
|
+
|
|
|
+ Long processTenantId = processNodeVo.getProcessTenantId();
|
|
|
+ Assert.notEmpty(processTenantId, FlowExplainConstant.PROCESS_TENANT_ID_EMPTY);
|
|
|
+
|
|
|
|
|
|
Integer type = processNodeVo.getType();
|
|
|
Assert.notEmpty(type, FlowExplainConstant.NODE_TYPE);
|
|
@@ -92,10 +82,18 @@ public class ProcessNodeServiceImpl extends ServiceImpl<ProcessNodeMapper, Proce
|
|
|
*/
|
|
|
private void insertNodeButton(List<ProcessNode> processNodeList) {
|
|
|
|
|
|
-
|
|
|
+ Long processTenantId = processNodeList.get(0).getProcessTenantId();
|
|
|
+ remove(ProcessNode::getProcessTenantId, processTenantId);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
Map<Long, List<ProcessNode>> ProcessNodeGroupByParentId = processNodeList.stream()
|
|
|
.collect(Collectors.groupingBy(ProcessNode::getParentId));
|
|
|
|
|
|
+
|
|
|
+ Map<Long, List<ProcessNode>> ProcessNodeGroupById = processNodeList.stream()
|
|
|
+ .collect(Collectors.groupingBy(ProcessNode::getId));
|
|
|
+
|
|
|
for (ProcessNode processNode : processNodeList) {
|
|
|
Integer type = processNode.getType();
|
|
|
|
|
@@ -104,12 +102,13 @@ public class ProcessNodeServiceImpl extends ServiceImpl<ProcessNodeMapper, Proce
|
|
|
|
|
|
List<ProcessNodeButton> processNodeButtonList = new ArrayList<>();
|
|
|
switch (processNodeTypeEnum) {
|
|
|
+
|
|
|
case START:
|
|
|
startHandle(processNodeButtonList, ProcessNodeGroupByParentId, processNode);
|
|
|
break;
|
|
|
|
|
|
case EXAMINED:
|
|
|
- examinedHandle(processNodeButtonList, ProcessNodeGroupByParentId, processNode);
|
|
|
+ examinedHandle(processNodeButtonList, ProcessNodeGroupById, ProcessNodeGroupByParentId, processNode);
|
|
|
break;
|
|
|
|
|
|
case APPROVAL:
|
|
@@ -135,7 +134,8 @@ public class ProcessNodeServiceImpl extends ServiceImpl<ProcessNodeMapper, Proce
|
|
|
* 开始节点处理
|
|
|
*/
|
|
|
private void startHandle(List<ProcessNodeButton> processNodeButtonList,
|
|
|
- Map<Long, List<ProcessNode>> ProcessNodeGroupByParentId, ProcessNode processNode) {
|
|
|
+ Map<Long, List<ProcessNode>> ProcessNodeGroupByParentId,
|
|
|
+ ProcessNode processNode) {
|
|
|
|
|
|
ProcessNodeButton next = next(ProcessNodeGroupByParentId, processNode, ButtonNameEnum.ADOPT);
|
|
|
processNodeButtonList.add(next);
|
|
@@ -145,12 +145,14 @@ public class ProcessNodeServiceImpl extends ServiceImpl<ProcessNodeMapper, Proce
|
|
|
* 审核处理
|
|
|
*/
|
|
|
private void examinedHandle(List<ProcessNodeButton> processNodeButtonList,
|
|
|
- Map<Long, List<ProcessNode>> ProcessNodeGroupByParentId, ProcessNode processNode) {
|
|
|
+ Map<Long, List<ProcessNode>> ProcessNodeGroupById,
|
|
|
+ Map<Long, List<ProcessNode>> ProcessNodeGroupByParentId,
|
|
|
+ ProcessNode processNode) {
|
|
|
|
|
|
ProcessNodeButton next = next(ProcessNodeGroupByParentId, processNode, ButtonNameEnum.ADOPT);
|
|
|
processNodeButtonList.add(next);
|
|
|
|
|
|
- ProcessNodeButton previous = previous(ProcessNodeGroupByParentId, processNode, ButtonNameEnum.FAIL);
|
|
|
+ ProcessNodeButton previous = previous(ProcessNodeGroupById, processNode, ButtonNameEnum.FAIL);
|
|
|
processNodeButtonList.add(previous);
|
|
|
}
|
|
|
|
|
@@ -158,7 +160,8 @@ public class ProcessNodeServiceImpl extends ServiceImpl<ProcessNodeMapper, Proce
|
|
|
* 审批处理
|
|
|
*/
|
|
|
private void approvalHandle(List<ProcessNodeButton> processNodeButtonList,
|
|
|
- Map<Long, List<ProcessNode>> ProcessNodeGroupByParentId, ProcessNode processNode) {
|
|
|
+ Map<Long, List<ProcessNode>> ProcessNodeGroupByParentId,
|
|
|
+ ProcessNode processNode) {
|
|
|
|
|
|
ProcessNodeButton next = next(ProcessNodeGroupByParentId, processNode, ButtonNameEnum.AGREE);
|
|
|
processNodeButtonList.add(next);
|
|
@@ -171,24 +174,38 @@ public class ProcessNodeServiceImpl extends ServiceImpl<ProcessNodeMapper, Proce
|
|
|
* 办理处理
|
|
|
*/
|
|
|
private void handle(List<ProcessNodeButton> processNodeButtonList,
|
|
|
- Map<Long, List<ProcessNode>> ProcessNodeGroupByParentId, ProcessNode processNode) {
|
|
|
+ Map<Long, List<ProcessNode>> ProcessNodeGroupByParentId,
|
|
|
+ ProcessNode processNode) {
|
|
|
|
|
|
ProcessNodeButton next = next(ProcessNodeGroupByParentId, processNode, ButtonNameEnum.complete);
|
|
|
processNodeButtonList.add(next);
|
|
|
}
|
|
|
|
|
|
|
|
|
+ * 跳转上一节点
|
|
|
+ */
|
|
|
+ private ProcessNodeButton previous(Map<Long, List<ProcessNode>> ProcessNodeGroupById,
|
|
|
+ ProcessNode processNode, ButtonNameEnum buttonNameEnum) {
|
|
|
+ ProcessNodeButton processNodeButton = createProcessNodeButton(processNode, buttonNameEnum);
|
|
|
+
|
|
|
+ List<ProcessNode> previousProcessNodeList = ProcessNodeGroupById.get(processNode.getParentId());
|
|
|
+ if (previousProcessNodeList == null || previousProcessNodeList.size() != 1) {
|
|
|
+ throw new ServiceException(String.format(FlowExplainConstant.PREVIOUS_ERROR, processNode.getName()));
|
|
|
+ }
|
|
|
+ processNodeButton.setJumpNodeId(previousProcessNodeList.get(0).getId());
|
|
|
+ return processNodeButton;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
* 跳转下一节点
|
|
|
*/
|
|
|
private ProcessNodeButton next(Map<Long, List<ProcessNode>> ProcessNodeGroupByParentId,
|
|
|
ProcessNode processNode, ButtonNameEnum buttonNameEnum) {
|
|
|
-
|
|
|
ProcessNodeButton processNodeButton = createProcessNodeButton(processNode, buttonNameEnum);
|
|
|
|
|
|
|
|
|
List<ProcessNode> nextProcessNodeList = ProcessNodeGroupByParentId.get(processNode.getId());
|
|
|
-
|
|
|
- if (nextProcessNodeList == null || nextProcessNodeList.size() == 1) {
|
|
|
+ if (nextProcessNodeList == null || nextProcessNodeList.size() != 1) {
|
|
|
throw new ServiceException(String.format(FlowExplainConstant.JUMP_EMPTY, processNode.getName()));
|
|
|
}
|
|
|
|
|
@@ -198,28 +215,6 @@ public class ProcessNodeServiceImpl extends ServiceImpl<ProcessNodeMapper, Proce
|
|
|
} else {
|
|
|
processNodeButton.setJumpNodeId(itemProcessNode.getId());
|
|
|
}
|
|
|
-
|
|
|
- return processNodeButton;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- * 跳转上一节点
|
|
|
- */
|
|
|
- private ProcessNodeButton previous(Map<Long, List<ProcessNode>> ProcessNodeGroupByParentId,
|
|
|
- ProcessNode processNode, ButtonNameEnum buttonNameEnum) {
|
|
|
-
|
|
|
- ProcessNodeButton processNodeButton = createProcessNodeButton(processNode, buttonNameEnum);
|
|
|
-
|
|
|
-
|
|
|
- List<ProcessNode> previousProcessNodeList = ProcessNodeGroupByParentId.get(processNode.getParentId());
|
|
|
-
|
|
|
- if (previousProcessNodeList == null || previousProcessNodeList.size() != 1) {
|
|
|
- throw new ServiceException(String.format(FlowExplainConstant.PREVIOUS_ERROR, processNode.getName()));
|
|
|
- }
|
|
|
-
|
|
|
- processNodeButton.setJumpNodeId(previousProcessNodeList.get(0).getId());
|
|
|
-
|
|
|
return processNodeButton;
|
|
|
}
|
|
|
|
|
@@ -227,9 +222,7 @@ public class ProcessNodeServiceImpl extends ServiceImpl<ProcessNodeMapper, Proce
|
|
|
* 结束流程
|
|
|
*/
|
|
|
private ProcessNodeButton over(ProcessNode processNode, ButtonNameEnum buttonNameEnum) {
|
|
|
-
|
|
|
ProcessNodeButton processNodeButton = createProcessNodeButton(processNode, buttonNameEnum);
|
|
|
-
|
|
|
processNodeButton.setJumpNodeId(FlowConstant.OVER_PROCESS_FLAG);
|
|
|
return processNodeButton;
|
|
|
}
|
|
@@ -239,7 +232,7 @@ public class ProcessNodeServiceImpl extends ServiceImpl<ProcessNodeMapper, Proce
|
|
|
*/
|
|
|
private ProcessNodeButton createProcessNodeButton(ProcessNode processNode, ButtonNameEnum buttonNameEnum) {
|
|
|
ProcessNodeButton processNodeButton = new ProcessNodeButton();
|
|
|
- processNodeButton.setProcessInfoId(processNode.getProcessInfoId());
|
|
|
+ processNodeButton.setProcessTenantId(processNode.getProcessTenantId());
|
|
|
processNodeButton.setProcessNodeId(processNode.getId());
|
|
|
processNodeButton.setProcessNodeCode(processNode.getCode());
|
|
|
processNodeButton.setNameType(buttonNameEnum.getType());
|