d5503d0cbe5af548541777a179ee39126b209b36..4ed0390da011027b646d907d8b8ad625bb8d4518
2025-03-05 xiangpei
跳过不添加完成的日志
4ed039 对比 | 目录
2025-03-05 xiangpei
任务展示单位名称bug
da8b4d 对比 | 目录
2025-03-05 xiangpei
主公司可以查看、办理子公司的任务
0dc451 对比 | 目录
11个文件已修改
160 ■■■■■ 已修改文件
business/src/main/java/com/ycl/controller/FlowTaskController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/service/IFlowTaskService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flowable/src/main/java/com/ycl/service/common/TaskCommonService.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
start/src/main/java/com/ycl/web/controller/system/SysDeptController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
start/src/main/java/com/ycl/web/controller/system/SysLoginController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system/src/main/java/com/ycl/system/mapper/SysDeptMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system/src/main/java/com/ycl/system/service/ISysDeptService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system/src/main/resources/mapper/system/SysDeptMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/controller/FlowTaskController.java
@@ -109,7 +109,7 @@
    @PostMapping("/complete/form/{taskId}")
    public AjaxResult completeSubmitForm(@ApiParam(value = "流程定义id") @PathVariable(value = "taskId") String taskId,
                            @ApiParam(value = "变量集合,json对象") @RequestBody Map<String, Object> variables) {
        return flowTaskService.completeSubmitForm(taskId, variables);
        return flowTaskService.completeSubmitForm(taskId, variables, Boolean.TRUE);
    }
    @ApiOperation(value = "完成审批任务")
