Parcourir la source

流程问题处理

yzc il y a 11 mois
Parent
commit
447a7bc182

+ 22 - 5
hx-flow/src/main/java/com/fjhx/flow/service/flow/impl/FlowProcessServiceImpl.java

@@ -27,11 +27,13 @@ import com.googlecode.aviator.Expression;
 import com.ruoyi.common.constant.StatusConstant;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.entity.SysUserIdentity;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.service.ISysRoleService;
 import com.ruoyi.system.service.ISysUserIdentityService;
 import com.ruoyi.system.service.ISysUserService;
 import lombok.extern.slf4j.Slf4j;
@@ -41,6 +43,7 @@ import net.sf.jsqlparser.statement.select.Select;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.*;
@@ -79,6 +82,8 @@ public class FlowProcessServiceImpl implements FlowProcessService {
     private ISysUserIdentityService sysUserIdentityService;
     @Autowired
     private FlowExampleCurrentService flowExampleCurrentService;
+    @Resource
+    private ISysRoleService roleService;
 
     @DSTransactional
     @Override
@@ -549,18 +554,28 @@ public class FlowProcessServiceImpl implements FlowProcessService {
     }
 
     private FlowResult transfer(FlowJumpContext context, JumpDto dto) {
+        //生成下一节点信息(复制当前节点)
+        FlowDefinitionNode currentNode = context.getCurrentNode();
+
         List<FlowResult.SelectUser> handleUserList = dto.getSelectUserList();
         if (ObjectUtil.isEmpty(handleUserList)) {
-            List<SysUser> userList = sysUserService.list(Wrappers.<SysUser>query().eq("company_id", SecurityUtils.getCompanyId()));
+            List<SysUser> userList = sysUserService.list(Wrappers.<SysUser>query()
+                    .eq("company_id", SecurityUtils.getCompanyId())
+                    .or().apply("FIND_IN_SET({0}, company_set)", SecurityUtils.getCompanyId())
+            );
+
+            FlowResult.SelectUser selectUser = new FlowResult.SelectUser();
+            selectUser.setNodeId(currentNode.getId());
+            selectUser.setNodeName(currentNode.getNodeName());
+            selectUser.setUserList(userList);
 
             FlowResult flowResult = new FlowResult();
             flowResult.setSuccess(false);
-            flowResult.setUserList(userList);
+            flowResult.setSelectUserList(Collections.singletonList(selectUser));
             return flowResult;
         }
 
-        //生成下一节点信息(复制当前节点)
-        FlowDefinitionNode currentNode = context.getCurrentNode();
+
         // 流程进行中
         context.setFlowStatus(FlowStatusEnum.IN_PROGRESS);
 
@@ -976,7 +991,9 @@ public class FlowProcessServiceImpl implements FlowProcessService {
             case ROLE:
                 List<SysUser> roleUserList = sysUserService.getListByRoleIds(handleObjectIds);
                 if (roleUserList.size() == 0) {
-                    throw new ServiceException("流程节点处理人异常:节点处理角色无用户");
+                    List<SysRole> roleList = roleService.list(Wrappers.<SysRole>query().in("role_id", handleObjectIds));
+                    String roleNames = roleList.stream().map(SysRole::getRoleName).collect(Collectors.joining(","));
+                    throw new ServiceException(StrUtil.format("流程节点处理人异常:节点处理角色【{}】无用户", roleNames));
                 }
                 if (roleUserList.size() == 1) {
                     flowResult.setSuccess(true);