接口查询优化

This commit is contained in:
aikai 2024-12-02 09:07:48 +08:00
parent 079bdaa6a4
commit d2af9fdf6b
5 changed files with 43 additions and 17 deletions

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.crm.service.crmachievement; package cn.iocoder.yudao.module.crm.service.crmachievement;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
@ -162,12 +163,26 @@ public class CrmAchievementServiceImpl implements CrmAchievementService {
userPageReqVO.setPageSize(pageReqVO.getPageSize()); userPageReqVO.setPageSize(pageReqVO.getPageSize());
PageResult<AdminUserApiVO> pageResult = adminUserApi.getUserPage(userPageReqVO).getCheckedData(); PageResult<AdminUserApiVO> pageResult = adminUserApi.getUserPage(userPageReqVO).getCheckedData();
PageResult<UserAchieveRespVO> pageResult1 = BeanUtils.toBean(pageResult, UserAchieveRespVO.class); PageResult<UserAchieveRespVO> pageResult1 = BeanUtils.toBean(pageResult, UserAchieveRespVO.class);
List<Long> typeIds = new ArrayList<>();
for (UserAchieveRespVO vo : pageResult1.getList()) {
typeIds.add(vo.getId());
}
typeIds = typeIds.stream().distinct().collect(Collectors.toList());
List<CrmAchievementDO> crmAchievementDOS = achievementMapper.selectList(new LambdaQueryWrapper<CrmAchievementDO>()
.eq(CrmAchievementDO::getType, FlowStepEnum.TYPE_2.getValue())
.eq(CrmAchievementDO::getConfig, pageReqVO.getConfig())
.in(CrmAchievementDO::getTypeId, typeIds)
.eq(CrmAchievementDO::getYear, pageReqVO.getYear())
);
Map<Long, List<CrmAchievementDO>> map = crmAchievementDOS.stream().collect(Collectors.groupingBy(CrmAchievementDO::getTypeId));
pageResult1.getList().forEach(v -> { pageResult1.getList().forEach(v -> {
CrmAchievementDO crmAchievementDO = achievementMapper.selectOne(new LambdaQueryWrapperX<CrmAchievementDO>() List<CrmAchievementDO> doList = map.get(v.getId());
.eq(CrmAchievementDO::getType, FlowStepEnum.TYPE_2.getValue()) CrmAchievementDO crmAchievementDO = null;
.eq(CrmAchievementDO::getTypeId, v.getId()) if (CollUtil.isNotEmpty(doList)) {
.eqIfPresent(CrmAchievementDO::getConfig, pageReqVO.getConfig()) crmAchievementDO = doList.get(0);
.eqIfPresent(CrmAchievementDO::getYear, pageReqVO.getYear())); }
if (crmAchievementDO == null) { if (crmAchievementDO == null) {
crmAchievementDO = CrmAchievementDO.builder() crmAchievementDO = CrmAchievementDO.builder()
.january(BigDecimal.ZERO).february(BigDecimal.ZERO).march(BigDecimal.ZERO) .january(BigDecimal.ZERO).february(BigDecimal.ZERO).march(BigDecimal.ZERO)
@ -178,10 +193,7 @@ public class CrmAchievementServiceImpl implements CrmAchievementService {
.build(); .build();
} }
v.setAchievementRespVO(BeanUtils.toBean(crmAchievementDO, CrmAchievementRespVO.class)); v.setAchievementRespVO(BeanUtils.toBean(crmAchievementDO, CrmAchievementRespVO.class));
}); });
return pageResult1; return pageResult1;
} }
@ -190,12 +202,24 @@ public class CrmAchievementServiceImpl implements CrmAchievementService {
List<DeptApiVO> list = deptService.getDeptList( List<DeptApiVO> list = deptService.getDeptList(
new DeptApiDTO().setStatus(CommonStatusEnum.ENABLE.getStatus())).getCheckedData(); new DeptApiDTO().setStatus(CommonStatusEnum.ENABLE.getStatus())).getCheckedData();
List<DeptAchieveRespVO> achieveRespVOS = BeanUtils.toBean(list, DeptAchieveRespVO.class); List<DeptAchieveRespVO> achieveRespVOS = BeanUtils.toBean(list, DeptAchieveRespVO.class);
List<Long> typeIds = new ArrayList<>();
for (DeptAchieveRespVO vo : achieveRespVOS) {
typeIds.add(vo.getId());
}
typeIds = typeIds.stream().distinct().collect(Collectors.toList());
List<CrmAchievementDO> crmAchievementDOS = achievementMapper.selectList(new LambdaQueryWrapper<CrmAchievementDO>()
.eq(CrmAchievementDO::getType, FlowStepEnum.TYPE_3.getValue())
.eq(CrmAchievementDO::getConfig, type)
.in(CrmAchievementDO::getTypeId, typeIds)
.eq(CrmAchievementDO::getYear, year)
);
Map<Long, List<CrmAchievementDO>> map = crmAchievementDOS.stream().collect(Collectors.groupingBy(CrmAchievementDO::getTypeId));
achieveRespVOS.forEach(vo -> { achieveRespVOS.forEach(vo -> {
CrmAchievementDO crmAchievementDO = achievementMapper.selectOne(new LambdaQueryWrapperX<CrmAchievementDO>() List<CrmAchievementDO> doList = map.get(vo.getId());
.eq(CrmAchievementDO::getType, FlowStepEnum.TYPE_3.getValue()) CrmAchievementDO crmAchievementDO = null;
.eq(CrmAchievementDO::getTypeId, vo.getId()) if (CollUtil.isNotEmpty(doList)) {
.eqIfPresent(CrmAchievementDO::getConfig, type) crmAchievementDO = doList.get(0);
.eqIfPresent(CrmAchievementDO::getYear, year)); }
if (crmAchievementDO == null) { if (crmAchievementDO == null) {
crmAchievementDO = CrmAchievementDO.builder() crmAchievementDO = CrmAchievementDO.builder()
.january(BigDecimal.ZERO).february(BigDecimal.ZERO).march(BigDecimal.ZERO) .january(BigDecimal.ZERO).february(BigDecimal.ZERO).march(BigDecimal.ZERO)

View File

@ -133,6 +133,8 @@ public class CrmRecordServiceImpl implements CrmRecordService {
} }
PageResult<CrmRecordDO> pageResult = recordMapper.selectPage(pageReqVO, ids); PageResult<CrmRecordDO> pageResult = recordMapper.selectPage(pageReqVO, ids);
PageResult<CrmRecordRespVO> pageResult1 = BeanUtils.toBean(pageResult, CrmRecordRespVO.class); PageResult<CrmRecordRespVO> pageResult1 = BeanUtils.toBean(pageResult, CrmRecordRespVO.class);
for (CrmRecordRespVO crmRecordRespVO : pageResult1.getList()) { for (CrmRecordRespVO crmRecordRespVO : pageResult1.getList()) {
DictDataRespDTO dto = dictDataApi.getDictData("follow_status", crmRecordRespVO.getRecordType().toString()).getCheckedData(); DictDataRespDTO dto = dictDataApi.getDictData("follow_status", crmRecordRespVO.getRecordType().toString()).getCheckedData();
crmRecordRespVO.setRecordTypeName(dto.getLabel()); crmRecordRespVO.setRecordTypeName(dto.getLabel());

View File

@ -23,9 +23,9 @@ public class DeptApiVO {
*/ */
private Long parentId; private Long parentId;
/** /**
* 机构类型 | 0公司 1部门 * 机构类型 | 字典值参考 system_dept_type
*/ */
private Integer type; private String type;
/** /**
* 部门层级 * 部门层级
*/ */

View File

@ -8,7 +8,6 @@ import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Set;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

View File

@ -170,7 +170,8 @@
<select id="selectListByCondition" <select id="selectListByCondition"
resultType="cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO"> resultType="cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO">
select select
a.* a.*
from system_users AS a
<if test="menuList != null and menuList.size() > 0"> <if test="menuList != null and menuList.size() > 0">
LEFT JOIN system_user_role AS b ON a.id = b.user_id LEFT JOIN system_user_role AS b ON a.id = b.user_id
AND b.deleted = 0 AND b.deleted = 0