From 0361c5846f305dbfd2a039918665acd29ac5628d 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: Thu, 18 Sep 2025 10:55:41 +0800 Subject: [PATCH] =?UTF-8?q?KPI=E5=88=86=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kpi/service/impl/KpiServiceImpl.java | 53 +++++++++++--- .../src/views/kpi/inAnalysis/indexByTime.vue | 69 +++++++++++++------ .../src/views/kpi/outAnalysis/indexByTime.vue | 64 ++++++++++++----- .../src/views/kpi/spaceAnalysis/index.vue | 38 +++++----- ruoyi-ui/src/views/kpi/spacePlan/index.vue | 34 ++++----- 5 files changed, 175 insertions(+), 83 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 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 @@