jinlin
2024-01-31 9025b9cf7ec8610003d445a31d93e35e7bd73c2e
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 (StringUtils.isNotBlank(currentStep.getTaskGroup()) && "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());
            }
        }
    }
}