待办当前用户信息查询

This commit is contained in:
黎润豪 2026-03-04 17:39:52 +08:00
parent 12dd783147
commit 7491080bc9
3 changed files with 96 additions and 62 deletions

View File

@ -102,6 +102,13 @@ public interface TSTaskListMapper extends BaseMapper<TSTaskList> {
*/
IPage<TaskListUnionDto> selectFinishUnionTaskPage(IPage<TaskListUnionDto> page, @Param("taskList") TaskListUnionDto taskListUnionParam, @Param("customParamMap") Map<String, Object> customParamMap);
/**
* 查询执行中的用户id
* @param workFlowId 工作流id
* @return 执行中的用户
*/
TaskListUnionDto selectCurrentExecUserInfo(@Param("workFlowId") String workFlowId);
List<TaskListUnionDto> searchUnionTaskList(@Param("bustype") String yclrStr, @Param("userId") String userId);
List<TaskListUnionDto> searchUnionTaskToday(@Param("userId") String userId);

View File

@ -39,17 +39,19 @@ import com.chinaweal.aiccs.door.service.ITUserportalService;
import com.chinaweal.aiccs.org.entity.OrgUnits;
import com.chinaweal.aiccs.org.mapper.AicorgMapper;
import com.chinaweal.aiccs.org.mapper.TUsersMapper;
import com.chinaweal.aiccs.org.service.AicorgService;
import com.chinaweal.aicorg.model.AICUser;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.BaseServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.stream.Collectors;
/**
@ -103,6 +105,8 @@ public class TSTaskListServiceImpl extends BaseServiceImpl<TSTaskListMapper, TST
private TSBizRemListService tsBizRemListService;
@Resource
private TSBizRemListMapper tsBizRemListMapper;
@Autowired
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
/**
@ -241,7 +245,24 @@ public class TSTaskListServiceImpl extends BaseServiceImpl<TSTaskListMapper, TST
@Override
public IPage<TaskListUnionDto> searchFinishTaskUnionPage(IPage<TaskListUnionDto> page, TaskListUnionDto taskListUnionParam, Map<String, Object> customParamMap) {
return baseMapper.selectFinishUnionTaskPage(page, taskListUnionParam, customParamMap);
IPage<TaskListUnionDto> taskListUnionDtoIPage = baseMapper.selectFinishUnionTaskPage(page, taskListUnionParam, customParamMap);
List<Future<?>> futureList = new ArrayList<>();
for (TaskListUnionDto each : taskListUnionDtoIPage.getRecords()) {
futureList.add(threadPoolTaskExecutor.submit(() -> {
TaskListUnionDto taskListUnionDto = baseMapper.selectCurrentExecUserInfo(each.getWorkflowid());
each.setCurruserid(taskListUnionDto.getCurruserid());
each.setCurrusername(taskListUnionDto.getCurrusername());
each.setOrgunitid(taskListUnionDto.getOrgunitid());
each.setOrgunitname(taskListUnionDto.getOrgunitname());
}));
}
for (Future<?> each : futureList) {
try {
each.get();
} catch (InterruptedException | ExecutionException e) {
}
}
return taskListUnionDtoIPage;
}
@Override

View File

@ -564,17 +564,31 @@
</if>
AND n.status = '0'
</select>
<select id="selectCurrentExecUserInfo" resultMap="TaskListUnionMap">
SELECT
tu.USERID CURRUSERID,
tu.REALNAME CURRUSERNAME,
torg.ORGUNITID ORGUNITID,
torg.ORGUNITNAME ORGUNITNAME
FROM CXAICORG.T_USERS tu LEFT JOIN CXAICORG.T_ORGUNITS torg ON tu.ORGUNITID = torg.ORGUNITID
WHERE
tu.USERID = (
SELECT
n.HANDLERID
FROM
TSOPINION n
WHERE
tu.USERID = n.HANDLERID AND n.WORKFLOWID = #{workFlowId}
ORDER BY n.OPINIONTYPE DESC LIMIT 1)
</select>
<select id="selectFinishUnionTaskPage" resultMap="TaskListUnionMap">
SELECT *
from(
<choose>
<when test="customParamMap.finished != null and customParamMap.finished != '' ">
(select DISTINCT ta.TASKLISTID, ta.WORKFLOWID, ta.BIZSEQID, ta.SIGNUSERID, ta.SENDERORGID, ta.SENDERUSERID, ta.SENDTOORGID, ta.ACCEPTNO, ta.BUSNAME, ta.SIGNTIME,ta.BUSTYPE, ta.BUSSTATUS, ta.LINKNAME, ta.AUDITDEPTTYPE, ta.ISSIGNON,ta.SIGNLOGINNAME, ta.SENDERTIME, ta.SENDERNAME, ta.ACCEPTGROUPID, ta.AREA_CODE, ta.LAUPTIME , n.currentNode as currentNodeOrBizStatus,SUBSTR(n.NODEFLOW, 1, INSTR(n.NODEFLOW, '_') - 1) as lastNode, ta.CREATETIME,
n.CURRUSERID CURRUSERID, tu1.REALNAME CURRUSERNAME, torg1.ORGUNITID ORGUNITID, torg1.ORGUNITNAME ORGUNITNAME
(select DISTINCT ta.TASKLISTID, ta.WORKFLOWID, ta.BIZSEQID, ta.SIGNUSERID, ta.SENDERORGID, ta.SENDERUSERID, ta.SENDTOORGID, ta.ACCEPTNO, ta.BUSNAME, ta.SIGNTIME,ta.BUSTYPE, ta.BUSSTATUS, ta.LINKNAME, ta.AUDITDEPTTYPE, ta.ISSIGNON,ta.SIGNLOGINNAME, ta.SENDERTIME, ta.SENDERNAME, ta.ACCEPTGROUPID, ta.AREA_CODE, ta.LAUPTIME , n.currentNode as currentNodeOrBizStatus,SUBSTR(n.NODEFLOW, 1, INSTR(n.NODEFLOW, '_') - 1) as lastNode, ta.CREATETIME
from TSTaskList ta
LEFT JOIN TShwfProcessNode n on ta.WorkflowID = n.processid
LEFT JOIN CXAICORG.T_USERS tu1 on n.CURRUSERID = tu1.USERID
LEFT JOIN CXAICORG.T_ORGUNITS torg1 on tu1.ORGUNITID = torg1.ORGUNITID
where ta.BUSSTATUS = 2 AND ta.WORKFLOWID IN (
SELECT
DISTINCT WORKFLOWID
@ -598,12 +612,9 @@
</if>
</where>) and REGEXP_LIKE(n.currentNode, '^end|over', 'i') = 1)
union all
(select DISTINCT t.TASKLISTID, t.WORKFLOWID, t.BIZSEQID, t.SIGNUSERID, t.SENDERORGID, t.SENDERUSERID, t.SENDTOORGID, t.ACCEPTNO, t.BUSNAME, t.SIGNTIME, t.BUSTYPE, t.BUSSTATUS, t.LINKNAME, t.AUDITDEPTTYPE, t.ISSIGNON, t.SIGNLOGINNAME, t.SENDERTIME, t.SENDERNAME, t.ACCEPTGROUPID, t.AREA_CODE, t.LAUPTIME , n.currentNode as currentNodeOrBizStatus ,SUBSTR(n.NODEFLOW, 1, INSTR(n.NODEFLOW, '_') - 1) as lastNode, t.CREATETIME,
n.CURRUSERID CURRUSERID, tu1.REALNAME CURRUSERNAME, torg1.ORGUNITID ORGUNITID, torg1.ORGUNITNAME ORGUNITNAME
(select DISTINCT t.TASKLISTID, t.WORKFLOWID, t.BIZSEQID, t.SIGNUSERID, t.SENDERORGID, t.SENDERUSERID, t.SENDTOORGID, t.ACCEPTNO, t.BUSNAME, t.SIGNTIME, t.BUSTYPE, t.BUSSTATUS, t.LINKNAME, t.AUDITDEPTTYPE, t.ISSIGNON, t.SIGNLOGINNAME, t.SENDERTIME, t.SENDERNAME, t.ACCEPTGROUPID, t.AREA_CODE, t.LAUPTIME , n.currentNode as currentNodeOrBizStatus ,SUBSTR(n.NODEFLOW, 1, INSTR(n.NODEFLOW, '_') - 1) as lastNode, t.CREATETIME
from tsrevtasklist t
LEFT JOIN TShwfProcessNode n on t.WorkflowID = n.processid
LEFT JOIN CXAICORG.T_USERS tu1 on n.CURRUSERID = tu1.USERID
LEFT JOIN CXAICORG.T_ORGUNITS torg1 on tu1.ORGUNITID = torg1.ORGUNITID
where t.BUSSTATUS = 2 AND t.WORKFLOWID IN (
SELECT
DISTINCT WORKFLOWID
@ -630,11 +641,9 @@
union all
</when>
</choose>
(select DISTINCT t.TASKLISTID, t.WORKFLOWID, t.BIZSEQID, t.SIGNUSERID, t.SENDERORGID, t.SENDERUSERID, t.SENDTOORGID, t.ACCEPTNO, t.BUSNAME, t.SIGNTIME, t.BUSTYPE, t.BUSSTATUS, t.LINKNAME, t.AUDITDEPTTYPE, t.ISSIGNON, t.SIGNLOGINNAME, t.SENDERTIME, t.SENDERNAME, t.ACCEPTGROUPID, t.AREA_CODE, t.LAUPTIME , b.STATUS as currentNodeOrBizStatus, null as lastNode, t.CREATETIME,
n.CURRUSERID CURRUSERID, tu1.REALNAME CURRUSERNAME, torg1.ORGUNITID ORGUNITID, torg1.ORGUNITNAME ORGUNITNAME
from tsrevtasklist t, tsbizrevlist b,TShwfProcessNode n, CXAICORG.T_USERS tu1, CXAICORG.T_ORGUNITS torg1
(select DISTINCT t.TASKLISTID, t.WORKFLOWID, t.BIZSEQID, t.SIGNUSERID, t.SENDERORGID, t.SENDERUSERID, t.SENDTOORGID, t.ACCEPTNO, t.BUSNAME, t.SIGNTIME, t.BUSTYPE, t.BUSSTATUS, t.LINKNAME, t.AUDITDEPTTYPE, t.ISSIGNON, t.SIGNLOGINNAME, t.SENDERTIME, t.SENDERNAME, t.ACCEPTGROUPID, t.AREA_CODE, t.LAUPTIME , b.STATUS as currentNodeOrBizStatus, null as lastNode, t.CREATETIME
from tsrevtasklist t, tsbizrevlist b,TShwfProcessNode n
where t.bizseqid = b.bizseq and t.busstatus = '0' and b.ISREMOVE = '0'
and n.CURRUSERID = tu1.USERID and tu1.ORGUNITID = torg1.ORGUNITID
and t.WorkflowID = n.processid and t.WORKFLOWID in (SELECT DISTINCT WORKFLOWID FROM tsopinion tso
<where>
<if test="customParamMap.childUnitSwitch != null and customParamMap.childUnitSwitch != ''">
@ -654,12 +663,9 @@
</if>
</where>))
union all
(select DISTINCT ta.TASKLISTID, ta.WORKFLOWID, ta.BIZSEQID, ta.SIGNUSERID, ta.SENDERORGID, ta.SENDERUSERID, ta.SENDTOORGID, ta.ACCEPTNO, ta.BUSNAME, ta.SIGNTIME, ta.BUSTYPE, ta.BUSSTATUS, ta.LINKNAME, ta.AUDITDEPTTYPE, ta.ISSIGNON,ta.SIGNLOGINNAME, ta.SENDERTIME, ta.SENDERNAME, ta.ACCEPTGROUPID, ta.AREA_CODE, ta.LAUPTIME, n.currentNode as currentNodeOrBizStatus,SUBSTR(n.NODEFLOW, 1, INSTR(n.NODEFLOW, '_') - 1) as lastNode, ta.CREATETIME,
n.CURRUSERID CURRUSERID, tu1.REALNAME CURRUSERNAME, torg1.ORGUNITID ORGUNITID, torg1.ORGUNITNAME ORGUNITNAME
(select DISTINCT ta.TASKLISTID, ta.WORKFLOWID, ta.BIZSEQID, ta.SIGNUSERID, ta.SENDERORGID, ta.SENDERUSERID, ta.SENDTOORGID, ta.ACCEPTNO, ta.BUSNAME, ta.SIGNTIME, ta.BUSTYPE, ta.BUSSTATUS, ta.LINKNAME, ta.AUDITDEPTTYPE, ta.ISSIGNON,ta.SIGNLOGINNAME, ta.SENDERTIME, ta.SENDERNAME, ta.ACCEPTGROUPID, ta.AREA_CODE, ta.LAUPTIME, n.currentNode as currentNodeOrBizStatus,SUBSTR(n.NODEFLOW, 1, INSTR(n.NODEFLOW, '_') - 1) as lastNode, ta.CREATETIME
from TSTaskList ta
LEFT JOIN TSTwfProcessNode n on ta.WorkflowID = n.processid
LEFT JOIN CXAICORG.T_USERS tu1 on n.CURRUSERID = tu1.USERID
LEFT JOIN CXAICORG.T_ORGUNITS torg1 on tu1.ORGUNITID = torg1.ORGUNITID
where ta.BUSSTATUS in ('-1', '0', '1', '3', '5')
<if test="customParamMap.childUnitSwitch != null and customParamMap.childUnitSwitch != ''">
<choose>