business/src/main/java/com/ycl/service/IFlowTaskService.java
@@ -220,9 +220,10 @@
     *
     * @param taskId  任务id
     * @param variables  表单数据
     * @param addLog
     * @return
     */
    AjaxResult completeSubmitForm(String taskId, Map<String, Object> variables);
    AjaxResult completeSubmitForm(String taskId, Map<String, Object> variables, Boolean addLog);
    /**
     * 查看任务
business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
@@ -24,7 +24,6 @@
import com.ycl.domain.dto.FlowTaskDto;
import com.ycl.domain.dto.FlowViewerDto;
import com.ycl.domain.entity.ProcessCoding;
import com.ycl.domain.entity.ProcessLog;
import com.ycl.domain.entity.ProjectProcess;
import com.ycl.domain.entity.SysForm;
import com.ycl.domain.json.RejectData;
@@ -76,7 +75,6 @@
import java.io.InputStream;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@@ -137,11 +135,12 @@
     *
     * @param taskId    任务id
     * @param variables 表单数据
     * @param addLog
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult completeSubmitForm(String taskId, Map<String, Object> variables) {
    public AjaxResult completeSubmitForm(String taskId, Map<String, Object> variables, Boolean addLog) {
        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
        if (Objects.isNull(task)) {
            return AjaxResult.error("任务不存在");
@@ -175,15 +174,17 @@
            taskService.complete(taskId, newV);
        }
        // 保存日志
        publisher.publishEvent(new TaskLogEvent(this, null,
                SecurityUtils.getUserId(),
                projectProcess.getProjectId(),
                projectProcess.getProcessInsId(),
                taskId,
                task.getTaskDefinitionKey(),
                task.getName(),
                ProcessLogEventTypeEnum.FINISHED,
                null));
        if (addLog) {
            publisher.publishEvent(new TaskLogEvent(this, null,
                    SecurityUtils.getUserId(),
                    projectProcess.getProjectId(),
                    projectProcess.getProcessInsId(),
                    taskId,
                    task.getTaskDefinitionKey(),
                    task.getName(),
                    ProcessLogEventTypeEnum.FINISHED,
                    null));
        }
        return AjaxResult.success("提交成功");
    }
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -3,7 +3,6 @@
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
@@ -738,7 +737,7 @@
                }
            }
            // 完成任务
            flowTaskService.completeSubmitForm(form.getTaskId(), data);
            flowTaskService.completeSubmitForm(form.getTaskId(), data, Boolean.FALSE);
        }
        return Result.ok("操作成功");
    }
@@ -1008,11 +1007,11 @@
                        vo.setHandlerType(HandlerTypeEnum.USER);
                        SysUser sysUser = sysUserService.selectUserById(Long.parseLong(userTask.getAssignee()));
                        if (Objects.nonNull(sysUser)) {
                            handlerIds.add(sysUser.getUserId());
                            handlerNames.add(this.getUserShowName(sysUser));
                            vo.getHandlerId().add(sysUser.getUserId());
                            vo.getHandlerName().add(this.getUserShowName(sysUser));
                            if (Objects.nonNull(sysUser.getDept())) {
                                handlerUnitIds.add(sysUser.getDept().getDeptId());
                                handlerUnitNames.add(sysUser.getDept().getDeptName());
                                vo.getHandlerUnitId().add(sysUser.getDept().getDeptId());
                                vo.getHandlerUnitName().add(sysUser.getDept().getDeptName());
                            }
                        }
                    } else if (CollectionUtil.isNotEmpty(userTask.getCandidateGroups())) {
@@ -1029,17 +1028,17 @@
                                    // 部门
                                    SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1]));
                                    if (Objects.nonNull(dept)) {
                                        handlerUnitIds.add(dept.getDeptId());
                                        handlerUnitNames.add(dept.getDeptName());
                                        handlerNames.add(this.getDeptLeaderShowName(dept));
                                        vo.getHandlerUnitId().add(dept.getDeptId());
                                        vo.getHandlerUnitName().add(dept.getDeptName());
                                        vo.getHandlerName().add(this.getDeptLeaderShowName(dept));
                                    }
                                }
                            } else {
                                vo.setHandlerType(HandlerTypeEnum.ROLE);
                                SysRole role = sysRoleService.selectRoleById(Long.parseLong(groupId));
                                if (Objects.nonNull(role)) {
                                    handlerUnitIds.add(role.getRoleId());
                                    handlerUnitNames.add(role.getRoleName());
                                    vo.getHandlerUnitId().add(role.getRoleId());
                                    vo.getHandlerUnitName().add(role.getRoleName());
                                }
                            }
                        }
@@ -1057,16 +1056,15 @@
                        long handlerUserId = Long.parseLong(historicTasks.get(0).getAssignee());
                        SysUser handlerUser = sysUserService.selectUserById(handlerUserId);
                        if (Objects.nonNull(handlerUser)) {
                            handlerIds.add(handlerUserId);
                            handlerNames.add(this.getUserShowName(handlerUser));
                            vo.getHandlerId().add(handlerUserId);
                            vo.getHandlerName().add(this.getUserShowName(handlerUser));
                            if (Objects.nonNull(handlerUser.getDept())) {
                                handlerUnitNames.add(handlerUser.getDept().getDeptName());
                                handlerUnitIds.add(handlerUser.getDept().getDeptId());
                                vo.getHandlerUnitName().add(handlerUser.getDept().getDeptName());
                                vo.getHandlerUnitId().add(handlerUser.getDept().getDeptId());
                            }
                        }
                    }
                    vo.setTaskDefinitionKey(historicTasks.get(0).getTaskDefinitionKey());
                    this.setPromoterAndHandler(vo, historicTasks.get(0).getIdentityLinks());
                }
            } else {
                vo.setTaskStatus(TaskStatusEnum.TODO);
@@ -1411,9 +1409,12 @@
                if (Objects.nonNull(handlerUser)) {
                    vo.getHandlerId().add(handlerUserId);
                    vo.getHandlerName().add(this.getUserShowName(handlerUser));
                    if (Objects.nonNull(handlerUser.getDept())) {
                        vo.getHandlerUnitId().add(handlerUser.getDept().getDeptId());
                        vo.getHandlerUnitName().add(handlerUser.getDept().getDeptName());
                    }
                }
                vo.setTaskDefinitionKey(hisTask.getTaskDefinitionKey());
                this.setPromoterAndHandler(vo, hisTask.getIdentityLinks());
            }
            this.distinctVo(vo);
@@ -1948,17 +1949,6 @@
     * @param identityLinkInfos 如果是已完成的任务,用这个去取关联的用户/用户组
     */
    private void setPromoterAndHandler(CustomerTaskVO taskVO, List<? extends IdentityLinkInfo> identityLinkInfos) {
//        this.setPromoterInfo(taskVO);
        // 一个任务可能有多个候选人/组,所以需要使用list
        List<Long> handlerIds = new ArrayList<>(2);
        List<String> handlerNames = new ArrayList<>(2);
        List<Long> handlerUnitIds = new ArrayList<>(2);
        List<String> handlerUnitNames = new ArrayList<>(2);
        taskVO.setHandlerId(handlerIds);
        taskVO.setHandlerName(handlerNames);
        taskVO.setHandlerUnitId(handlerUnitIds);
        taskVO.setHandlerUnitName(handlerUnitNames);
        // 流程处理人信息
        if (TaskStatusEnum.TODO.equals(taskVO.getTaskStatus())) {
@@ -1972,11 +1962,11 @@
                    SysUser sysUser = sysUserService.selectUserById(Long.parseLong(identityLink.getUserId()));
                    if (Objects.nonNull(sysUser)) {
                        taskVO.setHandlerType(HandlerTypeEnum.USER);
                        handlerIds.add(sysUser.getUserId());
                        handlerNames.add(this.getUserShowName(sysUser));
                        taskVO.getHandlerId().add(sysUser.getUserId());
                        taskVO.getHandlerName().add(this.getUserShowName(sysUser));
                        if (Objects.nonNull(sysUser.getDept())) {
                            handlerUnitIds.add(sysUser.getDept().getDeptId());
                            handlerUnitNames.add(sysUser.getDept().getDeptName());
                            taskVO.getHandlerUnitId().add(sysUser.getDept().getDeptId());
                            taskVO.getHandlerUnitName().add(sysUser.getDept().getDeptName());
                        }
                    }
                    // 绑定的是角色或者是部门,需要根据id判断
@@ -1988,16 +1978,16 @@
                            // 部门
                            SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1]));
                            if (Objects.nonNull(dept)) {
                                handlerUnitIds.add(dept.getDeptId());
                                handlerUnitNames.add(dept.getDeptName());
                                taskVO.getHandlerUnitId().add(dept.getDeptId());
                                taskVO.getHandlerUnitName().add(dept.getDeptName());
                            }
                        }
                    } else {
                        taskVO.setHandlerType(HandlerTypeEnum.ROLE);
                        SysRole role = sysRoleService.selectRoleById(Long.parseLong(identityLink.getGroupId()));
                        if (Objects.nonNull(role)) {
                            handlerUnitIds.add(role.getRoleId());
                            handlerUnitNames.add(role.getRoleName());
                            taskVO.getHandlerUnitId().add(role.getRoleId());
                            taskVO.getHandlerUnitName().add(role.getRoleName());
                        }
                    }
                }
