fix 80442 已办性能未达标,登录人1k数据量,界面上点击查询接口时已超3s
This commit is contained in:
+24
-14
@@ -19,23 +19,33 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getCompletedList" resultType="com.jero.modules.activiti.entity.ProcessAll">
|
<select id="getCompletedList" resultType="com.jero.modules.activiti.entity.ProcessAll">
|
||||||
select p.*,
|
select pa.*,
|
||||||
group_concat(par.user_id) as handleUserId
|
max(par.create_time) as receivedTaskTime,
|
||||||
from (
|
max(par.end_time) as completedTaskTime
|
||||||
select pa.*,
|
from process_all pa
|
||||||
max(par.create_time) as receivedTaskTime,
|
left join process_approval_record par on pa.process_instance_id = par.process_instance_id
|
||||||
max(par.end_time) as completedTaskTime
|
${ew.customSqlSegment}
|
||||||
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"/>
|
<include refid="order"/>
|
||||||
</select>
|
</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 id="getSentList" resultType="com.jero.modules.activiti.entity.ProcessAll">
|
||||||
select p.*, group_concat(par.user_id) as handleUserId
|
select p.*, group_concat(par.user_id) as handleUserId
|
||||||
from (
|
from (
|
||||||
|
|||||||
+14
-1
@@ -107,7 +107,20 @@ public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll>
|
|||||||
public IPage<ProcessAll> getCompletedList(Page<ProcessAll> page, QueryWrapper<ProcessAll> queryWrapper, HttpServletRequest req) {
|
public IPage<ProcessAll> getCompletedList(Page<ProcessAll> page, QueryWrapper<ProcessAll> queryWrapper, HttpServletRequest req) {
|
||||||
String column = req.getParameter("column");
|
String column = req.getParameter("column");
|
||||||
String order = req.getParameter("order");
|
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) {
|
public IPage<ProcessAll> getSentList(Page<ProcessAll> page, QueryWrapper<ProcessAll> queryWrapper, HttpServletRequest req) {
|
||||||
|
|||||||
Reference in New Issue
Block a user