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 4370532..e4c002a 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 @@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; +import java.util.stream.Collectors; /** * KPI 统计分析 服务实现类 @@ -457,15 +458,51 @@ public class KpiServiceImpl implements KpiService mydoJobParam.setInOut(inOut); List datesBetween = DateUtil.rangeToList(DateUtil.parseDate(mydoJobParam.getCreateLeftTime()), DateUtil.parseDate(mydoJobParam.getCreateRightTime()), DateField.DAY_OF_MONTH); List list = mydoJobFinishMapper.selectMydoJobFinishListByMydoJob(mydoJobParam); - List x = new ArrayList<>(); - List y = new ArrayList<>(); - for (DateTime dateTime : datesBetween) { - //筛选每一日的数量 - x.add(DateUtil.format(dateTime, "yyyy-MM-dd")); - y.add(list.stream().filter(mydoJob -> DateUtil.isIn(mydoJob.getCreateTime(), DateUtil.beginOfDay(dateTime),DateUtil.endOfDay(dateTime))).count()); + + // 根据inOut过滤数据 + list = list.stream() + .filter(job -> { + int inOrOut = Integer.parseInt(job.getInOrOut()); + return "1".equals(mydoJobParam.getInOut()) ? inOrOut < 20 : inOrOut >= 20; + }) + .collect(Collectors.toList()); + + // 获取所有巷道ID(1和2) + List roadwayIds = Arrays.asList("1", "2"); + + List xAxis = new ArrayList<>(); + List> series = new ArrayList<>(); + + // 为每个巷道创建一个系列 + for (String roadwayId : roadwayIds) { + Map seriesItem = new HashMap<>(); + seriesItem.put("name", roadwayId + "号巷道"); + seriesItem.put("type", "line"); + List data = new ArrayList<>(); + seriesItem.put("data", data); + series.add(seriesItem); } - res.put("xAxis",x); - res.put("series",y); + + // 按日期统计每个巷道的数量 + 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(); + + @SuppressWarnings("unchecked") + List data = (List) series.get(i).get("data"); + data.add(count); + } + } + + res.put("xAxis", xAxis); + res.put("series", series); return AjaxResult.success(res); } diff --git a/ruoyi-ui/src/views/kpi/inAnalysis/indexByTime.vue b/ruoyi-ui/src/views/kpi/inAnalysis/indexByTime.vue index 821ac17..a20255a 100644 --- a/ruoyi-ui/src/views/kpi/inAnalysis/indexByTime.vue +++ b/ruoyi-ui/src/views/kpi/inAnalysis/indexByTime.vue @@ -1,16 +1,16 @@