待办列表可以用 taskService.createTaskQuery()
但是已办列表就比较麻烦了。为什么呢?直接查询act_hi_procinst是不行的,已办要查询每个环节是否有当前登录工号处理过的记录,那这个记录是在act_hi_taskinst里的。
方式一:left join (不满足分页要求)
select * from act_hi_procinst left join act_hi_taskinst on ahp.PROC_INST_ID_ =aht.PROC_INST_ID_
这样写是没问题的,但是列表这东西不可能说不分页,一分页,由于它们是一对多的关系,因此就会出现一页中条数变少的问题,这个大家都懂,不懂的去补一下知识。
方式二:mybatis collection子查询 (不满足处理人条件过滤)
collection子查询是先查询主表,再根据主表查询结果再去查子表,因此现在子表act_hi_taskinst要过滤处理人条件,无法实现。
方式三:最终方案
select aa.NAME_ as '当前环节',aa.ASSIGNEE_ as '当前环节处理人',aa.START_TIME_ as '当前环节到达时间' ,aa.end_time_,ahp.*
from act_hi_procinst ahp
left join(
select aht.* from act_hi_taskinst aht where aht.START_TIME_ in(
select max(aht1.START_TIME_) from act_hi_taskinst aht1 where aht1.PROC_INST_ID_ in(
select PROC_INST_ID_ from act_hi_taskinst aht2 where aht2.ASSIGNEE_ ='张三'
)
group by aht1.PROC_INST_ID_
)
) aa on ahp.PROC_INST_ID_ =aa.P