From d51f8b879fe7add8d47e33541dc7b0bdbd0adbc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8C=AB=E7=8C=ABguowen?= <9290821+guowen-the-cat@user.noreply.gitee.com> Date: Mon, 8 Dec 2025 13:58:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A5=E5=BA=93=E5=87=BA=E5=BA=93=E5=88=86?= =?UTF-8?q?=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kpi/service/impl/KpiServiceImpl.java | 77 +++++++++++++++---- 1 file changed, 61 insertions(+), 16 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/kpi/service/impl/KpiServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/kpi/service/impl/KpiServiceImpl.java index 66eba62..ddebc44 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/kpi/service/impl/KpiServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/kpi/service/impl/KpiServiceImpl.java @@ -53,7 +53,7 @@ public class KpiServiceImpl implements KpiService Map roadwayCount = new HashMap<>(); for (MydoJob job : list) { - // 检查入库作业标识是否小于10 + // 检查入库作业标识是否小于20 if (job.getInOrOut() == null || Integer.parseInt(job.getInOrOut()) >= 20) { continue; } @@ -520,7 +520,7 @@ public class KpiServiceImpl implements KpiService } @Override - public AjaxResult getInAnalysisByData(String warehouseId, String startTime, String endTime,String inOut) { + public AjaxResult getInAnalysisByData(String warehouseId, String startTime, String endTime, String inOut) { Map res = new HashMap<>(); MydoJob mydoJobParam = new MydoJob(); mydoJobParam.setWarehouseId(warehouseId); @@ -528,36 +528,79 @@ public class KpiServiceImpl implements KpiService mydoJobParam.setCreateLeftTime(startTime); mydoJobParam.setCreateRightTime(endTime); mydoJobParam.setInOut(inOut); - List datesBetween = DateUtil.rangeToList(DateUtil.parseDate(startTime), DateUtil.parseDate(endTime), DateField.DAY_OF_MONTH); List list = mydoJobFinishMapper.selectMydoJobFinishListByMydoJob(mydoJobParam); - // 获取所有巷道ID(1和2) - List roadwayIds = Arrays.asList("1", "2"); + // 收集所有涉及的楼层 + Set floorSet = new HashSet<>(); + Map cargoSpaceCache = new HashMap<>(); + + // 遍历作业记录,收集涉及的货位ID并查询对应楼层 + for (MydoJob job : list) { + if (job.getCargoSpaceId() != null) { + // 检查缓存中是否有该货位信息 + if (!cargoSpaceCache.containsKey(job.getCargoSpaceId())) { + // 使用现有的查询方法查询货位信息 + BasCargoSpace queryParam = new BasCargoSpace(); + queryParam.setCargoSpaceId(job.getCargoSpaceId()); + List cargoSpaces = basCargoSpaceMapper.selectBasCargoSpaceList(queryParam); + + if (!cargoSpaces.isEmpty()) { + BasCargoSpace cargoSpace = cargoSpaces.get(0); + cargoSpaceCache.put(job.getCargoSpaceId(), cargoSpace); + if (cargoSpace.getTheFloor() != null) { + floorSet.add(cargoSpace.getTheFloor()); + } + } + } else { + BasCargoSpace cachedSpace = cargoSpaceCache.get(job.getCargoSpaceId()); + if (cachedSpace.getTheFloor() != null) { + floorSet.add(cachedSpace.getTheFloor()); + } + } + } + } + + // 将楼层排序 + List floors = new ArrayList<>(floorSet); + Collections.sort(floors); + + // 生成日期范围 + List datesBetween = DateUtil.rangeToList(DateUtil.parseDate(startTime), DateUtil.parseDate(endTime), DateField.DAY_OF_MONTH); List xAxis = new ArrayList<>(); List> series = new ArrayList<>(); - // 为每个巷道创建一个系列 - for (String roadwayId : roadwayIds) { + // 为每个楼层创建一个系列 + for (Long floor : floors) { Map seriesItem = new HashMap<>(); - seriesItem.put("name", roadwayId + "号巷道"); + seriesItem.put("name", floor + "层"); seriesItem.put("type", "line"); List data = new ArrayList<>(); seriesItem.put("data", data); series.add(seriesItem); } - // 按日期统计每个巷道的数量 + // 按日期统计每个楼层的数量 for (DateTime dateTime : datesBetween) { xAxis.add(DateUtil.format(dateTime, "yyyy-MM-dd")); - // 统计每个巷道在当天的数量 - for (int i = 0; i < roadwayIds.size(); i++) { - String roadwayId = roadwayIds.get(i); - long count = list.stream() - .filter(mydoJob -> roadwayId.equals(mydoJob.getRoadwayId()) - && DateUtil.isIn(mydoJob.getCreateTime(), DateUtil.beginOfDay(dateTime), DateUtil.endOfDay(dateTime))) - .count(); + // 统计每个楼层在当天的数量 + for (int i = 0; i < floors.size(); i++) { + Long floor = floors.get(i); + long count = 0; + + // 遍历作业记录,统计该楼层在当天的作业数量 + for (MydoJob job : list) { + if (DateUtil.isIn(job.getCreateTime(), DateUtil.beginOfDay(dateTime), DateUtil.endOfDay(dateTime))) { + // 查找该作业对应的货位是否属于当前楼层 + if (job.getCargoSpaceId() != null && cargoSpaceCache.containsKey(job.getCargoSpaceId())) { + BasCargoSpace space = cargoSpaceCache.get(job.getCargoSpaceId()); + if (space.getTheFloor() != null && space.getTheFloor().equals(floor)) { + count++; + } + } + } + } @SuppressWarnings("unchecked") List data = (List) series.get(i).get("data"); @@ -571,4 +614,6 @@ public class KpiServiceImpl implements KpiService } + + }