From 450a3c01a2964960e05f37f9b573e1d6b673f3ef Mon Sep 17 00:00:00 2001 From: mh Date: Mon, 3 Mar 2025 16:38:21 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=B2=B3=E5=8C=97=E7=8F=A0=E6=B1=9F?= =?UTF-8?q?=E5=95=A4=E9=85=92=E9=A1=B9=E7=9B=AE=E6=95=B4=E5=90=88=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=EF=BC=88=E8=83=BD=E6=95=88=E7=9B=91=E6=B5=8B=E3=80=81?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=86=E6=9E=90=EF=BC=88=E5=B7=AE=E5=90=8C?= =?UTF-8?q?=E6=AF=94=E7=8E=AF=E6=AF=94=EF=BC=89=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DataResultServiceImpl.java | 81 ++++++++- .../service/impl/EnergyDataServiceImpl.java | 172 ++++++++++++------ .../service/impl/MeterManageServiceImpl.java | 2 +- 3 files changed, 191 insertions(+), 64 deletions(-) diff --git a/user-service/src/main/java/com/mh/user/service/impl/DataResultServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/DataResultServiceImpl.java index b00aa93..94848fd 100644 --- a/user-service/src/main/java/com/mh/user/service/impl/DataResultServiceImpl.java +++ b/user-service/src/main/java/com/mh/user/service/impl/DataResultServiceImpl.java @@ -17,10 +17,12 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; @Slf4j @Service @@ -233,14 +235,69 @@ public class DataResultServiceImpl implements DataResultService { @Override public List queryDataResultMi(String projectId, String startDate, String curDate, int page, int limit, int type, String registerAddr, String mtNum) { - if (type == 0) { + if (type == 0 && !projectId.equals("20")) { return dataResultOneMiMapper.queryDataResultOneMi(projectId, startDate, curDate, page, limit); - } else if (type == 1) { + } else if (type == 1 && !projectId.equals("20")) { return dataResultFiveMiMapper.queryDataResultFiveMi(projectId, startDate, curDate, page, limit, registerAddr, mtNum); - } else if (type == 2) { + } else if (type == 2 && !projectId.equals("20")) { return dataResultFifteenMiMapper.queryDataResultFifteenMi(projectId, startDate, curDate, page, limit, registerAddr, mtNum); + } else if (projectId.equals("20") && (type == 1 || type == 2)) { + // 需要两个珠江啤酒整合起来 + List data1 = new ArrayList<>(); + List data2 = new ArrayList<>(); + if (type == 1) { + data1 = dataResultFiveMiMapper.queryDataResultFiveMi("14", startDate, curDate, page, limit, registerAddr, mtNum); + data2 = dataResultFiveMiMapper.queryDataResultFiveMi("15", startDate, curDate, page, limit, registerAddr, mtNum); + + } else { + data1 = dataResultFifteenMiMapper.queryDataResultFifteenMi("14", startDate, curDate, page, limit, registerAddr, mtNum); + data2 = dataResultFifteenMiMapper.queryDataResultFifteenMi("15", startDate, curDate, page, limit, registerAddr, mtNum); + + + } + if ("0006".equals(registerAddr)) { + // 合并两个列表并根据时间分组 + Map mergedMap = Stream.concat(data1.stream(), data2.stream()) + .collect(Collectors.toMap( + entity -> DateUtil.dateToString(entity.getCurDate(), "yyyy-MM-dd HH:mm:ss"), + entity -> entity, + (entity1, entity2) -> { + entity1.setCurValue(new BigDecimal(entity1.getCurValue()).add(new BigDecimal(entity2.getCurValue()) + .setScale(2, RoundingMode.HALF_UP)).toString()); + return entity1; + } + )); + + // 重新赋值项目名称并创建新的列表 + return mergedMap.values().stream() + .map(entity -> { + entity.setProjectName("河北珠江啤酒"); // 根据需要重新赋值项目名称 + return entity; + }) + .collect(Collectors.toList()); + } else { + // 合并两个列表并根据时间分组 + Map mergedMap = Stream.concat(data1.stream(), data2.stream()) + .collect(Collectors.toMap( + entity -> DateUtil.dateToString(entity.getCurDate(), "yyyy-MM-dd HH:mm:ss"), + entity -> entity, + (entity1, entity2) -> { + entity1.setCurValue((new BigDecimal(entity1.getCurValue()).add(new BigDecimal(entity2.getCurValue()))) + .divide(new BigDecimal("2")).setScale(2, RoundingMode.FLOOR).toString()); + return entity1; + } + )); + + // 重新赋值项目名称并创建新的列表 + return mergedMap.values().stream() + .map(entity -> { + entity.setProjectName("河北珠江啤酒"); // 根据需要重新赋值项目名称 + return entity; + }) + .collect(Collectors.toList()); + } } else { - return dataResultOneMiMapper.queryDataResultOneMi(projectId, startDate, curDate, page, limit); + return dataResultFifteenMiMapper.queryDataResultFifteenMi(projectId, startDate, curDate, page, limit, registerAddr, mtNum); } } @@ -261,7 +318,7 @@ public class DataResultServiceImpl implements DataResultService { String momentCoolingStr = Constant.MOMENT_COOLING; String outTempStr = Constant.OUT_TEMP; String intTempStr = Constant.INT_TEMP; - if (isHotCollection == 2) { + if (isHotCollection == 2 || projectId.equals("20")) { momentCoolingStr = Constant.MOMENT_HOT; outTempStr = Constant.TEMP; intTempStr = Constant.PRE; @@ -282,7 +339,7 @@ public class DataResultServiceImpl implements DataResultService { int queryType = 1; if (dateType.equals("8小时")) { startDate = ExchangeStringUtil.dateRoll(8, curDate); - } else if (dateType.equals("12小时")){ + } else if (dateType.equals("12小时")) { startDate = ExchangeStringUtil.dateRoll(12, curDate); } else { startDate = ExchangeStringUtil.dateRoll(24, curDate); @@ -299,17 +356,17 @@ public class DataResultServiceImpl implements DataResultService { // 将数据按时间分组 Map momentCoolingMap = records.stream() .collect(Collectors.toMap(val -> { - return DateUtil.dateToString(val.getCurDate(),"yyyy-MM-dd HH:mm:ss"); + return DateUtil.dateToString(val.getCurDate(), "yyyy-MM-dd HH:mm:ss"); }, entity -> entity)); Map intTempMap = intTempRecords.stream() .collect(Collectors.toMap(val -> { - return DateUtil.dateToString(val.getCurDate(),"yyyy-MM-dd HH:mm:ss"); + return DateUtil.dateToString(val.getCurDate(), "yyyy-MM-dd HH:mm:ss"); }, entity -> entity)); Map outTempMap = outTempRecords.stream() .collect(Collectors.toMap(val -> { - return DateUtil.dateToString(val.getCurDate(),"yyyy-MM-dd HH:mm:ss"); + return DateUtil.dateToString(val.getCurDate(), "yyyy-MM-dd HH:mm:ss"); }, entity -> entity)); // 合并数据 @@ -384,11 +441,17 @@ public class DataResultServiceImpl implements DataResultService { @Override public int dataResultFiveMiCount(String projectId, String startDate, String curDate, String registerAddr, String mtNum) { + if ("20".equals(projectId)) { + projectId = "14"; + } return dataResultFiveMiMapper.dataResultFiveMiCount(projectId, startDate, curDate, registerAddr, mtNum); } @Override public int dataResultFifteenMiCount(String projectId, String startDate, String curDate, String registerAddr, String mtNum) { + if ("20".equals(projectId)) { + projectId = "14"; + } return dataResultFifteenMiMapper.dataResultFifteenMiCount(projectId, startDate, curDate, registerAddr, mtNum); } diff --git a/user-service/src/main/java/com/mh/user/service/impl/EnergyDataServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/EnergyDataServiceImpl.java index 0fe4641..9a42196 100644 --- a/user-service/src/main/java/com/mh/user/service/impl/EnergyDataServiceImpl.java +++ b/user-service/src/main/java/com/mh/user/service/impl/EnergyDataServiceImpl.java @@ -7,19 +7,27 @@ import com.mh.common.page.PageRequest; import com.mh.common.page.PageResult; import com.mh.common.utils.StringUtils; import com.mh.user.dto.EnergyMomYoyDataDTO; +import com.mh.user.entity.DataResultChEntity; import com.mh.user.entity.EnergyDataEntity; import com.mh.user.mapper.EnergyDataMapper; import com.mh.user.model.EnergyModel; import com.mh.user.service.EnergyDataService; +import com.mh.user.utils.DateUtil; import com.mh.user.utils.ExchangeStringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.YearMonth; import java.time.format.DateTimeFormatter; +import java.util.Comparator; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class EnergyDataServiceImpl implements EnergyDataService { @@ -29,61 +37,117 @@ public class EnergyDataServiceImpl implements EnergyDataService { @Override public List queryEnergyData(EnergyModel energyModel) { - String projectId=energyModel.getProjectId(); - String startDate=energyModel.getStartDate(); - String endDate=energyModel.getEndDate(); - int page=energyModel.getPage(); - int limit=energyModel.getLimit(); - int type=energyModel.getType(); - int queryType=energyModel.getQueryType(); - - if (type==1){ //按十分钟 - return energyDataMapper.queryEnergyDataMi(projectId,startDate,page,limit); - }else if(type==2){ //按小时 - return energyDataMapper.queryEnergyDataHour(projectId,startDate,page,limit); - }else if(type==3){ //按天 - return energyDataMapper.queryEnergyDataDay(projectId,startDate,queryType,page,limit); - }else if(type==4){ //按月 - return energyDataMapper.queryEnergyDataMonth(projectId,startDate,queryType,page,limit); - }else if(type==5){ //按年 - return energyDataMapper.queryEnergyDataYear(projectId,startDate,endDate,queryType,page,limit); - }else{ //按天,默认 - return energyDataMapper.queryEnergyDataDay(projectId,startDate,queryType,page,limit); + String projectId = energyModel.getProjectId(); + String startDate = energyModel.getStartDate(); + String endDate = energyModel.getEndDate(); + int page = energyModel.getPage(); + int limit = energyModel.getLimit(); + int type = energyModel.getType(); + int queryType = energyModel.getQueryType(); + + if (type == 1) { //按十分钟 + return energyDataMapper.queryEnergyDataMi(projectId, startDate, page, limit); + } else if (type == 2) { //按小时 + // 如果项目是20,则查询两个projectId 14和15 + if (projectId.equals("20")) { + List data1 = energyDataMapper.queryEnergyDataHour("14", startDate, page, limit); + List data2 = energyDataMapper.queryEnergyDataHour("15", startDate, page, limit); + return getEnergyDataEntities(data1, data2); + } + return energyDataMapper.queryEnergyDataHour(projectId, startDate, page, limit); + } else if (type == 3) { //按天 + if (projectId.equals("20")) { + List data1 = energyDataMapper.queryEnergyDataDay("14", startDate, queryType, page, limit); + List data2 = energyDataMapper.queryEnergyDataDay("15", startDate, queryType, page, limit); + // 两个列表根据时间分组合并数据 + // 合并两个列表并根据时间分组 + return getEnergyDataEntities(data1, data2); + } + return energyDataMapper.queryEnergyDataDay(projectId, startDate, queryType, page, limit); + } else if (type == 4) { //按月 + if (projectId.equals("20")) { + List data1 = energyDataMapper.queryEnergyDataMonth("14", startDate, queryType, page, limit); + List data2 = energyDataMapper.queryEnergyDataMonth("15", startDate, queryType, page, limit); + // 两个列表根据时间分组合并数据 + // 合并两个列表并根据时间分组 + return getEnergyDataEntities(data1, data2); + } + return energyDataMapper.queryEnergyDataMonth(projectId, startDate, queryType, page, limit); + } else if (type == 5) { //按年 + if (projectId.equals("20")) { + List data1 = energyDataMapper.queryEnergyDataYear("14", startDate, endDate, queryType, page, limit); + List data2 = energyDataMapper.queryEnergyDataYear("15", startDate, endDate, queryType, page, limit); + // 两个列表根据时间分组合并数据 + // 合并两个列表并根据时间分组 + return getEnergyDataEntities(data1, data2); + } + return energyDataMapper.queryEnergyDataYear(projectId, startDate, endDate, queryType, page, limit); + } else { //按天,默认 + return energyDataMapper.queryEnergyDataDay(projectId, startDate, queryType, page, limit); } } + private static List getEnergyDataEntities(List data1, List data2) { + // 两个列表根据时间分组合并数据 + // 合并两个列表并根据时间分组 + Map mergedMap = Stream.concat(data1.stream(), data2.stream()) + .collect(Collectors.toMap( + entity -> entity.getCurDate(), + entity -> entity, + (entity1, entity2) -> { + entity1.setCl(BigDecimal.valueOf(entity1.getCl()).add(BigDecimal.valueOf(entity2.getCl()) + .setScale(2, RoundingMode.HALF_UP)).doubleValue()); + return entity1; + } + )); + + // 重新赋值项目名称并创建新的列表 + List mergedList = mergedMap.values().stream() + .map(entity -> { + entity.setProjectName("河北珠江啤酒"); // 根据需要重新赋值项目名称 + entity.setProjectId("20"); + return entity; + }) + .collect(Collectors.toList()); + + // 按照时间字符“yyyy-MM-dd HH”进行排序 + mergedList.sort(Comparator.comparing(EnergyDataEntity::getCurDate)); + + return mergedList; + } + @Override public int getEnergyDataCount(EnergyModel energyModel) { - String projectId=energyModel.getProjectId(); - String startDate=energyModel.getStartDate(); - String endDate=energyModel.getEndDate(); - int type=energyModel.getType(); - int queryType=energyModel.getQueryType(); - - if (type==1){ //按十分钟 - return energyDataMapper.getEnergyDataMiCount(projectId,startDate); - }else if(type==2) { //按小时 - return energyDataMapper.getEnergyDataHourCount(projectId,startDate); - }else if(type==3) { //按天 - return energyDataMapper.getEnergyDataDayCount(projectId,startDate,queryType); - }else if(type==4) { //按月 - return energyDataMapper.getEnergyDataMonthCount(projectId,startDate,queryType); - }else if(type==5) { //按年 - return energyDataMapper.getEnergyDataYearCount(projectId,startDate,endDate,queryType); - }else { //按天,默认 - return energyDataMapper.getEnergyDataDayCount(projectId,startDate,queryType); + String projectId = energyModel.getProjectId(); + String startDate = energyModel.getStartDate(); + String endDate = energyModel.getEndDate(); + int type = energyModel.getType(); + int queryType = energyModel.getQueryType(); + + if (type == 1) { //按十分钟 + return energyDataMapper.getEnergyDataMiCount(projectId, startDate); + } else if (type == 2) { //按小时 + return energyDataMapper.getEnergyDataHourCount(projectId, startDate); + } else if (type == 3) { //按天 + return energyDataMapper.getEnergyDataDayCount(projectId, startDate, queryType); + } else if (type == 4) { //按月 + return energyDataMapper.getEnergyDataMonthCount(projectId, startDate, queryType); + } else if (type == 5) { //按年 + return energyDataMapper.getEnergyDataYearCount(projectId, startDate, endDate, queryType); + } else { //按天,默认 + return energyDataMapper.getEnergyDataDayCount(projectId, startDate, queryType); } } @Override public PageResult queryMomEnergyData(EnergyModel energyModel) { - String projectId=energyModel.getProjectId(); - String startDate=energyModel.getStartDate(); - String endDate=energyModel.getEndDate(); - int page=energyModel.getPage(); - int limit=energyModel.getLimit(); - int type=energyModel.getType(); - int queryType=energyModel.getQueryType(); + String projectId = energyModel.getProjectId(); + String startDate = energyModel.getStartDate(); + String endDate = energyModel.getEndDate(); + int page = energyModel.getPage(); + int limit = energyModel.getLimit(); + int type = energyModel.getType(); + int queryType = energyModel.getQueryType(); String lastStartDate = ""; String lastEndDate = ""; @@ -216,13 +280,13 @@ public class EnergyDataServiceImpl implements EnergyDataService { @Override public PageResult queryYoyEnergyData(EnergyModel energyModel) { - String projectId=energyModel.getProjectId(); - String startDate=energyModel.getStartDate(); - String endDate=energyModel.getEndDate(); - int page=energyModel.getPage(); - int limit=energyModel.getLimit(); - int type=energyModel.getType(); - int queryType=energyModel.getQueryType(); + String projectId = energyModel.getProjectId(); + String startDate = energyModel.getStartDate(); + String endDate = energyModel.getEndDate(); + int page = energyModel.getPage(); + int limit = energyModel.getLimit(); + int type = energyModel.getType(); + int queryType = energyModel.getQueryType(); String lastStartDate = ""; String lastEndDate = ""; @@ -304,8 +368,8 @@ public class EnergyDataServiceImpl implements EnergyDataService { endDate = year + "-" + ExchangeStringUtil.addZeroForNum(String.valueOf(currentMonth), 2); // 环比时间 - lastStartDate = year-1 + "-" + ExchangeStringUtil.addZeroForNum(String.valueOf(startMonth), 2); - lastEndDate = year-1 + "-" + ExchangeStringUtil.addZeroForNum(String.valueOf(currentMonth), 2); + lastStartDate = year - 1 + "-" + ExchangeStringUtil.addZeroForNum(String.valueOf(startMonth), 2); + lastEndDate = year - 1 + "-" + ExchangeStringUtil.addZeroForNum(String.valueOf(currentMonth), 2); break; case 5: tableName = "energy_data_year"; diff --git a/user-service/src/main/java/com/mh/user/service/impl/MeterManageServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/MeterManageServiceImpl.java index 3d23d5c..876b9ef 100644 --- a/user-service/src/main/java/com/mh/user/service/impl/MeterManageServiceImpl.java +++ b/user-service/src/main/java/com/mh/user/service/impl/MeterManageServiceImpl.java @@ -130,7 +130,7 @@ public class MeterManageServiceImpl implements MeterManageService { if (meterManageMapper.queryIsHotCollection(systemId, projectId, "0077", Constant.COOLING_METER) > 0) { // 判断是否存在热量计 return 1; - } else if (meterManageMapper.queryIsHotCollection(systemId, projectId, "0002", Constant.FLOW_METER) > 0) { + } else if (meterManageMapper.queryIsHotCollection(systemId, projectId, "0002", Constant.FLOW_METER) > 0 || projectId.equals("20")) { // 判断是否包含蒸汽流量计 return 2; } else {