From bbaf9db56d9c622607f9ee7c4fd3ed5dff6bf7c7 Mon Sep 17 00:00:00 2001
From: yuquan.zhu <zhuyuquan@foreveross.com>
Date: Wed, 26 Aug 2020 16:57:58 +0800
Subject: [PATCH] 改审批发起逻辑

---
 src/main/java/cn/timer/api/controller/spmk/SpmkController.java | 57 ++++++++++++++++++++++++++++++++++++++++-----------------
 src/main/java/cn/timer/api/utils/router/RouterUtils.java       | 31 +++++++++++++++++++++++++------
 2 files changed, 65 insertions(+), 23 deletions(-)

diff --git a/src/main/java/cn/timer/api/controller/spmk/SpmkController.java b/src/main/java/cn/timer/api/controller/spmk/SpmkController.java
index dcda66e..57f52ab 100644
--- a/src/main/java/cn/timer/api/controller/spmk/SpmkController.java
+++ b/src/main/java/cn/timer/api/controller/spmk/SpmkController.java
@@ -525,26 +525,30 @@ public class SpmkController {
 			
 			Router router = spmkApproveSummaryDto.getRouter();
 			List<Router> routers = router.getChildren();
+//			routers = RouterUtils.clearRouters(routers);
+			if(routers==null){
+				return ResultUtil.error("无法发起,请完善审批流程");
+			}
 			if (CollectionUtil.isNotEmpty(routers)) {
-				boolean hasAudit=false;
-				if(routers.size()>0){
-					for (Relation relation:routers.get(0).getRelation()) {
-						if(relation.getUsers().size()>0){
-							hasAudit=true;
-						}
-					}
-				}
-//				List<Relation> relations = routers.get(0).getRelation();
-//				if (relations == null || relations.size() < 1) {
-//					return ResultUtil.error("无法发起,请完善审批流程");
+//				boolean hasAudit=false;
+//				if(routers.size()>0){
+//					for (Relation relation:routers.get(0).getRelation()) {
+//						if(relation.getUsers().size()>0){
+//							hasAudit=true;
+//						}
+//					}
 //				}
-//				List<User> users = relations.get(0).getUsers();
-//				if (CollectionUtil.isEmpty(users)) {
-//					return ResultUtil.error("无法发起,请完善审批流程");
+////				List<Relation> relations = routers.get(0).getRelation();
+////				if (relations == null || relations.size() < 1) {
+////					return ResultUtil.error("无法发起,请完善审批流程");
+////				}
+////				List<User> users = relations.get(0).getUsers();
+////				if (CollectionUtil.isEmpty(users)) {
+////					return ResultUtil.error("无法发起,请完善审批流程");
+////				}
+//				if(!hasAudit){
+//					return ResultUtil.error("请选择审批人!");
 //				}
-				if(!hasAudit){
-					return ResultUtil.error("请选择审批人!");
-				}
 			}else {
 				return ResultUtil.error("无法发起,请完善审批流程");
 			}
@@ -560,6 +564,25 @@ public class SpmkController {
 			RouterUtils.NextNode(listRouter, jSONObject, ISFIRST);
 			List<FlowChildren> listFlowChildren = new ArrayList<FlowChildren>();
 			RouterUtils.getIsFlowChildren(listRouter,listFlowChildren);
+
+			if(listFlowChildren.isEmpty()){
+				return ResultUtil.error("无法发起,请完善审批流程");
+			}
+
+		for (FlowChildren flowChildrenItem: listFlowChildren) {
+			if("audit".equals(flowChildrenItem.getClassName())){
+				boolean hasAudit=false;
+				for (Relation relation:flowChildrenItem.getRelation()) {
+					if(relation.getUsers().size()>0){
+						hasAudit=true;
+					}
+				}
+				if(!hasAudit){
+					return ResultUtil.error("审批流程设置审批人为空无法发起!");
+				}
+			}
+		}
+
 			Logoutput("listFlowChildren");
 			
 			// 当前审批人
diff --git a/src/main/java/cn/timer/api/utils/router/RouterUtils.java b/src/main/java/cn/timer/api/utils/router/RouterUtils.java
index 988ae32..386e158 100644
--- a/src/main/java/cn/timer/api/utils/router/RouterUtils.java
+++ b/src/main/java/cn/timer/api/utils/router/RouterUtils.java
@@ -389,12 +389,26 @@ public class RouterUtils {
 			
 			if(router.getRelation() != null) {
 				for (Relation relation : router.getRelation()) {
-					if (relation != null && CollectionUtil.isNotEmpty(relation.getUsers())) {
-						if (router.getFlow()) {
-							FlowChildren fc = FlowChildren.builder().build();
-							BeanUtil.copyProperties(router, fc, "condition","children");
-							listFlowChildren.add(fc);
-							getIsFlowChildren(router.getChildren(), listFlowChildren);
+					if (relation != null) {
+						if(CollectionUtil.isNotEmpty(relation.getUsers())){
+							if (router.getFlow()) {
+								FlowChildren fc = FlowChildren.builder().build();
+								BeanUtil.copyProperties(router, fc, "condition","children");
+								listFlowChildren.add(fc);
+								getIsFlowChildren(router.getChildren(), listFlowChildren);
+							}
+						}else{
+							//无审批人,查询是否跳过或者失败! 0不处理 1指定成员 2自动通过
+							if("executive".equals(relation.getType()) && relation.getEmpty() == 2){
+								getIsFlowChildren(router.getChildren(), listFlowChildren);
+							}else if("executive".equals(relation.getType()) && relation.getEmpty() == 0){
+								FlowChildren fc = FlowChildren.builder().build();
+								BeanUtil.copyProperties(router, fc, "condition","children");
+								listFlowChildren.add(fc);
+								getIsFlowChildren(router.getChildren(), listFlowChildren);
+							}else {
+								//未开发
+							}
 						}
 					}	
 				}
@@ -714,4 +728,9 @@ public class RouterUtils {
 		
 	}
 
+	public static List<Router> clearRouters(List<Router> routers){
+
+		return routers;
+	}
+
 }
--
libgit2 0.26.0