24282 11 months ago
parent
commit
af0e7961e9

+ 32 - 149
jy-flow/src/main/java/com/jy/flow/controller/ExecuteController.java

@@ -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 "";
-    }
-
 }

+ 8 - 10
jy-flow/src/main/java/com/jy/flow/mapper/xml/WarmFLowMapper.xml

@@ -127,19 +127,17 @@
         from ( SELECT MAX(id) as id
         FROM flow_his_task
         <where>
-            <if test="hisTask.permissionList != null and hisTask.permissionList.size > 0">
-                AND approver in
-                <foreach item="permission" collection="hisTask.permissionList" open="(" separator="," close=")">
-                    #{permission}
-                </foreach>
+            node_type = 1
+            AND approver = #{hisTask.approver}
+            <if test="hisTask.nodeCode != null  and hisTask.nodeCode != ''">
+                and node_code = #{hisTask.nodeCode}
             </if>
-            <if test="hisTask.nodeCode != null  and hisTask.nodeCode != ''">and node_code =
-                #{hisTask.nodeCode}
+            <if test="hisTask.nodeName != null  and hisTask.nodeName != ''">
+                and node_name like concat('%', #{hisTask.nodeName}, '%')
             </if>
-            <if test="hisTask.nodeName != null  and hisTask.nodeName != ''">and node_name like concat('%',
-                #{hisTask.nodeName}, '%')
+            <if test="hisTask.instanceId != null ">
+                and instance_id = #{hisTask.instanceId}
             </if>
-            <if test="hisTask.instanceId != null ">and instance_id = #{hisTask.instanceId}</if>
         </where>
         GROUP BY instance_id ) tmp
         LEFT JOIN flow_his_task t ON t.id = tmp.id

+ 0 - 4
jy-ui/src/views/flow/taskDone/index.vue

@@ -76,10 +76,6 @@ const columnConfig: ColumnConfigType[] = [
     label: '节点名称'
   },
   {
-    prop: 'approver',
-    label: '审批人'
-  },
-  {
     prop: 'cooperateType',
     label: '协作类型'
   },