@@ -2009,11 +1999,11 @@
                    taskVO.setHandlerType(HandlerTypeEnum.USER);
                    SysUser sysUser = sysUserService.selectUserById(Long.parseLong(identityLink.getUserId()));
                    if (Objects.nonNull(sysUser)) {
                        handlerIds.add(sysUser.getUserId());
                        handlerNames.add(this.getUserShowName(sysUser));
                        taskVO.getHandlerId().add(sysUser.getUserId());
                        taskVO.getHandlerName().add(this.getUserShowName(sysUser));
                        if (Objects.nonNull(sysUser.getDept())) {
                            handlerUnitIds.add(sysUser.getDept().getDeptId());
                            handlerUnitNames.add(sysUser.getDept().getDeptName());
                            taskVO.getHandlerUnitId().add(sysUser.getDept().getDeptId());
                            taskVO.getHandlerUnitName().add(sysUser.getDept().getDeptName());
                        }
                    }
                    // 绑定的是角色,查出角色名称
@@ -2025,16 +2015,16 @@
                            // 部门
                            SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1]));
                            if (Objects.nonNull(dept)) {
                                handlerUnitIds.add(dept.getDeptId());
                                handlerUnitNames.add(dept.getDeptName());
                                taskVO.getHandlerUnitId().add(dept.getDeptId());
                                taskVO.getHandlerUnitName().add(dept.getDeptName());
                            }
                        }
                    } else {
                        taskVO.setHandlerType(HandlerTypeEnum.ROLE);
                        SysRole role = sysRoleService.selectRoleById(Long.parseLong(identityLink.getGroupId()));
                        if (Objects.nonNull(role)) {
                            handlerUnitIds.add(role.getRoleId());
                            handlerUnitNames.add(role.getRoleName());
                            taskVO.getHandlerUnitId().add(role.getRoleId());
                            taskVO.getHandlerUnitName().add(role.getRoleName());
                        }
                    }
                }
