xiangpei
2025-02-14 11e8a8f6e8cc27514447a49606842b890cdadba8
流程日志查询完善
16个文件已修改
1个文件已添加
123 ■■■■■ 已修改文件
business/src/main/java/com/ycl/domain/json/DelegateData.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flowable/src/main/java/com/ycl/domain/vo/ProcessLogVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flowable/src/main/resources/mapper/ProcessLogMapper.xml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/project_management-2月14.sql 补丁 | 查看 | 原始文档 | blame | 历史
system/src/main/java/com/ycl/system/mapper/SysDeptMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system/src/main/java/com/ycl/system/mapper/SysRoleMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system/src/main/java/com/ycl/system/mapper/SysUserMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system/src/main/java/com/ycl/system/service/ISysDeptService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system/src/main/java/com/ycl/system/service/ISysRoleService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system/src/main/java/com/ycl/system/service/ISysUserService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system/src/main/java/com/ycl/system/service/impl/SysRoleServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system/src/main/java/com/ycl/system/service/impl/SysUserServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system/src/main/resources/mapper/system/SysDeptMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system/src/main/resources/mapper/system/SysRoleMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system/src/main/resources/mapper/system/SysUserMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/json/DelegateData.java
@@ -20,6 +20,11 @@
    private List<String> beforeHandlerIds;
    /**
     * è½¬åŠžå‰çš„å¤„ç†äººå§“å
     */
    private List<String> beforeHandlerNames;
    /**
     * è½¬åŠžå‰çš„å¤„ç†äººç±»åž‹
     */
    private HandlerTypeEnum beforeHandlerType;
@@ -30,6 +35,11 @@
    private List<String> afterHandlerIds;
    /**
     * è½¬åŠžåŽçš„å¤„ç†äººå§“å
     */
    private List<String> afterHandlerNames;
    /**
     * è½¬åŠžåŽçš„å¤„ç†äººç±»åž‹
     */
    private HandlerTypeEnum afterHandlerType;
business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java
@@ -5,6 +5,10 @@
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.common.base.Result;
import com.ycl.common.core.domain.entity.SysDept;
import com.ycl.common.core.domain.entity.SysRole;
import com.ycl.common.core.domain.entity.SysUser;
import com.ycl.common.enums.business.HandlerTypeEnum;
import com.ycl.common.enums.business.ProcessLogEventTypeEnum;
import com.ycl.domain.entity.ProcessLog;
import com.ycl.domain.json.DelegateData;
@@ -16,13 +20,18 @@
import com.ycl.framework.utils.PageUtil;
import com.ycl.mapper.ProcessLogMapper;
import com.ycl.service.ProcessLogService;
import com.ycl.system.service.ISysDeptService;
import com.ycl.system.service.ISysRoleService;
import com.ycl.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -36,6 +45,9 @@
public class ProcessLogServiceImpl extends ServiceImpl<ProcessLogMapper, ProcessLog> implements ProcessLogService {
    private final ProcessLogMapper processLogMapper;
    private final ISysUserService userService;
    private final ISysDeptService deptService;
    private final ISysRoleService roleService;
    /**
     * æ·»åŠ æ—¥å¿—
@@ -133,16 +145,52 @@
        list.stream().forEach(log -> {
            if (StringUtils.isNotBlank(log.getEventDataJson())) {
                if (ProcessLogEventTypeEnum.DELEGATE.equals(log.getEventType())) {
                    log.setEventDataObj(JSON.parseObject(log.getEventDataJson(), DelegateData.class));
                    DelegateData delegateData = JSON.parseObject(log.getEventDataJson(), DelegateData.class);
                    // æŸ¥è¯¢è½¬åŠžåŽçš„å¤„ç†äººåç§°
                    List<String> names = new ArrayList<>(2);
                    List<Long> ids = delegateData.getAfterHandlerIds().stream().map(Long::parseLong).collect(Collectors.toList());
                    this.getName(delegateData.getAfterHandlerType(), ids, names);
                    delegateData.setAfterHandlerNames(names);
                    log.setEventDataObj(delegateData);
                } else if (ProcessLogEventTypeEnum.JUMP.equals(log.getEventType())) {
                    log.setEventDataObj(JSON.parseObject(log.getEventDataJson(), JumpData.class));
                } else if (ProcessLogEventTypeEnum.REJECT.equals(log.getEventType())) {
                    log.setEventDataObj(JSON.parseObject(log.getEventDataJson(), RejectData.class));
                } else if (ProcessLogEventTypeEnum.SUPERVISE.equals(log.getEventType())) {
                    log.setEventDataObj(JSON.parseObject(log.getEventDataJson(), SuperviseData.class));
                    SuperviseData superviseData = JSON.parseObject(log.getEventDataJson(), SuperviseData.class);
                    SysUser user = userService.selectUserById(Long.parseLong(superviseData.getSenderId()));
                    if (Objects.nonNull(user)) {
                        superviseData.setSenderName(user.getNickName() + "(" + (Objects.nonNull(user.getDept()) ? user.getDept().getDeptName() : "无部门") + ")");
                    }
                    log.setEventDataObj(superviseData);
                }
            }
        });
        return Result.ok().data(list);
    }
    /**
     * è§£æžæµç¨‹æ—¥å¿—中的数据-名称
     *
     * @param handlerType
     * @param ids
     * @param names
     */
    private void getName(HandlerTypeEnum handlerType, List<Long> ids, List<String> names) {
        if (HandlerTypeEnum.FIX_USER.equals(handlerType)) {
            SysUser user = userService.selectUserById(ids.get(0));
            if (Objects.nonNull(user)) {
                names.add(user.getNickName() + "(" + (Objects.nonNull(user.getDept()) ? user.getDept().getDeptName() : "无部门") + ")");
            }
        } else if (HandlerTypeEnum.USER.equals(handlerType)) {
            List<SysUser> users = userService.selectUserByIds(ids);
            names = users.stream().map(user -> user.getNickName() + "(" + (Objects.nonNull(user.getDept()) ? user.getDept().getDeptName() : "无部门") + ")").collect(Collectors.toList());
        } else if (HandlerTypeEnum.DEPT.equals(handlerType)) {
            List<SysDept> depts = deptService.selectDeptByIds(ids);
            names = depts.stream().map(SysDept::getDeptName).collect(Collectors.toList());
        } else if (HandlerTypeEnum.ROLE.equals(handlerType)) {
            List<SysRole> roles = roleService.selectRoleByIds(ids);
            names = roles.stream().map(SysRole::getRoleName).collect(Collectors.toList());
        }
    }
}
flowable/src/main/java/com/ycl/domain/vo/ProcessLogVO.java
@@ -23,6 +23,9 @@
    @ApiModelProperty("任务id")
    private String taskId;
    @ApiModelProperty("任务名称")
    private String taskName;
    /** äº‹ä»¶æ—¥å¿—类型 */
    @ApiModelProperty("事件日志类型")
    private ProcessLogEventTypeEnum eventType;
