From 4d95c37a795294b3f9c2aa8b16db6cf4a480eedf Mon Sep 17 00:00:00 2001 From: jiangc <12345678> Date: Mon, 14 Apr 2025 09:11:34 +0800 Subject: [PATCH] =?UTF-8?q?qy=E6=96=B0=E5=A2=9E=E6=A8=A1=E5=9D=97=20=20202?= =?UTF-8?q?5=E5=B9=B44=E6=9C=8814=E6=97=A509:11:28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../board/controller/BoardNewController.java | 20 ++++++- .../board/dto/EnergyDataAnalyseDTO.java | 1 + .../board/dto/EnergyDayTrendDataDTO.java | 19 ++++++ .../board/service/BoardNewService.java | 3 + .../service/impl/BoardNewServiceImpl.java | 58 +++++++++++++++++++ 5 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 modules/qingyuan/src/main/java/com/thing/qingyuan/board/dto/EnergyDayTrendDataDTO.java diff --git a/modules/qingyuan/src/main/java/com/thing/qingyuan/board/controller/BoardNewController.java b/modules/qingyuan/src/main/java/com/thing/qingyuan/board/controller/BoardNewController.java index 4f539bb..012c880 100644 --- a/modules/qingyuan/src/main/java/com/thing/qingyuan/board/controller/BoardNewController.java +++ b/modules/qingyuan/src/main/java/com/thing/qingyuan/board/controller/BoardNewController.java @@ -101,10 +101,28 @@ public class BoardNewController { return new Result().ok(result); } + @GetMapping("dayEnergy/trend") + @Operation(summary ="火灾24小时分布趋势") + @Parameters({ + @Parameter(name = "day", description = "日期:例如2023-06-01", required = true) + }) + public Result qcdayEnergyAnalyse(@Parameter(hidden = true) @RequestParam Map params){ + String day; + if (params.get("day") != null){ + day = params.get("day").toString(); + }else{ + LocalDate currentDate = LocalDate.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); + day = currentDate.format(formatter); + } + EnergyDayTrendDataDTO result = boardService.qcdayEnergyAnalyse(day); + return new Result().ok(result); + } + @GetMapping("energyCost") @Operation(summary ="能耗统计") @Parameters({ - @Parameter(name = "day", description = "日期:例如2023-06-01", required = true) + @Parameter(name = "day", description = "日期:例如2023-06-01", required = true), }) public Result> getEnergyCost(@Parameter(hidden = true) @RequestParam Map params){ String day; diff --git a/modules/qingyuan/src/main/java/com/thing/qingyuan/board/dto/EnergyDataAnalyseDTO.java b/modules/qingyuan/src/main/java/com/thing/qingyuan/board/dto/EnergyDataAnalyseDTO.java index 6e07459..5202e61 100644 --- a/modules/qingyuan/src/main/java/com/thing/qingyuan/board/dto/EnergyDataAnalyseDTO.java +++ b/modules/qingyuan/src/main/java/com/thing/qingyuan/board/dto/EnergyDataAnalyseDTO.java @@ -13,4 +13,5 @@ public class EnergyDataAnalyseDTO { // @ApiModelProperty(value = "上月数据") // private List lastMonthData; + } diff --git a/modules/qingyuan/src/main/java/com/thing/qingyuan/board/dto/EnergyDayTrendDataDTO.java b/modules/qingyuan/src/main/java/com/thing/qingyuan/board/dto/EnergyDayTrendDataDTO.java new file mode 100644 index 0000000..060cc2e --- /dev/null +++ b/modules/qingyuan/src/main/java/com/thing/qingyuan/board/dto/EnergyDayTrendDataDTO.java @@ -0,0 +1,19 @@ +package com.thing.qingyuan.board.dto; + +import com.thing.common.data.tskv.TsKvDTO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +public class EnergyDayTrendDataDTO { + @Schema(description = "日用电量") + private ListelectricityDayList; + @Schema(description = "日水电量") + private List waterDayList; + @Schema(description = "日蒸汽电量") + private List steamDayList; + @Schema(description = "日天然气量") + private List gasDayList; +} diff --git a/modules/qingyuan/src/main/java/com/thing/qingyuan/board/service/BoardNewService.java b/modules/qingyuan/src/main/java/com/thing/qingyuan/board/service/BoardNewService.java index 5432552..d25cb36 100644 --- a/modules/qingyuan/src/main/java/com/thing/qingyuan/board/service/BoardNewService.java +++ b/modules/qingyuan/src/main/java/com/thing/qingyuan/board/service/BoardNewService.java @@ -19,6 +19,8 @@ public interface BoardNewService { EnergyDataAnalyseDTO qcMonthEnergyAnalyse(String month, String key, String type); + EnergyDayTrendDataDTO qcdayEnergyAnalyse(String day); + List getEnergyCost(String day); List getMonthEnergyRanking(String month, String key, String type); @@ -28,4 +30,5 @@ public interface BoardNewService { CarbonAndConsumptionDataDTO getCarbonAndConsumption(String day); EnergyBuildDataDTO getBuildEnergy(BuildRequestDTO dto); + } diff --git a/modules/qingyuan/src/main/java/com/thing/qingyuan/board/service/impl/BoardNewServiceImpl.java b/modules/qingyuan/src/main/java/com/thing/qingyuan/board/service/impl/BoardNewServiceImpl.java index 2484869..9d836d9 100644 --- a/modules/qingyuan/src/main/java/com/thing/qingyuan/board/service/impl/BoardNewServiceImpl.java +++ b/modules/qingyuan/src/main/java/com/thing/qingyuan/board/service/impl/BoardNewServiceImpl.java @@ -12,6 +12,7 @@ import com.thing.thing.entity.dto.IotThingEntityDTO; import com.thing.thing.entity.service.IotThingEntityService; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.formula.functions.T; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -161,6 +162,63 @@ public class BoardNewServiceImpl implements BoardNewService { return result; } + @Override + public EnergyDayTrendDataDTO qcdayEnergyAnalyse(String day) { + EnergyDayTrendDataDTO result = new EnergyDayTrendDataDTO(); + List electricityDayList = new ArrayList<>(); + List waterDayList = new ArrayList<>(); + List steamDayList = new ArrayList<>(); + List airDayList = new ArrayList<>(); + //日时间 + Long dayTime = DateTimeUtils.dateToStamp(day + " 00:00:00"); + //当天结束时间戳 + Long endTime = DateTimeUtils.dateToStamp(day + " 23:59:59"); + + //获取租户编码 + Long realTenantCode = UserContext.getRealTenantCode(); + List tsKvByCodeAndAttrs = tsKvService.findTsKvByCodeAndAttrs("CO_" + realTenantCode, Lists.newArrayList("A29hh", "B2hh", "E3hh","C2hh"), dayTime, endTime, true); + if (CollectionUtil.isNotEmpty(tsKvByCodeAndAttrs)) { + for (TsKvDTO kv : tsKvByCodeAndAttrs) { + // 获取时间戳 + Long timestamp = kv.getTs(); + // 获取值 + String value = kv.getVal(); + // 获取属性编码 + String attrKey = kv.getAttrKey(); + // 将时间戳转换为日期格式 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH"); + String date = sdf.format(new Date(timestamp)); + + EnergyDataAnalyseDetailDTO detailDTO = new EnergyDataAnalyseDetailDTO(); + detailDTO.setDate(date); + detailDTO.setValue(new BigDecimal(value)); + + // 根据属性编码分类数据 + if ("A29hh".equals(attrKey)) { + // 电力数据 + electricityDayList.add(kv); + } else if ("B2hh".equals(attrKey)) { + // 水数据 + waterDayList.add(kv); + } else if ("E3hh".equals(attrKey)) { + // 蒸汽数据 + steamDayList.add(kv); + } else if ("C2hh".equals(attrKey)) { + // 天然气数据 + airDayList.add(kv); + } + } + } + + // 将当天的数据填充到result中 + result.setElectricityDayList(electricityDayList); + result.setWaterDayList(waterDayList); + result.setSteamDayList(steamDayList); + result.setGasDayList(airDayList); + + return result; + } + @Override public List getEnergyCost(String day) {