From cdf29a8f6fb9990f82ccc1d3f47bfba48cfaf4fc Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期三, 10 一月 2024 17:24:53 +0800
Subject: [PATCH] 修改

---
 zt/core/src/main/java/com/zt/modules/workflow/service/WorkflowService.java |   84 ++++++++++++++++++++++++++++++------------
 1 files changed, 60 insertions(+), 24 deletions(-)

diff --git a/zt/core/src/main/java/com/zt/modules/workflow/service/WorkflowService.java b/zt/core/src/main/java/com/zt/modules/workflow/service/WorkflowService.java
index 6151833..852f7ef 100644
--- a/zt/core/src/main/java/com/zt/modules/workflow/service/WorkflowService.java
+++ b/zt/core/src/main/java/com/zt/modules/workflow/service/WorkflowService.java
@@ -5,6 +5,9 @@
 package com.zt.modules.workflow.service;
 
 import cn.hutool.core.convert.Convert;
+import com.zt.common.entity.BaseEntity;
+import com.zt.common.entity.BusiEntity;
+import com.zt.common.entity.FlowInfo;
 import com.zt.common.service.BaseService;
 import com.zt.common.utils.UUIDUtil;
 import com.zt.core.context.UserContext;
@@ -27,6 +30,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 宸ヤ綔娴佹湇鍔�
@@ -290,36 +294,15 @@
         taskParamDto.setBizInfoDto(bizInfoDto);
 
         if (finallyStep.getStepNo() > currentStep.getStepNo()) {
-            String roleIds = currentStep.getApproverRoleIds();
-            if (!StringUtils.isBlank(roleIds)) {
-                roleIds = roleIds.replace(",,", ",");
-                roleIds = roleIds.replace(",,", ",");
-            }
-            if (StringUtils.isBlank(roleIds)) {
-                throw new RuntimeException("娌℃湁璁剧疆涓嬩竴姝ユ祦绋嬭鑹诧紒");
-            }
 
             Integer isSelfDept = currentStep.getIsSelfDept();
-            String[] roleIdArr = roleIds.split(",");
-            if (isSelfDept > 0 && bizInfoList.size() > 0) {
-                deptIds = bizInfoList.get(0).getDeptIds();
+            if (isSelfDept > 0 && bizInfoDto!=null) {
+                deptIds = bizInfoDto.getDeptIds();
             }
             if (isSelfDept == 0)
                 deptIds = null;
 
-            String zyIds = null;
             String bizGroupId = bizInfoList.get(0).getBizId();
-            if (!StringUtils.isBlank(currentStep.getTaskGroup())
-                    && !StringUtils.isBlank(currentStep.getTaskGroupSql())) {
-                sqlStr = currentStep.getTaskGroupSql();
-                sqlStr = sqlStr.replace("${bizId}", bizId.toString());
-                sqlStr = sqlStr.replace("${bizGroupId}", bizGroupId);
-                List<BizInfoDto> bizInfoList2 = baseDao.getSqlResult(sqlStr);
-                if ("cj".equals(currentStep.getTaskGroup()))
-                    deptIds = bizInfoList2.get(0).getId();
-                if ("zy".equals(currentStep.getTaskGroup()))
-                    zyIds = bizInfoList2.get(0).getId();
-            }
             if ("br".equals(currentStep.getTaskGroup())) {
                 List<SysUser> listUser = baseDao.getAssignUser(wfDef.getCode(), currentStep.getStepMarker(), bizId);
                 for (SysUser user : listUser) {
@@ -331,6 +314,36 @@
                     taskParamDto.setGroupId2(user.getId());
                     insertFlowTaskData(taskParamDto);
                 }
+            }
+            else if (currentStep.getTaskGroup() !=null && "pall,zrr,csr,shr,pzr".contains(currentStep.getTaskGroup())) {
+                String userList = null;
+                if ("zrr".equals(currentStep.getTaskGroup())){
+                    userList = bizInfoDto.getZrr();
+                }
+                if ("csr".equals(currentStep.getTaskGroup())){
+                    userList = bizInfoDto.getCsr();
+                }
+                if ("shr".equals(currentStep.getTaskGroup())){
+                    userList = bizInfoDto.getShr();
+                }
+                if ("pzr".equals(currentStep.getTaskGroup())){
+                    userList = bizInfoDto.getPzr();
+                }
+                if ("pall".equals(currentStep.getTaskGroup())){
+                    userList = bizInfoDto.getPall();
+                }
+                if (userList != null) {
+                    String[] userArr = userList.split(",");
+                    Long groupId2 = UUIDUtil.generateId();
+                    for (String userStr : userArr) {
+                        Long userId = Convert.toLong(userStr);
+                        SysUser user = baseDao.getUserById(userId);
+                        existsUsers.put(userId, "");
+                        taskParamDto.setUser(user);
+                        taskParamDto.setGroupId2(groupId2);
+                        insertFlowTaskData(taskParamDto);
+                    }
+                }
             } else if ("sqr".equals(currentStep.getTaskGroup())) {
                 SysUser user = baseDao.getUserById(bizInfoList.get(0).getApplyUserId());
                 existsUsers.put(user.getId(), "");
@@ -338,8 +351,15 @@
                 taskParamDto.setGroupId2(user.getId());
                 insertFlowTaskData(taskParamDto);
             } else {
+                String roleIds = currentStep.getApproverRoleIds();
+                if (StringUtils.isBlank(roleIds)) {
+                    throw new RuntimeException("娌℃湁璁剧疆涓嬩竴姝ユ祦绋嬭鑹诧紒");
+                }
+                String[] roleIdArr = roleIds.split(",");
                 for (String roleId : roleIdArr) {
-                    List<SysUser> listUser = baseDao.getTaskUser(roleId, deptIds, zyIds);
+                    if (StringUtils.isBlank(roleId))
+                        continue;
+                    List<SysUser> listUser = baseDao.getTaskUser(roleId, deptIds);
                     for (SysUser user : listUser) {
                         if (existsUsers.containsKey(user.getId())) {
                             continue;
@@ -1021,4 +1041,20 @@
     public void deleteFlowStep(String wfIdCode, String stepIdMark, Long bizId){
         baseDao.deleteFlowStep(wfIdCode,stepIdMark,bizId);
     }
+
+    public void getRunFlow(List<? extends BusiEntity> dataList, String flowCode) {
+        List<Long> ids = dataList.stream().map(f -> f.getId()).collect(Collectors.toList());
+        Map<String, Object> params = new HashMap<String, Object>();
+        params.put("bizIds", ids);
+        params.put("flowCode", flowCode);
+        List<FlowInfo> list = baseDao.getRunFlow(params);
+        for (BaseEntity item : dataList) {
+            List<FlowInfo> list2 = list.stream().filter(item2->item2.getBizId().equals(item.getId())).collect(Collectors.toList());
+            if (list2.size()>0) {
+                item.setFlowInfo(list2.get(0));
+            }else{
+                item.setFlowInfo(new FlowInfo());
+            }
+        }
+    }
 }

--
Gitblit v1.9.1