Browse Source

1、优化用电、用水、水位预测

dev
mh 6 months ago
parent
commit
76e8dfb148
  1. 33
      user-service/src/main/java/com/mh/user/job/DealDataJob.java
  2. 16
      user-service/src/main/java/com/mh/user/mapper/HistoryDataPreMapper.java
  3. 2
      user-service/src/main/java/com/mh/user/service/impl/HistoryDataPreServiceImpl.java
  4. 2
      user-service/src/test/java/com/mh/user/DealDataTest.java

33
user-service/src/main/java/com/mh/user/job/DealDataJob.java

@ -173,19 +173,6 @@ public class DealDataJob {
dealDataService.proTotalPumpMinutes(curDate); //统计周\月热泵运行时长 dealDataService.proTotalPumpMinutes(curDate); //统计周\月热泵运行时长
log.info("进入定时调试数据库过程汇总数据!yyyy-MM-dd"); log.info("进入定时调试数据库过程汇总数据!yyyy-MM-dd");
// // 开始预测数据
// List<BuildingModel> buildingModels = buildingService.selectBuildingName();
// for (BuildingModel buildingModel : buildingModels) {
// String buildingId = String.valueOf(buildingModel.getBuildingId());
// try {
// // 训练数据
// historyDataPreService.startTrainData(buildingId);
// // 预测数据
// historyDataPreService.startPredictData(buildingId, curDate);
// } catch (Exception e) {
// log.error("定时处理数据以及预测数据异常==>", e);
// }
// }
stopWatch.stop(); stopWatch.stop();
log.info("定时处理数据以及预测数据结束!耗时:" + stopWatch.getTotalTimeSeconds() + "秒"); log.info("定时处理数据以及预测数据结束!耗时:" + stopWatch.getTotalTimeSeconds() + "秒");
} catch (Exception e) { } catch (Exception e) {
@ -193,6 +180,26 @@ public class DealDataJob {
} }
} }
@Scheduled(cron = "0 0 0/1 * * ?")
public void preUseData() {
// 每小时预测一次数据
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
String curDate = sdf1.format(date);
List<BuildingModel> buildingModels = buildingService.selectBuildingName();
for (BuildingModel buildingModel : buildingModels) {
String buildingId = String.valueOf(buildingModel.getBuildingId());
try {
// 训练数据
historyDataPreService.startTrainData(buildingId);
// 预测数据
historyDataPreService.startPredictData(buildingId, curDate);
} catch (Exception e) {
log.error("定时处理数据以及预测数据异常==>", e);
}
}
}
/** /**
* 定时删除历史流水记录删除前三个月的记录 * 定时删除历史流水记录删除前三个月的记录
*/ */

16
user-service/src/main/java/com/mh/user/mapper/HistoryDataPreMapper.java