flowable/src/main/resources/mapper/ProcessLogMapper.xml
@@ -5,6 +5,7 @@
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.ycl.domain.vo.ProcessLogVO">
        <result column="task_id" property="taskId" />
        <result column="task_name" property="taskName" />
        <result column="event_type" property="eventType" typeHandler="com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler"/>
        <result column="project_id" property="projectId" />
        <result column="process_ins_id" property="processInsId" />
@@ -23,6 +24,7 @@
    <select id="getById" resultMap="BaseResultMap">
        SELECT
            TFL.task_id,
            TFL.task_name,
            TFL.event_type,
            TFL.project_id,
            TFL.process_ins_id,
@@ -39,6 +41,7 @@
    <select id="getPage" resultMap="BaseResultMap">
        SELECT
            TFL.task_id,
            TFL.task_name,
            TFL.event_type,
            TFL.project_id,
            TFL.process_ins_id,
@@ -56,17 +59,19 @@
    <select id="projectProcessLogPage" resultMap="BaseResultMap">
        SELECT
            TFL.task_id,
            TFL.task_name,
            TFL.event_type,
            TFL.project_id,
            TFL.process_ins_id,
            TFL.user_id,
            SU.nick_name,
            CONCAT(SU.nick_name, '(',COALESCE(SD.dept_name, '无部门'), ')') as nick_name,
            TFL.event_data_json,
            TFL.gmt_create,
            TFL.id
        FROM
            t_process_log TFL
                LEFT JOIN sys_user SU ON SU.user_id = TFL.user_id
                LEFT JOIN sys_dept SD ON SU.dept_id = SD.dept_id
        WHERE
            TFL.deleted = 0 AND TFL.project_id = #{query.projectId} AND TFL.process_ins_id = #{query.processInsId}
        ORDER BY
