diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProcessCardServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProcessCardServiceImpl.java index cae9032..aebbeed 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProcessCardServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProcessCardServiceImpl.java @@ -191,25 +191,46 @@ public class OaProcessCardServiceImpl implements IOaProcessCardService { public List queryProjectList() { // 拿到项目名字projectName projectNum projectCode List sysOaProjects = sysOaProjectMapper.selectList(); - // 现在已经有了projectId然后需要看到工艺还是发货哪个地方绑定了这个projectId + if (sysOaProjects == null || sysOaProjects.isEmpty()) { + return Collections.emptyList(); + } + + // 收集项目ID,后续仅在这些ID范围内分组统计 + List projectIds = sysOaProjects.stream() + .map(SysOaProject::getProjectId) + .collect(Collectors.toList()); + + // 1) 分组统计工艺卡数量(未删除) + QueryWrapper pcQw = Wrappers.query(); + pcQw.select("project_id AS projectId", "COUNT(1) AS cnt"); + pcQw.in(!projectIds.isEmpty(), "project_id", projectIds); + pcQw.eq("del_flag", 0); + pcQw.groupBy("project_id"); + Map processCardCountMap = baseMapper.selectMaps(pcQw).stream() + .collect(Collectors.toMap( + m -> ((Number) m.get("projectId")).longValue(), + m -> ((Number) m.get("cnt")).longValue() + )); + + // 2) 分组统计送货单数量(未删除) + QueryWrapper doQw = Wrappers.query(); + doQw.select("project_id AS projectId", "COUNT(1) AS cnt"); + doQw.in(!projectIds.isEmpty(), "project_id", projectIds); + doQw.eq("del_flag", 0); + doQw.groupBy("project_id"); + Map deliveryOrderCountMap = oaDeliveryOrderMapper.selectMaps(doQw).stream() + .collect(Collectors.toMap( + m -> ((Number) m.get("projectId")).longValue(), + m -> ((Number) m.get("cnt")).longValue() + )); + + // 3) 组装返回 List sysOaProjectVos = sysOaProjects.stream() - .map(sysOaProject -> { - SysOaProjectVo vo = BeanUtil.toBean(sysOaProject, SysOaProjectVo.class); - Long projectId = sysOaProject.getProjectId(); - // 统计工艺卡数量(未删除) - Long processCardCount = baseMapper.selectCount( - Wrappers.lambdaQuery() - .eq(OaProcessCard::getProjectId, projectId) - .eq(OaProcessCard::getDelFlag, 0) - ); - vo.setProcessCardCount(processCardCount); - // 统计送货单数量(未删除) - Long deliveryOrderCount = oaDeliveryOrderMapper.selectCount( - Wrappers.lambdaQuery() - .eq(OaDeliveryOrder::getProjectId, projectId) - .eq(OaDeliveryOrder::getDelFlag, 0) - ); - vo.setDeliveryOrderCount(deliveryOrderCount); + .map(p -> { + SysOaProjectVo vo = BeanUtil.toBean(p, SysOaProjectVo.class); + Long pid = p.getProjectId(); + vo.setProcessCardCount(processCardCountMap.getOrDefault(pid, 0L)); + vo.setDeliveryOrderCount(deliveryOrderCountMap.getOrDefault(pid, 0L)); return vo; }) .collect(Collectors.toList());