From 3bf10e8081ad4757e9c475c1060d06af81f69b48 Mon Sep 17 00:00:00 2001 From: wgd <862422848@qq.com> Date: Wed, 14 Sep 2022 20:14:01 +0800 Subject: [PATCH] 草稿箱发布审批流程bug --- src/main/java/cn/timer/api/controller/spmk/SpmkController.java | 2 +- src/main/java/cn/timer/api/utils/router/RouterUtils.java | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------- 2 files changed, 61 insertions(+), 58 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 bee5dfd..c761f6f 100644 --- a/src/main/java/cn/timer/api/controller/spmk/SpmkController.java +++ b/src/main/java/cn/timer/api/controller/spmk/SpmkController.java @@ -1249,7 +1249,7 @@ public class SpmkController { .set("initiator", ygglMainEmp.getName()) .set("headUrl", ygglMainEmp.getHeadUrl()) .set("id", userBean.getEmpNum()); - RouterUtils.NextNode(listRouter, jSONObject, ISFIRST); + RouterUtils.NextNode(listRouter, jSONObject, ISFIRST,true); List<FlowChildren> listFlowChildren = new ArrayList<FlowChildren>(); RouterUtils.getIsFlowChildren(listRouter,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 b516e7c..fcaa343 100644 --- a/src/main/java/cn/timer/api/utils/router/RouterUtils.java +++ b/src/main/java/cn/timer/api/utils/router/RouterUtils.java @@ -41,7 +41,7 @@ import cn.timer.api.dto.spmk.User; /** * 流程节点工具类 - * + * * @author Administrator * */ @@ -91,8 +91,8 @@ public class RouterUtils { } // 执行下一个节点 - public static List<Router> NextNode(List<Router> listRouter,JSONObject obj, boolean isFirse, boolean isAuditNext) throws NumberFormatException, ConvertException, Exception { - + public static List<Router> NextNode(List<Router> listRouter,JSONObject obj, boolean isFirse, boolean isAuditNext,boolean... isDrafts) throws NumberFormatException, ConvertException, Exception { + Router router; if (CollectionUtil.isNotEmpty(listRouter)) { // 非条件节点 @@ -110,7 +110,7 @@ public class RouterUtils { Console.log("发起人逻辑"); router.setExecute(EXECUTED); router.setFlow(true); - + List<User> users = new ArrayList<User>(); User userFirst = User.builder() .name(obj.getStr("initiator")) @@ -122,30 +122,30 @@ public class RouterUtils { List<Relation> relations = new ArrayList<Relation>(); Relation relation = Relation.builder().type("user").users(users).build(); relations.add(relation); - + router.setRelation(relations); // router.getRelation().get(0).setName(obj.getStr("initiator")); - + NextNode(router.getChildren(),obj, isFirse, isAuditNext); break; case AUDIT: Console.log("审批人逻辑"); - + router.setFlow(true); Relation r = CollectionUtil.isNotEmpty(router.getRelation()) ? router.getRelation().get(0) : null; // if (r != null && RELATION_TYPE_EXECUTIVE.equals(r.getType())) { // Integer leaderId = selectLeaderEmpNumById( -// obj.getInt("orgCode"), -// obj.getInt("id"), +// obj.getInt("orgCode"), +// obj.getInt("id"), // r.getUpward()); -// +// // if (leaderId != null) { // YgglMainEmp emp = YgglMainEmp.builder().build(); // emp = emp.selectOne(new QueryWrapper<YgglMainEmp>().lambda() // .select(YgglMainEmp::getName, YgglMainEmp::getEmpNum, YgglMainEmp::getHeadUrl) // .eq(YgglMainEmp::getEmpNum, leaderId) // .eq(YgglMainEmp::getOrgCode, obj.getInt("orgCode"))); -// +// // if (emp != null) { // User user = User.builder() // .name(emp.getName()) @@ -153,16 +153,17 @@ public class RouterUtils { // .headUrl(emp.getHeadUrl()) // .execute(EXECUTING) // .build(); -// +// // router.getRelation().get(0).setUsers(ListUtil.toList(user)); // } // } // } - + if (!isAuditNext) { - - router.setExecute(EXECUTING); - + //此处如果是草稿就不需要更改 + if(isDrafts!=null) { + router.setExecute(EXECUTING); + } if(router.getRelation().size() > 0) { // if (r != null && RELATION_TYPE_USERS.equals(r.getType())) { List<User> listUser = router.getRelation().get(0).getUsers(); @@ -175,7 +176,9 @@ public class RouterUtils { } switch (execute) { case UNEXECUTED: - listUser.get(i).setExecute(EXECUTING); + if(isDrafts!=null) { + listUser.get(i).setExecute(EXECUTING); + } // 首次发起申请时,写入 审批人名称 至 obj 中 if (isFirse && obj.getStr("current_approver") == null ) { obj.set("current_approver", listUser.get(i).getName()); @@ -183,18 +186,18 @@ public class RouterUtils { isAuditNext = true; break user; } - + } }else { throw new Exception("发起审批有误"); } - + // } }else { throw new Exception("审批流程配置有误,请联系管理员"); } } - + NextNode(router.getChildren(), obj , isFirse, isAuditNext); break; case COPY: @@ -207,13 +210,13 @@ public class RouterUtils { for (int i = 0; i < listRelations.size(); i++) { // 装配 部门人员 if (RELATION_TYPE_DEPARTMENT.equals(listRelations.get(i).getType()) && listRelations.get(i).getDepartmentId() != null) { - + String asd = listRelations.get(i).getDepartmentId(); asd = asd.replaceAll("\\[", "").replaceAll("\\]", "").replaceAll("\\\"", ""); - + // List<YgglMainEmp> listYgglMainEmp = selectOtherlistent(Integer.parseInt(obj.get("orgCode",FromData.class).getValue().trim()), Integer.valueOf(listRelations.get(i).getDepartmentId().trim())); List<YgglMainEmp> listYgglMainEmp = selectOtherlistent(Integer.parseInt(obj.get("orgCode").toString()), Integer.valueOf(asd)); - + if (listYgglMainEmp != null && listYgglMainEmp.size() > 0) { List<User> listUsers = new ArrayList<User>(); for (YgglMainEmp emp : listYgglMainEmp) { @@ -226,8 +229,8 @@ public class RouterUtils { }else { listRelations.get(i).setUsers(null); } - - + + }else if (RELATION_TYPE_USERS.equals(listRelations.get(i).getType())) { } @@ -257,11 +260,11 @@ public class RouterUtils { break; } } - + if (executeFlog) { router.setExecute(EXECUTED); } - + } NextNode(router.getChildren(),obj , isFirse, isAuditNext); break; @@ -272,7 +275,7 @@ public class RouterUtils { NextNode(router.getChildren(),obj , isFirse, isAuditNext); break; } - + } else { // 条件节点 rulefor: @@ -305,7 +308,7 @@ public class RouterUtils { } } } - + routerRule.setFlow(condition_b); routerRule.setExecute(EXECUTED); if (routerRule.getFlow()) { @@ -319,9 +322,9 @@ public class RouterUtils { } break rulefor; } - + } - + Console.log("最后节点"); } } @@ -329,24 +332,24 @@ public class RouterUtils { return listRouter; }; - + public static Integer selectLeaderEmpNumById(Integer orgCode, Integer id, Integer leave) { YgglMainEmp mainEmp = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().lambda() .select(YgglMainEmp::getBmgwId) .eq(YgglMainEmp::getEmpNum, id) .eq(YgglMainEmp::getOrgCode, orgCode)); Integer gWId = mainEmp != null ? mainEmp.getBmgwId() : null; - + // 企业所有部门岗位 List<ZzglBmgwM> listBM = ZzglBmgwM.builder().build() .selectList(new QueryWrapper<ZzglBmgwM>().lambda().eq(ZzglBmgwM::getOrgCode, orgCode)); - + // 岗位 ZzglBmgwM gW = CollUtil.getFirst(listBM.stream().filter(bM -> bM.getId().equals(gWId)).collect(Collectors.toList())); - + // 岗位id Integer baseBmgwId = gW != null ? gW.getUpId() : null; - + // 指定 主管id Integer leaderId = null; Integer bmgwLeaderId; @@ -357,16 +360,16 @@ public class RouterUtils { leaderId = bmgwLeaderId; } } - + return leaderId; } - + public static ZzglBmgwM getLeaderEmp(List<ZzglBmgwM> listBM, Integer baseBmgwId) { - ZzglBmgwM zzglBmgwM = baseBmgwId != null ? + ZzglBmgwM zzglBmgwM = baseBmgwId != null ? CollUtil.getFirst(listBM.stream().filter(bM -> bM.getId().equals(baseBmgwId)).collect(Collectors.toList())) : null; return zzglBmgwM; } - + public static List<YgglMainEmp> selectOtherlistent(Integer orgCode, Integer id){ ArrayList<Integer> list = new ArrayList<Integer>(); List<ZzglBmgwM> zzglBmgwMs = ZzglBmgwM.builder().build().selectList(new QueryWrapper<ZzglBmgwM>().lambda() @@ -387,13 +390,13 @@ public class RouterUtils { } } - + public static void getIsFlowChildren(List<Router> listRouter, List<FlowChildren> listFlowChildren) { // TODO Auto-generated method stub Router router; if (listRouter != null && listRouter.size() == 1) { router = listRouter.get(0); - + if(router.getRelation() != null) { for (Relation relation : router.getRelation()) { if (relation != null) { @@ -417,7 +420,7 @@ public class RouterUtils { //未开发 } } - } + } } } // Relation relation = CollectionUtil.getFirst(router.getRelation()); @@ -430,10 +433,10 @@ public class RouterUtils { } }; - - - - + + + + // 审批执行记录 持久化 public static void insertogExecuteRecord(List<FlowChildren> listFlowChildren,Integer asId) throws Exception{ @@ -443,7 +446,7 @@ public class RouterUtils { i++; continue; } - + // ClassName 区分参与审批流程人的角色 CREATOR(发起人)、AUDIT(审核人)、COPY(抄送人) // 各个角色的逻辑不同 switch (listFlowChildren.get(i).getClassName()) { @@ -457,7 +460,7 @@ public class RouterUtils { .build(); // 新增 审批执行记录 aer.insert(); - + // 新增 执行人 User user = listFlowChildren.get(i).getRelation().get(0).getUsers().get(0); SpmkExecutor.builder() @@ -548,10 +551,10 @@ public class RouterUtils { aer3.insert(); List<Relation> listRelation = listFlowChildren.get(i).getRelation(); - + for (Relation relation : listRelation) { List<User> listUser2 = relation.getUsers(); - + // 新增 执行人 for (User user2 : listUser2) { SpmkExecutor executor = SpmkExecutor.builder() @@ -568,7 +571,7 @@ public class RouterUtils { } } } - + /** * 审批持久化 * @param listFlowChildren 节点 @@ -748,7 +751,7 @@ public class RouterUtils { } } - + // 无下一个审批人 则更新 节点状态 为 EXECUTED(已执行) if (!hasNextApprover && es<=1) { SpmkApproveExecuteRecord aer = SpmkApproveExecuteRecord @@ -780,7 +783,7 @@ public class RouterUtils { .build(); // 新增 审批执行记录 aer.insert(); - + // 新增 执行人 User user = listFlowChildren.get(i).getRelation().get(0).getUsers().get(0); SpmkExecutor.builder() @@ -791,7 +794,7 @@ public class RouterUtils { .sts(ExecutorSts.AGREE.ordinal()) .build() .insert(); - + listFlowChildren.get(i).setExecute(EXECUTED); break; case AUDIT://审批中 @@ -875,7 +878,7 @@ public class RouterUtils { aer3.insert(); List<Relation> listRelation = listFlowChildren.get(i).getRelation(); - + for (Relation relation : listRelation) { List<User> listUser2 = relation.getUsers(); if (listUser2 != null) { @@ -892,7 +895,7 @@ public class RouterUtils { } } } - + listFlowChildren.get(i).setExecute(EXECUTED); break; } -- libgit2 0.26.0