fix 优化流程中心查询速度
This commit is contained in:
+50
-32
@@ -2,20 +2,45 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.jero.modules.activiti.mapper.ProcessAllMapper">
|
||||
<sql id="order">
|
||||
<!--@sql select create_time as receivedTaskTime from process_all -->
|
||||
<!--@sql select create_time as received_task_time from process_all pa -->
|
||||
<if test="column == 'receivedTaskTime'">
|
||||
order by receivedTaskTime
|
||||
order by received_task_time
|
||||
<if test="order == 'desc'">
|
||||
desc
|
||||
</if>
|
||||
</if>
|
||||
</sql>
|
||||
<sql id="order1">
|
||||
<!--@sql select create_time as received_task_time from process_all par -->
|
||||
<if test="column == 'receivedTaskTime'">
|
||||
order by par.create_time
|
||||
<if test="order == 'desc'">
|
||||
desc
|
||||
</if>
|
||||
</if>
|
||||
</sql>
|
||||
<select id="getTodoList" resultType="com.jero.modules.activiti.entity.ProcessAll">
|
||||
select pa.*,par.create_time as receivedTaskTime,par.task_id,par.task_name, par.node_id, par.over_due
|
||||
from process_all pa
|
||||
left join process_approval_record par on pa.process_instance_id = par.process_instance_id
|
||||
${ew.customSqlSegment}
|
||||
<include refid="order"/>
|
||||
select par.create_time as received_task_time,
|
||||
par.task_id,
|
||||
par.task_name,
|
||||
par.node_id,
|
||||
par.over_due,
|
||||
pa.id,
|
||||
pa.prc_name,
|
||||
pa.process_definition_id,
|
||||
pa.process_instance_id,
|
||||
pa.prc_mes,
|
||||
pa.prc_num,
|
||||
pa.create_user_id,
|
||||
pa.prc_type,
|
||||
pa.prc_status,
|
||||
pa.end_time,
|
||||
pa.over_time,
|
||||
pa.project_id
|
||||
from process_approval_record par
|
||||
left join process_all pa on pa.process_instance_id = par.process_instance_id
|
||||
${ew.customSqlSegment}
|
||||
<include refid="order1"/>
|
||||
</select>
|
||||
|
||||
<select id="getCompletedList" resultType="com.jero.modules.activiti.entity.ProcessAll">
|
||||
@@ -31,7 +56,7 @@
|
||||
pa.end_time,
|
||||
pa.over_time,
|
||||
pa.project_id,
|
||||
pa.received_task_time as receivedTaskTime,
|
||||
pa.received_task_time,
|
||||
pa.completed_task_time
|
||||
from process_all pa
|
||||
left join process_approval_record par on pa.process_instance_id = par.process_instance_id
|
||||
@@ -40,29 +65,22 @@
|
||||
</select>
|
||||
|
||||
<select id="getSentList" resultType="com.jero.modules.activiti.entity.ProcessAll">
|
||||
select p.*, group_concat(par.user_id) as handleUserId
|
||||
from (
|
||||
select pa.id,
|
||||
pa.prc_name,
|
||||
pa.process_definition_id,
|
||||
pa.process_instance_id,
|
||||
pa.prc_mes,
|
||||
pa.prc_num,
|
||||
pa.create_user_id,
|
||||
pa.prc_type,
|
||||
pa.prc_status,
|
||||
pa.end_time,
|
||||
pa.over_time,
|
||||
pa.project_id,
|
||||
pa.received_task_time as receivedTaskTime,
|
||||
pa.completed_task_time
|
||||
from process_all pa
|
||||
${ew.customSqlSegment}
|
||||
) p
|
||||
LEFT JOIN (
|
||||
SELECT user_id,process_instance_id from process_approval_record WHERE finish_flag = 1
|
||||
) par ON p.process_instance_id = par.process_instance_id
|
||||
group by p.process_instance_id
|
||||
select pa.id,
|
||||
pa.prc_name,
|
||||
pa.process_definition_id,
|
||||
pa.process_instance_id,
|
||||
pa.prc_mes,
|
||||
pa.prc_num,
|
||||
pa.create_user_id,
|
||||
pa.prc_type,
|
||||
pa.prc_status,
|
||||
pa.end_time,
|
||||
pa.over_time,
|
||||
pa.project_id,
|
||||
pa.received_task_time,
|
||||
pa.completed_task_time
|
||||
from process_all pa
|
||||
${ew.customSqlSegment}
|
||||
<include refid="order"/>
|
||||
</select>
|
||||
|
||||
@@ -79,7 +97,7 @@
|
||||
pa.end_time,
|
||||
pa.over_time,
|
||||
pa.project_id,
|
||||
pa.received_task_time as receivedTaskTime,
|
||||
pa.received_task_time,
|
||||
pa.completed_task_time
|
||||
from process_all pa
|
||||
${ew.customSqlSegment}
|
||||
|
||||
+17
-4
@@ -105,7 +105,7 @@ public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll>
|
||||
List<ProcessAll> records = completedList.getRecords();
|
||||
List<String> collect = records.stream().map(ProcessAll::getProcessInstanceId).collect(Collectors.toList());
|
||||
QueryWrapper<ProcessApprovalRecord> wrapper = new QueryWrapper<>();
|
||||
wrapper.select("process_instance_id","group_concat(user_id) as user_id");
|
||||
wrapper.select("process_instance_id","group_concat(distinct user_id) as user_id");
|
||||
wrapper.lambda().in(ProcessApprovalRecord::getProcessInstanceId,collect)
|
||||
.eq(ProcessApprovalRecord::getFinishFlag,FinishFlagEnum.INCOMPLETE.getValue())
|
||||
.eq(ProcessApprovalRecord::getOverDue, YesOrNoEnum.NO.getValue())
|
||||
@@ -121,7 +121,20 @@ public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll>
|
||||
public IPage<ProcessAll> getSentList(Page<ProcessAll> page, QueryWrapper<ProcessAll> queryWrapper, HttpServletRequest req) {
|
||||
String column = req.getParameter("column");
|
||||
String order = req.getParameter("order");
|
||||
return processAllMapper.getSentList(page,queryWrapper,column,order);
|
||||
IPage<ProcessAll> sentList = processAllMapper.getSentList(page, queryWrapper, column, order);
|
||||
List<ProcessAll> records = sentList.getRecords();
|
||||
List<String> collect = records.stream().map(ProcessAll::getProcessInstanceId).collect(Collectors.toList());
|
||||
QueryWrapper<ProcessApprovalRecord> wrapper = new QueryWrapper<>();
|
||||
wrapper.select("process_instance_id","group_concat(distinct user_id) as user_id");
|
||||
wrapper.lambda().in(ProcessApprovalRecord::getProcessInstanceId,collect)
|
||||
.eq(ProcessApprovalRecord::getFinishFlag,FinishFlagEnum.INCOMPLETE.getValue())
|
||||
.groupBy(ProcessApprovalRecord::getProcessInstanceId);
|
||||
List<ProcessApprovalRecord> approvalRecordList = approvalRecordService.list(wrapper);
|
||||
Map<String, String> userMap = CollStreamUtil.toMap(approvalRecordList, ProcessApprovalRecord::getProcessInstanceId, ProcessApprovalRecord::getUserId);
|
||||
for (ProcessAll record : records) {
|
||||
record.setHandleUserId(userMap.get(record.getProcessInstanceId()));
|
||||
}
|
||||
return sentList;
|
||||
}
|
||||
|
||||
public IPage<ProcessAll> getAllList(Page<ProcessAll> page, QueryWrapper<ProcessAll> queryWrapper, HttpServletRequest req) {
|
||||
@@ -134,7 +147,7 @@ public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll>
|
||||
List<ProcessApprovalRecord> incompleteRecordList = new ArrayList<>();
|
||||
if (!incompleteCollect.isEmpty()) {
|
||||
QueryWrapper<ProcessApprovalRecord> wrapper = new QueryWrapper<>();
|
||||
wrapper.select("process_instance_id","group_concat(user_id) as user_id");
|
||||
wrapper.select("process_instance_id","group_concat(distinct user_id) as user_id");
|
||||
wrapper.lambda().in(ProcessApprovalRecord::getProcessInstanceId,incompleteCollect)
|
||||
.eq(ProcessApprovalRecord::getFinishFlag,FinishFlagEnum.INCOMPLETE.getValue())
|
||||
.groupBy(ProcessApprovalRecord::getProcessInstanceId);
|
||||
@@ -146,7 +159,7 @@ public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll>
|
||||
List<ProcessApprovalRecord> withdrawnRecordList = new ArrayList<>();
|
||||
if (!withdrawnCollect.isEmpty()){
|
||||
QueryWrapper<ProcessApprovalRecord> wrapper1 = new QueryWrapper<>();
|
||||
wrapper1.select("process_instance_id","group_concat(user_id) as user_id");
|
||||
wrapper1.select("process_instance_id","group_concat(distinct user_id) as user_id");
|
||||
wrapper1.lambda().in(ProcessApprovalRecord::getProcessInstanceId,withdrawnCollect)
|
||||
.eq(ProcessApprovalRecord::getFinishFlag,FinishFlagEnum.WITHDRAWN.getValue())
|
||||
.groupBy(ProcessApprovalRecord::getProcessInstanceId);
|
||||
|
||||
Reference in New Issue
Block a user