From 2c1a99269f0f2ea0562b5dbed031c10f24990a81 Mon Sep 17 00:00:00 2001 From: Timer <@> Date: Sun, 8 Mar 2026 19:57:26 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=A1=E9=81=93=E7=BB=9F=E8=AE=A1=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pipeline/PipelineDataController.java | 53 +++++++++++++++++++ .../sipai/dao/pipeline/PipelineDataDao.java | 7 +++ .../mapper/pipeline/PipelineDataMapper.xml | 11 ++++ .../service/pipeline/PipelineDataService.java | 7 +++ .../webapp/jsp/pipeline/pipelineDataAdd.jsp | 4 +- .../webapp/jsp/pipeline/pipelineDataEdit.jsp | 4 +- .../webapp/jsp/pipeline/pipelineDataList.jsp | 2 +- .../webapp/jsp/pipeline/pipelineDataView.jsp | 2 +- 8 files changed, 84 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/sipai/controller/pipeline/PipelineDataController.java b/src/main/java/com/sipai/controller/pipeline/PipelineDataController.java index 1d82ad6f..a9434ab6 100644 --- a/src/main/java/com/sipai/controller/pipeline/PipelineDataController.java +++ b/src/main/java/com/sipai/controller/pipeline/PipelineDataController.java @@ -161,6 +161,8 @@ public class PipelineDataController { * - totalCount: 污水管网总数量 * - materialLengthRatio: 污水管网【材质-长度】比例 * - materialCountRatio: 污水管网【材质-数量】比例 + * - diameterLengthRatio: 污水管网【管径-长度】分布 + * - diameterCountRatio: 污水管网【管径-数量】分布 */ @RequestMapping("/getStatistics.do") public ModelAndView getStatistics(HttpServletRequest request, Model model) { @@ -239,6 +241,57 @@ public class PipelineDataController { result.put("materialLengthRatio", materialLengthRatio); result.put("materialCountRatio", materialCountRatio); + + // 获取按管径分组的统计数据 + List> diameterStats = pipelineDataService.selectDiameterStats(); + + // 管径-长度分布 + JSONArray diameterLengthRatio = new JSONArray(); + // 管径-数量分布 + JSONArray diameterCountRatio = new JSONArray(); + + if (diameterStats != null && !diameterStats.isEmpty()) { + for (Map stat : diameterStats) { + String diameter = (String) stat.get("diameter"); + if (diameter == null || diameter.isEmpty()) { + diameter = "未知"; + } + + Object countObj = stat.get("count"); + Object lengthObj = stat.get("totalLength"); + + int count = 0; + double length = 0.0; + + if (countObj != null) { + count = ((Number) countObj).intValue(); + } + if (lengthObj != null) { + length = ((Number) lengthObj).doubleValue(); + } + + // 计算比例 + double lengthRatio = totalLength > 0 ? Math.round(length / totalLength * 10000) / 100.0 : 0; + double countRatio = totalCount > 0 ? Math.round(count * 1.0 / totalCount * 10000) / 100.0 : 0; + + // 管径-长度分布 + JSONObject lengthItem = new JSONObject(); + lengthItem.put("diameter", diameter); + lengthItem.put("length", Math.round(length * 100) / 100.0); + lengthItem.put("ratio", lengthRatio); // 百分比 + diameterLengthRatio.add(lengthItem); + + // 管径-数量分布 + JSONObject countItem = new JSONObject(); + countItem.put("diameter", diameter); + countItem.put("count", count); + countItem.put("ratio", countRatio); // 百分比 + diameterCountRatio.add(countItem); + } + } + + result.put("diameterLengthRatio", diameterLengthRatio); + result.put("diameterCountRatio", diameterCountRatio); result.put("success", true); } catch (Exception e) { diff --git a/src/main/java/com/sipai/dao/pipeline/PipelineDataDao.java b/src/main/java/com/sipai/dao/pipeline/PipelineDataDao.java index 15dac455..88239e2a 100644 --- a/src/main/java/com/sipai/dao/pipeline/PipelineDataDao.java +++ b/src/main/java/com/sipai/dao/pipeline/PipelineDataDao.java @@ -27,4 +27,11 @@ public class PipelineDataDao extends CommDaoImpl { public Map selectTotalStats() { return this.getSqlSession().selectOne(this.getMappernamespace() + ".selectTotalStats"); } + + /** + * 获取按管径分组的统计数据 + */ + public List> selectDiameterStats() { + return this.getSqlSession().selectList(this.getMappernamespace() + ".selectDiameterStats"); + } } diff --git a/src/main/java/com/sipai/mapper/pipeline/PipelineDataMapper.xml b/src/main/java/com/sipai/mapper/pipeline/PipelineDataMapper.xml index e0d0a7c3..2e866ae8 100644 --- a/src/main/java/com/sipai/mapper/pipeline/PipelineDataMapper.xml +++ b/src/main/java/com/sipai/mapper/pipeline/PipelineDataMapper.xml @@ -200,4 +200,15 @@ SUM(COALESCE(length_m, 0)) as totalLength FROM tb_pipeline_data + + + diff --git a/src/main/java/com/sipai/service/pipeline/PipelineDataService.java b/src/main/java/com/sipai/service/pipeline/PipelineDataService.java index f44b3876..8e19c2c0 100644 --- a/src/main/java/com/sipai/service/pipeline/PipelineDataService.java +++ b/src/main/java/com/sipai/service/pipeline/PipelineDataService.java @@ -77,4 +77,11 @@ public class PipelineDataService implements CommService { public Map selectTotalStats() { return pipelineDataDao.selectTotalStats(); } + + /** + * 获取按管径分组的统计数据 + */ + public List> selectDiameterStats() { + return pipelineDataDao.selectDiameterStats(); + } } diff --git a/src/main/webapp/jsp/pipeline/pipelineDataAdd.jsp b/src/main/webapp/jsp/pipeline/pipelineDataAdd.jsp index a407b008..cd9b19cb 100644 --- a/src/main/webapp/jsp/pipeline/pipelineDataAdd.jsp +++ b/src/main/webapp/jsp/pipeline/pipelineDataAdd.jsp @@ -152,9 +152,9 @@
- +
- +
diff --git a/src/main/webapp/jsp/pipeline/pipelineDataEdit.jsp b/src/main/webapp/jsp/pipeline/pipelineDataEdit.jsp index 64b8c431..4035414c 100644 --- a/src/main/webapp/jsp/pipeline/pipelineDataEdit.jsp +++ b/src/main/webapp/jsp/pipeline/pipelineDataEdit.jsp @@ -158,10 +158,10 @@
- +
+ value="${pipelineData.diameterMm}" placeholder="请输入管道管径">
diff --git a/src/main/webapp/jsp/pipeline/pipelineDataList.jsp b/src/main/webapp/jsp/pipeline/pipelineDataList.jsp index e96d6205..d11016aa 100644 --- a/src/main/webapp/jsp/pipeline/pipelineDataList.jsp +++ b/src/main/webapp/jsp/pipeline/pipelineDataList.jsp @@ -208,7 +208,7 @@ width: '10%' }, { field: 'diameterMm', - title: '直径(mm)', + title: '管径(mm)', align: 'center', valign: 'middle', width: '10%' diff --git a/src/main/webapp/jsp/pipeline/pipelineDataView.jsp b/src/main/webapp/jsp/pipeline/pipelineDataView.jsp index 50ed5a1b..fc64f8c3 100644 --- a/src/main/webapp/jsp/pipeline/pipelineDataView.jsp +++ b/src/main/webapp/jsp/pipeline/pipelineDataView.jsp @@ -57,7 +57,7 @@
- +

${pipelineData.diameterMm}