@ -27,7 +27,9 @@ public interface HistoryDataPreMapper extends BaseMapper<HistoryDataPre> {
@Result(column = "water_level", property = "waterLevel"), @Result(column = "water_level", property = "waterLevel"),
@Result(column = "people_num", property = "peopleNum") @Result(column = "people_num", property = "peopleNum")
}) })
@Select("select env_min_temp, env_max_temp, water_value, elect_value, water_level, people_num from history_data_pre where building_id = #{buildingId} order by cur_date ") @Select("select env_min_temp, env_max_temp, water_value, elect_value, water_level, people_num from history_data_pre where building_id = #{buildingId} " +
" and env_min_temp > 0 and env_max_temp >0 and water_value > 0 and elect_value > 0 and water_level >0 " +
" order by cur_date ")
List<HistoryDataPre> getTrainData(@Param("buildingId") String buildingId); List<HistoryDataPre> getTrainData(@Param("buildingId") String buildingId);
@Results(id ="rs_recent_data",value ={ @Results(id ="rs_recent_data",value ={
@ -65,7 +67,8 @@ public interface HistoryDataPreMapper extends BaseMapper<HistoryDataPre> {
@Result(column = "env_max_temp", property = "envMaxTemp"), @Result(column = "env_max_temp", property = "envMaxTemp"),
@Result(column = "water_value", property = "waterValue"), @Result(column = "water_value", property = "waterValue"),
@Result(column = "elect_value", property = "electValue"), @Result(column = "elect_value", property = "electValue"),
@Result(column = "water_level", property = "waterLevel") @Result(column = "water_level", property = "waterLevel"),
@Result(column = "check_in_count", property = "peopleNum")
}) })
@Select("select top 1 " + @Select("select top 1 " +
" convert(date,eds.cur_date) as cur_date, " + " convert(date,eds.cur_date) as cur_date, " +
@ -77,7 +80,8 @@ public interface HistoryDataPreMapper extends BaseMapper<HistoryDataPre> {
" isnull(convert(numeric(24, " + " isnull(convert(numeric(24, " +
" 2), " + " 2), " +
" t1.water_level), " + " t1.water_level), " +
" 0) as water_level " + " 0) as water_level," +
" b.check_in_count " +
"from " + "from " +
" energy_day_sum eds " + " energy_day_sum eds " +
"left join ( " + "left join ( " +
@ -98,6 +102,8 @@ public interface HistoryDataPreMapper extends BaseMapper<HistoryDataPre> {
" ) t1 on " + " ) t1 on " +
" eds.cur_date = t1.cur_date " + " eds.cur_date = t1.cur_date " +
" and eds.building_id = t1.building_id " + " and eds.building_id = t1.building_id " +
" left join building b " +
" on b.id = eds.building_id " +
"where " + "where " +
" eds.building_id != '所有' " + " eds.building_id != '所有' " +
" and eds.building_id = #{buildingId} " + " and eds.building_id = #{buildingId} " +
@ -108,8 +114,8 @@ public interface HistoryDataPreMapper extends BaseMapper<HistoryDataPre> {
HistoryDataPre selectCurData(@Param("buildingId") String buildingId, HistoryDataPre selectCurData(@Param("buildingId") String buildingId,
@Param("curDate") String curDate); @Param("curDate") String curDate);
@Insert("insert into history_data_pre(cur_date, building_id, env_min_temp, env_max_temp, water_value, elect_value, water_level) values(" + @Insert("insert into history_data_pre(cur_date, building_id, env_min_temp, env_max_temp, water_value, elect_value, water_level, people_num) values(" +
"convert(date,#{curDate}), #{buildingId}, #{envMinTemp}, #{envMaxTemp}, #{waterValue}, #{electValue}, #{waterLevel}" + "convert(date,#{curDate}), #{buildingId}, #{envMinTemp}, #{envMaxTemp}, #{waterValue}, #{electValue}, #{waterLevel}, #{peopleNum}" +
")") ")")
void insertData(HistoryDataPre curHistoryData); void insertData(HistoryDataPre curHistoryData);

2
user-service/src/main/java/com/mh/user/service/impl/HistoryDataPreServiceImpl.java

@ -174,7 +174,7 @@ public class HistoryDataPreServiceImpl implements HistoryDataPreService {
// 拼接预测值 // 拼接预测值
preHistoryData.setWaterValuePre(evaluateAndReturnBigDecimal(record[0])); preHistoryData.setWaterValuePre(evaluateAndReturnBigDecimal(record[0]));
preHistoryData.setElectValuePre(evaluateAndReturnBigDecimal(record[1])); preHistoryData.setElectValuePre(evaluateAndReturnBigDecimal(record[1]));
preHistoryData.setWaterLevelPre(evaluateAndReturnBigDecimal(record[2])); preHistoryData.setWaterLevelPre(evaluateAndReturnBigDecimal(record[2]).compareTo(BigDecimal.valueOf(100)) > 0 ? BigDecimal.valueOf(100) : evaluateAndReturnBigDecimal(record[2]));
} }
preHistoryData.setWaterValue(curHistoryData.getWaterValue()); preHistoryData.setWaterValue(curHistoryData.getWaterValue());
preHistoryData.setElectValue(curHistoryData.getElectValue()); preHistoryData.setElectValue(curHistoryData.getElectValue());

2
user-service/src/test/java/com/mh/user/DealDataTest.java

@ -52,7 +52,7 @@ public class DealDataTest extends UserServiceApplicationTests {
// 训练数据 // 训练数据
historyDataPreService.startTrainData("21"); historyDataPreService.startTrainData("21");
// 预测数据 // 预测数据
historyDataPreService.startPredictData("21", "2024-03-21"); historyDataPreService.startPredictData("21", "2024-11-19");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
System.out.println(e.getMessage()); System.out.println(e.getMessage());

Loading…
Cancel
Save