|
@@ -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);
|