flowable/src/main/java/com/ycl/service/common/TaskCommonService.java
@@ -11,6 +11,7 @@
import com.ycl.domain.vo.FormDetailVO;
import com.ycl.flow.FindNextNodeUtil;
import com.ycl.service.ISysFormService;
import com.ycl.system.service.ISysDeptService;
import com.ycl.system.service.ISysDictDataService;
import com.ycl.system.service.ISysDictTypeService;
import com.ycl.system.service.ISysUserService;
@@ -47,6 +48,7 @@
    private final TaskService taskService;
    private final HistoryService historyService;
    private final ISysUserService sysUserService;
    private final ISysDeptService deptService;
    private final ISysDictTypeService sysDictDService;
    /**
@@ -321,14 +323,17 @@
     * @return
     */
    public List<String> getCurrentUserGroups() {
        String deptId = "dept:" + SecurityUtils.getLoginUser().getDeptId();
        List<String> roleIds;
        if (CollectionUtils.isEmpty(SecurityUtils.getLoginUser().getUser().getRoles())) {
            roleIds = new ArrayList<>(1);
        } else {
            roleIds = SecurityUtils.getLoginUser().getUser().getRoles().stream().map(role -> role.getRoleId() + "").collect(Collectors.toList());
        }
        roleIds.add(deptId);
        if (Objects.nonNull(SecurityUtils.getLoginUser().getDeptId())) {
            List<Long> deptIds = deptService.getChildIds(SecurityUtils.getLoginUser().getDeptId());
            List<String> deptIdList = deptIds.stream().map(id -> "dept:" + id).collect(Collectors.toList());
            roleIds.addAll(deptIdList);
        }
        return roleIds;
    }
start/src/main/java/com/ycl/web/controller/system/SysDeptController.java
@@ -154,4 +154,5 @@
        dept.setParentId(approvalPortId);
        return Result.ok().data(deptService.selectDeptListNoAuth(dept));
    }
}
start/src/main/java/com/ycl/web/controller/system/SysLoginController.java
@@ -1,8 +1,10 @@
package com.ycl.web.controller.system;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import com.ycl.system.service.ISysDeptService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -33,6 +35,8 @@
    private final ISysMenuService menuService;
    private final SysPermissionService permissionService;
    private final ISysDeptService deptService;
    /**
     * 登录方法
@@ -66,6 +70,11 @@
        ajax.put("user", user);
        ajax.put("roles", roles);
        ajax.put("permissions", permissions);
        // 获取当前登陆人的当前部门及下级所有部门
        if (Objects.nonNull(user.getDept())) {
            List<Long> deptIds = deptService.getChildIds(user.getDept().getDeptId());
            ajax.put("childDeptList", deptIds);
        }
        return ajax;
    }
system/src/main/java/com/ycl/system/mapper/SysDeptMapper.java
@@ -124,4 +124,11 @@
    Long selectByName(@Param("name") String projectOwnerUnit);
    /**
     * 获取某部门的子部门
     * @param deptId
     * @return
     */
    List<Long> getChildIds(@Param("deptId") Long deptId);
}
system/src/main/java/com/ycl/system/service/ISysDeptService.java
@@ -160,4 +160,12 @@
     * @return
     */
    List<StringTreeSelect> flowableAll();
    /**
     * 获取某部门的下级部门
     *
     * @param deptId
     * @return
     */
    List<Long> getChildIds(Long deptId);
}
system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java
@@ -427,4 +427,8 @@
    }
    @Override
    public List<Long> getChildIds(Long deptId) {
        return deptMapper.getChildIds(deptId);
    }
}
system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -116,6 +116,20 @@
        SELECT dept_id FROM sys_dept WHERE dept_name = #{name} and del_flag = '0' limit 1
    </select>
    <select id="getChildIds" parameterType="long" resultType="long">
        WITH RECURSIVE temp_table AS (
            SELECT
                dept_id FROM sys_dept WHERE dept_id = #{deptId} AND del_flag = '0'
            UNION ALL
            SELECT
                so.dept_id FROM sys_dept so INNER JOIN temp_table tb ON so.parent_id = tb.dept_id AND so.del_flag = '0'
        )
        SELECT
            dept_id
        FROM
            temp_table
    </select>
    <insert id="insertDept" parameterType="SysDept">
         insert into sys_dept(
             <if test="deptId != null and deptId != 0">dept_id,</if>