From 01dbace33ae72eedfe42b740dcccd1d244e45970 Mon Sep 17 00:00:00 2001 From: mh Date: Wed, 27 Nov 2024 10:43:36 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=AE=9E=E6=97=B6=E8=83=BD=E6=95=88?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A2=9E=E5=8A=A0=E5=86=B7=E5=86=BB=E6=B0=B4?= =?UTF-8?q?=E8=BF=9B=E5=87=BA=E6=B0=B4=E6=B8=A9=E5=BA=A6=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mh/user/constants/Constant.java | 9 + .../java/com/mh/user/dto/DataResultDTO.java | 86 +++++++++ .../mh/user/entity/DataResultChEntity.java | 8 + .../mapper/DataResultFifteenMiMapper.java | 10 +- .../user/mapper/DataResultFiveMiMapper.java | 8 +- .../mapper/provider/DataResultProvider.java | 102 +++++++++-- .../mh/user/service/DataResultService.java | 6 +- .../service/impl/DataResultServiceImpl.java | 164 +++++++++++++----- 8 files changed, 321 insertions(+), 72 deletions(-) create mode 100644 user-service/src/main/java/com/mh/user/dto/DataResultDTO.java diff --git a/user-service/src/main/java/com/mh/user/constants/Constant.java b/user-service/src/main/java/com/mh/user/constants/Constant.java index 46c3c6a..a0abce5 100644 --- a/user-service/src/main/java/com/mh/user/constants/Constant.java +++ b/user-service/src/main/java/com/mh/user/constants/Constant.java @@ -27,4 +27,13 @@ public class Constant { public static float CARBON_EMISSION_FACTOR = 0.6379f; + // 瞬时产冷量 + public static String MOMENT_COOLING = "0014"; + + // 进水温度值 + public static String INT_TEMP = "0073"; + + // 出水温度值 + public static String OUT_TEMP = "0075"; + } diff --git a/user-service/src/main/java/com/mh/user/dto/DataResultDTO.java b/user-service/src/main/java/com/mh/user/dto/DataResultDTO.java new file mode 100644 index 0000000..1df21c3 --- /dev/null +++ b/user-service/src/main/java/com/mh/user/dto/DataResultDTO.java @@ -0,0 +1,86 @@ +package com.mh.user.dto; + +/** + * @author LJF + * @version 1.0 + * @project mh_esi + * @description 能耗监测 + * @date 2024-11-26 11:51:42 + */ +public class DataResultDTO { + + private String time; + private String projectName; + private String projectId; + private String momentCooling; + private String intTemp; + private String outTemp; + + public DataResultDTO(String time, String momentCooling, String intTemp, String outTemp, String projectName, String projectId) { + this.time = time; + this.momentCooling = momentCooling; + this.intTemp = intTemp; + this.outTemp = outTemp; + this.projectName = projectName; + this.projectId = projectId; + } + + public String getProjectName() { + return projectName; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getMomentCooling() { + return momentCooling; + } + + public void setMomentCooling(String momentCooling) { + this.momentCooling = momentCooling; + } + + public String getIntTemp() { + return intTemp; + } + + public void setIntTemp(String intTemp) { + this.intTemp = intTemp; + } + + public String getOutTemp() { + return outTemp; + } + + public void setOutTemp(String outTemp) { + this.outTemp = outTemp; + } + + @Override + public String toString() { + return "DataResultChEntity{" + + "time='" + time + '\'' + + ", momentCooling=" + momentCooling + + ", intTemp=" + intTemp + + ", outTemp=" + outTemp + + '}'; + } + +} diff --git a/user-service/src/main/java/com/mh/user/entity/DataResultChEntity.java b/user-service/src/main/java/com/mh/user/entity/DataResultChEntity.java index fa9604c..891ef02 100644 --- a/user-service/src/main/java/com/mh/user/entity/DataResultChEntity.java +++ b/user-service/src/main/java/com/mh/user/entity/DataResultChEntity.java @@ -1,7 +1,15 @@ package com.mh.user.entity; import com.baomidou.mybatisplus.annotation.TableName; +import com.mh.user.utils.DateUtil; @TableName("data_result_ch") public class DataResultChEntity extends BaseResultEntity { + + public DataResultChEntity() {} + + public DataResultChEntity(String time, String value) { + this.setCurDate(DateUtil.stringToDate(time, "yyyy-MM-dd HH:mm:ss")); + this.setCurValue(value); + } } diff --git a/user-service/src/main/java/com/mh/user/mapper/DataResultFifteenMiMapper.java b/user-service/src/main/java/com/mh/user/mapper/DataResultFifteenMiMapper.java index 01dbbfb..c9bfc88 100644 --- a/user-service/src/main/java/com/mh/user/mapper/DataResultFifteenMiMapper.java +++ b/user-service/src/main/java/com/mh/user/mapper/DataResultFifteenMiMapper.java @@ -3,11 +3,9 @@ package com.mh.user.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mh.user.entity.DataResultChEntity; import com.mh.user.entity.DataResultFifteenMiEntity; -import com.mh.user.entity.DataResultFiveMiEntity; import com.mh.user.mapper.provider.DataResultProvider; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.ResultMap; import org.apache.ibatis.annotations.SelectProvider; import java.util.List; @@ -27,10 +25,14 @@ public interface DataResultFifteenMiMapper extends BaseMapper=#{startDate} and curDate<=#{curDate} ") @SelectProvider(type = DataResultProvider.class,method = "dataResultFifteenMiCount") - int dataResultFifteenMiCount(@Param("projectId") String projectId,@Param("startDate") String startDate,@Param("curDate") String curDate); + int dataResultFifteenMiCount(@Param("projectId") String projectId, + @Param("startDate") String startDate, + @Param("curDate") String curDate, + @Param("registerAddr") String registerAddr); } diff --git a/user-service/src/main/java/com/mh/user/mapper/DataResultFiveMiMapper.java b/user-service/src/main/java/com/mh/user/mapper/DataResultFiveMiMapper.java index 7e51c4a..cdf8042 100644 --- a/user-service/src/main/java/com/mh/user/mapper/DataResultFiveMiMapper.java +++ b/user-service/src/main/java/com/mh/user/mapper/DataResultFiveMiMapper.java @@ -24,10 +24,14 @@ public interface DataResultFiveMiMapper extends BaseMapper=#{startDate} and curDate<=#{curDate} ") @SelectProvider(type = DataResultProvider.class,method = "dataResultFiveMiCount") - int dataResultFiveMiCount(@Param("projectId") String projectId,@Param("startDate") String startDate,@Param("curDate") String curDate); + int dataResultFiveMiCount(@Param("projectId") String projectId, + @Param("startDate") String startDate, + @Param("curDate") String curDate, + @Param("registerAddr") String registerAddr); } diff --git a/user-service/src/main/java/com/mh/user/mapper/provider/DataResultProvider.java b/user-service/src/main/java/com/mh/user/mapper/provider/DataResultProvider.java index 41b5b6c..3e1aa06 100644 --- a/user-service/src/main/java/com/mh/user/mapper/provider/DataResultProvider.java +++ b/user-service/src/main/java/com/mh/user/mapper/provider/DataResultProvider.java @@ -1,5 +1,7 @@ package com.mh.user.mapper.provider; +import com.mh.user.constants.Constant; + public class DataResultProvider { public String queryDataResult(String projectId,String startDate,String endDate,String deviceType, int page, int limit){ @@ -93,10 +95,18 @@ public class DataResultProvider { //时间显示间隔为5分钟 - public String queryDataResultFiveMi(String projectId,String startDate,String curDate, int page, int limit){ + public String queryDataResultFiveMi(String projectId,String startDate,String curDate, int page, int limit, String registerAddr){ StringBuffer sql = new StringBuffer(""); - sql.append("select t2.cur_date,t2.cur_value,t2.project_id,t3.project_name from (select *,ROW_NUMBER() over(order by cur_date) as rn from ( " + - " select project_id,cur_date,sum(cast(cur_value as decimal(18,2))) as cur_value from data_result_five_mi " + + sql.append("select t2.cur_date,t2.cur_value,t2.project_id,t3.project_name "); + if (registerAddr!= null && !registerAddr.isEmpty()) { + sql.append(" ,t2.register_addr "); + } + sql.append(" from (select *,ROW_NUMBER() over(order by cur_date) as rn from ( " + + " select project_id,cur_date,sum(cast(cur_value as decimal(18,2))) as cur_value"); + if (registerAddr!= null && !registerAddr.isEmpty()) { + sql.append(" ,register_addr "); + } + sql.append(" from data_result_five_mi " + " where 1=1 "); if (projectId!= null && !projectId.equals("")) { sql.append(" AND project_id=#{projectId} "); @@ -107,18 +117,32 @@ public class DataResultProvider { if (curDate!= null && !curDate.equals("")) { sql.append(" AND cur_date<=#{curDate} "); } + if (registerAddr!= null && !registerAddr.equals("")){ + sql.append(" AND register_addr = #{registerAddr} "); + if (Constant.INT_TEMP.equals(registerAddr) || Constant.OUT_TEMP.equals(registerAddr)) { + sql.append(" and device_addr = (select top 1 mt_num from meter_manage where mt_type = 2 and register_addr = #{registerAddr} and project_id = #{projectId} ) "); + } + } + sql.append("group by cur_date,project_id "); + if (registerAddr!= null && !registerAddr.isEmpty()){ + sql.append(" ,register_addr "); + } if ((page != 0) && (limit != 0)){ - sql.append(" group by cur_date,project_id)t1) t2 join project_info t3 ON t2.project_id=t3.id where t2.rn>(#{page}-1)*#{limit} and t2.rn<=#{page}*#{limit} order by t2.cur_date desc"); + sql.append(" )t1) t2 join project_info t3 ON t2.project_id=t3.id where t2.rn>(#{page}-1)*#{limit} and t2.rn<=#{page}*#{limit} order by t2.cur_date desc"); } else if (page == 0){ - sql.append(" group by cur_date,project_id)t1) t2 join project_info t3 ON t2.project_id=t3.id order by t2.cur_date desc"); + sql.append(" )t1) t2 join project_info t3 ON t2.project_id=t3.id order by t2.cur_date desc"); } return sql.toString(); } - public String dataResultFiveMiCount(String projectId, String startDate,String curDate){ + public String dataResultFiveMiCount(String projectId, String startDate,String curDate, String registerAddr){ StringBuffer sql = new StringBuffer(""); - sql.append("select count(*) from (select *,ROW_NUMBER() over(order by cur_date) as rn from ( " + - " select project_id,cur_date,sum(cast(cur_value as decimal(18,2))) as cur_value from data_result_five_mi " + + sql.append("select count(1) from ( " + + " select project_id,cur_date,sum(cast(cur_value as decimal(18,2))) as cur_value"); + if (registerAddr!= null && !registerAddr.isEmpty()) { + sql.append(" ,register_addr "); + } + sql.append(" from data_result_five_mi " + " where 1=1 "); if (projectId!= null && !projectId.equals("")) { sql.append(" AND project_id=#{projectId} "); @@ -129,15 +153,33 @@ public class DataResultProvider { if (curDate!= null && !curDate.equals("")) { sql.append(" AND cur_date<=#{curDate} "); } - sql.append(" group by cur_date,project_id)t1) t2 "); + if (registerAddr!= null && !registerAddr.equals("")){ + sql.append(" AND register_addr = #{registerAddr} "); + if (Constant.INT_TEMP.equals(registerAddr) || Constant.OUT_TEMP.equals(registerAddr)) { + sql.append(" and device_addr = (select top 1 mt_num from meter_manage where mt_type = 2 and register_addr = #{registerAddr} and project_id = #{projectId} ) "); + } + } + sql.append("group by cur_date,project_id "); + if (registerAddr!= null && !registerAddr.isEmpty()){ + sql.append(" ,register_addr "); + } + sql.append(" ) t1 "); return sql.toString(); } //时间显示间隔为15分钟 - public String queryDataResultFifteenMi(String projectId,String startDate,String curDate, int page, int limit){ + public String queryDataResultFifteenMi(String projectId,String startDate,String curDate, int page, int limit, String registerAddr){ StringBuffer sql = new StringBuffer(""); - sql.append("select t2.cur_date,t2.cur_value,t2.project_id,t3.project_name from (select *,ROW_NUMBER() over(order by cur_date) as rn from ( " + - " select project_id,cur_date,sum(cast(cur_value as decimal(18,2))) as cur_value from data_result_fifteen_mi " + + sql.append("select t2.cur_date,t2.cur_value,t2.project_id,t3.project_name "); + if (registerAddr!= null && !registerAddr.isEmpty()) { + sql.append(" ,t2.register_addr "); + } + sql.append(" from (select *,ROW_NUMBER() over(order by cur_date) as rn from ( " + + " select project_id,cur_date,sum(cast(cur_value as decimal(18,2))) as cur_value"); + if (registerAddr!= null && !registerAddr.isEmpty()) { + sql.append(" ,register_addr "); + } + sql.append(" from data_result_fifteen_mi " + " where 1=1 "); if (projectId!= null && !projectId.equals("")) { sql.append(" AND project_id=#{projectId} "); @@ -148,18 +190,32 @@ public class DataResultProvider { if (curDate!= null && !curDate.equals("")) { sql.append(" AND cur_date<=#{curDate} "); } + if (registerAddr!= null && !registerAddr.equals("")){ + sql.append(" AND register_addr = #{registerAddr} "); + if (Constant.INT_TEMP.equals(registerAddr) || Constant.OUT_TEMP.equals(registerAddr)) { + sql.append(" and device_addr = (select top 1 mt_num from meter_manage where mt_type = 2 and register_addr = #{registerAddr} and project_id = #{projectId} ) "); + } + } + sql.append("group by cur_date,project_id "); + if (registerAddr!= null && !registerAddr.isEmpty()){ + sql.append(" ,register_addr "); + } if ((page != 0) && (limit != 0)){ - sql.append(" group by cur_date,project_id)t1) t2 join project_info t3 ON t2.project_id=t3.id where t2.rn>(#{page}-1)*#{limit} and t2.rn<=#{page}*#{limit} order by t2.cur_date desc"); + sql.append(" )t1) t2 join project_info t3 ON t2.project_id=t3.id where t2.rn>(#{page}-1)*#{limit} and t2.rn<=#{page}*#{limit} order by t2.cur_date desc"); } else if (page == 0){ - sql.append(" group by cur_date,project_id)t1) t2 join project_info t3 ON t2.project_id=t3.id order by t2.cur_date desc"); + sql.append(" )t1) t2 join project_info t3 ON t2.project_id=t3.id order by t2.cur_date desc"); } return sql.toString(); } - public String dataResultFifteenMiCount(String projectId, String startDate,String curDate){ + public String dataResultFifteenMiCount(String projectId, String startDate,String curDate, String registerAddr){ StringBuffer sql = new StringBuffer(""); - sql.append("select count(*) from (select *,ROW_NUMBER() over(order by cur_date) as rn from ( " + - " select project_id,cur_date,sum(cast(cur_value as decimal(18,2))) as cur_value from data_result_five_mi " + + sql.append("select count(1) from ( " + + " select project_id,cur_date,sum(cast(cur_value as decimal(18,2))) as cur_value"); + if (registerAddr!= null && !registerAddr.isEmpty()) { + sql.append(" ,register_addr "); + } + sql.append(" from data_result_fifteen_mi " + " where 1=1 "); if (projectId!= null && !projectId.equals("")) { sql.append(" AND project_id=#{projectId} "); @@ -170,7 +226,17 @@ public class DataResultProvider { if (curDate!= null && !curDate.equals("")) { sql.append(" AND cur_date<=#{curDate} "); } - sql.append(" group by cur_date,project_id)t1) t2 "); + if (registerAddr!= null && !registerAddr.equals("")){ + sql.append(" AND register_addr = #{registerAddr} "); + if (Constant.INT_TEMP.equals(registerAddr) || Constant.OUT_TEMP.equals(registerAddr)) { + sql.append(" and device_addr = (select top 1 mt_num from meter_manage where mt_type = 2 and register_addr = #{registerAddr} and project_id = #{projectId} ) "); + } + } + sql.append("group by cur_date,project_id "); + if (registerAddr!= null && !registerAddr.isEmpty()){ + sql.append(" ,register_addr "); + } + sql.append(" ) t1 "); return sql.toString(); } diff --git a/user-service/src/main/java/com/mh/user/service/DataResultService.java b/user-service/src/main/java/com/mh/user/service/DataResultService.java index a5a10e2..9515d1f 100644 --- a/user-service/src/main/java/com/mh/user/service/DataResultService.java +++ b/user-service/src/main/java/com/mh/user/service/DataResultService.java @@ -46,15 +46,15 @@ public interface DataResultService { void updateDataResultCh(DataResultChEntity dataResultChEntity); //查询按分钟的时间间隔 - List queryDataResultMi(String projectId,String startDate,String curDate,int page,int limit, int type); + List queryDataResultMi(String projectId,String startDate,String curDate,int page,int limit, int type, String registerAddr); HttpResult queryDataResultMiData(String projectId, String curDate, int page, int limit, int type, String dateType); int dataResultOneMiCount(String projectId,String startDate,String curDate); - int dataResultFiveMiCount(String projectId,String startDate,String curDate); + int dataResultFiveMiCount(String projectId,String startDate,String curDate, String registerAddr); - int dataResultFifteenMiCount(String projectId,String startDate,String curDate); + int dataResultFifteenMiCount(String projectId,String startDate,String curDate, String registerAddr); //查询按秒的时间间隔 List queryDataResultSec(String projectId,String startDate,String curDate); 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 1b8b0fb..4415d42 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 @@ -1,6 +1,8 @@ package com.mh.user.service.impl; import com.mh.common.http.HttpResult; +import com.mh.user.constants.Constant; +import com.mh.user.dto.DataResultDTO; import com.mh.user.entity.*; import com.mh.user.mapper.*; import com.mh.user.service.DataResultService; @@ -15,8 +17,8 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; @Slf4j @Service @@ -222,13 +224,13 @@ public class DataResultServiceImpl implements DataResultService { } @Override - public List queryDataResultMi(String projectId, String startDate, String curDate, int page, int limit, int type) { + public List queryDataResultMi(String projectId, String startDate, String curDate, int page, int limit, int type, String registerAddr) { if (type == 0) { return dataResultOneMiMapper.queryDataResultOneMi(projectId, startDate, curDate, page, limit); } else if (type == 1) { - return dataResultFiveMiMapper.queryDataResultFiveMi(projectId, startDate, curDate, page, limit); + return dataResultFiveMiMapper.queryDataResultFiveMi(projectId, startDate, curDate, page, limit, registerAddr); } else if (type == 2) { - return dataResultFifteenMiMapper.queryDataResultFifteenMi(projectId, startDate, curDate, page, limit); + return dataResultFifteenMiMapper.queryDataResultFifteenMi(projectId, startDate, curDate, page, limit, registerAddr); } else { return dataResultOneMiMapper.queryDataResultOneMi(projectId, startDate, curDate, page, limit); } @@ -241,58 +243,130 @@ public class DataResultServiceImpl implements DataResultService { @Override public HttpResult queryDataResultMiData(String projectId, String curDate, int page, int limit, int type, String dateType) { - try{ - if(projectId!=null && !projectId.isEmpty()){ - String startDate=""; - curDate=curDate.substring(0,16)+":00"; - if (dateType.equals("1小时")){ - startDate= ExchangeStringUtil.dateRoll(1,curDate); - List records=queryDataResultMi(projectId,startDate,curDate,page,limit,0); - int count=dataResultOneMiCount(projectId,startDate,curDate); - return HttpResult.ok(count,records); - }else if (dateType.equals("2小时")){ - startDate=ExchangeStringUtil.dateRoll(2,curDate); - List records=queryDataResultMi(projectId,startDate,curDate,page,limit,0); - int count=dataResultOneMiCount(projectId,startDate,curDate); - return HttpResult.ok(count,records); - }else if (dateType.equals("8小时")){ - startDate=ExchangeStringUtil.dateRoll(8,curDate); - List records=queryDataResultMi(projectId,startDate,curDate,page,limit,1); - int count=dataResultFiveMiCount(projectId,startDate,curDate); - return HttpResult.ok(count,records); - }else if (dateType.equals("12小时")){ - startDate=ExchangeStringUtil.dateRoll(12,curDate); - List records=queryDataResultMi(projectId,startDate,curDate,page,limit,1); - int count=dataResultFiveMiCount(projectId,startDate,curDate); - return HttpResult.ok(count,records); - }else if (dateType.equals("24小时")){ - startDate=ExchangeStringUtil.dateRoll(24,curDate); - List records=queryDataResultMi(projectId,startDate,curDate,page,limit,2); - int count=dataResultFifteenMiCount(projectId,startDate,curDate); - return HttpResult.ok(count,records); - }else{ //1小时 - startDate=ExchangeStringUtil.dateRoll(1,curDate); - List records=queryDataResultMi(projectId,startDate,curDate,page,limit,0); - int count=dataResultOneMiCount(projectId,startDate,curDate); - return HttpResult.ok(count,records); + try { + if (projectId != null && !projectId.isEmpty()) { + String startDate = ""; + curDate = curDate.substring(0, 16) + ":00"; + if (dateType.equals("1小时")) { + startDate = ExchangeStringUtil.dateRoll(1, curDate); + List records = queryDataResultMi(projectId, startDate, curDate, page, limit, 0, Constant.MOMENT_COOLING); + int count = dataResultOneMiCount(projectId, startDate, curDate); + return HttpResult.ok(count, records); + } else if (dateType.equals("2小时")) { + startDate = ExchangeStringUtil.dateRoll(2, curDate); + List records = queryDataResultMi(projectId, startDate, curDate, page, limit, 0, Constant.MOMENT_COOLING); + int count = dataResultOneMiCount(projectId, startDate, curDate); + return HttpResult.ok(count, records); + } else if (dateType.equals("8小时") || dateType.equals("12小时") || dateType.equals("24小时")) { + int queryType = 1; + if (dateType.equals("8小时")) { + startDate = ExchangeStringUtil.dateRoll(8, curDate); + } else if (dateType.equals("12小时")){ + startDate = ExchangeStringUtil.dateRoll(12, curDate); + } else { + startDate = ExchangeStringUtil.dateRoll(24, curDate); + queryType = 2; + } + // 查询瞬时冷量 + List records = queryDataResultMi(projectId, startDate, curDate, page, limit, queryType, Constant.MOMENT_COOLING); + // 查询进水温度值(及冷冻水出水温度) + List intTempRecords = queryDataResultMi(projectId, startDate, curDate, page, limit, queryType, Constant.OUT_TEMP); + // 查询出水温度值(及冷冻水进水温度) + List outTempRecords = queryDataResultMi(projectId, startDate, curDate, page, limit, queryType, Constant.INT_TEMP); + // 拼接数据 + // 将数据按时间分组 + Map momentCoolingMap = records.stream() + .collect(Collectors.toMap(val -> { + 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"); + }, entity -> entity)); + + Map outTempMap = outTempRecords.stream() + .collect(Collectors.toMap(val -> { + return DateUtil.dateToString(val.getCurDate(),"yyyy-MM-dd HH:mm:ss"); + }, entity -> entity)); + + // 合并数据 + Set allTimes = new HashSet<>(momentCoolingMap.keySet()); + allTimes.addAll(intTempMap.keySet()); + allTimes.addAll(outTempMap.keySet()); + + List mergedRecords = new ArrayList<>(); + for (String time : allTimes) { + DataResultChEntity momentCooling = momentCoolingMap.getOrDefault(time, new DataResultChEntity(time, "0")); + DataResultChEntity intTemp = intTempMap.getOrDefault(time, new DataResultChEntity(time, "0")); + DataResultChEntity outTemp = outTempMap.getOrDefault(time, new DataResultChEntity(time, "0")); + + DataResultDTO mergedRecord = new DataResultDTO( + time, + momentCooling.getCurValue(), + intTemp.getCurValue(), + outTemp.getCurValue(), + momentCooling.getProjectName(), + momentCooling.getProjectId() + ); + + mergedRecords.add(mergedRecord); + } + // 定义时间格式 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + // 使用 Collections.sort 方法排序 + Collections.sort(mergedRecords, (o1, o2) -> { + try { + Date date1 = sdf.parse(o1.getTime()); + Date date2 = sdf.parse(o2.getTime()); + return date1.compareTo(date2); + } catch (ParseException e) { + throw new IllegalArgumentException("Invalid date format", e); + } + }); + int count = 0; + if (dateType.equals("24小时")) { + count = dataResultFifteenMiCount(projectId, startDate, curDate, Constant.MOMENT_COOLING); + } else { + count = dataResultFiveMiCount(projectId, startDate, curDate, Constant.MOMENT_COOLING); + } + return HttpResult.ok(count, mergedRecords); + } +// else if (dateType.equals("12小时")) { +// startDate = ExchangeStringUtil.dateRoll(12, curDate); +// List records = queryDataResultMi(projectId, startDate, curDate, page, limit, 1, Constant.MOMENT_COOLING); +// int count = dataResultFiveMiCount(projectId, startDate, curDate); +// return HttpResult.ok(count, records); +// } +// else if (dateType.equals("24小时")) { +// startDate = ExchangeStringUtil.dateRoll(24, curDate); +// List records = queryDataResultMi(projectId, startDate, curDate, page, limit, 2, Constant.MOMENT_COOLING); +// int count = dataResultFifteenMiCount(projectId, startDate, curDate); +// return HttpResult.ok(count, records); +// } + else { //1小时 + startDate = ExchangeStringUtil.dateRoll(1, curDate); + List records = queryDataResultMi(projectId, startDate, curDate, page, limit, 0, Constant.MOMENT_COOLING); + int count = dataResultOneMiCount(projectId, startDate, curDate); + return HttpResult.ok(count, records); } - }else{ + } else { return HttpResult.error(); } - }catch (Exception e){ + } catch (Exception e) { log.error("查询数据异常", e); return HttpResult.error(); } } @Override - public int dataResultFiveMiCount(String projectId, String startDate, String curDate) { - return dataResultFiveMiMapper.dataResultFiveMiCount(projectId, startDate, curDate); + public int dataResultFiveMiCount(String projectId, String startDate, String curDate, String registerAddr) { + return dataResultFiveMiMapper.dataResultFiveMiCount(projectId, startDate, curDate, registerAddr); } @Override - public int dataResultFifteenMiCount(String projectId, String startDate, String curDate) { - return dataResultFifteenMiMapper.dataResultFifteenMiCount(projectId, startDate, curDate); + public int dataResultFifteenMiCount(String projectId, String startDate, String curDate, String registerAddr) { + return dataResultFifteenMiMapper.dataResultFifteenMiCount(projectId, startDate, curDate, registerAddr); } @Override