浏览代码

流程更新

zt 7 月之前
父节点
当前提交
9624aed748

+ 18 - 5
pro-base/src/main/java/com/idea/oa/activiti/service/ProActiService.java

@@ -576,6 +576,12 @@ public class ProActiService {
                                         }
 
                                     }
+                                    {
+                                        //判断目标人是否存在,如果存在,再判断该节点是否是串联或串联审核,如果不是就进行查询目标人是否有更高级别角色
+                                        if(targetUser!=null){
+                                            roleType=flowMainService.findUpRoleIfExist(flowMain,targetUser,roleType);
+                                        }
+                                    }
                                     if (targetUser == null) {
 //                                        return null;
                                         System.out.println("1没有找到对应人:" + "if (targetUser == null) {==>" + role + "==>" + ConstantFlowType.ROLETYPE);
@@ -1119,6 +1125,12 @@ public class ProActiService {
                                         }
 
                                     }
+                                    {
+                                        //判断目标人是否存在,如果存在,再判断该节点是否是串联或串联审核,如果不是就进行查询目标人是否有更高级别角色
+                                        if(targetUser!=null){
+                                            roleType=flowMainService.findUpRoleIfExist(flowMain,targetUser,roleType);
+                                        }
+                                    }
                                     if (targetUser == null) {
 //                                        return null;
                                         System.out.println("3没有找到对应人:" + "if (targetUser == null) {");
@@ -1939,14 +1951,15 @@ public class ProActiService {
         { //检查用户除了是部门领导是否还有别的更高的角色职位在这个流程中,如果有就重新设置高的角色放入对象中
             String flowRole = targetUserAndFlowRole.getFlowRole();
             FrameUser targetUser = targetUserAndFlowRole.getFrameUser();
-            String[] onlyFlowFlowStep = targetUserAndFlowRole.getOnlyFlowFlowStep();
+            String[] onlyFlowFlowStep=targetUserAndFlowRole.getOnlyFlowFlowStep();
+            String[] onlyFlowStepAll =   flowMainService.getOnlylowStepAll(flowMain.getFlowType());
             boolean isFlowRole = false;//是否是领导角色
-            if (flowRole != null && targetUser != null&&onlyFlowFlowStep!=null) {
+            if (flowRole != null && targetUser != null&&onlyFlowStepAll!=null) {
                 List<FrameRoleData> FrameRoleDatas = flowMainService.findFrameRoleDatasByUserId(targetUser.getId(), ConstantFlowType.ROLETYPE);//"FLOW"
-                for (int i = onlyFlowFlowStep.length-1; i >=0; i--) {
+                for (int i = onlyFlowStepAll.length-1; i >=0; i--) {
                     for (FrameRoleData frameRoleData : FrameRoleDatas) {
-                        if (onlyFlowFlowStep[i].startsWith("flow_"+frameRoleData.getRoleKey())) {
-                            targetUserAndFlowRole.setFlowRole(onlyFlowFlowStep[i]);
+                        if (onlyFlowStepAll[i].startsWith("flow_"+frameRoleData.getRoleKey())) {
+                            targetUserAndFlowRole.setFlowRole(onlyFlowStepAll[i]);
                             break;
                         }
                     }

+ 1 - 0
pro-base/src/main/java/com/idea/oa/apply/util/constant/ConstantFlowType.java

@@ -25,6 +25,7 @@ public class ConstantFlowType {
     static {
         ConstantFlowType.nodeKeys_Name.put("curr_user", "申请人发起");
         ConstantFlowType.nodeKeys_Name.put("dept_superior", "直接上级审核");
+        ConstantFlowType.nodeKeys_Name.put("flow_cwld", "财务负责人申请");
         ConstantFlowType.nodeKeys_Name.put("dept_head", "部门负责人审核");
         ConstantFlowType.nodeKeys_Name.put("flow_fgld", "分管领导审核");
         ConstantFlowType.nodeKeys_Name.put("flow_sjfgld", "总经理审核");

+ 29 - 1
pro-base/src/main/java/com/idea/oa/flow2/service/FlowMainService.java

@@ -758,7 +758,15 @@ public class FlowMainService implements BaseService<FlowMain, FlowMainExample> {
                                 }
                                 newflowMainPush.setPushUser(task.getAssignee());//推送人id'
                                 newflowMainPush.setPushUserKey(pushUserKey);//推送时彭总给的key值
-                                newflowMainPush.setNodeName(myUserTask.getName());
+                                {
+                                    //找到上个流程节点将数据放进去 (这里还是有漏洞,就是多次返回上个节点会有问题)
+//                                newflowMainPush.setNodeName(myUserTask.getName());
+                                    FlowMainLog upflowMainLog = flowMainLogService.selectByPrimaryKey(flowMainPush.getUpMainLogId());
+                                    newflowMainPush.setNodeUserRole(upflowMainLog.getPushUserKey());
+                                    newflowMainPush.setNodeName(upflowMainLog.getNodeName());
+
+
+                                }
                                 newflowMainPush.setPushType(pushType);//推送类型1单流程推送,2串联推送,3并联推送
                                 newflowMainPush.setPushRole(1);//'推送人身份:1本人审核,2被委托人(代理审核人审核权限)',
                                 newflowMainPush.setFlowType(constantFlowType);
@@ -1927,4 +1935,24 @@ public class FlowMainService implements BaseService<FlowMain, FlowMainExample> {
         }
 
     }
+    //判断目标人是否存在,如果存在,再判断该节点是否是串联或串联审核,如果只是单流程就进行查询目标人是否有更高级别角色
+    public String findUpRoleIfExist(FlowMain flowMain, FrameUser targetUser, String roleType) {
+        String[] roleTypeArray = roleType.split("_");
+        String key_e = roleTypeArray[roleTypeArray.length - 1];
+        if ("1".equals(key_e)) {//1	单流程推送  2	串联审核  3	并联推送
+            List<FrameRoleData> FrameRoleDatas = this.findFrameRoleDatasByUserId(targetUser.getId(), ConstantFlowType.ROLETYPE);//"FLOW"
+            String[] onlyFlowStepAll =   this.getOnlylowStepAll(flowMain.getFlowType());
+            for (int i = onlyFlowStepAll.length-1; i >=0; i--) {
+                for (FrameRoleData frameRoleData : FrameRoleDatas) {
+                    if (onlyFlowStepAll[i].startsWith("flow_"+frameRoleData.getRoleKey())) {
+                        return onlyFlowStepAll[i];
+                    }
+                }
+            }
+
+        }
+//        else{
+            return roleType;
+//        }
+    }
 }