lyh
4 天以前 30e775eb9d4b20b6dbb407199f8f4d0729bf7c4e
工作流修改
已修改4个文件
77 ■■■■■ 文件已修改
lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/xml/FlowMyBusinessMapper.xml 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/dto/FlowTaskDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/HisWorkTaskMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/xml/FlowMyBusinessMapper.xml
@@ -41,13 +41,14 @@
            AND ACT_HI_PROCINST.END_TIME_ <= #{flowMyBusinessDto.endTime}
        </if>
        ORDER BY
            flow_my_business.create_time desc
        flow_my_business.create_time desc
    </select>
    <select id="ListMyBusiness" resultType="org.jeecg.modules.flowable.domain.dto.FlowTaskDto">
        SELECT
        fmb.task_id AS 'taskId',
        fmb.process_instance_id AS 'procInsId',
        latest_task.ID_ AS 'taskId',
        latest_task.PROC_INST_ID_ AS 'procInstId',
        latest_task.PROC_DEF_ID_ AS 'processInstanceId',
        ACT_RE_PROCDEF.CATEGORY_ AS 'category',
        ACT_RE_PROCDEF.NAME_ AS 'procDefName',
        fmb.title AS 'Description',
@@ -55,16 +56,14 @@
        fmb.process_definition_key AS 'processDefinitionKey',
        fmb.process_definition_id AS 'processDefinitionId',
        fmb.proposer,
        fmb.todo_users,
        fmb.task_name,
        --         fmb.todo_users,
        --         fmb.task_name,
        latest_task.NAME_ AS taskName,
        fmb.create_time AS createTime,
        latest_task.END_TIME_ AS finishTime
        --         fmb.create_time AS createTime,
        latest_task.END_TIME_ AS finishTime,
        latest_task.TASK_DEF_KEY_ AS taskDefKey
        FROM
        flow_my_business fmb
        LEFT JOIN ACT_RE_PROCDEF ON fmb.process_definition_id = ACT_RE_PROCDEF.ID_
        LEFT JOIN ACT_HI_PROCINST ON fmb.process_instance_id = ACT_HI_PROCINST.ID_
        LEFT JOIN (
        (
        SELECT
        *,
        ROW_NUMBER() OVER (
@@ -80,13 +79,11 @@
            AND END_TIME_ &lt;= #{dto.endTime}
        </if>
        ) latest_task
        ON fmb.process_instance_id = latest_task.PROC_INST_ID_
        AND latest_task.rn = 1
        WHERE
        LEFT JOIN (select DISTINCT process_definition_key, process_definition_id, process_instance_id, title, data_id, proposer from flow_my_business)  fmb ON fmb.process_instance_id = latest_task.PROC_INST_ID_
        LEFT JOIN ACT_RE_PROCDEF ON fmb.process_definition_id = ACT_RE_PROCDEF.ID_
        LEFT JOIN ACT_HI_PROCINST ON fmb.process_instance_id = ACT_HI_PROCINST.ID_
        WHERE latest_task.rn = 1
        <!-- 动态条件统一使用 dto -->
        <if test="dto.currentUser != null and dto.currentUser != ''">
            fmb.done_users like concat('%',#{dto.currentUser},'%')
        </if>
        <if test="dto.category != null and dto.category != ''">
            AND ACT_RE_PROCDEF.CATEGORY_ = #{dto.category}
        </if>
lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/dto/FlowTaskDto.java
@@ -118,4 +118,7 @@
    @ApiModelProperty(value = "当前的节点可以处理的用户名")
    @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
    private String todoUsers;
    @ApiModelProperty("流程发起人名称")
    @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
    private String proposer;
}
lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/mapper/xml/HisWorkTaskMapper.xml
@@ -28,8 +28,7 @@
            SELECT
                p.PROC_INST_ID_ AS procInstId,
                p.BUSINESS_KEY_ AS businessKey,
                p.START_TIME_ AS procStartTime,
                p.END_TIME_ AS procEndTime,
                a.EXECUTION_ID_ AS executionId,
                a.ACT_ID_,
                COALESCE ( a.ACT_NAME_, a.ACT_ID_ ) AS actName,
                a.ACT_TYPE_ AS actType,
@@ -38,10 +37,12 @@
                c.NAME_ AS taskName,
                c.ASSIGNEE_ AS assignee,
                c.DESCRIPTION_ AS description,
-- 使用 LEAD 获取下一个活动信息
                LEAD ( COALESCE ( a.ACT_NAME_, a.ACT_ID_ ) ) OVER ( PARTITION BY p.PROC_INST_ID_ ORDER BY a.START_TIME_ ) AS nextActName,
                LEAD ( a.ACT_TYPE_ ) OVER ( PARTITION BY p.PROC_INST_ID_ ORDER BY a.START_TIME_ ) AS nextActType,
                LEAD ( a.START_TIME_ ) OVER ( PARTITION BY p.PROC_INST_ID_ ORDER BY a.START_TIME_ ) AS nextActStartTime
                LEAD ( COALESCE ( a.ACT_NAME_, a.ACT_ID_ ) ) OVER ( PARTITION BY p.PROC_INST_ID_, a.EXECUTION_ID_
                    ORDER BY a.END_TIME_ ) AS nextActName,
                LEAD ( a.ACT_TYPE_ ) OVER ( PARTITION BY p.PROC_INST_ID_, a.EXECUTION_ID_
                    ORDER BY a.START_TIME_ ) AS nextActType,
                LEAD ( a.START_TIME_ ) OVER ( PARTITION BY p.PROC_INST_ID_, a.EXECUTION_ID_
                    ORDER BY a.START_TIME_ ) AS nextActStartTime
            FROM
                act_hi_procinst p
                    LEFT JOIN act_hi_actinst a ON p.PROC_INST_ID_ = a.PROC_INST_ID_
@@ -52,23 +53,19 @@
        ) SELECT
              procInstId,
              businessKey,
-- 当前活动(userTask)信息
              actName AS userTaskName,
              taskName,
              assignee,
              actStartTime,
              actEndTime,
              description,
-- 下一个活动(sequenceFlow)信息
              nextActName AS sequenceFlowName,
              nextActStartTime AS sequenceFlowStartTime
        FROM
            ActivitySequence
        WHERE
            actType = 'userTask' -- 筛选当前活动为 userTask
          AND nextActType = 'sequenceFlow' -- 且下一个活动为 sequenceFlow
            actType = 'userTask'
          AND nextActType = 'sequenceFlow'
        ORDER BY
            actStartTime;
    </select>
lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java
@@ -1150,28 +1150,6 @@
        String username = iFlowThirdService.getLoginUser().getUsername();
        flowMyBusinessDto.setCurrentUser(username);
        List<FlowTaskDto> list = flowMyBusinessService.ListMyBusiness(flowMyBusinessDto);
        list.forEach(flowTaskDto -> {
            // 流程发起人信息
            HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
                    .processInstanceId(flowTaskDto.getProcInsId())
                    .singleResult();
            if (historicProcessInstance != null) {
                SysUser startUser = iFlowThirdService.getUserByUsername(historicProcessInstance.getStartUserId());
                if (startUser != null) {
                    flowTaskDto.setStartUserId(startUser.getUsername());
                    flowTaskDto.setStartUserName(startUser.getRealname());
                }
                List<String> departNamesByUsername = iFlowThirdService.getDepartNamesByUsername(historicProcessInstance.getStartUserId());
                flowTaskDto.setStartDeptName(CollUtil.join(departNamesByUsername, ","));
                if (flowTaskDto.getTodoUsers() == null) {
                    flowTaskDto.setTodoUsers("");
                } else {
                    //去除[]
                    flowTaskDto.setTodoUsers(flowTaskDto.getTodoUsers().replaceAll("\\[", "").replaceAll("\\]", ""));
                    flowTaskDto.setTodoUsers(flowTaskDto.getTodoUsers().replaceAll("\"", ""));
                }
            }
        });
        IPage<FlowTaskDto> flowTaskDtoIPage = new Page<>();
        flowTaskDtoIPage.setRecords(list);
        flowTaskDtoIPage.setTotal(page.getTotal());