From 11efd452d371eecdfd4f12cefd7837fcd6f1bbbb Mon Sep 17 00:00:00 2001 From: yinq Date: Tue, 28 Apr 2026 11:13:16 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E5=AE=9E=E6=97=B6=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E3=80=81=E8=BD=A6=E9=97=B4=E7=9C=8B=E6=9D=BF-=E5=8D=95?= =?UTF-8?q?=E8=83=BD=E6=BA=90=E5=AE=9E=E6=97=B6=E6=95=B0=E6=8D=AE=E4=B8=8E?= =?UTF-8?q?=E8=BF=9124=E5=B0=8F=E6=97=B6=E8=B6=8B=E5=8A=BF=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/EmsRecordAirInstantMapper.java | 2 + .../mapper/EmsRecordDnbInstantMapper.java | 30 +- .../EmsRecordNitrogenInstantMapper.java | 2 + .../mapper/EmsRecordSteamInstantMapper.java | 2 + .../mapper/EmsRecordWaterInstantMapper.java | 28 +- .../report/controller/EmsBoardController.java | 22 ++ .../os/ems/report/mapper/EmsReportMapper.java | 7 + .../mapper/EmsReportPointAirMapper.java | 16 + .../mapper/EmsReportPointNitrogenMapper.java | 16 + .../mapper/EmsReportPointSteamMapper.java | 16 + .../mapper/EmsReportPointWaterMapper.java | 16 + .../ems/report/service/IEmsBoardService.java | 14 + .../service/impl/EmsBoardServiceImpl.java | 335 ++++++++++++++++-- .../ems/record/EmsRecordAirInstantMapper.xml | 28 ++ .../ems/record/EmsRecordDnbInstantMapper.xml | 31 ++ .../record/EmsRecordNitrogenInstantMapper.xml | 28 ++ .../record/EmsRecordSteamInstantMapper.xml | 28 ++ .../record/EmsRecordWaterInstantMapper.xml | 25 ++ .../mapper/ems/report/EmsReportMapper.xml | 334 +++++++++-------- .../ems/report/EmsReportPointAirMapper.xml | 39 ++ .../ems/report/EmsReportPointDnbMapper.xml | 2 +- .../report/EmsReportPointNitrogenMapper.xml | 39 ++ .../ems/report/EmsReportPointSteamMapper.xml | 39 ++ .../ems/report/EmsReportPointWaterMapper.xml | 39 ++ 24 files changed, 941 insertions(+), 197 deletions(-) diff --git a/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordAirInstantMapper.java b/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordAirInstantMapper.java index 775c3dc..3ce317d 100644 --- a/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordAirInstantMapper.java +++ b/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordAirInstantMapper.java @@ -69,4 +69,6 @@ public interface EmsRecordAirInstantMapper * @return */ List realTimeDataList(Map hashMap); + + List realTimeDataByEnergy(Map hashMap); } diff --git a/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordDnbInstantMapper.java b/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordDnbInstantMapper.java index 84c2829..dde0921 100644 --- a/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordDnbInstantMapper.java +++ b/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordDnbInstantMapper.java @@ -16,47 +16,47 @@ import com.os.ems.report.domain.RealTimeDataBo; public interface EmsRecordDnbInstantMapper { /** - * 查询电实时数据 + * 查询电实时数? * - * @param objId 电实时数据主键 - * @return 电实时数据 + * @param objId 电实时数据主? + * @return 电实时数? */ public EmsRecordDnbInstant selectEmsRecordDnbInstantByObjId(Long objId); /** - * 查询电实时数据列表 + * 查询电实时数据列? * - * @param emsRecordDnbInstant 电实时数据 - * @return 电实时数据集合 + * @param emsRecordDnbInstant 电实时数? + * @return 电实时数据集? */ public List selectEmsRecordDnbInstantList(EmsRecordDnbInstant emsRecordDnbInstant); /** - * 新增电实时数据 + * 新增电实时数? * - * @param emsRecordDnbInstant 电实时数据 + * @param emsRecordDnbInstant 电实时数? * @return 结果 */ public int insertEmsRecordDnbInstant(EmsRecordDnbInstant emsRecordDnbInstant); /** - * 修改电实时数据 + * 修改电实时数? * - * @param emsRecordDnbInstant 电实时数据 + * @param emsRecordDnbInstant 电实时数? * @return 结果 */ public int updateEmsRecordDnbInstant(EmsRecordDnbInstant emsRecordDnbInstant); /** - * 删除电实时数据 + * 删除电实时数? * - * @param objId 电实时数据主键 + * @param objId 电实时数据主? * @return 结果 */ public int deleteEmsRecordDnbInstantByObjId(Long objId); /** - * 批量删除电实时数据 + * 批量删除电实时数? * * @param objIds 需要删除的数据主键集合 * @return 结果 @@ -64,7 +64,7 @@ public interface EmsRecordDnbInstantMapper public int deleteEmsRecordDnbInstantByObjIds(Long[] objIds); /** - * 查询电实时数据 + * 查询电实时数? * @param emsRecordDnbInstant * @return */ @@ -78,4 +78,6 @@ public interface EmsRecordDnbInstantMapper */ List realTimeDataList(Map hashMap); + List realTimeDataByEnergy(Map hashMap); + } diff --git a/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordNitrogenInstantMapper.java b/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordNitrogenInstantMapper.java index ed62f86..0ce5de6 100644 --- a/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordNitrogenInstantMapper.java +++ b/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordNitrogenInstantMapper.java @@ -69,4 +69,6 @@ public interface EmsRecordNitrogenInstantMapper * @return */ List realTimeDataList(Map hashMap); + + List realTimeDataByEnergy(Map hashMap); } diff --git a/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordSteamInstantMapper.java b/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordSteamInstantMapper.java index 635cb30..4f9c16c 100644 --- a/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordSteamInstantMapper.java +++ b/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordSteamInstantMapper.java @@ -69,4 +69,6 @@ public interface EmsRecordSteamInstantMapper { */ List realTimeDataList(Map hashMap); + List realTimeDataByEnergy(Map hashMap); + } diff --git a/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordWaterInstantMapper.java b/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordWaterInstantMapper.java index 736496f..1a2d2cf 100644 --- a/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordWaterInstantMapper.java +++ b/os-ems/src/main/java/com/os/ems/record/mapper/EmsRecordWaterInstantMapper.java @@ -15,47 +15,47 @@ import com.os.ems.report.domain.RealTimeDataBo; public interface EmsRecordWaterInstantMapper { /** - * 查询水实时数据 + * 查询水实时数? * - * @param objId 水实时数据主键 - * @return 水实时数据 + * @param objId 水实时数据主? + * @return 水实时数? */ public EmsRecordWaterInstant selectEmsRecordWaterInstantByObjId(Long objId); /** - * 查询水实时数据列表 + * 查询水实时数据列? * - * @param emsRecordWaterInstant 水实时数据 - * @return 水实时数据集合 + * @param emsRecordWaterInstant 水实时数? + * @return 水实时数据集? */ public List selectEmsRecordWaterInstantList(EmsRecordWaterInstant emsRecordWaterInstant); /** - * 新增水实时数据 + * 新增水实时数? * - * @param emsRecordWaterInstant 水实时数据 + * @param emsRecordWaterInstant 水实时数? * @return 结果 */ public int insertEmsRecordWaterInstant(EmsRecordWaterInstant emsRecordWaterInstant); /** - * 修改水实时数据 + * 修改水实时数? * - * @param emsRecordWaterInstant 水实时数据 + * @param emsRecordWaterInstant 水实时数? * @return 结果 */ public int updateEmsRecordWaterInstant(EmsRecordWaterInstant emsRecordWaterInstant); /** - * 删除水实时数据 + * 删除水实时数? * - * @param objId 水实时数据主键 + * @param objId 水实时数据主? * @return 结果 */ public int deleteEmsRecordWaterInstantByObjId(Long objId); /** - * 批量删除水实时数据 + * 批量删除水实时数? * * @param objIds 需要删除的数据主键集合 * @return 结果 @@ -70,4 +70,6 @@ public interface EmsRecordWaterInstantMapper */ List realTimeDataList(Map hashMap); + List realTimeDataByEnergy(Map hashMap); + } 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 e0fa1e5..4bd72e3 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 @@ -42,6 +42,17 @@ public class EmsBoardController extends BaseController { return success(list); } + /** + * 实时数据接口(按能源类型,不关联产线) + * @param hashMap + * @return + */ + @GetMapping("/realTimeDataByEnergy") + public AjaxResult realTimeDataByEnergy(@RequestParam(required = false) Map hashMap) { + List list = emsBoardService.realTimeDataByEnergy(hashMap); + return success(list); + } + /** * 厂区看板-设备总览接口 * @param hashMap @@ -119,5 +130,16 @@ public class EmsBoardController extends BaseController { return success(result); } + /** + * 车间看板-单能源数据与近24小时趋势 + * @param hashMap + * @return + */ + @GetMapping("/workshopEnergyBoard") + public AjaxResult workshopEnergyBoard(@RequestParam(required = false) Map hashMap) { + HashMap result = emsBoardService.workshopEnergyBoard(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 ffcae05..ac43a4c 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 @@ -71,4 +71,11 @@ public interface EmsReportMapper * @return */ List> selectWorkshopTodayPerDevice(HashMap hashMap); + + /** + * 车间看板:单能源近24小时趋势(按设备) + * @param hashMap + * @return + */ + List> selectWorkshop24hPerDeviceTrend(HashMap hashMap); } diff --git a/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportPointAirMapper.java b/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportPointAirMapper.java index 1c8fa1c..5b86d62 100644 --- a/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportPointAirMapper.java +++ b/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportPointAirMapper.java @@ -1,6 +1,8 @@ package com.os.ems.report.mapper; +import java.util.HashMap; import java.util.List; +import java.util.Map; import com.os.ems.report.domain.EmsReportPointAir; /** @@ -58,5 +60,19 @@ public interface EmsReportPointAirMapper * @return 结果 */ public int deleteEmsReportPointAirByObjIds(Long[] objIds); + + /** + * 统计单元合计耗量 + * @param hashMap + * @return + */ + List> selectWorkUnitTotalConsumption(Map hashMap); + + /** + * 统计单元日期耗量 + * @param hashMap + * @return + */ + List> selectWorkUnitDateConsumption(Map hashMap); } diff --git a/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportPointNitrogenMapper.java b/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportPointNitrogenMapper.java index 1e42ed8..c8b720c 100644 --- a/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportPointNitrogenMapper.java +++ b/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportPointNitrogenMapper.java @@ -1,6 +1,8 @@ package com.os.ems.report.mapper; +import java.util.HashMap; import java.util.List; +import java.util.Map; import com.os.ems.report.domain.EmsReportPointNitrogen; /** @@ -58,5 +60,19 @@ public interface EmsReportPointNitrogenMapper * @return 结果 */ public int deleteEmsReportPointNitrogenByObjIds(Long[] objIds); + + /** + * 统计单元合计耗量 + * @param hashMap + * @return + */ + List> selectWorkUnitTotalConsumption(Map hashMap); + + /** + * 统计单元日期耗量 + * @param hashMap + * @return + */ + List> selectWorkUnitDateConsumption(Map hashMap); } diff --git a/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportPointSteamMapper.java b/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportPointSteamMapper.java index 0ff5410..5c2726c 100644 --- a/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportPointSteamMapper.java +++ b/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportPointSteamMapper.java @@ -1,6 +1,8 @@ package com.os.ems.report.mapper; +import java.util.HashMap; import java.util.List; +import java.util.Map; import com.os.ems.report.domain.EmsReportPointSteam; @@ -58,4 +60,18 @@ public interface EmsReportPointSteamMapper { * @return 结果 */ public int deleteEmsReportPointSteamByObjIds(Long[] objIds); + + /** + * 统计单元合计耗量 + * @param hashMap + * @return + */ + List> selectWorkUnitTotalConsumption(Map hashMap); + + /** + * 统计单元日期耗量 + * @param hashMap + * @return + */ + List> selectWorkUnitDateConsumption(Map hashMap); } diff --git a/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportPointWaterMapper.java b/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportPointWaterMapper.java index 58ec01b..e8422fa 100644 --- a/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportPointWaterMapper.java +++ b/os-ems/src/main/java/com/os/ems/report/mapper/EmsReportPointWaterMapper.java @@ -1,6 +1,8 @@ package com.os.ems.report.mapper; +import java.util.HashMap; import java.util.List; +import java.util.Map; import com.os.ems.report.domain.EmsReportPointWater; /** @@ -58,4 +60,18 @@ public interface EmsReportPointWaterMapper * @return 结果 */ public int deleteEmsReportPointWaterByObjIds(Long[] objIds); + + /** + * 统计单元合计耗量 + * @param hashMap + * @return + */ + List> selectWorkUnitTotalConsumption(Map hashMap); + + /** + * 统计单元日期耗量 + * @param hashMap + * @return + */ + List> selectWorkUnitDateConsumption(Map 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 96d737b..09da4d7 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 @@ -24,6 +24,13 @@ public interface IEmsBoardService { */ List realTimeDataList(Map hashMap); + /** + * 实时数据接口(按能源类型,不关联产线) + * @param hashMap + * @return + */ + List realTimeDataByEnergy(Map hashMap); + /** * 厂区看板-设备总览接口 * @param hashMap @@ -72,4 +79,11 @@ public interface IEmsBoardService { * @return */ HashMap workshopColumns(Map hashMap); + + /** + * 车间看板-单能源实时数据与近24小时趋势 + * @param hashMap + * @return + */ + HashMap workshopEnergyBoard(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 ecdc8e3..19491f5 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 @@ -15,13 +15,20 @@ import com.os.ems.report.domain.EnergyStatisticalReport; import com.os.ems.report.domain.PeaksValleysConsumptionReport; import com.os.ems.report.domain.RealTimeDataBo; import com.os.ems.report.mapper.EmsReportMapper; +import com.os.ems.report.mapper.EmsReportPointAirMapper; import com.os.ems.report.mapper.EmsReportPointDnbMapper; +import com.os.ems.report.mapper.EmsReportPointNitrogenMapper; +import com.os.ems.report.mapper.EmsReportPointSteamMapper; +import com.os.ems.report.mapper.EmsReportPointWaterMapper; import com.os.ems.report.service.IEmsBoardService; import com.os.ems.report.service.IEmsReportService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -58,6 +65,18 @@ public class EmsBoardServiceImpl implements IEmsBoardService { @Autowired private EmsReportPointDnbMapper emsReportPointDnbMapper; + @Autowired + private EmsReportPointWaterMapper emsReportPointWaterMapper; + + @Autowired + private EmsReportPointSteamMapper emsReportPointSteamMapper; + + @Autowired + private EmsReportPointAirMapper emsReportPointAirMapper; + + @Autowired + private EmsReportPointNitrogenMapper emsReportPointNitrogenMapper; + @Autowired private EmsBaseWorkUnitMapper emsBaseWorkUnitMapper; @@ -73,6 +92,9 @@ public class EmsBoardServiceImpl implements IEmsBoardService { @Autowired private EmsReportMapper emsReportMapper; + @Autowired + private IEmsReportService emsReportService; + /** * 实时数据接口 * @@ -101,6 +123,27 @@ public class EmsBoardServiceImpl implements IEmsBoardService { return reportList; } + @Override + public List realTimeDataByEnergy(Map hashMap) { + if (!hashMap.containsKey("monitorType")) { + return null; + } + String monitorType = String.valueOf(hashMap.get("monitorType")); + List reportList = new ArrayList<>(); + if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_DNB)) { + reportList = emsRecordDnbInstantMapper.realTimeDataByEnergy(hashMap); + } else if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_WATER)) { + reportList = emsRecordWaterInstantMapper.realTimeDataByEnergy(hashMap); + } else if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_STEAM)) { + reportList = emsRecordSteamInstantMapper.realTimeDataByEnergy(hashMap); + } else if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_Air)) { + reportList = emsRecordAirInstantMapper.realTimeDataByEnergy(hashMap); + } else if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_NITROGEN)) { + reportList = emsRecordNitrogenInstantMapper.realTimeDataByEnergy(hashMap); + } + return reportList; + } + /** * 厂区看板-设备总览接口 * @param hashMap @@ -114,6 +157,7 @@ public class EmsBoardServiceImpl implements IEmsBoardService { List deviceInfoList = emsBaseCollectDeviceInfoMapper.selectEmsBaseCollectDeviceInfoList(deviceInfo); EmsBaseMonitorInfo monitorInfo = new EmsBaseMonitorInfo(); monitorInfo.setIsAmmeter(EmsConstants.EMS_IS_AMMETER_NO); + monitorInfo.setMonitorStatus(0L); List monitorInfoList = emsBaseMonitorInfoMapper.selectEmsBaseMonitorInfoList(monitorInfo); Long dnbSum = 0L; Long waterSum = 0L; @@ -163,6 +207,14 @@ public class EmsBoardServiceImpl implements IEmsBoardService { hashMap.put("endCollectTime", monthEnd); if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_DNB)) { reportList = emsReportPointDnbMapper.selectWorkUnitTotalConsumption(hashMap); + } else if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_WATER)) { + reportList = emsReportPointWaterMapper.selectWorkUnitTotalConsumption(hashMap); + } else if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_STEAM)) { + reportList = emsReportPointSteamMapper.selectWorkUnitTotalConsumption(hashMap); + } else if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_Air)) { + reportList = emsReportPointAirMapper.selectWorkUnitTotalConsumption(hashMap); + } else if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_NITROGEN)) { + reportList = emsReportPointNitrogenMapper.selectWorkUnitTotalConsumption(hashMap); } result.put("ranking", reportList); result.put("statistics", reportList); @@ -177,7 +229,46 @@ public class EmsBoardServiceImpl implements IEmsBoardService { @Override public HashMap peaksValleysConsumption(Map hashMap) { HashMap result = new HashMap<>(); - List> reportList = emsReportPointDnbMapper.peaksValleysConsumption(hashMap); + if (hashMap == null) { + hashMap = new HashMap(); + } + String monitorType = String.valueOf(hashMap.getOrDefault("monitorType", EmsConstants.EMS_ENERGY_TYPE_DNB)); + Map dateTimeRanges = DateUtils.getDateTimeRanges(); + String currentTime = dateTimeRanges.get("currentTime"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String beginTime = LocalDateTime.parse(dateTimeRanges.get("todayStart"), formatter).minusDays(6).format(formatter); + + HashMap queryMap = new HashMap<>(); + queryMap.put("energyType", monitorType); + queryMap.put("dateType", 10); + queryMap.put("beginCollectTime", beginTime); + queryMap.put("endCollectTime", currentTime); + queryMap.put("excludeObjId", 1); + + List sourceList = emsReportService.energyStatisticalReportList(queryMap); + if (sourceList == null) { + sourceList = new ArrayList<>(); + } + + // 按 日期+统计单元 聚合,供前端饼图/柱图使用 + Map groupedMap = new LinkedHashMap<>(); + for (EnergyStatisticalReport item : sourceList) { + String date = item.getBeginTime(); + String unitName = item.getWorkUnitName(); + String key = date + "|" + unitName; + BigDecimal expend = item.getExpend() == null ? BigDecimal.ZERO : item.getExpend(); + groupedMap.put(key, groupedMap.getOrDefault(key, BigDecimal.ZERO).add(expend)); + } + + List> reportList = new ArrayList<>(); + for (Map.Entry entry : groupedMap.entrySet()) { + String[] keyPart = entry.getKey().split("\\|", 2); + HashMap row = new HashMap<>(); + row.put("date", keyPart[0]); + row.put("unitName", keyPart.length > 1 ? keyPart[1] : ""); + row.put("expend", entry.getValue().setScale(2, RoundingMode.HALF_UP).toPlainString()); + reportList.add(row); + } result.put("reportList", reportList); return result; } @@ -190,16 +281,32 @@ public class EmsBoardServiceImpl implements IEmsBoardService { @Override public HashMap fiveConsumptionStatistics(Map hashMap) { HashMap result = new LinkedHashMap<>(); - result.put("dnbSum", new BigDecimal(String.format("%.2f", Math.random() * Math.round(10000 * Math.random())))); - result.put("waterSum", new BigDecimal(String.format("%.2f", Math.random() * Math.round(10000 * Math.random())))); - result.put("steamSum", new BigDecimal(String.format("%.2f", Math.random() * Math.round(10000 * Math.random())))); - result.put("airSum", new BigDecimal(String.format("%.2f", Math.random() * Math.round(10000 * Math.random())))); - result.put("nitrogenSum", new BigDecimal(String.format("%.2f", Math.random() * Math.round(10000 * Math.random())))); - result.put("dnbRate", new BigDecimal(String.format("%.2f", 100 * Math.random()))); - result.put("waterRate", new BigDecimal(String.format("%.2f", 100 * Math.random()))); - result.put("steamRate", new BigDecimal(String.format("%.2f", -100 * Math.random()))); - result.put("airRate", new BigDecimal(String.format("%.2f", 100 * Math.random()))); - result.put("nitrogenRate", new BigDecimal(String.format("%.2f", -100 * Math.random()))); + Map dateTimeRanges = DateUtils.getDateTimeRanges(); + String todayStart = dateTimeRanges.get("todayStart"); + String currentTime = dateTimeRanges.get("currentTime"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String yesterdayStart = LocalDateTime.parse(todayStart, formatter).minusDays(1).format(formatter); + String yesterdayCurrentTime = LocalDateTime.parse(currentTime, formatter).minusDays(1).format(formatter); + + Map currentMap = getTodayConsumptionMap(todayStart, currentTime); + Map yesterdayMap = getTodayConsumptionMap(yesterdayStart, yesterdayCurrentTime); + + BigDecimal dnbSum = currentMap.getOrDefault(EmsConstants.EMS_ENERGY_TYPE_DNB, BigDecimal.ZERO); + BigDecimal waterSum = currentMap.getOrDefault(EmsConstants.EMS_ENERGY_TYPE_WATER, BigDecimal.ZERO); + BigDecimal steamSum = currentMap.getOrDefault(EmsConstants.EMS_ENERGY_TYPE_STEAM, BigDecimal.ZERO); + BigDecimal airSum = currentMap.getOrDefault(EmsConstants.EMS_ENERGY_TYPE_Air, BigDecimal.ZERO); + BigDecimal nitrogenSum = currentMap.getOrDefault(EmsConstants.EMS_ENERGY_TYPE_NITROGEN, BigDecimal.ZERO); + + result.put("dnbSum", dnbSum); + result.put("waterSum", waterSum); + result.put("steamSum", steamSum); + result.put("airSum", airSum); + result.put("nitrogenSum", nitrogenSum); + result.put("dnbRate", calculateRate(dnbSum, yesterdayMap.getOrDefault(EmsConstants.EMS_ENERGY_TYPE_DNB, BigDecimal.ZERO))); + result.put("waterRate", calculateRate(waterSum, yesterdayMap.getOrDefault(EmsConstants.EMS_ENERGY_TYPE_WATER, BigDecimal.ZERO))); + result.put("steamRate", calculateRate(steamSum, yesterdayMap.getOrDefault(EmsConstants.EMS_ENERGY_TYPE_STEAM, BigDecimal.ZERO))); + result.put("airRate", calculateRate(airSum, yesterdayMap.getOrDefault(EmsConstants.EMS_ENERGY_TYPE_Air, BigDecimal.ZERO))); + result.put("nitrogenRate", calculateRate(nitrogenSum, yesterdayMap.getOrDefault(EmsConstants.EMS_ENERGY_TYPE_NITROGEN, BigDecimal.ZERO))); return result; } @@ -238,6 +345,14 @@ public class EmsBoardServiceImpl implements IEmsBoardService { } if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_DNB)) { reportList = emsReportPointDnbMapper.selectWorkUnitDateConsumption(hashMap); + } else if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_WATER)) { + reportList = emsReportPointWaterMapper.selectWorkUnitDateConsumption(hashMap); + } else if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_STEAM)) { + reportList = emsReportPointSteamMapper.selectWorkUnitDateConsumption(hashMap); + } else if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_Air)) { + reportList = emsReportPointAirMapper.selectWorkUnitDateConsumption(hashMap); + } else if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_NITROGEN)) { + reportList = emsReportPointNitrogenMapper.selectWorkUnitDateConsumption(hashMap); } result.put("reportList", reportList); return result; @@ -260,12 +375,33 @@ public class EmsBoardServiceImpl implements IEmsBoardService { @Override public HashMap workshopColumns(Map hashMap) { - HashMap result = new HashMap<>(); + HashMap result = workshopEnergyBoard(hashMap); + Object column = result.get("column"); + List> columns = new ArrayList<>(); + if (column instanceof Map) { + @SuppressWarnings("unchecked") + Map col = (Map) column; + columns.add(col); + } + result.put("columns", columns); + return result; + } + + @Override + public HashMap workshopEnergyBoard(Map hashMap) { Map dateTimeRanges = DateUtils.getDateTimeRanges(); + String monitorType = hashMap != null && hashMap.get("monitorType") != null + ? String.valueOf(hashMap.get("monitorType")) + : EmsConstants.EMS_ENERGY_TYPE_DNB; + return buildWorkshopEnergyBoardResult(monitorType, dateTimeRanges); + } + + private HashMap buildWorkshopEnergyBoardResult(String monitorType, Map dateTimeRanges) { + HashMap result = new HashMap<>(); HashMap query = new HashMap<>(); + query.put("monitorType", monitorType); 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); @@ -283,27 +419,26 @@ public class EmsBoardServiceImpl implements IEmsBoardService { 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)); - + Map column = createColumn( + monitorType, + getEnergyName(monitorType), + getEnergyUnit(monitorType), + consumptionMap + ); + @SuppressWarnings("unchecked") + List> rows = (List>) column.get("rows"); for (Map row : latestRows) { String type = String.valueOf(row.get("monitorType")); - Map col = colMap.get(type); - if (col == null) { + if (!Objects.equals(type, monitorType)) { 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())); + result.put("column", column); + result.put("trend24h", build24hTrendByDevice(monitorType, dateTimeRanges.get("currentTime"))); return result; } @@ -317,6 +452,133 @@ public class EmsBoardServiceImpl implements IEmsBoardService { return col; } + private String getEnergyName(String monitorType) { + if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_WATER)) { + return "水"; + } else if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_STEAM)) { + return "蒸汽"; + } else if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_Air)) { + return "压缩空气"; + } else if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_NITROGEN)) { + return "氮气"; + } + return "电"; + } + + private String getEnergyUnit(String monitorType) { + if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_DNB)) { + return "kWh"; + } else if (Objects.equals(monitorType, EmsConstants.EMS_ENERGY_TYPE_STEAM)) { + return "t"; + } + return "m³"; + } + + private List> build24hTrendByDevice(String monitorType, String currentTime) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + DateTimeFormatter keyFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH"); + DateTimeFormatter showFormatter = DateTimeFormatter.ofPattern("MM-dd HH:00"); + LocalDateTime now = LocalDateTime.parse(currentTime, formatter); + LocalDateTime endHour = now.withMinute(0).withSecond(0).withNano(0).minusHours(1); + LocalDateTime begin = endHour.minusHours(23); + LocalDateTime queryEnd = endHour.plusHours(1).minusSeconds(1); + + List> reportList = queryTrendByRange(monitorType, begin, queryEnd, formatter); + if (reportList == null || reportList.isEmpty()) { + reportList = queryTrendByRange(monitorType, queryEnd.minusDays(7), queryEnd, formatter); + if (reportList == null || reportList.isEmpty()) { + return new ArrayList<>(); + } + LocalDateTime maxTime = resolveMaxTime(reportList, keyFormatter); + if (maxTime != null) { + endHour = maxTime; + begin = endHour.minusHours(23); + } + } + + Set slotSet = new HashSet<>(); + + List slots = new ArrayList<>(); + for (int i = 0; i < 24; i++) { + LocalDateTime slot = begin.plusHours(i); + String key = slot.format(keyFormatter); + slots.add(key); + slotSet.add(key); + } + + LinkedHashMap> deviceMap = new LinkedHashMap<>(); + if (reportList != null) { + for (Map row : reportList) { + String monitorCode = String.valueOf(row.get("monitorCode")); + String monitorName = String.valueOf(row.get("monitorName")); + String timeKey = String.valueOf(row.get("timeKey")); + if (!slotSet.contains(timeKey)) { + continue; + } + BigDecimal expend = toBigDecimal(row.get("expend")).setScale(2, RoundingMode.HALF_UP); + + Map item = deviceMap.computeIfAbsent(monitorCode, k -> { + Map m = new HashMap<>(); + m.put("monitorCode", monitorCode); + m.put("monitorName", monitorName); + m.put("data", new HashMap()); + return m; + }); + @SuppressWarnings("unchecked") + Map data = (Map) item.get("data"); + data.put(timeKey, expend); + } + } + + List> trend = new ArrayList<>(); + for (Map item : deviceMap.values()) { + @SuppressWarnings("unchecked") + Map data = (Map) item.get("data"); + List> points = new ArrayList<>(); + for (String slot : slots) { + Map point = new HashMap<>(); + point.put("timeKey", slot); + LocalDateTime time = LocalDateTime.parse(slot + ":00:00", formatter); + point.put("time", time.format(showFormatter)); + point.put("expend", data.getOrDefault(slot, BigDecimal.ZERO)); + points.add(point); + } + Map series = new HashMap<>(); + series.put("monitorCode", item.get("monitorCode")); + series.put("monitorName", item.get("monitorName")); + series.put("points", points); + trend.add(series); + } + return trend; + } + + private List> queryTrendByRange(String monitorType, LocalDateTime begin, LocalDateTime end, DateTimeFormatter formatter) { + HashMap trendQuery = new HashMap<>(); + trendQuery.put("monitorType", monitorType); + trendQuery.put("beginCollectTime", begin.format(formatter)); + trendQuery.put("endCollectTime", end.format(formatter)); + return emsReportMapper.selectWorkshop24hPerDeviceTrend(trendQuery); + } + + private LocalDateTime resolveMaxTime(List> reportList, DateTimeFormatter keyFormatter) { + LocalDateTime max = null; + for (Map row : reportList) { + Object timeKeyObj = row.get("timeKey"); + if (timeKeyObj == null) { + continue; + } + try { + LocalDateTime current = LocalDateTime.parse(String.valueOf(timeKeyObj), keyFormatter); + if (max == null || current.isAfter(max)) { + max = current; + } + } catch (Exception ignored) { + // 跳过异常时间格式,避免影响整批趋势生成 + } + } + return max; + } + private BigDecimal toBigDecimal(Object value) { if (value == null) { return BigDecimal.ZERO; @@ -327,5 +589,28 @@ public class EmsBoardServiceImpl implements IEmsBoardService { return new BigDecimal(String.valueOf(value)); } + private BigDecimal calculateRate(BigDecimal current, BigDecimal previous) { + if (previous == null || previous.compareTo(BigDecimal.ZERO) == 0) { + return BigDecimal.ZERO; + } + return current.subtract(previous) + .divide(previous, 4, RoundingMode.HALF_UP) + .multiply(new BigDecimal("100")) + .setScale(2, RoundingMode.HALF_UP); + } + + private Map getTodayConsumptionMap(String beginCollectTime, String endCollectTime) { + HashMap query = new HashMap<>(); + query.put("beginCollectTime", beginCollectTime); + query.put("endCollectTime", endCollectTime); + List> consumptionList = emsReportMapper.selectWorkshopTodayConsumption(query); + Map resultMap = new HashMap<>(); + for (Map row : consumptionList) { + String type = String.valueOf(row.get("monitorType")); + resultMap.put(type, toBigDecimal(row.get("todayConsumption"))); + } + return resultMap; + } + } diff --git a/os-ems/src/main/resources/mapper/ems/record/EmsRecordAirInstantMapper.xml b/os-ems/src/main/resources/mapper/ems/record/EmsRecordAirInstantMapper.xml index 22f4cd2..88079f9 100644 --- a/os-ems/src/main/resources/mapper/ems/record/EmsRecordAirInstantMapper.xml +++ b/os-ems/src/main/resources/mapper/ems/record/EmsRecordAirInstantMapper.xml @@ -114,6 +114,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ebli.monitor_code monitorCode, ebmi.monitor_name monitorName, ebmi.monitor_type monitorType, + ebmi.is_ammeter isAmmeter, rk.collect_time collectTime, rk.flux_flow fluxFlow, rk.steam_flow steamFlow, @@ -130,8 +131,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHERE t.rn = 1) rk ON rk.monitor_code = ebmi.monitor_code and ebmi.monitor_type = #{monitorType} + and ebmi.is_ammeter = #{isAmmeter} order by ebli.parent_id, ebli.obj_id + + \ No newline at end of file diff --git a/os-ems/src/main/resources/mapper/ems/record/EmsRecordDnbInstantMapper.xml b/os-ems/src/main/resources/mapper/ems/record/EmsRecordDnbInstantMapper.xml index 40bfe14..a3759d6 100644 --- a/os-ems/src/main/resources/mapper/ems/record/EmsRecordDnbInstantMapper.xml +++ b/os-ems/src/main/resources/mapper/ems/record/EmsRecordDnbInstantMapper.xml @@ -186,10 +186,41 @@ WHERE t.rn = 1) rk ON rk.monitor_code = ebmi.monitor_code and ebmi.monitor_type = #{monitorType} + and ebmi.is_ammeter = #{isAmmeter} order by ebli.parent_id, ebli.obj_id + + diff --git a/os-ems/src/main/resources/mapper/ems/record/EmsRecordNitrogenInstantMapper.xml b/os-ems/src/main/resources/mapper/ems/record/EmsRecordNitrogenInstantMapper.xml index cf7779a..7875cd1 100644 --- a/os-ems/src/main/resources/mapper/ems/record/EmsRecordNitrogenInstantMapper.xml +++ b/os-ems/src/main/resources/mapper/ems/record/EmsRecordNitrogenInstantMapper.xml @@ -122,6 +122,7 @@ ebli.monitor_code monitorCode, ebmi.monitor_name monitorName, ebmi.monitor_type monitorType, + ebmi.is_ammeter isAmmeter, rk.collect_time collectTime, rk.flux_flow fluxFlow, rk.steam_flow steamFlow, @@ -138,7 +139,34 @@ WHERE t.rn = 1) rk ON rk.monitor_code = ebmi.monitor_code and ebmi.monitor_type = #{monitorType} + and ebmi.is_ammeter = #{isAmmeter} order by ebli.parent_id, ebli.obj_id + + \ No newline at end of file diff --git a/os-ems/src/main/resources/mapper/ems/record/EmsRecordSteamInstantMapper.xml b/os-ems/src/main/resources/mapper/ems/record/EmsRecordSteamInstantMapper.xml index d97587a..b6639bb 100644 --- a/os-ems/src/main/resources/mapper/ems/record/EmsRecordSteamInstantMapper.xml +++ b/os-ems/src/main/resources/mapper/ems/record/EmsRecordSteamInstantMapper.xml @@ -134,6 +134,7 @@ ebli.monitor_code monitorCode, ebmi.monitor_name monitorName, ebmi.monitor_type monitorType, + ebmi.is_ammeter isAmmeter, rk.collect_time collectTime, rk.flux_flow fluxFlow, rk.steam_flow steamFlow, @@ -150,8 +151,35 @@ WHERE t.rn = 1) rk ON rk.monitor_code = ebmi.monitor_code and ebmi.monitor_type = #{monitorType} + and ebmi.is_ammeter = #{isAmmeter} order by ebli.parent_id, ebli.obj_id + + \ No newline at end of file diff --git a/os-ems/src/main/resources/mapper/ems/record/EmsRecordWaterInstantMapper.xml b/os-ems/src/main/resources/mapper/ems/record/EmsRecordWaterInstantMapper.xml index 3736a09..9cf7e9a 100644 --- a/os-ems/src/main/resources/mapper/ems/record/EmsRecordWaterInstantMapper.xml +++ b/os-ems/src/main/resources/mapper/ems/record/EmsRecordWaterInstantMapper.xml @@ -101,6 +101,7 @@ ebli.monitor_code monitorCode, ebmi.monitor_name monitorName, ebmi.monitor_type monitorType, + ebmi.is_ammeter isAmmeter, rk.collect_time collectTime, rk.flux_flow fluxFlow, rk.water_flow waterFlow @@ -114,9 +115,33 @@ WHERE t.rn = 1) rk ON rk.monitor_code = ebmi.monitor_code and ebmi.monitor_type = #{monitorType} + and ebmi.is_ammeter = #{isAmmeter} order by ebli.parent_id, ebli.obj_id + + 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 8e6938b..2c13c3b 100644 --- a/os-ems/src/main/resources/mapper/ems/report/EmsReportMapper.xml +++ b/os-ems/src/main/resources/mapper/ems/report/EmsReportMapper.xml @@ -20,6 +20,9 @@ LEFT JOIN ems_report_point_dnb RPD ON RPD.MONITOR_CODE = MWU.MONITOR_CODE CROSS JOIN DT WHERE RPD.EXPEND IS NOT NULL + + and WU.obj_id != #{excludeObjId} + and FORMAT(RPD.BEGIN_TIME, 'yyyy-MM-dd HH:mm:ss') between #{beginCollectTime} and #{endCollectTime} @@ -49,6 +52,9 @@ LEFT JOIN ems_report_point_water RPD ON RPD.MONITOR_CODE = MWU.MONITOR_CODE CROSS JOIN DT WHERE RPD.EXPEND IS NOT NULL + + and WU.obj_id != #{excludeObjId} + and FORMAT(RPD.BEGIN_TIME, 'yyyy-MM-dd HH:mm:ss') between #{beginCollectTime} and #{endCollectTime} @@ -78,6 +84,9 @@ LEFT JOIN ems_report_point_steam RPD ON RPD.MONITOR_CODE = MWU.MONITOR_CODE CROSS JOIN DT WHERE RPD.EXPEND IS NOT NULL + + and WU.obj_id != #{excludeObjId} + and FORMAT(RPD.BEGIN_TIME, 'yyyy-MM-dd HH:mm:ss') between #{beginCollectTime} and #{endCollectTime} @@ -107,6 +116,9 @@ LEFT JOIN ems_report_point_air RPD ON RPD.MONITOR_CODE = MWU.MONITOR_CODE CROSS JOIN DT WHERE RPD.EXPEND IS NOT NULL + + and WU.obj_id != #{excludeObjId} + and FORMAT(RPD.BEGIN_TIME, 'yyyy-MM-dd HH:mm:ss') between #{beginCollectTime} and #{endCollectTime} @@ -136,6 +148,9 @@ LEFT JOIN ems_report_point_nitrogen RPD ON RPD.MONITOR_CODE = MWU.MONITOR_CODE CROSS JOIN DT WHERE RPD.EXPEND IS NOT NULL + + and WU.obj_id != #{excludeObjId} + and FORMAT(RPD.BEGIN_TIME, 'yyyy-MM-dd HH:mm:ss') between #{beginCollectTime} and #{endCollectTime} @@ -203,212 +218,243 @@ x.realtimeUnit FROM ( SELECT CAST('2' AS VARCHAR(4)) monitorType, - t.monitor_code monitorCode, - bmi.monitor_name monitorName, - NULL instantFlow, - t.zxyg cumulativeFlow, - t.vA vA, - t.vB vB, - t.vC vC, - t.iA iA, - t.iB iB, - t.iC iC, - NULL instantUnit, - 'kWh' realtimeUnit + t.monitor_code monitorCode, + bmi.monitor_name monitorName, + NULL instantFlow, + t.zxyg cumulativeFlow, + t.vA vA, + t.vB vB, + t.vC vC, + t.iA iA, + t.iB iB, + t.iC iC, + NULL instantUnit, + 'kWh' realtimeUnit FROM ( - SELECT monitor_code, - zxyg, - v_a AS vA, - v_b AS vB, - v_c AS vC, - i_a AS iA, - i_b AS iB, - i_c AS iC, + SELECT monitor_code, zxyg, v_a AS vA, v_b AS vB, v_c AS vC, i_a AS iA, i_b AS iB, i_c AS iC, ROW_NUMBER() OVER (PARTITION BY monitor_code ORDER BY collect_time DESC, obj_id DESC) rn FROM ems_record_dnb_instant ) t LEFT JOIN ems_base_monitor_info bmi ON bmi.monitor_code = t.monitor_code - WHERE t.rn = 1 - AND bmi.monitor_type = 2 - AND bmi.is_ammeter = '1' - + WHERE t.rn = 1 AND bmi.monitor_type = 2 AND bmi.is_ammeter = '1' UNION ALL - SELECT CAST('3' AS VARCHAR(4)) monitorType, - t.monitor_code monitorCode, - bmi.monitor_name monitorName, - t.flux_flow instantFlow, - t.water_flow cumulativeFlow, - NULL vA, - NULL vB, - NULL vC, - NULL iA, - NULL iB, - NULL iC, - 'm³/h' instantUnit, - 'm³' realtimeUnit + SELECT CAST('3' AS VARCHAR(4)), + t.monitor_code, + bmi.monitor_name, + t.flux_flow, + t.water_flow, + NULL, NULL, NULL, NULL, NULL, NULL, + 'm³/h', + 'm³' FROM ( SELECT monitor_code, flux_flow, water_flow, ROW_NUMBER() OVER (PARTITION BY monitor_code ORDER BY collect_time DESC, obj_id DESC) rn FROM ems_record_water_instant ) t LEFT JOIN ems_base_monitor_info bmi ON bmi.monitor_code = t.monitor_code - WHERE t.rn = 1 - AND bmi.monitor_type = 3 - AND bmi.is_ammeter = '1' - + WHERE t.rn = 1 AND bmi.monitor_type = 3 AND bmi.is_ammeter = '1' UNION ALL - SELECT CAST('4' AS VARCHAR(4)) monitorType, - t.monitor_code monitorCode, - bmi.monitor_name monitorName, - t.flux_flow instantFlow, - t.steam_flow cumulativeFlow, - NULL vA, - NULL vB, - NULL vC, - NULL iA, - NULL iB, - NULL iC, - 't/h' instantUnit, - 't' realtimeUnit + SELECT CAST('4' AS VARCHAR(4)), + t.monitor_code, + bmi.monitor_name, + t.flux_flow, + t.steam_flow, + NULL, NULL, NULL, NULL, NULL, NULL, + 't/h', + 't' FROM ( SELECT monitor_code, flux_flow, steam_flow, ROW_NUMBER() OVER (PARTITION BY monitor_code ORDER BY collect_time DESC, obj_id DESC) rn FROM ems_record_steam_instant ) t LEFT JOIN ems_base_monitor_info bmi ON bmi.monitor_code = t.monitor_code - WHERE t.rn = 1 - AND bmi.monitor_type = 4 - AND bmi.is_ammeter = '1' - + WHERE t.rn = 1 AND bmi.monitor_type = 4 AND bmi.is_ammeter = '1' UNION ALL - SELECT CAST('5' AS VARCHAR(4)) monitorType, - t.monitor_code monitorCode, - bmi.monitor_name monitorName, - t.flux_flow instantFlow, - t.steam_flow cumulativeFlow, - NULL vA, - NULL vB, - NULL vC, - NULL iA, - NULL iB, - NULL iC, - 'm³/h' instantUnit, - 'm³' realtimeUnit + SELECT CAST('5' AS VARCHAR(4)), + t.monitor_code, + bmi.monitor_name, + t.flux_flow, + t.steam_flow, + NULL, NULL, NULL, NULL, NULL, NULL, + 'm³/h', + 'm³' FROM ( SELECT monitor_code, flux_flow, steam_flow, ROW_NUMBER() OVER (PARTITION BY monitor_code ORDER BY collect_time DESC, obj_id DESC) rn FROM ems_record_air_instant ) t LEFT JOIN ems_base_monitor_info bmi ON bmi.monitor_code = t.monitor_code - WHERE t.rn = 1 - AND bmi.monitor_type = 5 - AND bmi.is_ammeter = '1' - + WHERE t.rn = 1 AND bmi.monitor_type = 5 AND bmi.is_ammeter = '1' UNION ALL - SELECT CAST('6' AS VARCHAR(4)) monitorType, - t.monitor_code monitorCode, - bmi.monitor_name monitorName, - t.flux_flow instantFlow, - t.steam_flow cumulativeFlow, - NULL vA, - NULL vB, - NULL vC, - NULL iA, - NULL iB, - NULL iC, - 'm³/h' instantUnit, - 'm³' realtimeUnit + SELECT CAST('6' AS VARCHAR(4)), + t.monitor_code, + bmi.monitor_name, + t.flux_flow, + t.steam_flow, + NULL, NULL, NULL, NULL, NULL, NULL, + 'm³/h', + 'm³' FROM ( SELECT monitor_code, flux_flow, steam_flow, ROW_NUMBER() OVER (PARTITION BY monitor_code ORDER BY collect_time DESC, obj_id DESC) rn FROM ems_record_nitrogen_instant ) t LEFT JOIN ems_base_monitor_info bmi ON bmi.monitor_code = t.monitor_code - WHERE t.rn = 1 - AND bmi.monitor_type = 6 - AND bmi.is_ammeter = '1' + WHERE t.rn = 1 AND bmi.monitor_type = 6 AND bmi.is_ammeter = '1' ) x + + WHERE x.monitorType = CAST(#{monitorType} AS VARCHAR(4)) + ORDER BY x.monitorType, x.monitorCode + + \ No newline at end of file diff --git a/os-ems/src/main/resources/mapper/ems/report/EmsReportPointAirMapper.xml b/os-ems/src/main/resources/mapper/ems/report/EmsReportPointAirMapper.xml index 76ae8ec..9a5b08a 100644 --- a/os-ems/src/main/resources/mapper/ems/report/EmsReportPointAirMapper.xml +++ b/os-ems/src/main/resources/mapper/ems/report/EmsReportPointAirMapper.xml @@ -120,4 +120,43 @@ #{objId} + + + + diff --git a/os-ems/src/main/resources/mapper/ems/report/EmsReportPointDnbMapper.xml b/os-ems/src/main/resources/mapper/ems/report/EmsReportPointDnbMapper.xml index f4e8f4a..ac2b6d8 100644 --- a/os-ems/src/main/resources/mapper/ems/report/EmsReportPointDnbMapper.xml +++ b/os-ems/src/main/resources/mapper/ems/report/EmsReportPointDnbMapper.xml @@ -187,7 +187,7 @@ GROUP BY mwu.work_unit_code, LEFT(CONVERT(VARCHAR, rpd.begin_time, 120), DT.TIMESUB)) ex LEFT JOIN ems_base_work_unit wu ON ex.work_unit_code = wu.work_unit_code - WHERE wu.parent_id = 1 + WHERE wu.parent_id = 0 GROUP BY ex.date ORDER BY ex.date diff --git a/os-ems/src/main/resources/mapper/ems/report/EmsReportPointNitrogenMapper.xml b/os-ems/src/main/resources/mapper/ems/report/EmsReportPointNitrogenMapper.xml index c6ec105..4180dda 100644 --- a/os-ems/src/main/resources/mapper/ems/report/EmsReportPointNitrogenMapper.xml +++ b/os-ems/src/main/resources/mapper/ems/report/EmsReportPointNitrogenMapper.xml @@ -120,4 +120,43 @@ #{objId} + + + + diff --git a/os-ems/src/main/resources/mapper/ems/report/EmsReportPointSteamMapper.xml b/os-ems/src/main/resources/mapper/ems/report/EmsReportPointSteamMapper.xml index edf9f50..b3bf866 100644 --- a/os-ems/src/main/resources/mapper/ems/report/EmsReportPointSteamMapper.xml +++ b/os-ems/src/main/resources/mapper/ems/report/EmsReportPointSteamMapper.xml @@ -124,4 +124,43 @@ #{objId} + + + + \ No newline at end of file diff --git a/os-ems/src/main/resources/mapper/ems/report/EmsReportPointWaterMapper.xml b/os-ems/src/main/resources/mapper/ems/report/EmsReportPointWaterMapper.xml index 816ea56..f248a5b 100644 --- a/os-ems/src/main/resources/mapper/ems/report/EmsReportPointWaterMapper.xml +++ b/os-ems/src/main/resources/mapper/ems/report/EmsReportPointWaterMapper.xml @@ -120,4 +120,43 @@ #{objId} + + + + \ No newline at end of file