fix 80442 已办性能未达标,登录人1k数据量,界面上点击查询接口时已超3s

This commit is contained in:
lijiarao
2024-02-03 22:30:29 +08:00
parent 33eaacfecc
commit ec248c1b48
2 changed files with 38 additions and 15 deletions
@@ -19,23 +19,33 @@
</select>
<select id="getCompletedList" resultType="com.jero.modules.activiti.entity.ProcessAll">
select p.*,
group_concat(par.user_id) as handleUserId
from (
select pa.*,
max(par.create_time) as receivedTaskTime,
max(par.end_time) as completedTaskTime
from process_all pa
left join process_approval_record par on pa.process_instance_id = par.process_instance_id
${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.*,
max(par.create_time) as receivedTaskTime,
max(par.end_time) as completedTaskTime
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>
<!-- <select id="getCompletedList" resultType="com.jero.modules.activiti.entity.ProcessAll">-->
<!-- select p.*,-->
<!-- group_concat(par.user_id) as handleUserId-->
<!-- from (-->
<!-- select pa.*,-->
<!-- max(par.create_time) as receivedTaskTime,-->
<!-- max(par.end_time) as completedTaskTime-->
<!-- from process_all pa-->
<!-- left join process_approval_record par on pa.process_instance_id = par.process_instance_id-->
<!-- ${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-->
<!-- <include refid="order"/>-->
<!-- </select>-->
<select id="getSentList" resultType="com.jero.modules.activiti.entity.ProcessAll">
select p.*, group_concat(par.user_id) as handleUserId
from (
@@ -107,7 +107,20 @@ public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll>
public IPage<ProcessAll> getCompletedList(Page<ProcessAll> page, QueryWrapper<ProcessAll> queryWrapper, HttpServletRequest req) {
String column = req.getParameter("column");
String order = req.getParameter("order");
return processAllMapper.getCompletedList(page,queryWrapper,column,order);
IPage<ProcessAll> completedList = processAllMapper.getCompletedList(page, queryWrapper, column, order);
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.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 completedList;
}
public IPage<ProcessAll> getSentList(Page<ProcessAll> page, QueryWrapper<ProcessAll> queryWrapper, HttpServletRequest req) {