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 } + + }