|
@@ -1,7 +1,6 @@
|
|
|
package com.jy.flow.controller;
|
|
|
|
|
|
|
|
|
-import cn.hutool.core.convert.Convert;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
@@ -11,26 +10,18 @@ import com.jy.flow.model.dto.FlowHisTaskDto;
|
|
|
import com.jy.flow.model.dto.FlowTaskDto;
|
|
|
import com.jy.flow.model.dto.WarmFlowHandleDto;
|
|
|
import com.jy.flow.model.vo.FlowTaskVo;
|
|
|
-import com.jy.flow.model.vo.WarmFlowInteractiveTypeVo;
|
|
|
import com.jy.flow.service.ExecuteService;
|
|
|
-import com.jy.flow.service.HhDefService;
|
|
|
import com.jy.framework.satoken.LoginContext;
|
|
|
import com.jy.system.dao.SysDeptDao;
|
|
|
import com.jy.system.dao.SysRoleDao;
|
|
|
import com.jy.system.dao.SysUserDao;
|
|
|
-import com.jy.system.model.dto.SysUserSelectDto;
|
|
|
-import com.jy.system.model.entity.SysDept;
|
|
|
-import com.jy.system.model.entity.SysRole;
|
|
|
import com.jy.system.model.entity.SysUser;
|
|
|
-import com.jy.system.model.vo.SysUserVo;
|
|
|
import com.warm.flow.core.FlowFactory;
|
|
|
import com.warm.flow.core.dto.FlowParams;
|
|
|
import com.warm.flow.core.entity.HisTask;
|
|
|
import com.warm.flow.core.entity.Instance;
|
|
|
import com.warm.flow.core.entity.Node;
|
|
|
-import com.warm.flow.core.entity.Task;
|
|
|
import com.warm.flow.core.entity.User;
|
|
|
-import com.warm.flow.core.enums.CooperateType;
|
|
|
import com.warm.flow.core.enums.SkipType;
|
|
|
import com.warm.flow.core.enums.UserType;
|
|
|
import com.warm.flow.core.service.HisTaskService;
|
|
@@ -48,13 +39,10 @@ import org.springframework.web.bind.annotation.RequestBody;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.Collections;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
-import java.util.Set;
|
|
|
-import java.util.stream.Collectors;
|
|
|
+import java.util.StringJoiner;
|
|
|
|
|
|
@RestController
|
|
|
@RequestMapping("/flow/execute")
|
|
@@ -87,9 +75,6 @@ public class ExecuteController {
|
|
|
@Resource
|
|
|
private ExecuteService executeService;
|
|
|
|
|
|
- @Resource
|
|
|
- private HhDefService hhDefService;
|
|
|
-
|
|
|
/**
|
|
|
* 分页待办任务列表
|
|
|
*/
|
|
@@ -102,44 +87,50 @@ public class ExecuteController {
|
|
|
List<Long> taskIds = StreamUtils.toList(list, FlowTaskVo::getId);
|
|
|
List<User> userList = flowUserservice.getByAssociateds(taskIds);
|
|
|
Map<Long, List<User>> map = StreamUtils.groupByKey(userList, User::getAssociated);
|
|
|
+
|
|
|
+ HashMap<String, String> handlerMap = new HashMap<>();
|
|
|
+ sysUserDao.list().forEach(item -> handlerMap.put(item.getId().toString(), "用户:" + item.getNickname()));
|
|
|
+ sysRoleDao.list().forEach(item -> handlerMap.put("role:" + item.getId().toString(), "角色:" + item.getName()));
|
|
|
+ sysDeptDao.list().forEach(item -> handlerMap.put("dept:" + item.getId().toString(), "部门:" + item.getName()));
|
|
|
+
|
|
|
for (FlowTaskVo taskVo : list) {
|
|
|
if (ObjectUtil.isNull(taskVo)) {
|
|
|
continue;
|
|
|
}
|
|
|
- List<User> users = map.get(taskVo.getId());
|
|
|
|
|
|
+ List<User> users = map.get(taskVo.getId());
|
|
|
if (ObjectUtil.isEmpty(users)) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
+ StringJoiner approverJoiner = new StringJoiner(";");
|
|
|
+ StringJoiner transferredByJoiner = new StringJoiner(";");
|
|
|
+ StringJoiner delegateJoiner = new StringJoiner(";");
|
|
|
+
|
|
|
for (User user : users) {
|
|
|
+ String processed = handlerMap.get(user.getProcessedBy());
|
|
|
switch (UserType.getByKey(user.getType())) {
|
|
|
case APPROVAL -> {
|
|
|
- if (StrUtil.isEmpty(taskVo.getApprover())) {
|
|
|
- taskVo.setApprover("");
|
|
|
+ if (StrUtil.isNotEmpty(processed)) {
|
|
|
+ approverJoiner.add(processed);
|
|
|
}
|
|
|
- String name = getName(user.getProcessedBy());
|
|
|
- if (StrUtil.isNotEmpty(name))
|
|
|
- taskVo.setApprover(taskVo.getApprover().concat(name).concat(";"));
|
|
|
}
|
|
|
case TRANSFER -> {
|
|
|
- if (StrUtil.isEmpty(taskVo.getTransferredBy())) {
|
|
|
- taskVo.setTransferredBy("");
|
|
|
+ if (StrUtil.isNotEmpty(processed)) {
|
|
|
+ transferredByJoiner.add(processed);
|
|
|
}
|
|
|
- String name = getName(user.getProcessedBy());
|
|
|
- if (StrUtil.isNotEmpty(name))
|
|
|
- taskVo.setTransferredBy(taskVo.getTransferredBy().concat(name).concat(";"));
|
|
|
}
|
|
|
case DEPUTE -> {
|
|
|
- if (StrUtil.isEmpty(taskVo.getDelegate())) {
|
|
|
- taskVo.setDelegate("");
|
|
|
+ if (StrUtil.isNotEmpty(processed)) {
|
|
|
+ delegateJoiner.add(processed);
|
|
|
}
|
|
|
- String name = getName(user.getProcessedBy());
|
|
|
- if (StrUtil.isNotEmpty(name))
|
|
|
- taskVo.setDelegate(taskVo.getDelegate().concat(name).concat(";"));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ taskVo.setApprover(approverJoiner.toString());
|
|
|
+ taskVo.setTransferredBy(transferredByJoiner.toString());
|
|
|
+ taskVo.setDelegate(delegateJoiner.toString());
|
|
|
}
|
|
|
return page;
|
|
|
}
|
|
@@ -149,20 +140,18 @@ public class ExecuteController {
|
|
|
*/
|
|
|
@GetMapping("/donePage")
|
|
|
public Page<FlowHisTask> donePage(FlowHisTaskDto dto) {
|
|
|
- dto.setPermissionList(AbstractWarmFlowAdapter.permissionList());
|
|
|
+ dto.setApprover(LoginContext.getUserId().toString());
|
|
|
Page<FlowHisTask> page = executeService.donePage(dto);
|
|
|
List<FlowHisTask> list = page.getRecords();
|
|
|
Map<Long, String> userMap = StreamUtils.toMap(sysUserDao.list(), SysUser::getId, SysUser::getNickname);
|
|
|
|
|
|
- if (CollectionUtils.isNotEmpty(list)) {
|
|
|
- for (FlowHisTask hisTaskVo : list) {
|
|
|
- if (StrUtil.isNotEmpty(hisTaskVo.getApprover())) {
|
|
|
- String name = getName(hisTaskVo.getApprover());
|
|
|
- hisTaskVo.setApprover(name);
|
|
|
- }
|
|
|
- if (StrUtil.isNotEmpty(hisTaskVo.getCollaborator())) {
|
|
|
- hisTaskVo.setCollaborator(userMap.get(Long.valueOf(hisTaskVo.getCollaborator())));
|
|
|
- }
|
|
|
+ if (CollectionUtils.isEmpty(list)) {
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (FlowHisTask hisTaskVo : list) {
|
|
|
+ if (StrUtil.isNotEmpty(hisTaskVo.getCollaborator())) {
|
|
|
+ hisTaskVo.setCollaborator(userMap.get(Long.valueOf(hisTaskVo.getCollaborator())));
|
|
|
}
|
|
|
}
|
|
|
return page;
|
|
@@ -201,14 +190,6 @@ public class ExecuteController {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 根据taskId查询代表任务
|
|
|
- */
|
|
|
- @GetMapping("/getTaskById/{taskId}")
|
|
|
- public Task getTaskById(@PathVariable("taskId") Long taskId) {
|
|
|
- return taskService.getById(taskId);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
* 查询跳转任意节点列表
|
|
|
*/
|
|
|
@GetMapping("/anyNodeList/{instanceId}")
|
|
@@ -218,67 +199,6 @@ public class ExecuteController {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 处理非办理的流程交互类型
|
|
|
- *
|
|
|
- * @param warmFlowInteractiveTypeVo 要转办用户
|
|
|
- * @return 是否成功
|
|
|
- */
|
|
|
- @PostMapping("/interactiveType")
|
|
|
- public Boolean interactiveType(WarmFlowInteractiveTypeVo warmFlowInteractiveTypeVo) {
|
|
|
- return hhDefService.interactiveType(warmFlowInteractiveTypeVo);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 交互类型可以选择的用户
|
|
|
- *
|
|
|
- * @param vo 交互类型请求类
|
|
|
- * @return 是否成功
|
|
|
- */
|
|
|
- @GetMapping("/interactiveTypeSysUser")
|
|
|
- public Page<SysUserVo> interactiveTypeSysUser(WarmFlowInteractiveTypeVo vo) {
|
|
|
- Integer operatorType = vo.getOperatorType();
|
|
|
- Long taskId = vo.getTaskId();
|
|
|
-
|
|
|
- List<User> users = flowUserservice.listByAssociatedAndTypes(taskId);
|
|
|
- Set<Long> userIdSet = users.stream().map(User::getProcessedBy).map(Convert::toLong).collect(Collectors.toSet());
|
|
|
-
|
|
|
- SysUserSelectDto sysUserSelectDto = new SysUserSelectDto();
|
|
|
- sysUserSelectDto.setDeptId(vo.getDeptId());
|
|
|
- if (!Objects.equals(CooperateType.REDUCTION_SIGNATURE.getKey(), operatorType)) {
|
|
|
- sysUserSelectDto.setNotInUserIdList(userIdSet);
|
|
|
- } else {
|
|
|
- sysUserSelectDto.setInUserIdList(userIdSet);
|
|
|
- sysUserSelectDto.setNotInUserIdList(Collections.singletonList(LoginContext.getUserId()));
|
|
|
- }
|
|
|
-
|
|
|
- return sysUserDao.getPage(sysUserSelectDto);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 激活流程
|
|
|
- */
|
|
|
- @GetMapping("/active/{instanceId}")
|
|
|
- public Boolean active(@PathVariable("instanceId") Long instanceId) {
|
|
|
- return insService.active(instanceId);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 挂起流程
|
|
|
- */
|
|
|
- @GetMapping("/unActive/{instanceId}")
|
|
|
- public Boolean unActive(@PathVariable("instanceId") Long instanceId) {
|
|
|
- return insService.unActive(instanceId);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 根据ID反显姓名
|
|
|
- **/
|
|
|
- @GetMapping(value = "/idReverseDisplayName/{ids}")
|
|
|
- public List<SysUser> idReverseDisplayName(@PathVariable Long[] ids) {
|
|
|
- return sysUserDao.listByIds(Arrays.asList(ids));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
* 办理流程
|
|
|
*/
|
|
|
@PostMapping("/handle")
|
|
@@ -306,41 +226,4 @@ public class ExecuteController {
|
|
|
|
|
|
}
|
|
|
|
|
|
- private String getName(String id) {
|
|
|
- Map<Long, String> userMap = StreamUtils.toMap(sysUserDao.list(), SysUser::getId, SysUser::getNickname);
|
|
|
- Map<Long, String> deptMap = StreamUtils.toMap(sysDeptDao.list(), SysDept::getId, SysDept::getName);
|
|
|
- Map<Long, String> roleMap = StreamUtils.toMap(sysRoleDao.list(), SysRole::getId, SysRole::getName);
|
|
|
-
|
|
|
- if (StrUtil.isNotBlank(id)) {
|
|
|
- if (id.contains("user:")) {
|
|
|
- String name = userMap.get(Long.valueOf(id.replace("user:", "")));
|
|
|
- if (StrUtil.isNotEmpty(name)) {
|
|
|
- return "用户:" + name;
|
|
|
- }
|
|
|
- } else if (id.contains("dept:")) {
|
|
|
- String name = deptMap.get(Long.valueOf(id.replace("dept:", "")));
|
|
|
- if (StrUtil.isNotEmpty(name)) {
|
|
|
- return "部门:" + name;
|
|
|
- }
|
|
|
- } else if (id.contains("role")) {
|
|
|
- String name = roleMap.get(Long.valueOf(id.replace("role:", "")));
|
|
|
- if (StrUtil.isNotEmpty(name)) {
|
|
|
- return "角色:" + name;
|
|
|
- }
|
|
|
- } else {
|
|
|
- try {
|
|
|
- long parseLong = Long.parseLong(id);
|
|
|
- String name = userMap.get(parseLong);
|
|
|
- if (StrUtil.isNotEmpty(name)) {
|
|
|
- return "用户:" + name;
|
|
|
- }
|
|
|
- } catch (NumberFormatException e) {
|
|
|
- return id;
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- return "";
|
|
|
- }
|
|
|
-
|
|
|
}
|