Browse Source

1、日月年统计修复;

dev_mz
v-lijf43 7 days ago
parent
commit
42b108d055
  1. 52
      mh-admin/src/test/java/com/mh/MHApplicationTest.java
  2. 19
      mh-common/src/main/java/com/mh/common/enums/ComputeEnum.java
  3. 7
      mh-system/src/main/java/com/mh/system/mapper/report/ComprehensiveReportMapper.java

52
mh-admin/src/test/java/com/mh/MHApplicationTest.java

@ -70,32 +70,32 @@ public class MHApplicationTest {
@Test @Test
public void calcEnergyData() { public void calcEnergyData() {
for (int i = 10; i < 17; i++) { // for (int i = 10; i < 17; i++) {
hotWaterTask.calcEnergyData("2025-07-"+i+" 00:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 00:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 01:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 01:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 02:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 02:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 03:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 03:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 04:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 04:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 05:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 05:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 06:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 06:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 07:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 07:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 08:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 08:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 09:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 09:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 10:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 10:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 11:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 11:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 12:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 12:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 13:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 13:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 14:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 14:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 15:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 15:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 16:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 16:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 17:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 17:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 18:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 18:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 19:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 19:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 20:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 20:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 21:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 21:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 22:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 22:00:00");
hotWaterTask.calcEnergyData("2025-07-"+i+" 23:00:00"); hotWaterTask.calcEnergyData("2025-09-30"+" 23:00:00");
} // }
} }

19
mh-common/src/main/java/com/mh/common/enums/ComputeEnum.java

@ -111,7 +111,24 @@ public enum ComputeEnum implements ComputeService {
@Override @Override
public ArrayList<Map<LocalDateTime, DeviceReport>> getDataList( public ArrayList<Map<LocalDateTime, DeviceReport>> getDataList(
Map.Entry<String, Map<LocalDateTime, List<DeviceReport>>> entry) { Map.Entry<String, Map<LocalDateTime, List<DeviceReport>>> entry) {
return null; ArrayList<Map<LocalDateTime, DeviceReport>> result = new ArrayList<>();
//获取到电表的数据,按照表号分组分组,紧接着再按照小时分组。需要计算分组后的数据取出最大值
Map<LocalDateTime, List<DeviceReport>> deviceMap = entry.getValue();
String deviceNum = entry.getKey();
Set<Map.Entry<LocalDateTime, List<DeviceReport>>> groupEntryList = deviceMap.entrySet();
for (Map.Entry<LocalDateTime, List<DeviceReport>> listEntry : groupEntryList) {
LocalDateTime key = listEntry.getKey();
List<DeviceReport> value = listEntry.getValue();
DeviceReport maxEntity = value.stream()
.max(Comparator.comparing(obj -> Double.valueOf(obj.getCurValue())))
.orElse(null);
HashMap<LocalDateTime, DeviceReport> map = new HashMap<>();
map.put(key, maxEntity);
result.add(map);
}
return result;
} }
}; };

7
mh-system/src/main/java/com/mh/system/mapper/report/ComprehensiveReportMapper.java

@ -34,6 +34,7 @@ public interface ComprehensiveReportMapper {
"</script>") "</script>")
BigDecimal queryByDeviceNum(@Param("deviceNums") List<CollectionParamsManage> deviceNums); BigDecimal queryByDeviceNum(@Param("deviceNums") List<CollectionParamsManage> deviceNums);
@Select("<script>" + @Select("<script>" +
"WITH periods AS ( " + "WITH periods AS ( " +
" SELECT " + " SELECT " +
@ -81,10 +82,10 @@ public interface ComprehensiveReportMapper {
"FROM periods p " + "FROM periods p " +
"LEFT JOIN ( " + "LEFT JOIN ( " +
" SELECT cur_time, calc_value, device_num FROM ${lastTableName} " + " SELECT cur_time, calc_value, device_num FROM ${lastTableName} " +
" WHERE cur_time >= #{startTime} AND cur_time <= #{endTime} " + " WHERE cur_time >= #{startTime} AND cur_time &lt;= #{endTime} " +
" UNION ALL " + " UNION ALL " +
" SELECT cur_time, calc_value, device_num FROM ${curTableName} " + " SELECT cur_time, calc_value, device_num FROM ${curTableName} " +
" WHERE cur_time >= #{startTime} AND cur_time <= #{endTime} " + " WHERE cur_time >= #{startTime} AND cur_time &lt;= #{endTime} " +
") all_data ON <choose>" + ") all_data ON <choose>" +
" <when test='timeType == \"year\"'>" + " <when test='timeType == \"year\"'>" +
" to_char(all_data.cur_time, 'YYYY') = p.period " + " to_char(all_data.cur_time, 'YYYY') = p.period " +
@ -195,7 +196,7 @@ public interface ComprehensiveReportMapper {
" #{item.mtNum} " + " #{item.mtNum} " +
" </foreach>" + " </foreach>" +
" </if>" + " </if>" +
" AND dm.cur_time >= #{startTime} AND dm.cur_time <= #{endTime} " + " AND dm.cur_time >= #{startTime} AND dm.cur_time &lt;= #{endTime} " +
"GROUP BY p.period " + "GROUP BY p.period " +
"ORDER BY p.period; " + "ORDER BY p.period; " +
"</script>") "</script>")

Loading…
Cancel
Save