sql/project_management-2ÔÂ14.sql
Binary files differ
system/src/main/java/com/ycl/system/mapper/SysDeptMapper.java
@@ -36,6 +36,8 @@
     */
    public SysDept selectDeptById(Long deptId);
    List<SysDept> selectDeptByIds(List<Long> deptIds);
    /**
     * æ ¹æ®ID查询所有子部门
     *
@@ -117,4 +119,5 @@
    public int deleteDeptById(Long deptId);
    String selectAncestors(Long userId);
}
system/src/main/java/com/ycl/system/mapper/SysRoleMapper.java
@@ -49,6 +49,8 @@
     */
    public SysRole selectRoleById(Long roleId);
    public List<SysRole> selectRoleByIds(List<Long> roleIds);
    /**
     * æ ¹æ®ç”¨æˆ·ID查询角色
     *
system/src/main/java/com/ycl/system/mapper/SysUserMapper.java
@@ -51,6 +51,8 @@
     */
    public SysUser selectUserById(Long userId);
    public List<SysUser> selectUserByIds(List<Long> userIds);
    /**
     * æ–°å¢žç”¨æˆ·ä¿¡æ¯
     *
system/src/main/java/com/ycl/system/service/ISysDeptService.java
@@ -75,6 +75,8 @@
     */
    public SysDept selectDeptById(Long deptId);
    public List<SysDept> selectDeptByIds(List<Long> deptIds);
    /**
     * æ ¹æ®ID查询所有子部门(正常状态)
     *
system/src/main/java/com/ycl/system/service/ISysRoleService.java
@@ -59,6 +59,8 @@
     */
    public SysRole selectRoleById(Long roleId);
    public List<SysRole> selectRoleByIds(List<Long> roleIds);
    /**
     * æ ¡éªŒè§’色名称是否唯一
     * 
system/src/main/java/com/ycl/system/service/ISysUserService.java
@@ -53,6 +53,14 @@
    public SysUser selectUserById(Long userId);
    /**
     * é€šè¿‡ç”¨æˆ·IDs查询用户
     *
     * @param userIds ç”¨æˆ·ID
     * @return ç”¨æˆ·å¯¹è±¡ä¿¡æ¯
     */
    public List<SysUser> selectUserByIds(List<Long> userIds);
    /**
     * æ ¹æ®ç”¨æˆ·ID查询用户所属角色组
     *
     * @param userName ç”¨æˆ·å
system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java
@@ -172,6 +172,11 @@
        return deptMapper.selectDeptById(deptId);
    }
    @Override
    public List<SysDept> selectDeptByIds(List<Long> deptIds) {
        return deptMapper.selectDeptByIds(deptIds);
    }
    /**
     * æ ¹æ®ID查询所有子部门(正常状态)
     *
system/src/main/java/com/ycl/system/service/impl/SysRoleServiceImpl.java
@@ -139,6 +139,11 @@
        return roleMapper.selectRoleById(roleId);
    }
    @Override
    public List<SysRole> selectRoleByIds(List<Long> roleIds) {
        return roleMapper.selectRoleByIds(roleIds);
    }
    /**
     * æ ¡éªŒè§’色名称是否唯一
     * 
system/src/main/java/com/ycl/system/service/impl/SysUserServiceImpl.java
@@ -129,6 +129,11 @@
        return userMapper.selectUserById(userId);
    }
    @Override
    public List<SysUser> selectUserByIds(List<Long> userIds) {
        return userMapper.selectUserByIds(userIds);
    }
    /**
     * æŸ¥è¯¢ç”¨æˆ·æ‰€å±žè§’色组
     *
system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -65,6 +65,13 @@
        where d.dept_id = #{deptId}
    </select>
    <select id="selectDeptByIds" parameterType="Long" resultMap="SysDeptResult">
        select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status,
               (select dept_name from sys_dept where dept_id = d.parent_id) parent_name
        from sys_dept d
        where d.dept_id in <foreach collection="deptIds" open="(" separator="," close=")" item="deptId">#{deptId}</foreach>
    </select>
    <select id="checkDeptExistUser" parameterType="Long" resultType="int">
        select count(1) from sys_user where dept_id = #{deptId} and del_flag = '0'
    </select>
system/src/main/resources/mapper/system/SysRoleMapper.xml
@@ -78,6 +78,11 @@
        where r.role_id = #{roleId}
    </select>
    <select id="selectRoleByIds" parameterType="Long" resultMap="SysRoleResult">
        <include refid="selectRoleVo"/>
        where r.role_id in <foreach collection="roleIds" open="(" separator="," close=")" item="roleId">#{roleId}</foreach>
    </select>
    <select id="selectRolesByUserName" parameterType="String" resultMap="SysRoleResult">
        <include refid="selectRoleVo"/>
        WHERE r.del_flag = '0' and u.user_name = #{userName}
system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -133,6 +133,11 @@
        where u.user_id = #{userId}
    </select>
    <select id="selectUserByIds" parameterType="Long" resultMap="SysUserResult">
        <include refid="selectUserVo"/>
        where u.user_id in <foreach collection="userIds" open="(" separator="," close=")" item="userId">#{userId}</foreach>
    </select>
    <select id="checkUserNameUnique" parameterType="String" resultMap="SysUserResult">
        select user_id, user_name from sys_user where user_name = #{userName} and del_flag = '0' limit 1
    </select>