浏览代码

计量-平行审批

qianxb 11 月之前
父节点
当前提交
3ba5e8d0aa

+ 18 - 5
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -2552,7 +2552,7 @@ public class TaskController extends BladeController {
                 checkMiddleApp(dto, task, taskParallels);
             }
             //判断签字状态
-            boolean isCurrentUserLastApprove = checkTheTaskPersonSort(taskParallels);
+            boolean isCurrentUserLastApprove = checkTheTaskPersonSort(taskParallels,task.getFixedFlowId());
 
             /*单条业务数据状态*/
             updateCopyDataStatus(task, dto);
@@ -3061,10 +3061,10 @@ public class TaskController extends BladeController {
     private void check(Task task) {
         String sql_2 = "SELECT * FROM u_task_parallel WHERE process_instance_id = ? ORDER BY sort";
         List<TaskParallel> taskParallels = jdbcTemplate.query(sql_2, new Object[]{task.getProcessInstanceId()}, new BeanPropertyRowMapper<>(TaskParallel.class));
-        checkTheTaskPersonSort(taskParallels);
+        checkTheTaskPersonSort(taskParallels,task.getFixedFlowId());
     }
 
-    private boolean checkTheTaskPersonSort(List<TaskParallel> taskParallels) {
+    private boolean checkTheTaskPersonSort(List<TaskParallel> taskParallels,Long fixedFlowId) {
 
         List<TaskParallel> taskParallelList = BeanUtil.copyProperties(taskParallels, TaskParallel.class);
         /*未完成审批人名称*/
@@ -3079,7 +3079,19 @@ public class TaskController extends BladeController {
             throw new ServiceException("获取当前用户任务信息失败");
         }
         Integer currentSort = current.getSort();
-        taskParallels.removeIf(f -> f.getSort().equals(currentSort) && !f.getTaskUser().equals(SecureUtil.getUserId().toString()));
+        List<Integer> currentFlowAll = new ArrayList<>();
+        if (fixedFlowId != null && fixedFlowId != 0L) {
+            //先查询所有预设流程信息
+            List<FixedFlowLink> flowLinks = jdbcTemplate.query("SELECT * from u_fixed_flow_link WHERE is_deleted = 0 and fixed_flow_id = ? and fixed_flow_link = (SELECT fixed_flow_link from u_fixed_flow_link WHERE fixed_flow_id = ? and fixed_flow_branch_sort = ?)  ",
+                    new Object[]{fixedFlowId,fixedFlowId,currentSort}, new BeanPropertyRowMapper<>(FixedFlowLink.class));
+            //再判断当前流程是否是平行审批
+            if (flowLinks.size() > 1 && flowLinks.get(0).getFixedFlowLinkType() == 2) {
+                //如果是平行审批,则移除相同流程的其他人
+                List<Integer> list = flowLinks.stream().map(FixedFlowLink::getFixedFlowBranchSort).collect(Collectors.toList());
+                taskParallels.removeIf(f -> list.contains(f.getSort()) && !f.getTaskUser().equals(SecureUtil.getUserId().toString()));
+                currentFlowAll = list;
+            }
+        }
 
         /*解析*/
         for (TaskParallel parallel : taskParallels) {
@@ -3100,8 +3112,9 @@ public class TaskController extends BladeController {
         /*判断平行签情况:最后一个人如果为平行签人,那么判断是否还有同sort人员的审批状态*/
         TaskParallel taskParallel_1 = taskParallelList.get(taskParallelList.size() - 1);
         if (taskParallel_1.getTaskUser().equals(SecureUtil.getUserId().toString())) {
+            List<Integer> all = currentFlowAll;
             /*其他人是否已完成,都完成的情况下才视为最终审批人*/
-            List<TaskParallel> collect = taskParallelList.stream().filter(f -> f.getSort().equals(taskParallel_1.getSort()) && !f.getTaskUser().equals(SecureUtil.getUserId().toString())).collect(Collectors.toList());
+            List<TaskParallel> collect = taskParallelList.stream().filter(f -> all.contains(f.getSort()) && !f.getTaskUser().equals(SecureUtil.getUserId().toString())).collect(Collectors.toList());
             /*如果还有待审批(status=1)的,那么非最终审批人;只有全部是已审批(status=2)才视为最终审批人*/
             List<TaskParallel> collect1 = collect.stream().filter(f -> f.getStatus().equals(1)).collect(Collectors.toList());
             if (collect1.size() == 0) {