From ad5e061b9a7abf5e42bdb1a1fd02106395cd5a30 Mon Sep 17 00:00:00 2001 From: yinq Date: Fri, 24 Apr 2026 13:35:09 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E8=BD=A6=E9=97=B4=E7=9C=8B=E6=9D=BF-?= =?UTF-8?q?=E4=BA=94=E5=88=97=E8=83=BD=E6=BA=90=E5=AE=9E=E6=97=B6=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/controller/EmsBoardController.java | 11 + .../os/ems/report/mapper/EmsReportMapper.java | 22 ++ .../ems/report/service/IEmsBoardService.java | 7 + .../service/impl/EmsBoardServiceImpl.java | 72 ++++++ .../mapper/ems/report/EmsReportMapper.xml | 225 ++++++++++++++++++ 5 files changed, 337 insertions(+) diff --git a/os-ems/src/main/java/com/os/ems/report/controller/EmsBoardController.java b/os-ems/src/main/java/com/os/ems/report/controller/EmsBoardController.java index 269318d..e0fa1e5 100644 --- a/os-ems/src/main/java/com/os/ems/report/controller/EmsBoardController.java +++ b/os-ems/src/main/java/com/os/ems/report/controller/EmsBoardController.java @@ -108,5 +108,16 @@ public class EmsBoardController extends BaseController { return success(result); } + /** + * 车间看板-五列能源实时数据 + * @param hashMap + * @return + */ + @GetMapping("/workshopColumns") + public AjaxResult workshopColumns(@RequestParam(required = false) Map hashMap) { + HashMap result = emsBoardService.workshopColumns(hashMap); + return success(result); + } + } diff --git a/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportMapper.java b/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportMapper.java index 7c87f69..effd569 100644 --- a/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportMapper.java +++ b/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportMapper.java @@ -5,6 +5,7 @@ import com.os.ems.report.domain.EnergyStatisticalReport; import com.os.ems.report.domain.PeaksValleysConsumptionReport; import java.util.List; +import java.util.HashMap; import java.util.Map; /** @@ -29,4 +30,25 @@ public interface EmsReportMapper * @return */ List peaksValleysConsumptionReportList(Map hashMap); + + /** + * 车间看板:五类能源最新实时值(按设备) + * @param hashMap + * @return + */ + List> selectWorkshopLatestRows(HashMap hashMap); + + /** + * 车间看板:五类能源当日能耗(按类型汇总) + * @param hashMap + * @return + */ + List> selectWorkshopTodayConsumption(HashMap hashMap); + + /** + * 车间看板:五类能源当日耗量(按设备) + * @param hashMap + * @return + */ + List> selectWorkshopTodayPerDevice(HashMap hashMap); } diff --git a/os-ems/src/main/java/com/os/ems/report/service/IEmsBoardService.java b/os-ems/src/main/java/com/os/ems/report/service/IEmsBoardService.java index 831181a..96d737b 100644 --- a/os-ems/src/main/java/com/os/ems/report/service/IEmsBoardService.java +++ b/os-ems/src/main/java/com/os/ems/report/service/IEmsBoardService.java @@ -65,4 +65,11 @@ public interface IEmsBoardService { * @return */ HashMap realTimeAlarm(Map hashMap); + + /** + * 车间看板-五列能源实时数据 + * @param hashMap + * @return + */ + HashMap workshopColumns(Map hashMap); } diff --git a/os-ems/src/main/java/com/os/ems/report/service/impl/EmsBoardServiceImpl.java b/os-ems/src/main/java/com/os/ems/report/service/impl/EmsBoardServiceImpl.java index 51d02aa..ecdc8e3 100644 --- a/os-ems/src/main/java/com/os/ems/report/service/impl/EmsBoardServiceImpl.java +++ b/os-ems/src/main/java/com/os/ems/report/service/impl/EmsBoardServiceImpl.java @@ -70,6 +70,9 @@ public class EmsBoardServiceImpl implements IEmsBoardService { @Autowired private EmsRecordAlarmDataMapper emsRecordAlarmDataMapper; + @Autowired + private EmsReportMapper emsReportMapper; + /** * 实时数据接口 * @@ -255,5 +258,74 @@ public class EmsBoardServiceImpl implements IEmsBoardService { return result; } + @Override + public HashMap workshopColumns(Map hashMap) { + HashMap result = new HashMap<>(); + Map dateTimeRanges = DateUtils.getDateTimeRanges(); + HashMap query = new HashMap<>(); + query.put("beginCollectTime", dateTimeRanges.get("todayStart")); + query.put("endCollectTime", dateTimeRanges.get("currentTime")); + + List> latestRows = emsReportMapper.selectWorkshopLatestRows(query); + List> consumptionList = emsReportMapper.selectWorkshopTodayConsumption(query); + List> perDeviceList = emsReportMapper.selectWorkshopTodayPerDevice(query); + + Map consumptionMap = new HashMap<>(); + for (Map row : consumptionList) { + String type = String.valueOf(row.get("monitorType")); + consumptionMap.put(type, toBigDecimal(row.get("todayConsumption"))); + } + + Map perDeviceConsumption = new HashMap<>(); + for (Map row : perDeviceList) { + String type = String.valueOf(row.get("monitorType")); + String code = String.valueOf(row.get("monitorCode")); + perDeviceConsumption.put(type + "_" + code, toBigDecimal(row.get("rowTodayConsumption"))); + } + + LinkedHashMap> colMap = new LinkedHashMap<>(); + colMap.put(EmsConstants.EMS_ENERGY_TYPE_DNB, createColumn(EmsConstants.EMS_ENERGY_TYPE_DNB, "电", "kWh", consumptionMap)); + colMap.put(EmsConstants.EMS_ENERGY_TYPE_WATER, createColumn(EmsConstants.EMS_ENERGY_TYPE_WATER, "水", "m³", consumptionMap)); + colMap.put(EmsConstants.EMS_ENERGY_TYPE_STEAM, createColumn(EmsConstants.EMS_ENERGY_TYPE_STEAM, "蒸汽", "t", consumptionMap)); + colMap.put(EmsConstants.EMS_ENERGY_TYPE_Air, createColumn(EmsConstants.EMS_ENERGY_TYPE_Air, "压缩空气", "m³", consumptionMap)); + colMap.put(EmsConstants.EMS_ENERGY_TYPE_NITROGEN, createColumn(EmsConstants.EMS_ENERGY_TYPE_NITROGEN, "氮气", "m³", consumptionMap)); + + for (Map row : latestRows) { + String type = String.valueOf(row.get("monitorType")); + Map col = colMap.get(type); + if (col == null) { + continue; + } + String code = String.valueOf(row.get("monitorCode")); + row.put("rowTodayConsumption", perDeviceConsumption.getOrDefault(type + "_" + code, BigDecimal.ZERO)); + @SuppressWarnings("unchecked") + List> rows = (List>) col.get("rows"); + rows.add(row); + } + + result.put("columns", new ArrayList<>(colMap.values())); + return result; + } + + private Map createColumn(String monitorType, String name, String unit, Map consumptionMap) { + Map col = new LinkedHashMap<>(); + col.put("monitorType", monitorType); + col.put("name", name); + col.put("todayConsumption", consumptionMap.getOrDefault(monitorType, BigDecimal.ZERO)); + col.put("todayUnit", unit); + col.put("rows", new ArrayList>()); + return col; + } + + private BigDecimal toBigDecimal(Object value) { + if (value == null) { + return BigDecimal.ZERO; + } + if (value instanceof BigDecimal) { + return (BigDecimal) value; + } + return new BigDecimal(String.valueOf(value)); + } + } diff --git a/os-ems/src/main/resources/mapper/ems/report/EmsReportMapper.xml b/os-ems/src/main/resources/mapper/ems/report/EmsReportMapper.xml index 064fb57..e04aa61 100644 --- a/os-ems/src/main/resources/mapper/ems/report/EmsReportMapper.xml +++ b/os-ems/src/main/resources/mapper/ems/report/EmsReportMapper.xml @@ -70,4 +70,229 @@ GROUP BY ebwu.work_unit_code, ebwu.work_unit_name, dnb.pointTime, dnb.priceType ORDER BY ebwu.work_unit_code, ebwu.work_unit_name, dnb.pointTime, dnb.priceType + + + + + + \ No newline at end of file