待办中心-认证参数-查询优化

This commit is contained in:
liyawei
2022-10-20 11:37:57 +08:00
parent a9615d9d03
commit f5933dd36d
4 changed files with 76 additions and 25 deletions
@@ -1219,6 +1219,13 @@ CREATE TABLE `laws_weilai`.`process_info_detail` (
PRIMARY KEY (`id`) USING BTREE PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '流程信息明细表' ROW_FORMAT = Dynamic; ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '流程信息明细表' ROW_FORMAT = Dynamic;
-- 参数项收集清单 添加索引 2022-10-14 未同步生产环境
ALTER TABLE `laws_weilai`.`params_collect_manifest`
ADD INDEX `index_pcm_nio_number`(`nio_number`) USING BTREE,
ADD INDEX `index_pcm_state`(`state`) USING BTREE,
ADD INDEX `index_pcm_sdt_dre`(`sdt`, `dre`) USING BTREE,
ADD INDEX `index_pcm_manifest_id`(`params_manifest_id`) USING BTREE;
-- 待办中心 流程信息明细表 增加字段 2022-10-18 未同步生产环境 -- 待办中心 流程信息明细表 增加字段 2022-10-18 未同步生产环境
ALTER TABLE `laws_weilai`.`process_info_detail` ALTER TABLE `laws_weilai`.`process_info_detail`
ADD COLUMN `end_time` datetime NULL COMMENT '截止时间' AFTER `flow_type`; ADD COLUMN `end_time` datetime NULL COMMENT '截止时间' AFTER `flow_type`;
@@ -18,6 +18,8 @@ public interface ParamsCollectManifestEOMapper extends BaseMapper<ParamsCollectM
List<ParamsCollectManifestEO> listInfo(@Param("paramsCollectManifestEO") ParamsCollectManifestEO paramsCollectManifestEO); List<ParamsCollectManifestEO> listInfo(@Param("paramsCollectManifestEO") ParamsCollectManifestEO paramsCollectManifestEO);
List<ParamsCollectManifestEO> listInfoOfTodoCenter();
List<Map<String, Object>> listInfoForExport(@Param("paramsCollectManifestEO") ParamsCollectManifestEO paramsCollectManifestEO); List<Map<String, Object>> listInfoForExport(@Param("paramsCollectManifestEO") ParamsCollectManifestEO paramsCollectManifestEO);
// 查询控件类型为 标题的 参数项 // 查询控件类型为 标题的 参数项
@@ -80,6 +80,10 @@
order by del_flag desc, add_flag desc, change_flag desc, nio_number asc order by del_flag desc, add_flag desc, change_flag desc, nio_number asc
</select> </select>
<select id="listInfoOfTodoCenter" resultMap="ParamsCollectManifestEOResultMap">
select id,nio_number,state,sdt,dre,params_manifest_id from params_collect_manifest
</select>
<select id="listInfoForExport" resultType="java.util.LinkedHashMap"> <select id="listInfoForExport" resultType="java.util.LinkedHashMap">
select * select *
from params_collect_manifest from params_collect_manifest
@@ -1,6 +1,7 @@
package com.jero.modules.todoCenter.service.impl; package com.jero.modules.todoCenter.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -65,33 +66,48 @@ public class ParamsManifestTodoCenterServiceImpl implements IParamsManifestTodoC
List<ParamsManifestTodoCenterEO> paramsManifestEOList = new ArrayList<>(); List<ParamsManifestTodoCenterEO> paramsManifestEOList = new ArrayList<>();
List<ProjectLibraryBase> projectLibraryBaseList = new ArrayList<>(); List<ProjectLibraryBase> projectLibraryBaseList = new ArrayList<>();
Map<String, Boolean> manifestUserTypeOfHomo = new HashMap<>(); Map<String, Boolean> manifestUserTypeOfHomo = new HashMap<>();
Map<String, Boolean> manifestUserTypeOfSdt = new HashMap<>();
Map<String, Boolean> manifestUserTypeOfDre = new HashMap<>();
Map<String, List<ParamsCollectManifestEO>> paramsManifestEOListMap = new HashMap<>();
// 查询清单的所有参数项
List<ParamsCollectManifestEO> pcmListAll = paramsCollectManifestEOMapper.listInfoOfTodoCenter();
String userType = ""; String userType = "";
for(ParamsManifestTodoCenterEO paramsManifestEO : paramsManifestEOListAll) { for(ParamsManifestTodoCenterEO paramsManifestEO : paramsManifestEOListAll) {
// 查询清单的所有参数项
List<ParamsCollectManifestEO> pcmList = pcmListAll.stream().filter(e->paramsManifestEO.getId().equals(e.getParamsManifestId())).collect(Collectors.toList());
int count1 = (int) pcmList.stream().filter(e-> CollectManifestStateEnum.SUBMIT.getValue().equals(e.getState())
|| CollectManifestStateEnum.SYNC_REPORT.getValue().equals(e.getState())).count();
if (count1 == pcmList.size()) {
continue;
}
// 判断是不是homo角色 // 判断是不是homo角色
projectLibraryBaseList = projectLibraryBaseListAll.stream().filter(e->paramsManifestEO.getProjectId().equals(e.getId())).collect(Collectors.toList()); projectLibraryBaseList = projectLibraryBaseListAll.stream().filter(e->paramsManifestEO.getProjectId().equals(e.getId())).collect(Collectors.toList());
userType = getLoginUserTypeOfHomo(projectLibraryBaseList, loginUser); userType = getLoginUserTypeOfHomo(projectLibraryBaseList, loginUser);
if(StringUtils.isNotBlank(userType)) { if(StringUtils.isNotBlank(userType)) {
paramsManifestEOList.add(paramsManifestEO); paramsManifestEOList.add(paramsManifestEO);
manifestUserTypeOfHomo.put(paramsManifestEO.getId(), true); manifestUserTypeOfHomo.put(paramsManifestEO.getId(), true);
paramsManifestEOListMap.put(paramsManifestEO.getId(), pcmList);
continue; continue;
} else {
manifestUserTypeOfHomo.put(paramsManifestEO.getId(), false);
} }
// 查询清单的所有参数项
ParamsCollectManifestEO paramsCollectManifestEO = new ParamsCollectManifestEO();
paramsCollectManifestEO.setParamsManifestId(paramsManifestEO.getId());
List<ParamsCollectManifestEO> pcmList = paramsCollectManifestEOMapper.listInfo(paramsCollectManifestEO);
// 判断是不是sdt角色 // 判断是不是sdt角色
userType = getLoginUserTypeOfSdt(pcmList, loginUser); userType = getLoginUserTypeOfSdt(pcmList, loginUser);
if(StringUtils.isNotBlank(userType)) { if(StringUtils.isNotBlank(userType)) {
paramsManifestEOList.add(paramsManifestEO); paramsManifestEOList.add(paramsManifestEO);
manifestUserTypeOfSdt.put(paramsManifestEO.getId(), true);
paramsManifestEOListMap.put(paramsManifestEO.getId(), pcmList);
continue; continue;
} }
// 判断是不是dre角色 // 判断是不是dre角色
userType = getLoginUserTypeOfDre(pcmList, loginUser); userType = getLoginUserTypeOfDre(pcmList, loginUser);
if(StringUtils.isNotBlank(userType)) { if(StringUtils.isNotBlank(userType)) {
paramsManifestEOList.add(paramsManifestEO); paramsManifestEOList.add(paramsManifestEO);
manifestUserTypeOfDre.put(paramsManifestEO.getId(), true);
paramsManifestEOListMap.put(paramsManifestEO.getId(), pcmList);
continue; continue;
} }
} }
@@ -119,45 +135,67 @@ public class ParamsManifestTodoCenterServiceImpl implements IParamsManifestTodoC
} }
// 统计清单中的待办参数数据 // 统计清单中的待办参数数据
List<ParamsManifestTodoCenterEO> records = getStatistics(result, manifestUserTypeOfHomo, loginUser); List<ParamsManifestTodoCenterEO> records = getStatistics(result, manifestUserTypeOfHomo, manifestUserTypeOfSdt, manifestUserTypeOfDre, paramsManifestEOListMap,loginUser);
page.setRecords(records); page.setRecords(records);
return page; return page;
} }
public List<ParamsManifestTodoCenterEO> getStatistics(List<ParamsManifestTodoCenterEO> paramsManifestEOList, Map<String, Boolean> manifestUserTypeOfHomo, LoginUser loginUser) { public List<ParamsManifestTodoCenterEO> getStatistics(List<ParamsManifestTodoCenterEO> paramsManifestEOList, Map<String, Boolean> manifestUserTypeOfHomo
,Map<String, Boolean> manifestUserTypeOfSdt, Map<String, Boolean> manifestUserTypeOfDre, Map<String, List<ParamsCollectManifestEO>> paramsManifestEOListMap, LoginUser loginUser) {
List<ParamsManifestTodoCenterEO> paramsManifestTodoCenterEOList = new ArrayList<>(); List<ParamsManifestTodoCenterEO> paramsManifestTodoCenterEOList = new ArrayList<>();
for(ParamsManifestTodoCenterEO paramsManifestTodoCenterEO : paramsManifestEOList) { for(ParamsManifestTodoCenterEO paramsManifestTodoCenterEO : paramsManifestEOList) {
// 查询清单的所有参数项 // 查询清单的所有参数项
ParamsCollectManifestEO paramsCollectManifestEO = new ParamsCollectManifestEO(); ParamsCollectManifestEO paramsCollectManifestEO = new ParamsCollectManifestEO();
paramsCollectManifestEO.setParamsManifestId(paramsManifestTodoCenterEO.getId()); paramsCollectManifestEO.setParamsManifestId(paramsManifestTodoCenterEO.getId());
List<ParamsCollectManifestEO> pcmList = paramsCollectManifestEOMapper.listInfo(paramsCollectManifestEO); List<ParamsCollectManifestEO> pcmList = paramsManifestEOListMap.get(paramsManifestTodoCenterEO.getId());
int count = 0; int count = 0;
// 统计待发起数量 包括状态:待发起收集,变更,工程接口人退回
if (manifestUserTypeOfHomo.get(paramsManifestTodoCenterEO.getId())) { if (ObjectUtil.isNotEmpty(paramsManifestTodoCenterEO.getId()) && manifestUserTypeOfHomo.get(paramsManifestTodoCenterEO.getId())) {
// 统计待发起数量 包括状态:待发起收集,变更,工程接口人退回
count = (int) pcmList.stream().filter(e-> CollectManifestStateEnum.WAIT_COLLECT.getValue().equals(e.getState()) count = (int) pcmList.stream().filter(e-> CollectManifestStateEnum.WAIT_COLLECT.getValue().equals(e.getState())
|| CollectManifestStateEnum.SDT_BACK.getValue().equals(e.getState()) || CollectManifestStateEnum.SDT_BACK.getValue().equals(e.getState())
|| CollectManifestStateEnum.CHANGE.getValue().equals(e.getState())).count(); || CollectManifestStateEnum.CHANGE.getValue().equals(e.getState())).count();
if (count > 0) { if (count > 0) {
paramsManifestTodoCenterEO.setWaitCollectNum(count); paramsManifestTodoCenterEO.setWaitCollectNum(count);
} }
} // 统计待分配数量 包括状态:待工程接口人处理,填写人退回
count = (int) pcmList.stream().filter(e-> (CollectManifestStateEnum.WAIT_SDT.getValue().equals(e.getState())
|| CollectManifestStateEnum.DRE_BACK.getValue().equals(e.getState()))).count();
if (count > 0) {
paramsManifestTodoCenterEO.setWaitSdtNum(count);
}
// 统计待填写数量 包括状态:待填写,认证工程师退回
count = (int) pcmList.stream().filter(e-> (CollectManifestStateEnum.WAIT_FILL.getValue().equals(e.getState())
|| CollectManifestStateEnum.CERT_BACK.getValue().equals(e.getState()))).count();
if (count > 0) {
paramsManifestTodoCenterEO.setWaitFillNum(count);
}
} else if (ObjectUtil.isNotEmpty(paramsManifestTodoCenterEO.getId()) && manifestUserTypeOfSdt.get(paramsManifestTodoCenterEO.getId())) {
// 统计待分配数量 包括状态:待工程接口人处理,填写人退回
count = (int) pcmList.stream().filter(e-> (CollectManifestStateEnum.WAIT_SDT.getValue().equals(e.getState())
|| CollectManifestStateEnum.DRE_BACK.getValue().equals(e.getState()))
&& loginUser.getUsername().equals(e.getSdt())).count();
if (count > 0) {
paramsManifestTodoCenterEO.setWaitSdtNum(count);
}
// 统计待填写数量 包括状态:待填写,认证工程师退回
count = (int) pcmList.stream().filter(e-> (CollectManifestStateEnum.WAIT_FILL.getValue().equals(e.getState())
|| CollectManifestStateEnum.CERT_BACK.getValue().equals(e.getState()))).count();
if (count > 0) {
paramsManifestTodoCenterEO.setWaitFillNum(count);
}
// 统计待分配数量 包括状态:待工程接口人处理,填写人退回 } else if (ObjectUtil.isNotEmpty(paramsManifestTodoCenterEO.getId()) && manifestUserTypeOfDre.get(paramsManifestTodoCenterEO.getId())) {
count = (int) pcmList.stream().filter(e-> (CollectManifestStateEnum.WAIT_SDT.getValue().equals(e.getState()) // 统计待填写数量 包括状态:待填写,认证工程师退回
|| CollectManifestStateEnum.DRE_BACK.getValue().equals(e.getState())) count = (int) pcmList.stream().filter(e-> (CollectManifestStateEnum.WAIT_FILL.getValue().equals(e.getState())
&& loginUser.getUsername().equals(e.getSdt())).count(); || CollectManifestStateEnum.CERT_BACK.getValue().equals(e.getState()))
if (count > 0) { && loginUser.getUsername().equals(e.getDre())).count();
paramsManifestTodoCenterEO.setWaitSdtNum(count); if (count > 0) {
} paramsManifestTodoCenterEO.setWaitFillNum(count);
}
// 统计待填写数量 包括状态:待填写,认证工程师退回
count = (int) pcmList.stream().filter(e-> (CollectManifestStateEnum.WAIT_FILL.getValue().equals(e.getState())
|| CollectManifestStateEnum.CERT_BACK.getValue().equals(e.getState()))
&& loginUser.getUsername().equals(e.getDre())).count();
if (count > 0) {
paramsManifestTodoCenterEO.setWaitFillNum(count);
} }
paramsManifestTodoCenterEOList.add(paramsManifestTodoCenterEO); paramsManifestTodoCenterEOList.add(paramsManifestTodoCenterEO);