From 1d7a3213f681657a37a6d1dd8501e9a3bf16c809 Mon Sep 17 00:00:00 2001
From: liulin <lin.liu@88.com>
Date: 星期一, 07 七月 2025 17:51:37 +0800
Subject: [PATCH] 修改yml配置

---
 src/test/java/com/fengdu/gas/GenCodeGauss.java                                                        |    2 
 src/main/java/com/fengdu/gas/entity/request/datauploadrecordhour/ReqModifyDataUploadRecordHour.java   |   82 +
 src/main/java/com/fengdu/gas/repository/po/DataUploadRecordMonthPO.java                               |  110 +
 src/main/java/com/fengdu/gas/common/util/LocalDateTimeUtils.java                                      |  501 ++++++
 src/main/java/com/fengdu/gas/repository/mapper/DataUploadRecordMonthMapper.java                       |   10 
 src/main/java/com/fengdu/gas/repository/vo/DataUploadRecordDayVO.java                                 |   54 
 src/main/java/com/fengdu/gas/repository/impl/DataUploadRecordDayMapperImpl.java                       |  141 +
 src/test/resources/application.yml                                                                    |    2 
 src/main/java/com/fengdu/gas/host/controller/DataUploadRecordDayController.java                       |  113 +
 src/main/java/com/fengdu/gas/service/convert/DataUploadRecordDayConvert.java                          |   48 
 src/main/java/com/fengdu/gas/service/convert/DataUploadRecordHourConvert.java                         |   48 
 src/main/java/com/fengdu/gas/entity/request/datauploadrecord/ReqModifyDataUploadRecord.java           |   73 +
 src/main/java/com/fengdu/gas/service/convert/DataUploadRecordMonthConvert.java                        |   48 
 src/main/java/com/fengdu/gas/entity/search/SearchDataUploadRecordHour.java                            |   14 
 src/main/java/com/fengdu/gas/entity/request/datauploadrecordday/ReqCreateDataUploadRecordDay.java     |   78 +
 src/main/java/com/fengdu/gas/entity/search/SearchDataUploadRecord.java                                |   14 
 src/main/java/com/fengdu/gas/host/controller/DataUploadRecordController.java                          |  113 +
 src/main/java/com/fengdu/gas/repository/vo/DataUploadRecordHourVO.java                                |   54 
 src/main/java/com/fengdu/gas/repository/po/WaterFacilityPO.java                                       |   17 
 src/main/java/com/fengdu/gas/repository/mapper/DataUploadRecordMapper.java                            |   17 
 src/main/java/com/fengdu/gas/entity/request/datauploadrecordmonth/ReqCreateDataUploadRecordMonth.java |   78 +
 src/main/java/com/fengdu/gas/repository/impl/DataUploadRecordMonthMapperImpl.java                     |  137 +
 src/main/java/com/fengdu/gas/repository/vo/DataUploadRecordVO.java                                    |   54 
 src/main/java/com/fengdu/gas/repository/impl/DataUploadRecordMapperImpl.java                          |  139 +
 src/main/java/com/fengdu/gas/service/quartz/QuartzExecutor.java                                       |   50 
 src/main/java/com/fengdu/gas/entity/request/datauploadrecordday/ReqModifyDataUploadRecordDay.java     |   82 +
 src/main/java/com/fengdu/gas/repository/impl/DataUploadRecordHourMapperImpl.java                      |  141 +
 src/main/java/com/fengdu/gas/host/controller/DataUploadRecordMonthController.java                     |  113 +
 src/main/java/com/fengdu/gas/entity/search/SearchDataUploadRecordDay.java                             |   14 
 src/main/java/com/fengdu/gas/host/controller/DataUploadRecordHourController.java                      |  113 +
 src/main/java/com/fengdu/gas/repository/vo/DataUploadRecordMonthVO.java                               |   54 
 pom.xml                                                                                               |    4 
 src/main/java/com/fengdu/gas/service/DataUploadRecordDayService.java                                  |  244 +++
 src/main/java/com/fengdu/gas/service/DataUploadRecordService.java                                     |  367 +++++
 run-doc.bat                                                                                           |    4 
 src/main/java/com/fengdu/gas/entity/request/datauploadrecordmonth/ReqModifyDataUploadRecordMonth.java |   82 +
 src/main/java/com/fengdu/gas/repository/po/DataUploadRecordDayPO.java                                 |  110 +
 src/main/java/com/fengdu/gas/repository/mapper/DataUploadRecordDayMapper.java                         |   19 
 src/main/java/com/fengdu/gas/repository/po/DataUploadRecordHourPO.java                                |  110 +
 src/main/java/com/fengdu/gas/entity/request/datauploadrecordhour/ReqCreateDataUploadRecordHour.java   |   78 +
 src/main/java/com/fengdu/gas/repository/mapper/DataUploadRecordHourMapper.java                        |   17 
 src/main/java/com/fengdu/gas/entity/search/SearchDataUploadRecordMonth.java                           |   14 
 src/main/java/com/fengdu/gas/service/convert/DataUploadRecordConvert.java                             |   48 
 run-doc.sh                                                                                            |    4 
 src/main/java/com/fengdu/gas/service/DataUploadRecordMonthService.java                                |  244 +++
 src/main/java/com/fengdu/gas/entity/request/datauploadrecord/ReqCreateDataUploadRecord.java           |   69 
 src/main/java/com/fengdu/gas/repository/po/DataUploadRecordPO.java                                    |  105 +
 src/main/java/com/fengdu/gas/service/DataUploadRecordHourService.java                                 |  258 +++
 src/main/resources/application.yml                                                                    |    4 
 49 files changed, 4,278 insertions(+), 17 deletions(-)

diff --git a/pom.xml b/pom.xml
index 7445cab..2c1b1b5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,9 +10,9 @@
     </parent>
 
     <groupId>com.fengdu.gas</groupId>
-    <artifactId>fengdu_gases</artifactId>
+    <artifactId>fengdu-gases</artifactId>
     <version>0.0.1-SNAPSHOT</version>
-    <name>fengdu_gases-service</name>
+    <name>fengdu-gases-service</name>
     <description>The service which yyy of xxx project</description>
 
     <properties>
diff --git a/run-doc.bat b/run-doc.bat
index 723b3dc..5ab467d 100644
--- a/run-doc.bat
+++ b/run-doc.bat
@@ -10,7 +10,7 @@
 
 cd %currPath%
 
-mvn smart-doc:html -Dfile.encoding=UTF-8 -pl :fengdu_gases -am
-mvn smart-doc:openapi -Dfile.encoding=UTF-8 -pl :fengdu_gases -am
+mvn smart-doc:html -Dfile.encoding=UTF-8 -pl :fengdu-gases -am
+mvn smart-doc:openapi -Dfile.encoding=UTF-8 -pl :fengdu-gases -am
 
 pause&gt;nul
\ No newline at end of file
diff --git a/run-doc.sh b/run-doc.sh
index 43acbf5..0d1c94d 100644
--- a/run-doc.sh
+++ b/run-doc.sh
@@ -8,8 +8,8 @@
 
 echo $project_name
 
-mvn smart-doc:html -Dfile.encoding=UTF-8 -pl :fengdu_gases -am
-mvn smart-doc:openapi -Dfile.encoding=UTF-8 -pl :fengdu_gases -am
+mvn smart-doc:html -Dfile.encoding=UTF-8 -pl :fengdu-gases -am
+mvn smart-doc:openapi -Dfile.encoding=UTF-8 -pl :fengdu-gases -am
 
 #echo 按任意键退出
 #read -n 1
diff --git a/src/main/java/com/fengdu/gas/common/util/LocalDateTimeUtils.java b/src/main/java/com/fengdu/gas/common/util/LocalDateTimeUtils.java
new file mode 100644
index 0000000..c56d4b2
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/common/util/LocalDateTimeUtils.java
@@ -0,0 +1,501 @@
+package com.fengdu.gas.common.util;
+
+import java.sql.Timestamp;
+import java.time.*;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
+import java.time.temporal.TemporalAdjusters;
+import java.util.Date;
+
+public class LocalDateTimeUtils {
+    /**
+     * 当前时间
+     *
+     * @return
+     */
+    public static LocalDateTime now() {
+        return LocalDateTime.now();
+    }
+
+    /**
+     * Date 转 LocalDateTime
+     *
+     * @return
+     */
+    public static LocalDateTime convert(Date date) {
+        return LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());
+    }
+
+    /**
+     * LocalDateTime 转 Date
+     *
+     * @return
+     */
+    public static Date convert(LocalDateTime localDateTime) {
+        return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
+    }
+    /**
+     * 当前小时开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime hourStartTime() {
+        // 获取当前时间
+        LocalDateTime now = LocalDateTime.now();
+
+        // 获取当前小时的开始时间
+        return  now.withMinute(0).withSecond(0).withNano(0);
+    }
+
+    /**
+     * 当前小时结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime hourEndTime() {
+        LocalDateTime now = LocalDateTime.now();
+        return   now.withMinute(59).withSecond(59).withNano(999999999); // 设置为最大毫秒数以确保包括最后一毫秒
+    }
+    /**
+     * 上个小时开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime upHourStartTime() {
+
+        // 获取当前时间
+        LocalDateTime now = LocalDateTime.now();
+        // 获取一个小时前的时间
+        LocalDateTime oneHourAgo = now.minusHours(1);
+        // 获取当前小时的开始时间
+        return  oneHourAgo.withMinute(0).withSecond(0).withNano(0);
+    }
+    /**
+     * 上个小时结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime upHourEndTime() {
+        // 获取当前时间
+        LocalDateTime now = LocalDateTime.now();
+        // 获取一个小时前的时间
+        LocalDateTime oneHourAgo = now.minusHours(1);
+
+        // 获取当前小时的开始时间
+        return  oneHourAgo.withMinute(59).withSecond(59).withNano(999999999); // 设置为最大毫秒数以确保包括最后一毫秒
+    }
+    /**
+     * 今天开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime todayStartTime() {
+        return LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
+    }
+
+    /**
+     * 今天结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime todayEndTime() {
+        return LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
+    }
+
+    /**
+     * 昨天开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime yesterdayStartTime() {
+        return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.DAYS), LocalTime.MIN);
+    }
+
+    /**
+     * 昨天结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime yesterdayEndTime() {
+        return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.DAYS), LocalTime.MAX);
+    }
+
+    /**
+     * 最近7天开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime last7DaysStartTime() {
+        return LocalDateTime.of(LocalDate.now().minus(6L, ChronoUnit.DAYS), LocalTime.MIN);
+    }
+
+    /**
+     * 最近7天结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime last7DaysEndTime() {
+        return LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
+    }
+
+    /**
+     * 最近30天开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime last30DaysStartTime() {
+        return LocalDateTime.of(LocalDate.now().minus(29L, ChronoUnit.DAYS), LocalTime.MIN);
+    }
+
+    /**
+     * 最近30天结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime last30DaysEndTime() {
+        return LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
+    }
+
+    /**
+     * 最近一年开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime last1YearStartTime() {
+        return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.YEARS).plus(1L, ChronoUnit.DAYS), LocalTime.MIN);
+    }
+
+    /**
+     * 最近一年结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime last1YearEndTime() {
+        return LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
+    }
+    /**
+     * 本周开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime weekStartTime() {
+        LocalDate now = LocalDate.now();
+        return LocalDateTime.of(now.minusDays(now.getDayOfWeek().getValue() - 1), LocalTime.MIN);
+    }
+
+    /**
+     * 本周结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime weekEndTime() {
+        LocalDate now = LocalDate.now();
+        return LocalDateTime.of(now.plusDays(7 - now.getDayOfWeek().getValue()), LocalTime.MAX);
+    }
+
+    /**
+     * 本月开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime monthStartTime() {
+        return LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MIN);
+    }
+
+    /**
+     * 本月结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime monthEndTime() {
+        return LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.lastDayOfMonth()), LocalTime.MAX);
+    }
+
+    /**
+     * 本季度开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime quarterStartTime() {
+        LocalDate now = LocalDate.now();
+        Month month = Month.of(now.getMonth().firstMonthOfQuarter().getValue());
+        return LocalDateTime.of(LocalDate.of(now.getYear(), month, 1), LocalTime.MIN);
+    }
+
+    /**
+     * 本季度结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime quarterEndTime() {
+        LocalDate now = LocalDate.now();
+        Month month = Month.of(now.getMonth().firstMonthOfQuarter().getValue()).plus(2L);
+        return LocalDateTime.of(LocalDate.of(now.getYear(), month, month.length(now.isLeapYear())), LocalTime.MAX);
+    }
+
+    /**
+     * 本半年开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime halfYearStartTime() {
+        LocalDate now = LocalDate.now();
+        Month month = (now.getMonthValue() > 6) ? Month.JULY : Month.JANUARY;
+        return LocalDateTime.of(LocalDate.of(now.getYear(), month, 1), LocalTime.MIN);
+    }
+
+    /**
+     * 本半年结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime halfYearEndTime() {
+        LocalDate now = LocalDate.now();
+        Month month = (now.getMonthValue() > 6) ? Month.DECEMBER : Month.JUNE;
+        return LocalDateTime.of(LocalDate.of(now.getYear(), month, month.length(now.isLeapYear())), LocalTime.MAX);
+    }
+
+    /**
+     * 本年开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime yearStartTime() {
+        return LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.firstDayOfYear()), LocalTime.MIN);
+    }
+
+    /**
+     * 本年结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime yearEndTime() {
+        return LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.lastDayOfYear()), LocalTime.MAX);
+    }
+
+    /**
+     * 上周开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime lastWeekStartTime() {
+        LocalDate lastWeek = LocalDate.now().minus(1L, ChronoUnit.WEEKS);
+        return LocalDateTime.of(lastWeek.minusDays(lastWeek.getDayOfWeek().getValue() - 1), LocalTime.MIN);
+    }
+
+    /**
+     * 上周结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime lastWeekEndTime() {
+        LocalDate lastWeek = LocalDate.now().minus(1L, ChronoUnit.WEEKS);
+        return LocalDateTime.of(lastWeek.plusDays(7 - lastWeek.getDayOfWeek().getValue()), LocalTime.MAX);
+    }
+
+    /**
+     * 上月开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime lastMonthStartTime() {
+        return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.MONTHS).with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MIN);
+    }
+
+    /**
+     * 上月结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime lastMonthEndTime() {
+        return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.MONTHS).with(TemporalAdjusters.lastDayOfMonth()), LocalTime.MAX);
+    }
+
+    /**
+     * 上季度开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime lastQuarterStartTime() {
+        LocalDate now = LocalDate.now();
+        Month firstMonthOfQuarter = Month.of(now.getMonth().firstMonthOfQuarter().getValue());
+        Month firstMonthOfLastQuarter = firstMonthOfQuarter.minus(3L);
+        int yearOfLastQuarter = firstMonthOfQuarter.getValue() < 4 ? now.getYear() - 1 : now.getYear();
+        return LocalDateTime.of(LocalDate.of(yearOfLastQuarter, firstMonthOfLastQuarter, 1), LocalTime.MIN);
+    }
+
+    /**
+     * 上季度结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime lastQuarterEndTime() {
+        LocalDate now = LocalDate.now();
+        Month firstMonthOfQuarter = Month.of(now.getMonth().firstMonthOfQuarter().getValue());
+        Month firstMonthOfLastQuarter = firstMonthOfQuarter.minus(1L);
+        int yearOfLastQuarter = firstMonthOfQuarter.getValue() < 4 ? now.getYear() - 1 : now.getYear();
+        return LocalDateTime.of(LocalDate.of(yearOfLastQuarter, firstMonthOfLastQuarter, firstMonthOfLastQuarter.maxLength()), LocalTime.MAX);
+    }
+
+    /**
+     * 上半年开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime lastHalfYearStartTime() {
+        LocalDate now = LocalDate.now();
+        int lastHalfYear = (now.getMonthValue() > 6) ? now.getYear() : now.getYear() - 1;
+        Month firstMonthOfLastHalfYear = (now.getMonthValue() > 6) ? Month.JANUARY : Month.JULY;
+        return LocalDateTime.of(LocalDate.of(lastHalfYear, firstMonthOfLastHalfYear, 1), LocalTime.MIN);
+    }
+
+    /**
+     * 上半年结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime lastHalfYearEndTime() {
+        LocalDate now = LocalDate.now();
+        int lastHalfYear = (now.getMonthValue() > 6) ? now.getYear() : now.getYear() - 1;
+        Month lastMonthOfLastHalfYear = (now.getMonthValue() > 6) ? Month.JUNE : Month.DECEMBER;
+        return LocalDateTime.of(LocalDate.of(lastHalfYear, lastMonthOfLastHalfYear, lastMonthOfLastHalfYear.maxLength()), LocalTime.MAX);
+    }
+
+    /**
+     * 上一年开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime lastYearStartTime() {
+        return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.YEARS).with(TemporalAdjusters.firstDayOfYear()), LocalTime.MIN);
+    }
+
+    /**
+     * 上一年结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime lastYearEndTime() {
+        return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.YEARS).with(TemporalAdjusters.lastDayOfYear()), LocalTime.MAX);
+    }
+
+    /**
+     * 下周开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime nextWeekStartTime() {
+        LocalDate nextWeek = LocalDate.now().plus(1L, ChronoUnit.WEEKS);
+        return LocalDateTime.of(nextWeek.minusDays(nextWeek.getDayOfWeek().getValue() - 1), LocalTime.MIN);
+    }
+
+    /**
+     * 下周结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime nextWeekEndTime() {
+        LocalDate nextWeek = LocalDate.now().plus(1L, ChronoUnit.WEEKS);
+        return LocalDateTime.of(nextWeek.plusDays(7 - nextWeek.getDayOfWeek().getValue()), LocalTime.MAX);
+    }
+
+    /**
+     * 下月开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime nextMonthStartTime() {
+        return LocalDateTime.of(LocalDate.now().plus(1L, ChronoUnit.MONTHS).with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MIN);
+    }
+
+    /**
+     * 下月结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime nextMonthEndTime() {
+        return LocalDateTime.of(LocalDate.now().plus(1L, ChronoUnit.MONTHS).with(TemporalAdjusters.lastDayOfMonth()), LocalTime.MAX);
+    }
+
+    /**
+     * 下季度开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime nextQuarterStartTime() {
+        LocalDate now = LocalDate.now();
+        Month firstMonthOfQuarter = Month.of(now.getMonth().firstMonthOfQuarter().getValue());
+        Month firstMonthOfNextQuarter = firstMonthOfQuarter.plus(3L);
+        int yearOfNextQuarter = firstMonthOfQuarter.getValue() > 9 ? now.getYear() + 1 : now.getYear();
+        return LocalDateTime.of(LocalDate.of(yearOfNextQuarter, firstMonthOfNextQuarter, 1), LocalTime.MIN);
+    }
+
+    /**
+     * 下季度结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime nextQuarterEndTime() {
+        LocalDate now = LocalDate.now();
+        Month firstMonthOfQuarter = Month.of(now.getMonth().firstMonthOfQuarter().getValue());
+        Month firstMonthOfNextQuarter = firstMonthOfQuarter.plus(5L);
+        int yearOfNextQuarter = firstMonthOfQuarter.getValue() > 9 ? now.getYear() + 1 : now.getYear();
+        return LocalDateTime.of(LocalDate.of(yearOfNextQuarter, firstMonthOfNextQuarter, firstMonthOfNextQuarter.maxLength()), LocalTime.MAX);
+    }
+
+    /**
+     * 上半年开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime nextHalfYearStartTime() {
+        LocalDate now = LocalDate.now();
+        int nextHalfYear = (now.getMonthValue() > 6) ? now.getYear() + 1 : now.getYear();
+        Month firstMonthOfNextHalfYear = (now.getMonthValue() > 6) ? Month.JANUARY : Month.JULY;
+        return LocalDateTime.of(LocalDate.of(nextHalfYear, firstMonthOfNextHalfYear, 1), LocalTime.MIN);
+    }
+
+    /**
+     * 上半年结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime nextHalfYearEndTime() {
+        LocalDate now = LocalDate.now();
+        int lastHalfYear = (now.getMonthValue() > 6) ? now.getYear() + 1 : now.getYear();
+        Month lastMonthOfNextHalfYear = (now.getMonthValue() > 6) ? Month.JUNE : Month.DECEMBER;
+        return LocalDateTime.of(LocalDate.of(lastHalfYear, lastMonthOfNextHalfYear, lastMonthOfNextHalfYear.maxLength()), LocalTime.MAX);
+    }
+
+    /**
+     * 下一年开始时间
+     *
+     * @return
+     */
+    public static LocalDateTime nextYearStartTime() {
+        return LocalDateTime.of(LocalDate.now().plus(1L, ChronoUnit.YEARS).with(TemporalAdjusters.firstDayOfYear()), LocalTime.MIN);
+    }
+
+    /**
+     * 下一年结束时间
+     *
+     * @return
+     */
+    public static LocalDateTime nextYearEndTime() {
+        return LocalDateTime.of(LocalDate.now().plus(1L, ChronoUnit.YEARS).with(TemporalAdjusters.lastDayOfYear()), LocalTime.MAX);
+    }
+    public static Timestamp getDateStartTime(String dateTime, String format) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
+        // 解析日期字符串为LocalDate对象
+        LocalDate date = LocalDate.parse(dateTime, formatter);
+        LocalDateTime startOfDay = date.atStartOfDay();
+        return  LocalDateTimeUtil.getTimeStamp(startOfDay);
+    }
+    public static Timestamp getDateLastTime(String dateTime, String format) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
+        // 解析日期字符串为LocalDate对象
+        LocalDate date = LocalDate.parse(dateTime, formatter);
+        LocalDateTime endOfDay = date.atTime(LocalTime.MAX);
+        return  LocalDateTimeUtil.getTimeStamp(endOfDay);
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/entity/request/datauploadrecord/ReqCreateDataUploadRecord.java b/src/main/java/com/fengdu/gas/entity/request/datauploadrecord/ReqCreateDataUploadRecord.java
new file mode 100644
index 0000000..da4f58d
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/request/datauploadrecord/ReqCreateDataUploadRecord.java
@@ -0,0 +1,69 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.entity.request.datauploadrecord;
+
+import lombok.Data;
+
+/**
+ * 数据上报记录
+ * @author zr
+ */
+@Data
+public class ReqCreateDataUploadRecord {
+	/**
+	 * 监控点id
+	 */
+	private Long pointId;
+	/**
+	 * 监控点名称
+	 */
+	private String pointName;
+	/**
+	 * 设备id
+	 */
+	private Long facilityId;
+	/**
+	 * 设备名称
+	 */
+	private String facilityName;
+	/**
+	 * 设备参数code
+	 */
+	private String columnsCode;
+	/**
+	 * 设备参数值
+	 */
+	private String columnValue;
+	/**
+	 * 报文数据
+	 */
+	private String dataValue;
+	/**
+	 * 数据上报时间
+	 */
+	private Long uploadTime;
+	/**
+	 * 数据上报日期
+	 */
+	private String uploadDate;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/request/datauploadrecord/ReqModifyDataUploadRecord.java b/src/main/java/com/fengdu/gas/entity/request/datauploadrecord/ReqModifyDataUploadRecord.java
new file mode 100644
index 0000000..bdd1906
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/request/datauploadrecord/ReqModifyDataUploadRecord.java
@@ -0,0 +1,73 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.entity.request.datauploadrecord;
+
+import lombok.Data;
+
+/**
+ * 数据上报记录
+ * @author zr
+ */
+@Data
+public class ReqModifyDataUploadRecord {
+	/**
+	 * 主键id
+	 */
+	private Long id;
+	/**
+	 * 监控点id
+	 */
+	private Long pointId;
+	/**
+	 * 监控点名称
+	 */
+	private String pointName;
+	/**
+	 * 设备id
+	 */
+	private Long facilityId;
+	/**
+	 * 设备名称
+	 */
+	private String facilityName;
+	/**
+	 * 设备参数code
+	 */
+	private String columnsCode;
+	/**
+	 * 设备参数值
+	 */
+	private String columnValue;
+	/**
+	 * 报文数据
+	 */
+	private String dataValue;
+	/**
+	 * 数据上报时间
+	 */
+	private Long uploadTime;
+	/**
+	 * 数据上报日期
+	 */
+	private String uploadDate;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/request/datauploadrecordday/ReqCreateDataUploadRecordDay.java b/src/main/java/com/fengdu/gas/entity/request/datauploadrecordday/ReqCreateDataUploadRecordDay.java
new file mode 100644
index 0000000..366de97
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/request/datauploadrecordday/ReqCreateDataUploadRecordDay.java
@@ -0,0 +1,78 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.entity.request.datauploadrecordday;
+
+import lombok.Data;
+import java.math.BigDecimal;
+
+/**
+ * 数据上报记录-天统计
+ * @author zr
+ */
+@Data
+public class ReqCreateDataUploadRecordDay {
+	/**
+	 * 监控点id
+	 */
+	private Long pointId;
+	/**
+	 * 监控点名称
+	 */
+	private String pointName;
+	/**
+	 * 设备id
+	 */
+	private Long facilityId;
+	/**
+	 * 设备名称
+	 */
+	private String facilityName;
+	/**
+	 * 设备参数code
+	 */
+	private String columnsCode;
+	/**
+	 * 设备参数值
+	 */
+	private String columnValue;
+	/**
+	 * 最小值
+	 */
+	private BigDecimal minValue;
+	/**
+	 * 最大值
+	 */
+	private BigDecimal maxValue;
+	/**
+	 * 平均值
+	 */
+	private BigDecimal avgValue;
+	/**
+	 * 数据上报时间
+	 */
+	private Long uploadTime;
+	/**
+	 * 数据上报日期
+	 */
+	private String uploadDate;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/request/datauploadrecordday/ReqModifyDataUploadRecordDay.java b/src/main/java/com/fengdu/gas/entity/request/datauploadrecordday/ReqModifyDataUploadRecordDay.java
new file mode 100644
index 0000000..316c99f
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/request/datauploadrecordday/ReqModifyDataUploadRecordDay.java
@@ -0,0 +1,82 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.entity.request.datauploadrecordday;
+
+import lombok.Data;
+import java.math.BigDecimal;
+
+/**
+ * 数据上报记录-天统计
+ * @author zr
+ */
+@Data
+public class ReqModifyDataUploadRecordDay {
+	/**
+	 * 主键id
+	 */
+	private Long id;
+	/**
+	 * 监控点id
+	 */
+	private Long pointId;
+	/**
+	 * 监控点名称
+	 */
+	private String pointName;
+	/**
+	 * 设备id
+	 */
+	private Long facilityId;
+	/**
+	 * 设备名称
+	 */
+	private String facilityName;
+	/**
+	 * 设备参数code
+	 */
+	private String columnsCode;
+	/**
+	 * 设备参数值
+	 */
+	private String columnValue;
+	/**
+	 * 最小值
+	 */
+	private BigDecimal minValue;
+	/**
+	 * 最大值
+	 */
+	private BigDecimal maxValue;
+	/**
+	 * 平均值
+	 */
+	private BigDecimal avgValue;
+	/**
+	 * 数据上报时间
+	 */
+	private Long uploadTime;
+	/**
+	 * 数据上报日期
+	 */
+	private String uploadDate;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/request/datauploadrecordhour/ReqCreateDataUploadRecordHour.java b/src/main/java/com/fengdu/gas/entity/request/datauploadrecordhour/ReqCreateDataUploadRecordHour.java
new file mode 100644
index 0000000..d124997
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/request/datauploadrecordhour/ReqCreateDataUploadRecordHour.java
@@ -0,0 +1,78 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.entity.request.datauploadrecordhour;
+
+import lombok.Data;
+import java.math.BigDecimal;
+
+/**
+ * 数据上报记录-小时统计
+ * @author zr
+ */
+@Data
+public class ReqCreateDataUploadRecordHour {
+	/**
+	 * 监控点id
+	 */
+	private Long pointId;
+	/**
+	 * 监控点名称
+	 */
+	private String pointName;
+	/**
+	 * 设备id
+	 */
+	private Long facilityId;
+	/**
+	 * 设备名称
+	 */
+	private String facilityName;
+	/**
+	 * 设备参数code
+	 */
+	private String columnsCode;
+	/**
+	 * 设备参数值
+	 */
+	private String columnValue;
+	/**
+	 * 最小值
+	 */
+	private BigDecimal minValue;
+	/**
+	 * 最大值
+	 */
+	private BigDecimal maxValue;
+	/**
+	 * 平均值
+	 */
+	private BigDecimal avgValue;
+	/**
+	 * 数据上报时间
+	 */
+	private Long uploadTime;
+	/**
+	 * 数据上报日期
+	 */
+	private String uploadDate;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/request/datauploadrecordhour/ReqModifyDataUploadRecordHour.java b/src/main/java/com/fengdu/gas/entity/request/datauploadrecordhour/ReqModifyDataUploadRecordHour.java
new file mode 100644
index 0000000..7ac4696
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/request/datauploadrecordhour/ReqModifyDataUploadRecordHour.java
@@ -0,0 +1,82 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.entity.request.datauploadrecordhour;
+
+import lombok.Data;
+import java.math.BigDecimal;
+
+/**
+ * 数据上报记录-小时统计
+ * @author zr
+ */
+@Data
+public class ReqModifyDataUploadRecordHour {
+	/**
+	 * 主键id
+	 */
+	private Long id;
+	/**
+	 * 监控点id
+	 */
+	private Long pointId;
+	/**
+	 * 监控点名称
+	 */
+	private String pointName;
+	/**
+	 * 设备id
+	 */
+	private Long facilityId;
+	/**
+	 * 设备名称
+	 */
+	private String facilityName;
+	/**
+	 * 设备参数code
+	 */
+	private String columnsCode;
+	/**
+	 * 设备参数值
+	 */
+	private String columnValue;
+	/**
+	 * 最小值
+	 */
+	private BigDecimal minValue;
+	/**
+	 * 最大值
+	 */
+	private BigDecimal maxValue;
+	/**
+	 * 平均值
+	 */
+	private BigDecimal avgValue;
+	/**
+	 * 数据上报时间
+	 */
+	private Long uploadTime;
+	/**
+	 * 数据上报日期
+	 */
+	private String uploadDate;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/request/datauploadrecordmonth/ReqCreateDataUploadRecordMonth.java b/src/main/java/com/fengdu/gas/entity/request/datauploadrecordmonth/ReqCreateDataUploadRecordMonth.java
new file mode 100644
index 0000000..0834e29
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/request/datauploadrecordmonth/ReqCreateDataUploadRecordMonth.java
@@ -0,0 +1,78 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.entity.request.datauploadrecordmonth;
+
+import lombok.Data;
+import java.math.BigDecimal;
+
+/**
+ * 数据上报记录-月统计
+ * @author zr
+ */
+@Data
+public class ReqCreateDataUploadRecordMonth {
+	/**
+	 * 监控点id
+	 */
+	private Long pointId;
+	/**
+	 * 监控点名称
+	 */
+	private String pointName;
+	/**
+	 * 设备id
+	 */
+	private Long facilityId;
+	/**
+	 * 设备名称
+	 */
+	private String facilityName;
+	/**
+	 * 设备参数code
+	 */
+	private String columnsCode;
+	/**
+	 * 设备参数值
+	 */
+	private String columnValue;
+	/**
+	 * 最小值
+	 */
+	private BigDecimal minValue;
+	/**
+	 * 最大值
+	 */
+	private BigDecimal maxValue;
+	/**
+	 * 平均值
+	 */
+	private BigDecimal avgValue;
+	/**
+	 * 数据上报时间
+	 */
+	private Long uploadTime;
+	/**
+	 * 数据上报日期
+	 */
+	private String uploadDate;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/request/datauploadrecordmonth/ReqModifyDataUploadRecordMonth.java b/src/main/java/com/fengdu/gas/entity/request/datauploadrecordmonth/ReqModifyDataUploadRecordMonth.java
new file mode 100644
index 0000000..257341f
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/request/datauploadrecordmonth/ReqModifyDataUploadRecordMonth.java
@@ -0,0 +1,82 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.entity.request.datauploadrecordmonth;
+
+import lombok.Data;
+import java.math.BigDecimal;
+
+/**
+ * 数据上报记录-月统计
+ * @author zr
+ */
+@Data
+public class ReqModifyDataUploadRecordMonth {
+	/**
+	 * 主键id
+	 */
+	private Long id;
+	/**
+	 * 监控点id
+	 */
+	private Long pointId;
+	/**
+	 * 监控点名称
+	 */
+	private String pointName;
+	/**
+	 * 设备id
+	 */
+	private Long facilityId;
+	/**
+	 * 设备名称
+	 */
+	private String facilityName;
+	/**
+	 * 设备参数code
+	 */
+	private String columnsCode;
+	/**
+	 * 设备参数值
+	 */
+	private String columnValue;
+	/**
+	 * 最小值
+	 */
+	private BigDecimal minValue;
+	/**
+	 * 最大值
+	 */
+	private BigDecimal maxValue;
+	/**
+	 * 平均值
+	 */
+	private BigDecimal avgValue;
+	/**
+	 * 数据上报时间
+	 */
+	private Long uploadTime;
+	/**
+	 * 数据上报日期
+	 */
+	private String uploadDate;
+}
diff --git a/src/main/java/com/fengdu/gas/entity/search/SearchDataUploadRecord.java b/src/main/java/com/fengdu/gas/entity/search/SearchDataUploadRecord.java
new file mode 100644
index 0000000..3714a34
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/search/SearchDataUploadRecord.java
@@ -0,0 +1,14 @@
+package com.fengdu.gas.entity.search;
+
+import lombok.Data;
+
+import com.fengdu.gas.entity.dto.SearchBasicDTO;
+
+/**
+ * 数据上报记录
+ * @author zr
+ */
+@Data
+public class SearchDataUploadRecord extends SearchBasicDTO {
+
+}
diff --git a/src/main/java/com/fengdu/gas/entity/search/SearchDataUploadRecordDay.java b/src/main/java/com/fengdu/gas/entity/search/SearchDataUploadRecordDay.java
new file mode 100644
index 0000000..01e2ba9
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/search/SearchDataUploadRecordDay.java
@@ -0,0 +1,14 @@
+package com.fengdu.gas.entity.search;
+
+import lombok.Data;
+
+import com.fengdu.gas.entity.dto.SearchBasicDTO;
+
+/**
+ * 数据上报记录-天统计
+ * @author zr
+ */
+@Data
+public class SearchDataUploadRecordDay extends SearchBasicDTO {
+
+}
diff --git a/src/main/java/com/fengdu/gas/entity/search/SearchDataUploadRecordHour.java b/src/main/java/com/fengdu/gas/entity/search/SearchDataUploadRecordHour.java
new file mode 100644
index 0000000..9e97cb5
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/search/SearchDataUploadRecordHour.java
@@ -0,0 +1,14 @@
+package com.fengdu.gas.entity.search;
+
+import lombok.Data;
+
+import com.fengdu.gas.entity.dto.SearchBasicDTO;
+
+/**
+ * 数据上报记录-小时统计
+ * @author zr
+ */
+@Data
+public class SearchDataUploadRecordHour extends SearchBasicDTO {
+
+}
diff --git a/src/main/java/com/fengdu/gas/entity/search/SearchDataUploadRecordMonth.java b/src/main/java/com/fengdu/gas/entity/search/SearchDataUploadRecordMonth.java
new file mode 100644
index 0000000..5fea355
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/entity/search/SearchDataUploadRecordMonth.java
@@ -0,0 +1,14 @@
+package com.fengdu.gas.entity.search;
+
+import lombok.Data;
+
+import com.fengdu.gas.entity.dto.SearchBasicDTO;
+
+/**
+ * 数据上报记录-月统计
+ * @author zr
+ */
+@Data
+public class SearchDataUploadRecordMonth extends SearchBasicDTO {
+
+}
diff --git a/src/main/java/com/fengdu/gas/host/controller/DataUploadRecordController.java b/src/main/java/com/fengdu/gas/host/controller/DataUploadRecordController.java
new file mode 100644
index 0000000..00ce8fe
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/host/controller/DataUploadRecordController.java
@@ -0,0 +1,113 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.host.controller;
+
+import com.fengdu.gas.common.ExecutedResult;
+import com.fengdu.gas.common.PagerResult;
+import com.fengdu.gas.common.util.ParameterUtil;
+import com.fengdu.gas.common.validator.ParameterValidateResult;
+import com.fengdu.gas.common.validator.ParameterValidator;
+import com.fengdu.gas.entity.request.ReqListId;
+import com.fengdu.gas.host.BasicController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import java.util.List;
+import com.fengdu.gas.service.DataUploadRecordService;
+import com.fengdu.gas.entity.request.datauploadrecord.ReqCreateDataUploadRecord;
+import com.fengdu.gas.entity.request.datauploadrecord.ReqModifyDataUploadRecord;
+import com.fengdu.gas.entity.search.SearchDataUploadRecord;
+import com.fengdu.gas.repository.vo.DataUploadRecordVO;
+
+/**
+ * 9000.数据上报记录
+ * @author zr
+ * @order 9000
+ */
+@RestController
+@RequestMapping(value = "dataUploadRecord")
+public class DataUploadRecordController extends BasicController {
+    @Autowired
+    private DataUploadRecordService service;
+
+    /**
+     * 创建[数据上报记录]
+     * @author zr
+     */
+    @PostMapping(value = "create")
+    public ExecutedResult<Long> create(@RequestBody ReqCreateDataUploadRecord request) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                // 非空
+                //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName())
+                // 限制最大长度
+                //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50)
+                ;
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return failed(result.getErrorMsg());
+        }
+        //#endregion
+        return service.create(request);
+    }
+
+    /**
+     * 编辑[数据上报记录]
+     * @author zr
+     */
+    @PostMapping(value = "modify")
+    public ExecutedResult<String> modify(@RequestBody ReqModifyDataUploadRecord request) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                // 必须大于0
+                .addGreater(ParameterUtil.named("[数据上报记录]id"), request.getId(), 0L)
+                // 非空
+                //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName())
+                // 限制最大长度
+                //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50)
+                ;
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return failed(result.getErrorMsg());
+        }
+        //#endregion
+        return service.modify(request);
+    }
+
+    /**
+     * 获取[数据上报记录]
+     * @author zr
+     */
+    @GetMapping(value = "get/{id}")
+    public ExecutedResult<DataUploadRecordVO> get(@PathVariable Long id) {
+        return service.get(id);
+    }
+
+    /**
+     * 查询[数据上报记录]
+     * @author zr
+     */
+    @PostMapping(value = "search")
+    public ExecutedResult<PagerResult<DataUploadRecordVO>> search(@RequestBody SearchDataUploadRecord request) {
+        return service.search(request);
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/host/controller/DataUploadRecordDayController.java b/src/main/java/com/fengdu/gas/host/controller/DataUploadRecordDayController.java
new file mode 100644
index 0000000..2c54f13
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/host/controller/DataUploadRecordDayController.java
@@ -0,0 +1,113 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.host.controller;
+
+import com.fengdu.gas.common.ExecutedResult;
+import com.fengdu.gas.common.PagerResult;
+import com.fengdu.gas.common.util.ParameterUtil;
+import com.fengdu.gas.common.validator.ParameterValidateResult;
+import com.fengdu.gas.common.validator.ParameterValidator;
+import com.fengdu.gas.entity.request.ReqListId;
+import com.fengdu.gas.host.BasicController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import java.util.List;
+import com.fengdu.gas.service.DataUploadRecordDayService;
+import com.fengdu.gas.entity.request.datauploadrecordday.ReqCreateDataUploadRecordDay;
+import com.fengdu.gas.entity.request.datauploadrecordday.ReqModifyDataUploadRecordDay;
+import com.fengdu.gas.entity.search.SearchDataUploadRecordDay;
+import com.fengdu.gas.repository.vo.DataUploadRecordDayVO;
+
+/**
+ * 9000.数据上报记录-天统计
+ * @author zr
+ * @order 9000
+ */
+@RestController
+@RequestMapping(value = "dataUploadRecordDay")
+public class DataUploadRecordDayController extends BasicController {
+    @Autowired
+    private DataUploadRecordDayService service;
+
+    /**
+     * 创建[数据上报记录-天统计]
+     * @author zr
+     */
+    @PostMapping(value = "create")
+    public ExecutedResult<Long> create(@RequestBody ReqCreateDataUploadRecordDay request) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                // 非空
+                //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName())
+                // 限制最大长度
+                //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50)
+                ;
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return failed(result.getErrorMsg());
+        }
+        //#endregion
+        return service.create(request);
+    }
+
+    /**
+     * 编辑[数据上报记录-天统计]
+     * @author zr
+     */
+    @PostMapping(value = "modify")
+    public ExecutedResult<String> modify(@RequestBody ReqModifyDataUploadRecordDay request) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                // 必须大于0
+                .addGreater(ParameterUtil.named("[数据上报记录-天统计]id"), request.getId(), 0L)
+                // 非空
+                //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName())
+                // 限制最大长度
+                //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50)
+                ;
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return failed(result.getErrorMsg());
+        }
+        //#endregion
+        return service.modify(request);
+    }
+
+    /**
+     * 获取[数据上报记录-天统计]
+     * @author zr
+     */
+    @GetMapping(value = "get/{id}")
+    public ExecutedResult<DataUploadRecordDayVO> get(@PathVariable Long id) {
+        return service.get(id);
+    }
+
+    /**
+     * 查询[数据上报记录-天统计]
+     * @author zr
+     */
+    @PostMapping(value = "search")
+    public ExecutedResult<PagerResult<DataUploadRecordDayVO>> search(@RequestBody SearchDataUploadRecordDay request) {
+        return service.search(request);
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/host/controller/DataUploadRecordHourController.java b/src/main/java/com/fengdu/gas/host/controller/DataUploadRecordHourController.java
new file mode 100644
index 0000000..573350c
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/host/controller/DataUploadRecordHourController.java
@@ -0,0 +1,113 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.host.controller;
+
+import com.fengdu.gas.common.ExecutedResult;
+import com.fengdu.gas.common.PagerResult;
+import com.fengdu.gas.common.util.ParameterUtil;
+import com.fengdu.gas.common.validator.ParameterValidateResult;
+import com.fengdu.gas.common.validator.ParameterValidator;
+import com.fengdu.gas.entity.request.ReqListId;
+import com.fengdu.gas.host.BasicController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import java.util.List;
+import com.fengdu.gas.service.DataUploadRecordHourService;
+import com.fengdu.gas.entity.request.datauploadrecordhour.ReqCreateDataUploadRecordHour;
+import com.fengdu.gas.entity.request.datauploadrecordhour.ReqModifyDataUploadRecordHour;
+import com.fengdu.gas.entity.search.SearchDataUploadRecordHour;
+import com.fengdu.gas.repository.vo.DataUploadRecordHourVO;
+
+/**
+ * 9000.数据上报记录-小时统计
+ * @author zr
+ * @order 9000
+ */
+@RestController
+@RequestMapping(value = "dataUploadRecordHour")
+public class DataUploadRecordHourController extends BasicController {
+    @Autowired
+    private DataUploadRecordHourService service;
+
+    /**
+     * 创建[数据上报记录-小时统计]
+     * @author zr
+     */
+    @PostMapping(value = "create")
+    public ExecutedResult<Long> create(@RequestBody ReqCreateDataUploadRecordHour request) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                // 非空
+                //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName())
+                // 限制最大长度
+                //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50)
+                ;
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return failed(result.getErrorMsg());
+        }
+        //#endregion
+        return service.create(request);
+    }
+
+    /**
+     * 编辑[数据上报记录-小时统计]
+     * @author zr
+     */
+    @PostMapping(value = "modify")
+    public ExecutedResult<String> modify(@RequestBody ReqModifyDataUploadRecordHour request) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                // 必须大于0
+                .addGreater(ParameterUtil.named("[数据上报记录-小时统计]id"), request.getId(), 0L)
+                // 非空
+                //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName())
+                // 限制最大长度
+                //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50)
+                ;
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return failed(result.getErrorMsg());
+        }
+        //#endregion
+        return service.modify(request);
+    }
+
+    /**
+     * 获取[数据上报记录-小时统计]
+     * @author zr
+     */
+    @GetMapping(value = "get/{id}")
+    public ExecutedResult<DataUploadRecordHourVO> get(@PathVariable Long id) {
+        return service.get(id);
+    }
+
+    /**
+     * 查询[数据上报记录-小时统计]
+     * @author zr
+     */
+    @PostMapping(value = "search")
+    public ExecutedResult<PagerResult<DataUploadRecordHourVO>> search(@RequestBody SearchDataUploadRecordHour request) {
+        return service.search(request);
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/host/controller/DataUploadRecordMonthController.java b/src/main/java/com/fengdu/gas/host/controller/DataUploadRecordMonthController.java
new file mode 100644
index 0000000..cd7d009
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/host/controller/DataUploadRecordMonthController.java
@@ -0,0 +1,113 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.host.controller;
+
+import com.fengdu.gas.common.ExecutedResult;
+import com.fengdu.gas.common.PagerResult;
+import com.fengdu.gas.common.util.ParameterUtil;
+import com.fengdu.gas.common.validator.ParameterValidateResult;
+import com.fengdu.gas.common.validator.ParameterValidator;
+import com.fengdu.gas.entity.request.ReqListId;
+import com.fengdu.gas.host.BasicController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import java.util.List;
+import com.fengdu.gas.service.DataUploadRecordMonthService;
+import com.fengdu.gas.entity.request.datauploadrecordmonth.ReqCreateDataUploadRecordMonth;
+import com.fengdu.gas.entity.request.datauploadrecordmonth.ReqModifyDataUploadRecordMonth;
+import com.fengdu.gas.entity.search.SearchDataUploadRecordMonth;
+import com.fengdu.gas.repository.vo.DataUploadRecordMonthVO;
+
+/**
+ * 9000.数据上报记录-月统计
+ * @author zr
+ * @order 9000
+ */
+@RestController
+@RequestMapping(value = "dataUploadRecordMonth")
+public class DataUploadRecordMonthController extends BasicController {
+    @Autowired
+    private DataUploadRecordMonthService service;
+
+    /**
+     * 创建[数据上报记录-月统计]
+     * @author zr
+     */
+    @PostMapping(value = "create")
+    public ExecutedResult<Long> create(@RequestBody ReqCreateDataUploadRecordMonth request) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                // 非空
+                //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName())
+                // 限制最大长度
+                //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50)
+                ;
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return failed(result.getErrorMsg());
+        }
+        //#endregion
+        return service.create(request);
+    }
+
+    /**
+     * 编辑[数据上报记录-月统计]
+     * @author zr
+     */
+    @PostMapping(value = "modify")
+    public ExecutedResult<String> modify(@RequestBody ReqModifyDataUploadRecordMonth request) {
+        //#region 参数验证
+        ParameterValidator validator = new ParameterValidator()
+                // 必须大于0
+                .addGreater(ParameterUtil.named("[数据上报记录-月统计]id"), request.getId(), 0L)
+                // 非空
+                //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName())
+                // 限制最大长度
+                //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50)
+                ;
+        ParameterValidateResult result = validator.validate();
+        if (result.getIsFiled()) {
+            return failed(result.getErrorMsg());
+        }
+        //#endregion
+        return service.modify(request);
+    }
+
+    /**
+     * 获取[数据上报记录-月统计]
+     * @author zr
+     */
+    @GetMapping(value = "get/{id}")
+    public ExecutedResult<DataUploadRecordMonthVO> get(@PathVariable Long id) {
+        return service.get(id);
+    }
+
+    /**
+     * 查询[数据上报记录-月统计]
+     * @author zr
+     */
+    @PostMapping(value = "search")
+    public ExecutedResult<PagerResult<DataUploadRecordMonthVO>> search(@RequestBody SearchDataUploadRecordMonth request) {
+        return service.search(request);
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/repository/impl/DataUploadRecordDayMapperImpl.java b/src/main/java/com/fengdu/gas/repository/impl/DataUploadRecordDayMapperImpl.java
new file mode 100644
index 0000000..eb8e960
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/impl/DataUploadRecordDayMapperImpl.java
@@ -0,0 +1,141 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fengdu.gas.common.PagerResult;
+import com.fengdu.gas.common.enums.EYesOrNo;
+import com.fengdu.gas.common.util.*;
+import com.fengdu.gas.entity.dto.*;
+import com.fengdu.gas.entity.enums.*;
+import com.fengdu.gas.repository.BasicMapperImpl;
+import com.fengdu.gas.repository.po.DataUploadRecordHourPO;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import com.fengdu.gas.entity.search.SearchDataUploadRecordDay;
+import com.fengdu.gas.repository.mapper.DataUploadRecordDayMapper;
+import com.fengdu.gas.repository.po.DataUploadRecordDayPO;
+
+/**
+ * 数据上报记录-天统计
+ * @author zr
+ */
+@Repository
+public class DataUploadRecordDayMapperImpl extends BasicMapperImpl<DataUploadRecordDayPO, DataUploadRecordDayMapper> {
+	DataUploadRecordDayMapperImpl(DataUploadRecordDayMapper mapper) {
+		super(mapper);
+	}
+
+	@Override
+	public PagerResult<DataUploadRecordDayPO> search(SearchBasicDTO request) {
+		// 还原查询条件真实类型
+		SearchDataUploadRecordDay search = (SearchDataUploadRecordDay)request;
+		// 查询条件
+		LambdaQueryWrapper<DataUploadRecordDayPO> queryWrapper = this.query();
+		// 非逻辑删除
+		queryWrapper.eq(DataUploadRecordDayPO::getIsDelete, EYesOrNo.NO.getValue());
+		// 状态
+		//queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, DataUploadRecordDayPO::getStatus, search.getStatus());
+		// 状态列表
+		//queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), DataUploadRecordDayPO::getStatus, search.getListStatus());
+
+		// 数据创建时间-起始
+		queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, DataUploadRecordDayPO::getCreateTime, search.getCreateTimeStart());
+		// 数据创建时间-截止
+		queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, DataUploadRecordDayPO::getCreateTime, search.getCreateTimeEnd());
+		// 关键字
+		//if (StringUtil.isNotNullOrEmpty(search.getKeywords())) {
+		//	queryWrapper.and(q ->
+		//		q.like(DataUploadRecordDayPO::getName, search.getKeywords())
+		//		.or().like(DataUploadRecordDayPO::getPhone, search.getKeywords())
+		//	);
+		//}
+
+		// 排序处理
+		if (ListUtil.isNotNullOrEmpty(search.getOrderBy())) {
+			for (OrderByDTO item : search.getOrderBy()) {
+				EOrderBy orderBy = EOrderBy.getByValue(item.getOrderBy());
+				// 顺序排序
+				if (item.getIsAsc()) {
+					switch (orderBy) {
+						// 主键
+						case ID:
+							queryWrapper.orderByAsc(DataUploadRecordDayPO::getId);
+							break;
+						// 数据创建时间
+						case CREATE_TIME:
+							queryWrapper.orderByAsc(DataUploadRecordDayPO::getCreateTime);
+							break;
+						// 最后更新时间
+						case UPDATE_TIME:
+							queryWrapper.orderByAsc(DataUploadRecordDayPO::getUpdateTime);
+							break;
+					}
+				} else {
+					// 倒叙排序
+					switch (orderBy) {
+						// 主键
+						case ID:
+							queryWrapper.orderByDesc(DataUploadRecordDayPO::getId);
+							break;
+						// 数据创建时间
+						case CREATE_TIME:
+							queryWrapper.orderByDesc(DataUploadRecordDayPO::getCreateTime);
+							break;
+						// 最后更新时间
+						case UPDATE_TIME:
+							queryWrapper.orderByDesc(DataUploadRecordDayPO::getUpdateTime);
+							break;
+					}
+				}
+			}
+		} else {
+			queryWrapper.orderByDesc(DataUploadRecordDayPO::getId);
+		}
+		Page<DataUploadRecordDayPO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper);
+		return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords());
+	}
+
+	public Boolean add(DataUploadRecordDayPO item) {
+		int rowCount = super.insert(item);
+		return rowCount == 1;
+	}
+
+	public Boolean addNotIncrement(DataUploadRecordDayPO item) {
+		int rowCount = super.insert(item);
+		return rowCount == 1;
+	}
+
+	public DataUploadRecordDayPO getById(Long id) {
+		return super.get(id);
+	}
+
+	public List<DataUploadRecordDayPO> getListById(List<Long> listId) {
+		return super.getList(listId);
+	}
+	public List<DataUploadRecordDayPO> getByTime(Long startTime, Long endTime) {
+		return DB.getByTime(startTime,endTime);
+	}
+}
diff --git a/src/main/java/com/fengdu/gas/repository/impl/DataUploadRecordHourMapperImpl.java b/src/main/java/com/fengdu/gas/repository/impl/DataUploadRecordHourMapperImpl.java
new file mode 100644
index 0000000..a9d6a31
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/impl/DataUploadRecordHourMapperImpl.java
@@ -0,0 +1,141 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fengdu.gas.common.PagerResult;
+import com.fengdu.gas.common.enums.EYesOrNo;
+import com.fengdu.gas.common.util.*;
+import com.fengdu.gas.entity.dto.*;
+import com.fengdu.gas.entity.enums.*;
+import com.fengdu.gas.repository.BasicMapperImpl;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import com.fengdu.gas.entity.search.SearchDataUploadRecordHour;
+import com.fengdu.gas.repository.mapper.DataUploadRecordHourMapper;
+import com.fengdu.gas.repository.po.DataUploadRecordHourPO;
+
+/**
+ * 数据上报记录-小时统计
+ * @author zr
+ */
+@Repository
+public class DataUploadRecordHourMapperImpl extends BasicMapperImpl<DataUploadRecordHourPO, DataUploadRecordHourMapper> {
+	DataUploadRecordHourMapperImpl(DataUploadRecordHourMapper mapper) {
+		super(mapper);
+	}
+
+	@Override
+	public PagerResult<DataUploadRecordHourPO> search(SearchBasicDTO request) {
+		// 还原查询条件真实类型
+		SearchDataUploadRecordHour search = (SearchDataUploadRecordHour)request;
+		// 查询条件
+		LambdaQueryWrapper<DataUploadRecordHourPO> queryWrapper = this.query();
+		// 非逻辑删除
+		queryWrapper.eq(DataUploadRecordHourPO::getIsDelete, EYesOrNo.NO.getValue());
+		// 状态
+		//queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, DataUploadRecordHourPO::getStatus, search.getStatus());
+		// 状态列表
+		//queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), DataUploadRecordHourPO::getStatus, search.getListStatus());
+
+		// 数据创建时间-起始
+		queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, DataUploadRecordHourPO::getCreateTime, search.getCreateTimeStart());
+		// 数据创建时间-截止
+		queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, DataUploadRecordHourPO::getCreateTime, search.getCreateTimeEnd());
+		// 关键字
+		//if (StringUtil.isNotNullOrEmpty(search.getKeywords())) {
+		//	queryWrapper.and(q ->
+		//		q.like(DataUploadRecordHourPO::getName, search.getKeywords())
+		//		.or().like(DataUploadRecordHourPO::getPhone, search.getKeywords())
+		//	);
+		//}
+
+		// 排序处理
+		if (ListUtil.isNotNullOrEmpty(search.getOrderBy())) {
+			for (OrderByDTO item : search.getOrderBy()) {
+				EOrderBy orderBy = EOrderBy.getByValue(item.getOrderBy());
+				// 顺序排序
+				if (item.getIsAsc()) {
+					switch (orderBy) {
+						// 主键
+						case ID:
+							queryWrapper.orderByAsc(DataUploadRecordHourPO::getId);
+							break;
+						// 数据创建时间
+						case CREATE_TIME:
+							queryWrapper.orderByAsc(DataUploadRecordHourPO::getCreateTime);
+							break;
+						// 最后更新时间
+						case UPDATE_TIME:
+							queryWrapper.orderByAsc(DataUploadRecordHourPO::getUpdateTime);
+							break;
+					}
+				} else {
+					// 倒叙排序
+					switch (orderBy) {
+						// 主键
+						case ID:
+							queryWrapper.orderByDesc(DataUploadRecordHourPO::getId);
+							break;
+						// 数据创建时间
+						case CREATE_TIME:
+							queryWrapper.orderByDesc(DataUploadRecordHourPO::getCreateTime);
+							break;
+						// 最后更新时间
+						case UPDATE_TIME:
+							queryWrapper.orderByDesc(DataUploadRecordHourPO::getUpdateTime);
+							break;
+					}
+				}
+			}
+		} else {
+			queryWrapper.orderByDesc(DataUploadRecordHourPO::getId);
+		}
+		Page<DataUploadRecordHourPO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper);
+		return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords());
+	}
+
+	public Boolean add(DataUploadRecordHourPO item) {
+		int rowCount = super.insert(item);
+		return rowCount == 1;
+	}
+
+	public Boolean addNotIncrement(DataUploadRecordHourPO item) {
+		int rowCount = super.insert(item);
+		return rowCount == 1;
+	}
+
+	public DataUploadRecordHourPO getById(Long id) {
+		return super.get(id);
+	}
+
+	public List<DataUploadRecordHourPO> getListById(List<Long> listId) {
+		return super.getList(listId);
+	}
+
+	public List<DataUploadRecordHourPO> getByTime(Long startTime,Long endTime) {
+		return DB.getByTime(startTime,endTime);
+	}
+}
diff --git a/src/main/java/com/fengdu/gas/repository/impl/DataUploadRecordMapperImpl.java b/src/main/java/com/fengdu/gas/repository/impl/DataUploadRecordMapperImpl.java
new file mode 100644
index 0000000..5d5c5ee
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/impl/DataUploadRecordMapperImpl.java
@@ -0,0 +1,139 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fengdu.gas.common.PagerResult;
+import com.fengdu.gas.common.enums.EYesOrNo;
+import com.fengdu.gas.common.util.*;
+import com.fengdu.gas.entity.dto.*;
+import com.fengdu.gas.entity.enums.*;
+import com.fengdu.gas.repository.BasicMapperImpl;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import com.fengdu.gas.entity.search.SearchDataUploadRecord;
+import com.fengdu.gas.repository.mapper.DataUploadRecordMapper;
+import com.fengdu.gas.repository.po.DataUploadRecordPO;
+
+/**
+ * 数据上报记录
+ * @author zr
+ */
+@Repository
+public class DataUploadRecordMapperImpl extends BasicMapperImpl<DataUploadRecordPO, DataUploadRecordMapper> {
+	DataUploadRecordMapperImpl(DataUploadRecordMapper mapper) {
+		super(mapper);
+	}
+
+	@Override
+	public PagerResult<DataUploadRecordPO> search(SearchBasicDTO request) {
+		// 还原查询条件真实类型
+		SearchDataUploadRecord search = (SearchDataUploadRecord)request;
+		// 查询条件
+		LambdaQueryWrapper<DataUploadRecordPO> queryWrapper = this.query();
+		// 非逻辑删除
+		queryWrapper.eq(DataUploadRecordPO::getIsDelete, EYesOrNo.NO.getValue());
+		// 状态
+		//queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, DataUploadRecordPO::getStatus, search.getStatus());
+		// 状态列表
+		//queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), DataUploadRecordPO::getStatus, search.getListStatus());
+
+		// 数据创建时间-起始
+		queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, DataUploadRecordPO::getCreateTime, search.getCreateTimeStart());
+		// 数据创建时间-截止
+		queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, DataUploadRecordPO::getCreateTime, search.getCreateTimeEnd());
+		// 关键字
+		//if (StringUtil.isNotNullOrEmpty(search.getKeywords())) {
+		//	queryWrapper.and(q ->
+		//		q.like(DataUploadRecordPO::getName, search.getKeywords())
+		//		.or().like(DataUploadRecordPO::getPhone, search.getKeywords())
+		//	);
+		//}
+
+		// 排序处理
+		if (ListUtil.isNotNullOrEmpty(search.getOrderBy())) {
+			for (OrderByDTO item : search.getOrderBy()) {
+				EOrderBy orderBy = EOrderBy.getByValue(item.getOrderBy());
+				// 顺序排序
+				if (item.getIsAsc()) {
+					switch (orderBy) {
+						// 主键
+						case ID:
+							queryWrapper.orderByAsc(DataUploadRecordPO::getId);
+							break;
+						// 数据创建时间
+						case CREATE_TIME:
+							queryWrapper.orderByAsc(DataUploadRecordPO::getCreateTime);
+							break;
+						// 最后更新时间
+						case UPDATE_TIME:
+							queryWrapper.orderByAsc(DataUploadRecordPO::getUpdateTime);
+							break;
+					}
+				} else {
+					// 倒叙排序
+					switch (orderBy) {
+						// 主键
+						case ID:
+							queryWrapper.orderByDesc(DataUploadRecordPO::getId);
+							break;
+						// 数据创建时间
+						case CREATE_TIME:
+							queryWrapper.orderByDesc(DataUploadRecordPO::getCreateTime);
+							break;
+						// 最后更新时间
+						case UPDATE_TIME:
+							queryWrapper.orderByDesc(DataUploadRecordPO::getUpdateTime);
+							break;
+					}
+				}
+			}
+		} else {
+			queryWrapper.orderByDesc(DataUploadRecordPO::getId);
+		}
+		Page<DataUploadRecordPO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper);
+		return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords());
+	}
+
+	public Boolean add(DataUploadRecordPO item) {
+		int rowCount = super.insert(item);
+		return rowCount == 1;
+	}
+
+	public Boolean addNotIncrement(DataUploadRecordPO item) {
+		int rowCount = super.insert(item);
+		return rowCount == 1;
+	}
+   public  List<DataUploadRecordPO> getByTime(Long startTime,Long endTime){
+		return DB.getByTime(startTime,endTime);
+   }
+	public DataUploadRecordPO getById(Long id) {
+		return super.get(id);
+	}
+
+	public List<DataUploadRecordPO> getListById(List<Long> listId) {
+		return super.getList(listId);
+	}
+}
diff --git a/src/main/java/com/fengdu/gas/repository/impl/DataUploadRecordMonthMapperImpl.java b/src/main/java/com/fengdu/gas/repository/impl/DataUploadRecordMonthMapperImpl.java
new file mode 100644
index 0000000..c17b31f
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/impl/DataUploadRecordMonthMapperImpl.java
@@ -0,0 +1,137 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fengdu.gas.common.PagerResult;
+import com.fengdu.gas.common.enums.EYesOrNo;
+import com.fengdu.gas.common.util.*;
+import com.fengdu.gas.entity.dto.*;
+import com.fengdu.gas.entity.enums.*;
+import com.fengdu.gas.repository.BasicMapperImpl;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import com.fengdu.gas.entity.search.SearchDataUploadRecordMonth;
+import com.fengdu.gas.repository.mapper.DataUploadRecordMonthMapper;
+import com.fengdu.gas.repository.po.DataUploadRecordMonthPO;
+
+/**
+ * 数据上报记录-月统计
+ * @author zr
+ */
+@Repository
+public class DataUploadRecordMonthMapperImpl extends BasicMapperImpl<DataUploadRecordMonthPO, DataUploadRecordMonthMapper> {
+	DataUploadRecordMonthMapperImpl(DataUploadRecordMonthMapper mapper) {
+		super(mapper);
+	}
+
+	@Override
+	public PagerResult<DataUploadRecordMonthPO> search(SearchBasicDTO request) {
+		// 还原查询条件真实类型
+		SearchDataUploadRecordMonth search = (SearchDataUploadRecordMonth)request;
+		// 查询条件
+		LambdaQueryWrapper<DataUploadRecordMonthPO> queryWrapper = this.query();
+		// 非逻辑删除
+		queryWrapper.eq(DataUploadRecordMonthPO::getIsDelete, EYesOrNo.NO.getValue());
+		// 状态
+		//queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, DataUploadRecordMonthPO::getStatus, search.getStatus());
+		// 状态列表
+		//queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), DataUploadRecordMonthPO::getStatus, search.getListStatus());
+
+		// 数据创建时间-起始
+		queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, DataUploadRecordMonthPO::getCreateTime, search.getCreateTimeStart());
+		// 数据创建时间-截止
+		queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, DataUploadRecordMonthPO::getCreateTime, search.getCreateTimeEnd());
+		// 关键字
+		//if (StringUtil.isNotNullOrEmpty(search.getKeywords())) {
+		//	queryWrapper.and(q ->
+		//		q.like(DataUploadRecordMonthPO::getName, search.getKeywords())
+		//		.or().like(DataUploadRecordMonthPO::getPhone, search.getKeywords())
+		//	);
+		//}
+
+		// 排序处理
+		if (ListUtil.isNotNullOrEmpty(search.getOrderBy())) {
+			for (OrderByDTO item : search.getOrderBy()) {
+				EOrderBy orderBy = EOrderBy.getByValue(item.getOrderBy());
+				// 顺序排序
+				if (item.getIsAsc()) {
+					switch (orderBy) {
+						// 主键
+						case ID:
+							queryWrapper.orderByAsc(DataUploadRecordMonthPO::getId);
+							break;
+						// 数据创建时间
+						case CREATE_TIME:
+							queryWrapper.orderByAsc(DataUploadRecordMonthPO::getCreateTime);
+							break;
+						// 最后更新时间
+						case UPDATE_TIME:
+							queryWrapper.orderByAsc(DataUploadRecordMonthPO::getUpdateTime);
+							break;
+					}
+				} else {
+					// 倒叙排序
+					switch (orderBy) {
+						// 主键
+						case ID:
+							queryWrapper.orderByDesc(DataUploadRecordMonthPO::getId);
+							break;
+						// 数据创建时间
+						case CREATE_TIME:
+							queryWrapper.orderByDesc(DataUploadRecordMonthPO::getCreateTime);
+							break;
+						// 最后更新时间
+						case UPDATE_TIME:
+							queryWrapper.orderByDesc(DataUploadRecordMonthPO::getUpdateTime);
+							break;
+					}
+				}
+			}
+		} else {
+			queryWrapper.orderByDesc(DataUploadRecordMonthPO::getId);
+		}
+		Page<DataUploadRecordMonthPO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper);
+		return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords());
+	}
+
+	public Boolean add(DataUploadRecordMonthPO item) {
+		int rowCount = super.insert(item);
+		return rowCount == 1;
+	}
+
+	public Boolean addNotIncrement(DataUploadRecordMonthPO item) {
+		int rowCount = super.insert(item);
+		return rowCount == 1;
+	}
+
+	public DataUploadRecordMonthPO getById(Long id) {
+		return super.get(id);
+	}
+
+	public List<DataUploadRecordMonthPO> getListById(List<Long> listId) {
+		return super.getList(listId);
+	}
+}
diff --git a/src/main/java/com/fengdu/gas/repository/mapper/DataUploadRecordDayMapper.java b/src/main/java/com/fengdu/gas/repository/mapper/DataUploadRecordDayMapper.java
new file mode 100644
index 0000000..367c4c1
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/mapper/DataUploadRecordDayMapper.java
@@ -0,0 +1,19 @@
+package com.fengdu.gas.repository.mapper;
+
+import com.fengdu.gas.repository.BasicMapper;import com.fengdu.gas.repository.po.DataUploadRecordDayPO;
+import com.fengdu.gas.repository.po.DataUploadRecordHourPO;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+/**
+ * 数据上报记录-天统计 mapper
+ * @author zr
+ */
+public interface DataUploadRecordDayMapper extends BasicMapper<DataUploadRecordDayPO> {
+
+
+    @Select("SELECT point_id,point_name,facility_id,facility_name,min_value,max_value,avg_value,upload_time  FROM data_upload_record_day " +
+            " WHERE is_delete=0 AND upload_time BETWEEN  #{startTime} AND #{endTime}")
+    List<DataUploadRecordDayPO> getByTime(Long startTime, Long endTime);
+}
diff --git a/src/main/java/com/fengdu/gas/repository/mapper/DataUploadRecordHourMapper.java b/src/main/java/com/fengdu/gas/repository/mapper/DataUploadRecordHourMapper.java
new file mode 100644
index 0000000..f99669d
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/mapper/DataUploadRecordHourMapper.java
@@ -0,0 +1,17 @@
+package com.fengdu.gas.repository.mapper;
+
+import com.fengdu.gas.repository.BasicMapper;import com.fengdu.gas.repository.po.DataUploadRecordHourPO;
+import com.fengdu.gas.repository.po.DataUploadRecordPO;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+/**
+ * 数据上报记录-小时统计 mapper
+ * @author zr
+ */
+public interface DataUploadRecordHourMapper extends BasicMapper<DataUploadRecordHourPO> {
+    @Select("SELECT point_id,point_name,facility_id,facility_name,min_value,max_value,avg_value,upload_time  FROM data_upload_record_hour " +
+            " WHERE is_delete=0 AND upload_time BETWEEN  #{startTime} AND #{endTime}")
+    List<DataUploadRecordHourPO> getByTime(Long startTime, Long endTime);
+}
diff --git a/src/main/java/com/fengdu/gas/repository/mapper/DataUploadRecordMapper.java b/src/main/java/com/fengdu/gas/repository/mapper/DataUploadRecordMapper.java
new file mode 100644
index 0000000..fc83c35
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/mapper/DataUploadRecordMapper.java
@@ -0,0 +1,17 @@
+package com.fengdu.gas.repository.mapper;
+
+import com.fengdu.gas.repository.BasicMapper;
+import com.fengdu.gas.repository.po.DataUploadRecordPO;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+/**
+ * 数据上报记录 mapper
+ * @author zr
+ */
+public interface DataUploadRecordMapper extends BasicMapper<DataUploadRecordPO> {
+    @Select("SELECT point_id,point_name,facility_id,facility_name,columns_code,column_value,upload_time  FROM data_upload_record " +
+            " WHERE is_delete=0 AND upload_time BETWEEN  #{startTime} AND #{endTime}")
+    List<DataUploadRecordPO> getByTime(Long startTime, Long endTime);
+}
diff --git a/src/main/java/com/fengdu/gas/repository/mapper/DataUploadRecordMonthMapper.java b/src/main/java/com/fengdu/gas/repository/mapper/DataUploadRecordMonthMapper.java
new file mode 100644
index 0000000..18f9080
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/mapper/DataUploadRecordMonthMapper.java
@@ -0,0 +1,10 @@
+package com.fengdu.gas.repository.mapper;
+
+import com.fengdu.gas.repository.BasicMapper;import com.fengdu.gas.repository.po.DataUploadRecordMonthPO;
+
+/**
+ * 数据上报记录-月统计 mapper
+ * @author zr
+ */
+public interface DataUploadRecordMonthMapper extends BasicMapper<DataUploadRecordMonthPO> {
+}
diff --git a/src/main/java/com/fengdu/gas/repository/po/DataUploadRecordDayPO.java b/src/main/java/com/fengdu/gas/repository/po/DataUploadRecordDayPO.java
new file mode 100644
index 0000000..4b0bdb6
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/po/DataUploadRecordDayPO.java
@@ -0,0 +1,110 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.po;
+
+import lombok.Data;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+import java.math.BigDecimal;
+
+/**
+ * 数据上报记录-天统计
+ * @author zr
+ */
+@Data
+@TableName("data_upload_record_day")
+public class DataUploadRecordDayPO implements Serializable {
+	/**
+	 * 主键id
+	 */
+	private Long id;
+	/**
+	 * 监控点id
+	 */
+	@TableField(value = "point_id")
+	private Long pointId;
+	/**
+	 * 监控点名称
+	 */
+	@TableField(value = "point_name")
+	private String pointName;
+	/**
+	 * 设备id
+	 */
+	@TableField(value = "facility_id")
+	private Long facilityId;
+	/**
+	 * 设备名称
+	 */
+	@TableField(value = "facility_name")
+	private String facilityName;
+	/**
+	 * 设备参数code
+	 */
+	@TableField(value = "columns_code")
+	private String columnsCode;
+	/**
+	 * 最小值
+	 */
+	@TableField(value = "min_value")
+	private BigDecimal minValue;
+	/**
+	 * 最大值
+	 */
+	@TableField(value = "max_value")
+	private BigDecimal maxValue;
+	/**
+	 * 平均值
+	 */
+	@TableField(value = "avg_value")
+	private BigDecimal avgValue;
+	/**
+	 * 数据上报时间
+	 */
+	@TableField(value = "upload_time")
+	private Long uploadTime;
+	/**
+	 * 数据上报日期
+	 */
+	@TableField(value = "upload_date")
+	private String uploadDate;
+	/**
+	 * 是否删除
+	 */
+	@TableLogic
+	@TableField(value = "is_delete")
+	private Integer isDelete;
+	/**
+	 * 创建日期
+	 */
+	@TableField(value = "create_time")
+	private Long createTime;
+	/**
+	 * 修改日期
+	 */
+	@TableField(value = "update_time")
+	private Timestamp updateTime;
+}
diff --git a/src/main/java/com/fengdu/gas/repository/po/DataUploadRecordHourPO.java b/src/main/java/com/fengdu/gas/repository/po/DataUploadRecordHourPO.java
new file mode 100644
index 0000000..3ad9a36
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/po/DataUploadRecordHourPO.java
@@ -0,0 +1,110 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.po;
+
+import lombok.Data;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+import java.math.BigDecimal;
+
+/**
+ * 数据上报记录-小时统计
+ * @author zr
+ */
+@Data
+@TableName("data_upload_record_hour")
+public class DataUploadRecordHourPO implements Serializable {
+	/**
+	 * 主键id
+	 */
+	private Long id;
+	/**
+	 * 监控点id
+	 */
+	@TableField(value = "point_id")
+	private Long pointId;
+	/**
+	 * 监控点名称
+	 */
+	@TableField(value = "point_name")
+	private String pointName;
+	/**
+	 * 设备id
+	 */
+	@TableField(value = "facility_id")
+	private Long facilityId;
+	/**
+	 * 设备名称
+	 */
+	@TableField(value = "facility_name")
+	private String facilityName;
+	/**
+	 * 设备参数code
+	 */
+	@TableField(value = "columns_code")
+	private String columnsCode;
+	/**
+	 * 最小值
+	 */
+	@TableField(value = "min_value")
+	private BigDecimal minValue;
+	/**
+	 * 最大值
+	 */
+	@TableField(value = "max_value")
+	private BigDecimal maxValue;
+	/**
+	 * 平均值
+	 */
+	@TableField(value = "avg_value")
+	private BigDecimal avgValue;
+	/**
+	 * 数据上报时间
+	 */
+	@TableField(value = "upload_time")
+	private Long uploadTime;
+	/**
+	 * 数据上报日期
+	 */
+	@TableField(value = "upload_date")
+	private String uploadDate;
+	/**
+	 * 是否删除
+	 */
+	@TableLogic
+	@TableField(value = "is_delete")
+	private Integer isDelete;
+	/**
+	 * 创建日期
+	 */
+	@TableField(value = "create_time")
+	private Long createTime;
+	/**
+	 * 修改日期
+	 */
+	@TableField(value = "update_time")
+	private Timestamp updateTime;
+}
diff --git a/src/main/java/com/fengdu/gas/repository/po/DataUploadRecordMonthPO.java b/src/main/java/com/fengdu/gas/repository/po/DataUploadRecordMonthPO.java
new file mode 100644
index 0000000..aa10b9f
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/po/DataUploadRecordMonthPO.java
@@ -0,0 +1,110 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.po;
+
+import lombok.Data;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+import java.math.BigDecimal;
+
+/**
+ * 数据上报记录-月统计
+ * @author zr
+ */
+@Data
+@TableName("data_upload_record_month")
+public class DataUploadRecordMonthPO implements Serializable {
+	/**
+	 * 主键id
+	 */
+	private Long id;
+	/**
+	 * 监控点id
+	 */
+	@TableField(value = "point_id")
+	private Long pointId;
+	/**
+	 * 监控点名称
+	 */
+	@TableField(value = "point_name")
+	private String pointName;
+	/**
+	 * 设备id
+	 */
+	@TableField(value = "facility_id")
+	private Long facilityId;
+	/**
+	 * 设备名称
+	 */
+	@TableField(value = "facility_name")
+	private String facilityName;
+	/**
+	 * 设备参数code
+	 */
+	@TableField(value = "columns_code")
+	private String columnsCode;
+	/**
+	 * 最小值
+	 */
+	@TableField(value = "min_value")
+	private BigDecimal minValue;
+	/**
+	 * 最大值
+	 */
+	@TableField(value = "max_value")
+	private BigDecimal maxValue;
+	/**
+	 * 平均值
+	 */
+	@TableField(value = "avg_value")
+	private BigDecimal avgValue;
+	/**
+	 * 数据上报时间
+	 */
+	@TableField(value = "upload_time")
+	private Long uploadTime;
+	/**
+	 * 数据上报日期
+	 */
+	@TableField(value = "upload_date")
+	private String uploadDate;
+	/**
+	 * 是否删除
+	 */
+	@TableLogic
+	@TableField(value = "is_delete")
+	private Integer isDelete;
+	/**
+	 * 创建日期
+	 */
+	@TableField(value = "create_time")
+	private Long createTime;
+	/**
+	 * 修改日期
+	 */
+	@TableField(value = "update_time")
+	private Timestamp updateTime;
+}
diff --git a/src/main/java/com/fengdu/gas/repository/po/DataUploadRecordPO.java b/src/main/java/com/fengdu/gas/repository/po/DataUploadRecordPO.java
new file mode 100644
index 0000000..b312e5d
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/po/DataUploadRecordPO.java
@@ -0,0 +1,105 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.po;
+
+import lombok.Data;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.sql.Timestamp;
+
+/**
+ * 数据上报记录
+ * @author zr
+ */
+@Data
+@TableName("data_upload_record")
+public class DataUploadRecordPO implements Serializable {
+	/**
+	 * 主键id
+	 */
+	private Long id;
+	/**
+	 * 监控点id
+	 */
+	@TableField(value = "point_id")
+	private Long pointId;
+	/**
+	 * 监控点名称
+	 */
+	@TableField(value = "point_name")
+	private String pointName;
+	/**
+	 * 设备id
+	 */
+	@TableField(value = "facility_id")
+	private Long facilityId;
+	/**
+	 * 设备名称
+	 */
+	@TableField(value = "facility_name")
+	private String facilityName;
+	/**
+	 * 设备参数code
+	 */
+	@TableField(value = "columns_code")
+	private String columnsCode;
+	/**
+	 * 设备参数值
+	 */
+	@TableField(value = "column_value")
+	private BigDecimal columnValue;
+	/**
+	 * 报文数据
+	 */
+	@TableField(value = "data_value")
+	private String dataValue;
+	/**
+	 * 数据上报时间
+	 */
+	@TableField(value = "upload_time")
+	private Long uploadTime;
+	/**
+	 * 数据上报日期
+	 */
+	@TableField(value = "upload_date")
+	private String uploadDate;
+	/**
+	 * 是否删除
+	 */
+	@TableLogic
+	@TableField(value = "is_delete")
+	private Integer isDelete;
+	/**
+	 * 创建日期
+	 */
+	@TableField(value = "create_time")
+	private Long createTime;
+	/**
+	 * 修改日期
+	 */
+	@TableField(value = "update_time")
+	private Timestamp updateTime;
+}
diff --git a/src/main/java/com/fengdu/gas/repository/po/WaterFacilityPO.java b/src/main/java/com/fengdu/gas/repository/po/WaterFacilityPO.java
index a9596b2..f0ce533 100644
--- a/src/main/java/com/fengdu/gas/repository/po/WaterFacilityPO.java
+++ b/src/main/java/com/fengdu/gas/repository/po/WaterFacilityPO.java
@@ -37,9 +37,19 @@
 @TableName("water_facility")
 public class WaterFacilityPO implements Serializable {
 	/**
-	 * null
+	 * 主键
 	 */
 	private Long id;
+	/**
+	 * 监控点id
+	 */
+	@TableField(value = "point_id")
+	private Long pointId;
+	/**
+	 * 监控点名称
+	 */
+	@TableField(value = "point_name")
+	private String pointName;
 	/**
 	 * 设备名称
 	 */
@@ -55,11 +65,6 @@
 	 */
 	@TableField(value = "facility_type")
 	private Long facilityType;
-	/**
-	 * 监控点id
-	 */
-	@TableField(value = "point_id")
-	private Long pointId;
 	/**
 	 * 是否在线
 	 */
diff --git a/src/main/java/com/fengdu/gas/repository/vo/DataUploadRecordDayVO.java b/src/main/java/com/fengdu/gas/repository/vo/DataUploadRecordDayVO.java
new file mode 100644
index 0000000..515d70b
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/vo/DataUploadRecordDayVO.java
@@ -0,0 +1,54 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.vo;
+
+import lombok.Data;
+
+import com.fengdu.gas.common.util.LocalDateTimeUtil;
+import com.fengdu.gas.common.util.NumericUtil;
+import java.util.Objects;
+import com.fengdu.gas.repository.po.DataUploadRecordDayPO;
+
+/**
+ * 数据上报记录-天统计
+ * @author zr
+ */
+@Data
+public class DataUploadRecordDayVO extends DataUploadRecordDayPO implements BasicVO {
+
+    @Override
+    public String getCreateTimeView() {
+        if (NumericUtil.tryParseLong(this.getCreateTime()).compareTo(0L) > 0) {
+            return LocalDateTimeUtil.toFormatString(this.getCreateTime());
+        }
+        return "";
+    }
+
+    @Override
+    public String getUpdateTimeView() {
+        if (Objects.isNull(this.getUpdateTime())) {
+            return "";
+        }
+        return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime());
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/repository/vo/DataUploadRecordHourVO.java b/src/main/java/com/fengdu/gas/repository/vo/DataUploadRecordHourVO.java
new file mode 100644
index 0000000..acbcf41
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/vo/DataUploadRecordHourVO.java
@@ -0,0 +1,54 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.vo;
+
+import lombok.Data;
+
+import com.fengdu.gas.common.util.LocalDateTimeUtil;
+import com.fengdu.gas.common.util.NumericUtil;
+import java.util.Objects;
+import com.fengdu.gas.repository.po.DataUploadRecordHourPO;
+
+/**
+ * 数据上报记录-小时统计
+ * @author zr
+ */
+@Data
+public class DataUploadRecordHourVO extends DataUploadRecordHourPO implements BasicVO {
+
+    @Override
+    public String getCreateTimeView() {
+        if (NumericUtil.tryParseLong(this.getCreateTime()).compareTo(0L) > 0) {
+            return LocalDateTimeUtil.toFormatString(this.getCreateTime());
+        }
+        return "";
+    }
+
+    @Override
+    public String getUpdateTimeView() {
+        if (Objects.isNull(this.getUpdateTime())) {
+            return "";
+        }
+        return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime());
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/repository/vo/DataUploadRecordMonthVO.java b/src/main/java/com/fengdu/gas/repository/vo/DataUploadRecordMonthVO.java
new file mode 100644
index 0000000..4f21a00
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/vo/DataUploadRecordMonthVO.java
@@ -0,0 +1,54 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.vo;
+
+import lombok.Data;
+
+import com.fengdu.gas.common.util.LocalDateTimeUtil;
+import com.fengdu.gas.common.util.NumericUtil;
+import java.util.Objects;
+import com.fengdu.gas.repository.po.DataUploadRecordMonthPO;
+
+/**
+ * 数据上报记录-月统计
+ * @author zr
+ */
+@Data
+public class DataUploadRecordMonthVO extends DataUploadRecordMonthPO implements BasicVO {
+
+    @Override
+    public String getCreateTimeView() {
+        if (NumericUtil.tryParseLong(this.getCreateTime()).compareTo(0L) > 0) {
+            return LocalDateTimeUtil.toFormatString(this.getCreateTime());
+        }
+        return "";
+    }
+
+    @Override
+    public String getUpdateTimeView() {
+        if (Objects.isNull(this.getUpdateTime())) {
+            return "";
+        }
+        return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime());
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/repository/vo/DataUploadRecordVO.java b/src/main/java/com/fengdu/gas/repository/vo/DataUploadRecordVO.java
new file mode 100644
index 0000000..9fa2f4a
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/repository/vo/DataUploadRecordVO.java
@@ -0,0 +1,54 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.repository.vo;
+
+import lombok.Data;
+
+import com.fengdu.gas.common.util.LocalDateTimeUtil;
+import com.fengdu.gas.common.util.NumericUtil;
+import java.util.Objects;
+import com.fengdu.gas.repository.po.DataUploadRecordPO;
+
+/**
+ * 数据上报记录
+ * @author zr
+ */
+@Data
+public class DataUploadRecordVO extends DataUploadRecordPO implements BasicVO {
+
+    @Override
+    public String getCreateTimeView() {
+        if (NumericUtil.tryParseLong(this.getCreateTime()).compareTo(0L) > 0) {
+            return LocalDateTimeUtil.toFormatString(this.getCreateTime());
+        }
+        return "";
+    }
+
+    @Override
+    public String getUpdateTimeView() {
+        if (Objects.isNull(this.getUpdateTime())) {
+            return "";
+        }
+        return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime());
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/service/DataUploadRecordDayService.java b/src/main/java/com/fengdu/gas/service/DataUploadRecordDayService.java
new file mode 100644
index 0000000..d86ee86
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/service/DataUploadRecordDayService.java
@@ -0,0 +1,244 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.service;
+
+import com.fengdu.gas.common.*;
+import com.fengdu.gas.common.enums.*;
+import com.fengdu.gas.common.model.Tuple;
+import com.fengdu.gas.common.util.*;
+import org.apache.commons.lang3.BooleanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.*;
+import java.util.stream.Collectors;
+import com.fengdu.gas.repository.impl.DataUploadRecordDayMapperImpl;
+import com.fengdu.gas.repository.po.DataUploadRecordDayPO;
+import com.fengdu.gas.entity.request.datauploadrecordday.ReqCreateDataUploadRecordDay;
+import com.fengdu.gas.entity.request.datauploadrecordday.ReqModifyDataUploadRecordDay;
+import com.fengdu.gas.entity.search.SearchDataUploadRecordDay;
+import com.fengdu.gas.repository.vo.DataUploadRecordDayVO;
+import com.fengdu.gas.service.convert.DataUploadRecordDayConvert;
+
+/**
+ * 数据上报记录-天统计
+ * @author zr
+ */
+@Service
+public class DataUploadRecordDayService extends BaseService {
+    @Autowired
+    private DataUploadRecordDayMapperImpl mapper;
+
+    public ExecutedResult<Long> create(ReqCreateDataUploadRecordDay request) {
+        // 转换po
+        DataUploadRecordDayPO item = DataUploadRecordDayConvert.INSTANCE.toCreate(request);
+        // 设置状态
+        //item.setStatus(EState.NORMAL.getValue());
+        // 设置记录创建时间
+        item.setCreateTime(LocalDateTimeUtil.nowTimeStamp());
+        // 是否删除(逻辑删除)初始值
+        item.setIsDelete(EYesOrNo.NO.getValue());
+
+        int rowCount = mapper.insert(item);
+        if (rowCount != 1) {
+            return ExecutedResult.failed("创建[数据上报记录-天统计]失败。");
+        }
+        return ExecutedResult.success(item.getId());
+    }
+
+    public ExecutedResult<String> modify(ReqModifyDataUploadRecordDay request) {
+        // 验证记录是否存在
+        ExecutedResult<DataUploadRecordDayPO> checkExists = this.check4Id(request.getId());
+        if (checkExists.isFailed()) {
+            return ExecutedResult.failed(checkExists.getMsg());
+        }
+        // 转换po
+        DataUploadRecordDayPO item = DataUploadRecordDayConvert.INSTANCE.toModify(request);
+
+        int rowCount = mapper.updateById(item);
+        if (rowCount != 1) {
+            return ExecutedResult.failed("编辑[数据上报记录-天统计]失败。");
+        }
+        return ExecutedResult.success();
+    }
+
+    public ExecutedResult<DataUploadRecordDayVO> get(Long id) {
+        DataUploadRecordDayVO result = new DataUploadRecordDayVO();
+
+        DataUploadRecordDayPO find = mapper.get(id);
+        if (null != find) {
+            // 转换vo
+            result = DataUploadRecordDayConvert.INSTANCE.toVo(find);
+        }
+        return ExecutedResult.success(result);
+    }
+
+//    public ExecutedResult<String> stop(Long id) {
+//        // 验证记录是否存在
+//        ExecutedResult<DataUploadRecordDayPO> checkExists = this.check4Id(id);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        DataUploadRecordDayPO item = new DataUploadRecordDayPO();
+//        item.setId(id);
+//        item.setStatus(EState.DISABLED.getValue());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//           return ExecutedResult.failed("停用[数据上报记录-天统计]失败。");
+//       }
+//       return ExecutedResult.success();
+//   }
+//
+//    public ExecutedResult<String> enable(Long id) {
+//        // 验证记录是否存在
+//        ExecutedResult<DataUploadRecordDayPO> checkExists = this.check4Id(id);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        DataUploadRecordDayPO item = new DataUploadRecordDayPO();
+//        item.setId(id);
+//        item.setStatus(EState.NORMAL.getValue());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//            return ExecutedResult.failed("启用[数据上报记录-天统计]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> setSort(ReqSetSort request) {
+//        // 验证记录是否存在
+//        ExecutedResult<DataUploadRecordDayPO> checkExists = this.check4Id(request.getId());
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        DataUploadRecordDayPO item = new DataUploadRecordDayPO();
+//        item.setId(request.getId());
+//        item.setSort(request.getSort());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//            return ExecutedResult.failed("设置[数据上报记录-天统计]排序值失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> listSetSort(ReqListSetSort request) {
+//        // id列表
+//        List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList());
+//        // 验证记录是否存在
+//        ExecutedResult<List<DataUploadRecordDayPO>> checkExists = this.check4Id(listId);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//
+//        List<DataUploadRecordDayPO> listUpdate = request.getList().stream()
+//                .map(c -> {
+//                    DataUploadRecordDayPO item = new DataUploadRecordDayPO();
+//                    item.setId(c.getId());
+//                    item.setSort(c.getSort());
+//                    return item;
+//                })
+//                .collect(Collectors.toList());
+//        Boolean result = mapper.modifyList(listUpdate);
+//        if (result) {
+//            return ExecutedResult.success();
+//        }
+//        return ExecutedResult.failed("[数据上报记录-天统计]设置排序值失败");
+//    }
+//
+//    public ExecutedResult<String> remove(Long id) {
+//        Boolean result = mapper.deleteLogic(id);
+//        if (BooleanUtils.isFalse(result)) {
+//            return ExecutedResult.failed("删除[数据上报记录-天统计]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> removeList(List<Long> ids) {
+//        Boolean result = mapper.deleteLogic(ids);
+//        if (BooleanUtils.isFalse(result)) {
+//            return ExecutedResult.failed("删除[数据上报记录-天统计]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+
+    public ExecutedResult<List<DataUploadRecordDayVO>> getList(List<Long> listId) {
+        List<DataUploadRecordDayVO> result = new ArrayList<>();
+
+        List<DataUploadRecordDayPO> list = mapper.getList(listId);
+        if (ListUtil.isNotNullOrEmpty(list)) {
+            // 转换vo
+            result = DataUploadRecordDayConvert.INSTANCE.toVo(list);
+        }
+        return ExecutedResult.success(result);
+    }
+
+    public ExecutedResult<PagerResult<DataUploadRecordDayVO>> search(SearchDataUploadRecordDay search) {
+        // 处理创建时间范围-查询参数
+        Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange());
+        if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) {
+            search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime());
+        }
+        if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) {
+            search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime());
+        }
+
+        PagerResult<DataUploadRecordDayPO> pageList = mapper.search(search);
+        List<DataUploadRecordDayVO> listVo = new ArrayList<>();
+        List<DataUploadRecordDayPO> list = pageList.getList();
+        if (ListUtil.isNotNullOrEmpty(list)) {
+            pageList.setLastId(list.get(list.size() - 1).getId());
+            // 转换vo
+            listVo = DataUploadRecordDayConvert.INSTANCE.toVo(list);
+        }
+        PagerResult<DataUploadRecordDayVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo);
+        result.setLastId(pageList.getLastId());
+        return ExecutedResult.success(result);
+    }
+
+    protected ExecutedResult<DataUploadRecordDayPO> check4Id(Long id) {
+        DataUploadRecordDayPO exists = mapper.get(id);
+        if (Objects.isNull(exists)) {
+            return ExecutedResult.failed("[数据上报记录-天统计]不存在:" + id);
+        }
+        return ExecutedResult.success(exists);
+    }
+    protected ExecutedResult<List<DataUploadRecordDayPO>> check4Id(List<Long> listId) {
+        // 从数据库查找数据上报记录-天统计
+        List<DataUploadRecordDayPO> list = mapper.getList(listId);
+        if (ListUtil.isNullOrEmpty(list)) {
+            return ExecutedResult.failed("[数据上报记录-天统计]不存在." + listId);
+        }
+        // 数据库找到的id列表
+        List<Long> listIdFind = list.stream().map(DataUploadRecordDayPO::getId).collect(Collectors.toList());
+        // 数量不一致
+        if (listId.size() != listIdFind.size()) {
+            // 筛选数据库不存在的数据上报记录-天统计
+            List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList());
+            if (ListUtil.isNullOrEmpty(list)) {
+                return ExecutedResult.failed("[数据上报记录-天统计]不存在." + listIdNotFound);
+            }
+        }
+        return ExecutedResult.success(list);
+    }}
diff --git a/src/main/java/com/fengdu/gas/service/DataUploadRecordHourService.java b/src/main/java/com/fengdu/gas/service/DataUploadRecordHourService.java
new file mode 100644
index 0000000..d97ab71
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/service/DataUploadRecordHourService.java
@@ -0,0 +1,258 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fengdu.gas.common.*;
+import com.fengdu.gas.common.enums.*;
+import com.fengdu.gas.common.model.Tuple;
+import com.fengdu.gas.common.util.*;
+import com.fengdu.gas.repository.impl.WaterFacilityMapperImpl;
+import com.fengdu.gas.repository.impl.WaterMonitoryPointMapperImpl;
+import com.fengdu.gas.repository.po.WaterFacilityPO;
+import com.fengdu.gas.repository.po.WaterMonitoryPointPO;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import org.apache.commons.lang3.BooleanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
+import com.fengdu.gas.repository.impl.DataUploadRecordHourMapperImpl;
+import com.fengdu.gas.repository.po.DataUploadRecordHourPO;
+import com.fengdu.gas.entity.request.datauploadrecordhour.ReqCreateDataUploadRecordHour;
+import com.fengdu.gas.entity.request.datauploadrecordhour.ReqModifyDataUploadRecordHour;
+import com.fengdu.gas.entity.search.SearchDataUploadRecordHour;
+import com.fengdu.gas.repository.vo.DataUploadRecordHourVO;
+import com.fengdu.gas.service.convert.DataUploadRecordHourConvert;
+
+/**
+ * 数据上报记录-小时统计
+ * @author zr
+ */
+@Service
+public class DataUploadRecordHourService extends BaseService {
+    @Autowired
+    private DataUploadRecordHourMapperImpl mapper;
+    @Autowired
+    private WaterFacilityMapperImpl waterFacilityMapper;
+    @Autowired
+    private WaterMonitoryPointMapperImpl waterMonitoryPointMapper;
+
+    public ExecutedResult<Long> create(ReqCreateDataUploadRecordHour request) {
+        // 转换po
+        DataUploadRecordHourPO item = DataUploadRecordHourConvert.INSTANCE.toCreate(request);
+        // 设置状态
+        //item.setStatus(EState.NORMAL.getValue());
+        // 设置记录创建时间
+        item.setCreateTime(LocalDateTimeUtil.nowTimeStamp());
+        // 是否删除(逻辑删除)初始值
+        item.setIsDelete(EYesOrNo.NO.getValue());
+
+        int rowCount = mapper.insert(item);
+        if (rowCount != 1) {
+            return ExecutedResult.failed("创建[数据上报记录-小时统计]失败。");
+        }
+        return ExecutedResult.success(item.getId());
+    }
+
+    public ExecutedResult<String> modify(ReqModifyDataUploadRecordHour request) {
+        // 验证记录是否存在
+        ExecutedResult<DataUploadRecordHourPO> checkExists = this.check4Id(request.getId());
+        if (checkExists.isFailed()) {
+            return ExecutedResult.failed(checkExists.getMsg());
+        }
+        // 转换po
+        DataUploadRecordHourPO item = DataUploadRecordHourConvert.INSTANCE.toModify(request);
+
+        int rowCount = mapper.updateById(item);
+        if (rowCount != 1) {
+            return ExecutedResult.failed("编辑[数据上报记录-小时统计]失败。");
+        }
+        return ExecutedResult.success();
+    }
+
+    public ExecutedResult<DataUploadRecordHourVO> get(Long id) {
+        DataUploadRecordHourVO result = new DataUploadRecordHourVO();
+
+        DataUploadRecordHourPO find = mapper.get(id);
+        if (null != find) {
+            // 转换vo
+            result = DataUploadRecordHourConvert.INSTANCE.toVo(find);
+        }
+        return ExecutedResult.success(result);
+    }
+
+//    public ExecutedResult<String> stop(Long id) {
+//        // 验证记录是否存在
+//        ExecutedResult<DataUploadRecordHourPO> checkExists = this.check4Id(id);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        DataUploadRecordHourPO item = new DataUploadRecordHourPO();
+//        item.setId(id);
+//        item.setStatus(EState.DISABLED.getValue());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//           return ExecutedResult.failed("停用[数据上报记录-小时统计]失败。");
+//       }
+//       return ExecutedResult.success();
+//   }
+//
+//    public ExecutedResult<String> enable(Long id) {
+//        // 验证记录是否存在
+//        ExecutedResult<DataUploadRecordHourPO> checkExists = this.check4Id(id);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        DataUploadRecordHourPO item = new DataUploadRecordHourPO();
+//        item.setId(id);
+//        item.setStatus(EState.NORMAL.getValue());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//            return ExecutedResult.failed("启用[数据上报记录-小时统计]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> setSort(ReqSetSort request) {
+//        // 验证记录是否存在
+//        ExecutedResult<DataUploadRecordHourPO> checkExists = this.check4Id(request.getId());
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        DataUploadRecordHourPO item = new DataUploadRecordHourPO();
+//        item.setId(request.getId());
+//        item.setSort(request.getSort());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//            return ExecutedResult.failed("设置[数据上报记录-小时统计]排序值失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> listSetSort(ReqListSetSort request) {
+//        // id列表
+//        List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList());
+//        // 验证记录是否存在
+//        ExecutedResult<List<DataUploadRecordHourPO>> checkExists = this.check4Id(listId);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//
+//        List<DataUploadRecordHourPO> listUpdate = request.getList().stream()
+//                .map(c -> {
+//                    DataUploadRecordHourPO item = new DataUploadRecordHourPO();
+//                    item.setId(c.getId());
+//                    item.setSort(c.getSort());
+//                    return item;
+//                })
+//                .collect(Collectors.toList());
+//        Boolean result = mapper.modifyList(listUpdate);
+//        if (result) {
+//            return ExecutedResult.success();
+//        }
+//        return ExecutedResult.failed("[数据上报记录-小时统计]设置排序值失败");
+//    }
+//
+//    public ExecutedResult<String> remove(Long id) {
+//        Boolean result = mapper.deleteLogic(id);
+//        if (BooleanUtils.isFalse(result)) {
+//            return ExecutedResult.failed("删除[数据上报记录-小时统计]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> removeList(List<Long> ids) {
+//        Boolean result = mapper.deleteLogic(ids);
+//        if (BooleanUtils.isFalse(result)) {
+//            return ExecutedResult.failed("删除[数据上报记录-小时统计]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+
+    public ExecutedResult<List<DataUploadRecordHourVO>> getList(List<Long> listId) {
+        List<DataUploadRecordHourVO> result = new ArrayList<>();
+
+        List<DataUploadRecordHourPO> list = mapper.getList(listId);
+        if (ListUtil.isNotNullOrEmpty(list)) {
+            // 转换vo
+            result = DataUploadRecordHourConvert.INSTANCE.toVo(list);
+        }
+        return ExecutedResult.success(result);
+    }
+
+    public ExecutedResult<PagerResult<DataUploadRecordHourVO>> search(SearchDataUploadRecordHour search) {
+        // 处理创建时间范围-查询参数
+        Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange());
+        if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) {
+            search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime());
+        }
+        if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) {
+            search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime());
+        }
+
+        PagerResult<DataUploadRecordHourPO> pageList = mapper.search(search);
+        List<DataUploadRecordHourVO> listVo = new ArrayList<>();
+        List<DataUploadRecordHourPO> list = pageList.getList();
+        if (ListUtil.isNotNullOrEmpty(list)) {
+            pageList.setLastId(list.get(list.size() - 1).getId());
+            // 转换vo
+            listVo = DataUploadRecordHourConvert.INSTANCE.toVo(list);
+        }
+        PagerResult<DataUploadRecordHourVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo);
+        result.setLastId(pageList.getLastId());
+        return ExecutedResult.success(result);
+    }
+
+    protected ExecutedResult<DataUploadRecordHourPO> check4Id(Long id) {
+        DataUploadRecordHourPO exists = mapper.get(id);
+        if (Objects.isNull(exists)) {
+            return ExecutedResult.failed("[数据上报记录-小时统计]不存在:" + id);
+        }
+        return ExecutedResult.success(exists);
+    }
+    protected ExecutedResult<List<DataUploadRecordHourPO>> check4Id(List<Long> listId) {
+        // 从数据库查找数据上报记录-小时统计
+        List<DataUploadRecordHourPO> list = mapper.getList(listId);
+        if (ListUtil.isNullOrEmpty(list)) {
+            return ExecutedResult.failed("[数据上报记录-小时统计]不存在." + listId);
+        }
+        // 数据库找到的id列表
+        List<Long> listIdFind = list.stream().map(DataUploadRecordHourPO::getId).collect(Collectors.toList());
+        // 数量不一致
+        if (listId.size() != listIdFind.size()) {
+            // 筛选数据库不存在的数据上报记录-小时统计
+            List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList());
+            if (ListUtil.isNullOrEmpty(list)) {
+                return ExecutedResult.failed("[数据上报记录-小时统计]不存在." + listIdNotFound);
+            }
+        }
+        return ExecutedResult.success(list);
+    }}
diff --git a/src/main/java/com/fengdu/gas/service/DataUploadRecordMonthService.java b/src/main/java/com/fengdu/gas/service/DataUploadRecordMonthService.java
new file mode 100644
index 0000000..8291e2c
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/service/DataUploadRecordMonthService.java
@@ -0,0 +1,244 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.service;
+
+import com.fengdu.gas.common.*;
+import com.fengdu.gas.common.enums.*;
+import com.fengdu.gas.common.model.Tuple;
+import com.fengdu.gas.common.util.*;
+import org.apache.commons.lang3.BooleanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.*;
+import java.util.stream.Collectors;
+import com.fengdu.gas.repository.impl.DataUploadRecordMonthMapperImpl;
+import com.fengdu.gas.repository.po.DataUploadRecordMonthPO;
+import com.fengdu.gas.entity.request.datauploadrecordmonth.ReqCreateDataUploadRecordMonth;
+import com.fengdu.gas.entity.request.datauploadrecordmonth.ReqModifyDataUploadRecordMonth;
+import com.fengdu.gas.entity.search.SearchDataUploadRecordMonth;
+import com.fengdu.gas.repository.vo.DataUploadRecordMonthVO;
+import com.fengdu.gas.service.convert.DataUploadRecordMonthConvert;
+
+/**
+ * 数据上报记录-月统计
+ * @author zr
+ */
+@Service
+public class DataUploadRecordMonthService extends BaseService {
+    @Autowired
+    private DataUploadRecordMonthMapperImpl mapper;
+
+    public ExecutedResult<Long> create(ReqCreateDataUploadRecordMonth request) {
+        // 转换po
+        DataUploadRecordMonthPO item = DataUploadRecordMonthConvert.INSTANCE.toCreate(request);
+        // 设置状态
+        //item.setStatus(EState.NORMAL.getValue());
+        // 设置记录创建时间
+        item.setCreateTime(LocalDateTimeUtil.nowTimeStamp());
+        // 是否删除(逻辑删除)初始值
+        item.setIsDelete(EYesOrNo.NO.getValue());
+
+        int rowCount = mapper.insert(item);
+        if (rowCount != 1) {
+            return ExecutedResult.failed("创建[数据上报记录-月统计]失败。");
+        }
+        return ExecutedResult.success(item.getId());
+    }
+
+    public ExecutedResult<String> modify(ReqModifyDataUploadRecordMonth request) {
+        // 验证记录是否存在
+        ExecutedResult<DataUploadRecordMonthPO> checkExists = this.check4Id(request.getId());
+        if (checkExists.isFailed()) {
+            return ExecutedResult.failed(checkExists.getMsg());
+        }
+        // 转换po
+        DataUploadRecordMonthPO item = DataUploadRecordMonthConvert.INSTANCE.toModify(request);
+
+        int rowCount = mapper.updateById(item);
+        if (rowCount != 1) {
+            return ExecutedResult.failed("编辑[数据上报记录-月统计]失败。");
+        }
+        return ExecutedResult.success();
+    }
+
+    public ExecutedResult<DataUploadRecordMonthVO> get(Long id) {
+        DataUploadRecordMonthVO result = new DataUploadRecordMonthVO();
+
+        DataUploadRecordMonthPO find = mapper.get(id);
+        if (null != find) {
+            // 转换vo
+            result = DataUploadRecordMonthConvert.INSTANCE.toVo(find);
+        }
+        return ExecutedResult.success(result);
+    }
+
+//    public ExecutedResult<String> stop(Long id) {
+//        // 验证记录是否存在
+//        ExecutedResult<DataUploadRecordMonthPO> checkExists = this.check4Id(id);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        DataUploadRecordMonthPO item = new DataUploadRecordMonthPO();
+//        item.setId(id);
+//        item.setStatus(EState.DISABLED.getValue());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//           return ExecutedResult.failed("停用[数据上报记录-月统计]失败。");
+//       }
+//       return ExecutedResult.success();
+//   }
+//
+//    public ExecutedResult<String> enable(Long id) {
+//        // 验证记录是否存在
+//        ExecutedResult<DataUploadRecordMonthPO> checkExists = this.check4Id(id);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        DataUploadRecordMonthPO item = new DataUploadRecordMonthPO();
+//        item.setId(id);
+//        item.setStatus(EState.NORMAL.getValue());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//            return ExecutedResult.failed("启用[数据上报记录-月统计]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> setSort(ReqSetSort request) {
+//        // 验证记录是否存在
+//        ExecutedResult<DataUploadRecordMonthPO> checkExists = this.check4Id(request.getId());
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        DataUploadRecordMonthPO item = new DataUploadRecordMonthPO();
+//        item.setId(request.getId());
+//        item.setSort(request.getSort());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//            return ExecutedResult.failed("设置[数据上报记录-月统计]排序值失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> listSetSort(ReqListSetSort request) {
+//        // id列表
+//        List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList());
+//        // 验证记录是否存在
+//        ExecutedResult<List<DataUploadRecordMonthPO>> checkExists = this.check4Id(listId);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//
+//        List<DataUploadRecordMonthPO> listUpdate = request.getList().stream()
+//                .map(c -> {
+//                    DataUploadRecordMonthPO item = new DataUploadRecordMonthPO();
+//                    item.setId(c.getId());
+//                    item.setSort(c.getSort());
+//                    return item;
+//                })
+//                .collect(Collectors.toList());
+//        Boolean result = mapper.modifyList(listUpdate);
+//        if (result) {
+//            return ExecutedResult.success();
+//        }
+//        return ExecutedResult.failed("[数据上报记录-月统计]设置排序值失败");
+//    }
+//
+//    public ExecutedResult<String> remove(Long id) {
+//        Boolean result = mapper.deleteLogic(id);
+//        if (BooleanUtils.isFalse(result)) {
+//            return ExecutedResult.failed("删除[数据上报记录-月统计]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> removeList(List<Long> ids) {
+//        Boolean result = mapper.deleteLogic(ids);
+//        if (BooleanUtils.isFalse(result)) {
+//            return ExecutedResult.failed("删除[数据上报记录-月统计]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+
+    public ExecutedResult<List<DataUploadRecordMonthVO>> getList(List<Long> listId) {
+        List<DataUploadRecordMonthVO> result = new ArrayList<>();
+
+        List<DataUploadRecordMonthPO> list = mapper.getList(listId);
+        if (ListUtil.isNotNullOrEmpty(list)) {
+            // 转换vo
+            result = DataUploadRecordMonthConvert.INSTANCE.toVo(list);
+        }
+        return ExecutedResult.success(result);
+    }
+
+    public ExecutedResult<PagerResult<DataUploadRecordMonthVO>> search(SearchDataUploadRecordMonth search) {
+        // 处理创建时间范围-查询参数
+        Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange());
+        if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) {
+            search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime());
+        }
+        if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) {
+            search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime());
+        }
+
+        PagerResult<DataUploadRecordMonthPO> pageList = mapper.search(search);
+        List<DataUploadRecordMonthVO> listVo = new ArrayList<>();
+        List<DataUploadRecordMonthPO> list = pageList.getList();
+        if (ListUtil.isNotNullOrEmpty(list)) {
+            pageList.setLastId(list.get(list.size() - 1).getId());
+            // 转换vo
+            listVo = DataUploadRecordMonthConvert.INSTANCE.toVo(list);
+        }
+        PagerResult<DataUploadRecordMonthVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo);
+        result.setLastId(pageList.getLastId());
+        return ExecutedResult.success(result);
+    }
+
+    protected ExecutedResult<DataUploadRecordMonthPO> check4Id(Long id) {
+        DataUploadRecordMonthPO exists = mapper.get(id);
+        if (Objects.isNull(exists)) {
+            return ExecutedResult.failed("[数据上报记录-月统计]不存在:" + id);
+        }
+        return ExecutedResult.success(exists);
+    }
+    protected ExecutedResult<List<DataUploadRecordMonthPO>> check4Id(List<Long> listId) {
+        // 从数据库查找数据上报记录-月统计
+        List<DataUploadRecordMonthPO> list = mapper.getList(listId);
+        if (ListUtil.isNullOrEmpty(list)) {
+            return ExecutedResult.failed("[数据上报记录-月统计]不存在." + listId);
+        }
+        // 数据库找到的id列表
+        List<Long> listIdFind = list.stream().map(DataUploadRecordMonthPO::getId).collect(Collectors.toList());
+        // 数量不一致
+        if (listId.size() != listIdFind.size()) {
+            // 筛选数据库不存在的数据上报记录-月统计
+            List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList());
+            if (ListUtil.isNullOrEmpty(list)) {
+                return ExecutedResult.failed("[数据上报记录-月统计]不存在." + listIdNotFound);
+            }
+        }
+        return ExecutedResult.success(list);
+    }}
diff --git a/src/main/java/com/fengdu/gas/service/DataUploadRecordService.java b/src/main/java/com/fengdu/gas/service/DataUploadRecordService.java
new file mode 100644
index 0000000..b4e854d
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/service/DataUploadRecordService.java
@@ -0,0 +1,367 @@
+/**
+ #                                                    __----~~~~~~~~~~~------___
+ #                                   .  .   ~~//====......          __--~ ~~
+ #                   -.            \_|//     |||\\  ~~~~~~::::... /~
+ #                ___-==_       _-~o~  \/    |||  \\            _/~~-
+ #        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+ #    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+ #  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+ # /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+ # |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+ #          '         ~-|      /|    |-~\~~       __--~~
+ #                      |-~~-_/ |    |   ~\_   _-~            /\
+ #                           /  \     \__   \/~                \__
+ #                       _--~ _/ | .-~~____--~-/                  ~~==.
+ #                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+ #                                 -_     ~\      ~~---l__i__i__i--~~_/
+ #                                 _-~-__   ~)  \--______________--~~
+ #                               //.-~~~-~_--~- |-------~~~~~~~~
+ #                                      //.-~~~--\
+ #                  神兽保佑
+ #                  永无BUG!
+ */
+package com.fengdu.gas.service;
+
+import com.fengdu.gas.common.*;
+import com.fengdu.gas.common.enums.*;
+import com.fengdu.gas.common.model.Tuple;
+import com.fengdu.gas.common.util.*;
+import com.fengdu.gas.repository.impl.*;
+import com.fengdu.gas.repository.mapper.DataUploadRecordHourMapper;
+import com.fengdu.gas.repository.po.*;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import org.apache.commons.lang3.BooleanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import com.fengdu.gas.entity.request.datauploadrecord.ReqCreateDataUploadRecord;
+import com.fengdu.gas.entity.request.datauploadrecord.ReqModifyDataUploadRecord;
+import com.fengdu.gas.entity.search.SearchDataUploadRecord;
+import com.fengdu.gas.repository.vo.DataUploadRecordVO;
+import com.fengdu.gas.service.convert.DataUploadRecordConvert;
+
+/**
+ * 数据上报记录
+ * @author zr
+ */
+@Service
+public class DataUploadRecordService extends BaseService {
+    @Autowired
+    private DataUploadRecordMapperImpl mapper;
+    @Autowired
+    private WaterFacilityMapperImpl waterFacilityMapper;
+    @Autowired
+    private WaterMonitoryPointMapperImpl waterMonitoryPointMapper;
+    @Autowired
+    private DataUploadRecordHourMapperImpl dataUploadRecordHourMapper;
+    @Autowired
+    private DataUploadRecordDayMapperImpl dataUploadRecordDayMapper;
+    @Autowired
+    private DataUploadRecordMonthMapperImpl dataUploadRecordMonthMapper;
+    @Autowired
+    private WaterFacilityParameterMapperImpl waterFacilityParameterMapper;
+
+    public ExecutedResult<Long> create(ReqCreateDataUploadRecord request) {
+        // 转换po
+        DataUploadRecordPO item = DataUploadRecordConvert.INSTANCE.toCreate(request);
+        // 设置状态
+        //item.setStatus(EState.NORMAL.getValue());
+        // 设置记录创建时间
+        item.setCreateTime(LocalDateTimeUtil.nowTimeStamp());
+        // 是否删除(逻辑删除)初始值
+        item.setIsDelete(EYesOrNo.NO.getValue());
+
+        int rowCount = mapper.insert(item);
+        if (rowCount != 1) {
+            return ExecutedResult.failed("创建[数据上报记录]失败。");
+        }
+        return ExecutedResult.success(item.getId());
+    }
+
+    public ExecutedResult<String> modify(ReqModifyDataUploadRecord request) {
+        // 验证记录是否存在
+        ExecutedResult<DataUploadRecordPO> checkExists = this.check4Id(request.getId());
+        if (checkExists.isFailed()) {
+            return ExecutedResult.failed(checkExists.getMsg());
+        }
+        // 转换po
+        DataUploadRecordPO item = DataUploadRecordConvert.INSTANCE.toModify(request);
+
+        int rowCount = mapper.updateById(item);
+        if (rowCount != 1) {
+            return ExecutedResult.failed("编辑[数据上报记录]失败。");
+        }
+        return ExecutedResult.success();
+    }
+
+    public ExecutedResult<DataUploadRecordVO> get(Long id) {
+        DataUploadRecordVO result = new DataUploadRecordVO();
+
+        DataUploadRecordPO find = mapper.get(id);
+        if (null != find) {
+            // 转换vo
+            result = DataUploadRecordConvert.INSTANCE.toVo(find);
+        }
+        return ExecutedResult.success(result);
+    }
+
+    //    public ExecutedResult<String> stop(Long id) {
+//        // 验证记录是否存在
+//        ExecutedResult<DataUploadRecordPO> checkExists = this.check4Id(id);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        DataUploadRecordPO item = new DataUploadRecordPO();
+//        item.setId(id);
+//        item.setStatus(EState.DISABLED.getValue());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//           return ExecutedResult.failed("停用[数据上报记录]失败。");
+//       }
+//       return ExecutedResult.success();
+//   }
+//
+//    public ExecutedResult<String> enable(Long id) {
+//        // 验证记录是否存在
+//        ExecutedResult<DataUploadRecordPO> checkExists = this.check4Id(id);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        DataUploadRecordPO item = new DataUploadRecordPO();
+//        item.setId(id);
+//        item.setStatus(EState.NORMAL.getValue());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//            return ExecutedResult.failed("启用[数据上报记录]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> setSort(ReqSetSort request) {
+//        // 验证记录是否存在
+//        ExecutedResult<DataUploadRecordPO> checkExists = this.check4Id(request.getId());
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//        DataUploadRecordPO item = new DataUploadRecordPO();
+//        item.setId(request.getId());
+//        item.setSort(request.getSort());
+//
+//        int rowCount = mapper.updateById(item);
+//        if (rowCount != 1) {
+//            return ExecutedResult.failed("设置[数据上报记录]排序值失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> listSetSort(ReqListSetSort request) {
+//        // id列表
+//        List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList());
+//        // 验证记录是否存在
+//        ExecutedResult<List<DataUploadRecordPO>> checkExists = this.check4Id(listId);
+//        if (checkExists.isFailed()) {
+//            return ExecutedResult.failed(checkExists.getMsg());
+//        }
+//
+//        List<DataUploadRecordPO> listUpdate = request.getList().stream()
+//                .map(c -> {
+//                    DataUploadRecordPO item = new DataUploadRecordPO();
+//                    item.setId(c.getId());
+//                    item.setSort(c.getSort());
+//                    return item;
+//                })
+//                .collect(Collectors.toList());
+//        Boolean result = mapper.modifyList(listUpdate);
+//        if (result) {
+//            return ExecutedResult.success();
+//        }
+//        return ExecutedResult.failed("[数据上报记录]设置排序值失败");
+//    }
+//
+//    public ExecutedResult<String> remove(Long id) {
+//        Boolean result = mapper.deleteLogic(id);
+//        if (BooleanUtils.isFalse(result)) {
+//            return ExecutedResult.failed("删除[数据上报记录]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+//
+//    public ExecutedResult<String> removeList(List<Long> ids) {
+//        Boolean result = mapper.deleteLogic(ids);
+//        if (BooleanUtils.isFalse(result)) {
+//            return ExecutedResult.failed("删除[数据上报记录]失败。");
+//        }
+//        return ExecutedResult.success();
+//    }
+    public ExecutedResult<String> dataUpload(Long startTime, Long endTime, Integer type) {
+        List<WaterFacilityPO> facilityPOList = waterFacilityMapper.getList();
+        List<WaterMonitoryPointPO> pointPOList = waterMonitoryPointMapper.getList();
+        //获取所有设备参数
+        List<WaterFacilityParameterPO> parameterPOList = waterFacilityParameterMapper.getList();
+
+        switch (type) {
+            case 1:
+                //按小时统计插入数据
+                List<DataUploadRecordPO> recordPOList = mapper.getByTime(startTime, endTime);
+                if(ListUtil.isNotNullOrEmpty(recordPOList)){
+                    for (WaterFacilityParameterPO parameterPO : parameterPOList) {
+                        WaterFacilityPO waterFacilityPO = facilityPOList.stream().filter(item -> item.getId().equals(parameterPO.getFacilityId())).findFirst().orElse(null);
+                        //根据设备参数筛选数据集合
+                        List<DataUploadRecordPO> dataList = recordPOList.stream().filter(item -> item.getFacilityId().equals(parameterPO.getFacilityId()) && item.getColumnsCode().equals(parameterPO.getColumnsCode())).collect(Collectors.toList());
+                        //获取最大值
+                        BigDecimal maxValue = dataList.stream().map(DataUploadRecordPO::getColumnValue).max(BigDecimal::compareTo).get();
+                        //获取最小值
+                        BigDecimal minValue = dataList.stream().map(DataUploadRecordPO::getColumnValue).min(BigDecimal::compareTo).get();
+                        //获取平均值
+                        double average = dataList.stream().map(DataUploadRecordPO::getColumnValue).mapToDouble(BigDecimal::doubleValue).average().orElse(Double.NaN);
+                        BigDecimal averageValue = new BigDecimal(average).setScale(2, RoundingMode.DOWN);
+                        DataUploadRecordHourPO recordHourPO = new DataUploadRecordHourPO();
+                        recordHourPO.setPointId(waterFacilityPO.getPointId());
+                        recordHourPO.setPointName(waterFacilityPO.getPointName());
+                        recordHourPO.setFacilityId(waterFacilityPO.getId());
+                        recordHourPO.setFacilityName(waterFacilityPO.getFacilityName());
+                        recordHourPO.setColumnsCode(parameterPO.getColumnsCode());
+                        recordHourPO.setMinValue(maxValue);
+                        recordHourPO.setMaxValue(minValue);
+                        recordHourPO.setAvgValue(averageValue);
+                        recordHourPO.setCreateTime(LocalDateTimeUtil.nowTimeStamp());
+                        recordHourPO.setUploadDate(LocalDateTimeUtil.toFormatString(endTime));
+                        recordHourPO.setUploadTime(endTime);
+                        dataUploadRecordHourMapper.insert(recordHourPO);
+                    }
+                }
+
+                break;
+            case 2://按天统计插入数据
+                List<DataUploadRecordHourPO> hourPOList = dataUploadRecordHourMapper.getByTime(startTime, endTime);
+                if(ListUtil.isNotNullOrEmpty(hourPOList)){
+                    for (WaterFacilityParameterPO parameterPO : parameterPOList) {
+                        WaterFacilityPO waterFacilityPO = facilityPOList.stream().filter(item -> item.getId().equals(parameterPO.getFacilityId())).findFirst().orElse(null);
+                        List<DataUploadRecordHourPO> dataList = hourPOList.stream().filter(item -> item.getFacilityId().equals(parameterPO.getFacilityId()) && item.getColumnsCode().equals(parameterPO.getColumnsCode())).collect(Collectors.toList());
+                        //获取最大值
+                        BigDecimal maxValue = dataList.stream().map(DataUploadRecordHourPO::getMaxValue).max(BigDecimal::compareTo).get();
+                        //获取最小值
+                        BigDecimal minValue = dataList.stream().map(DataUploadRecordHourPO::getMinValue).min(BigDecimal::compareTo).get();
+                        //获取平均值
+                        double average = dataList.stream().map(DataUploadRecordHourPO::getAvgValue).mapToDouble(BigDecimal::doubleValue).average().orElse(Double.NaN);
+                        BigDecimal averageValue = new BigDecimal(average).setScale(2, RoundingMode.DOWN);
+                        DataUploadRecordDayPO recordDayPO = new DataUploadRecordDayPO();
+                        recordDayPO.setPointId(waterFacilityPO.getPointId());
+                        recordDayPO.setPointName(waterFacilityPO.getPointName());
+                        recordDayPO.setFacilityId(waterFacilityPO.getId());
+                        recordDayPO.setFacilityName(waterFacilityPO.getFacilityName());
+                        recordDayPO.setMinValue(maxValue);
+                        recordDayPO.setMaxValue(minValue);
+                        recordDayPO.setAvgValue(averageValue);
+                        recordDayPO.setCreateTime(LocalDateTimeUtil.nowTimeStamp());
+                        recordDayPO.setUploadDate(LocalDateTimeUtil.toDateString(endTime));
+                        recordDayPO.setUploadTime(endTime);
+                        dataUploadRecordDayMapper.insert(recordDayPO);
+                    }
+                }
+                break;
+            case 3://按月统计插入数据
+                List<DataUploadRecordDayPO> dayPOList = dataUploadRecordDayMapper.getByTime(startTime, endTime);
+                if(ListUtil.isNotNullOrEmpty(dayPOList)){
+                    for (WaterFacilityParameterPO parameterPO : parameterPOList) {
+                        WaterFacilityPO waterFacilityPO = facilityPOList.stream().filter(item -> item.getId().equals(parameterPO.getFacilityId())).findFirst().orElse(null);
+                        List<DataUploadRecordDayPO> dataList = dayPOList.stream().filter(item -> item.getFacilityId().equals(parameterPO.getFacilityId()) && item.getColumnsCode().equals(parameterPO.getColumnsCode())).collect(Collectors.toList());
+                        //获取最大值
+                        BigDecimal maxValue = dataList.stream().map(DataUploadRecordDayPO::getMaxValue).max(BigDecimal::compareTo).get();
+                        //获取最小值
+                        BigDecimal minValue = dataList.stream().map(DataUploadRecordDayPO::getMinValue).min(BigDecimal::compareTo).get();
+                        //获取平均值
+                        double average = dataList.stream().map(DataUploadRecordDayPO::getAvgValue).mapToDouble(BigDecimal::doubleValue).average().orElse(Double.NaN);
+                        BigDecimal averageValue = new BigDecimal(average).setScale(2, RoundingMode.DOWN);
+                        DataUploadRecordMonthPO recordMonthPO = new DataUploadRecordMonthPO();
+                        recordMonthPO.setPointId(waterFacilityPO.getPointId());
+                        recordMonthPO.setPointName(waterFacilityPO.getPointName());
+                        recordMonthPO.setFacilityId(waterFacilityPO.getId());
+                        recordMonthPO.setFacilityName(waterFacilityPO.getFacilityName());
+                        recordMonthPO.setMinValue(maxValue);
+                        recordMonthPO.setMaxValue(minValue);
+                        recordMonthPO.setAvgValue(averageValue);
+                        recordMonthPO.setCreateTime(LocalDateTimeUtil.nowTimeStamp());
+                        recordMonthPO.setUploadDate(LocalDateTimeUtil.toDateString(endTime));
+                        recordMonthPO.setUploadTime(endTime);
+                        dataUploadRecordMonthMapper.insert(recordMonthPO);
+                        break;
+                    }
+                }
+
+
+
+        }
+        return ExecutedResult.success();
+    }
+
+    public ExecutedResult<List<DataUploadRecordVO>> getList(List<Long> listId) {
+        List<DataUploadRecordVO> result = new ArrayList<>();
+
+        List<DataUploadRecordPO> list = mapper.getList(listId);
+        if (ListUtil.isNotNullOrEmpty(list)) {
+            // 转换vo
+            result = DataUploadRecordConvert.INSTANCE.toVo(list);
+        }
+        return ExecutedResult.success(result);
+    }
+
+    public ExecutedResult<PagerResult<DataUploadRecordVO>> search(SearchDataUploadRecord search) {
+        // 处理创建时间范围-查询参数
+        Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange());
+        if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) {
+            search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime());
+        }
+        if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) {
+            search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime());
+        }
+
+        PagerResult<DataUploadRecordPO> pageList = mapper.search(search);
+        List<DataUploadRecordVO> listVo = new ArrayList<>();
+        List<DataUploadRecordPO> list = pageList.getList();
+        if (ListUtil.isNotNullOrEmpty(list)) {
+            pageList.setLastId(list.get(list.size() - 1).getId());
+            // 转换vo
+            listVo = DataUploadRecordConvert.INSTANCE.toVo(list);
+        }
+        PagerResult<DataUploadRecordVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo);
+        result.setLastId(pageList.getLastId());
+        return ExecutedResult.success(result);
+    }
+
+    protected ExecutedResult<DataUploadRecordPO> check4Id(Long id) {
+        DataUploadRecordPO exists = mapper.get(id);
+        if (Objects.isNull(exists)) {
+            return ExecutedResult.failed("[数据上报记录]不存在:" + id);
+        }
+        return ExecutedResult.success(exists);
+    }
+
+    protected ExecutedResult<List<DataUploadRecordPO>> check4Id(List<Long> listId) {
+        // 从数据库查找数据上报记录
+        List<DataUploadRecordPO> list = mapper.getList(listId);
+        if (ListUtil.isNullOrEmpty(list)) {
+            return ExecutedResult.failed("[数据上报记录]不存在." + listId);
+        }
+        // 数据库找到的id列表
+        List<Long> listIdFind = list.stream().map(DataUploadRecordPO::getId).collect(Collectors.toList());
+        // 数量不一致
+        if (listId.size() != listIdFind.size()) {
+            // 筛选数据库不存在的数据上报记录
+            List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList());
+            if (ListUtil.isNullOrEmpty(list)) {
+                return ExecutedResult.failed("[数据上报记录]不存在." + listIdNotFound);
+            }
+        }
+        return ExecutedResult.success(list);
+    }
+}
diff --git a/src/main/java/com/fengdu/gas/service/convert/DataUploadRecordConvert.java b/src/main/java/com/fengdu/gas/service/convert/DataUploadRecordConvert.java
new file mode 100644
index 0000000..c885d57
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/service/convert/DataUploadRecordConvert.java
@@ -0,0 +1,48 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.service.convert;
+
+import com.fengdu.gas.entity.request.datauploadrecord.ReqCreateDataUploadRecord;
+import com.fengdu.gas.entity.request.datauploadrecord.ReqModifyDataUploadRecord;
+import com.fengdu.gas.repository.po.DataUploadRecordPO;
+import com.fengdu.gas.repository.vo.DataUploadRecordVO;
+
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 数据上报记录
+ * @author {#=author}
+ */
+@Mapper
+public interface DataUploadRecordConvert {
+    DataUploadRecordConvert INSTANCE = Mappers.getMapper(DataUploadRecordConvert.class);
+
+    DataUploadRecordPO toCreate(ReqCreateDataUploadRecord request);
+    DataUploadRecordPO toModify(ReqModifyDataUploadRecord request);
+
+    DataUploadRecordVO toVo(DataUploadRecordPO item);
+    List<DataUploadRecordVO> toVo(List<DataUploadRecordPO> list);
+}
diff --git a/src/main/java/com/fengdu/gas/service/convert/DataUploadRecordDayConvert.java b/src/main/java/com/fengdu/gas/service/convert/DataUploadRecordDayConvert.java
new file mode 100644
index 0000000..c5a6f55
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/service/convert/DataUploadRecordDayConvert.java
@@ -0,0 +1,48 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.service.convert;
+
+import com.fengdu.gas.entity.request.datauploadrecordday.ReqCreateDataUploadRecordDay;
+import com.fengdu.gas.entity.request.datauploadrecordday.ReqModifyDataUploadRecordDay;
+import com.fengdu.gas.repository.po.DataUploadRecordDayPO;
+import com.fengdu.gas.repository.vo.DataUploadRecordDayVO;
+
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 数据上报记录-天统计
+ * @author {#=author}
+ */
+@Mapper
+public interface DataUploadRecordDayConvert {
+    DataUploadRecordDayConvert INSTANCE = Mappers.getMapper(DataUploadRecordDayConvert.class);
+
+    DataUploadRecordDayPO toCreate(ReqCreateDataUploadRecordDay request);
+    DataUploadRecordDayPO toModify(ReqModifyDataUploadRecordDay request);
+
+    DataUploadRecordDayVO toVo(DataUploadRecordDayPO item);
+    List<DataUploadRecordDayVO> toVo(List<DataUploadRecordDayPO> list);
+}
diff --git a/src/main/java/com/fengdu/gas/service/convert/DataUploadRecordHourConvert.java b/src/main/java/com/fengdu/gas/service/convert/DataUploadRecordHourConvert.java
new file mode 100644
index 0000000..de1cb36
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/service/convert/DataUploadRecordHourConvert.java
@@ -0,0 +1,48 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.service.convert;
+
+import com.fengdu.gas.entity.request.datauploadrecordhour.ReqCreateDataUploadRecordHour;
+import com.fengdu.gas.entity.request.datauploadrecordhour.ReqModifyDataUploadRecordHour;
+import com.fengdu.gas.repository.po.DataUploadRecordHourPO;
+import com.fengdu.gas.repository.vo.DataUploadRecordHourVO;
+
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 数据上报记录-小时统计
+ * @author {#=author}
+ */
+@Mapper
+public interface DataUploadRecordHourConvert {
+    DataUploadRecordHourConvert INSTANCE = Mappers.getMapper(DataUploadRecordHourConvert.class);
+
+    DataUploadRecordHourPO toCreate(ReqCreateDataUploadRecordHour request);
+    DataUploadRecordHourPO toModify(ReqModifyDataUploadRecordHour request);
+
+    DataUploadRecordHourVO toVo(DataUploadRecordHourPO item);
+    List<DataUploadRecordHourVO> toVo(List<DataUploadRecordHourPO> list);
+}
diff --git a/src/main/java/com/fengdu/gas/service/convert/DataUploadRecordMonthConvert.java b/src/main/java/com/fengdu/gas/service/convert/DataUploadRecordMonthConvert.java
new file mode 100644
index 0000000..304ee8c
--- /dev/null
+++ b/src/main/java/com/fengdu/gas/service/convert/DataUploadRecordMonthConvert.java
@@ -0,0 +1,48 @@
+/**
+#                                                    __----~~~~~~~~~~~------___
+#                                   .  .   ~~//====......          __--~ ~~
+#                   -.            \_|//     |||\\  ~~~~~~::::... /~
+#                ___-==_       _-~o~  \/    |||  \\            _/~~-
+#        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
+#    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
+#  .~       .~       |   \\ -_    /  /-   /   ||      \   /
+# /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
+# |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
+#          '         ~-|      /|    |-~\~~       __--~~
+#                      |-~~-_/ |    |   ~\_   _-~            /\
+#                           /  \     \__   \/~                \__
+#                       _--~ _/ | .-~~____--~-/                  ~~==.
+#                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
+#                                 -_     ~\      ~~---l__i__i__i--~~_/
+#                                 _-~-__   ~)  \--______________--~~
+#                               //.-~~~-~_--~- |-------~~~~~~~~
+#                                      //.-~~~--\
+#                  神兽保佑
+#                  永无BUG!
+*/
+package com.fengdu.gas.service.convert;
+
+import com.fengdu.gas.entity.request.datauploadrecordmonth.ReqCreateDataUploadRecordMonth;
+import com.fengdu.gas.entity.request.datauploadrecordmonth.ReqModifyDataUploadRecordMonth;
+import com.fengdu.gas.repository.po.DataUploadRecordMonthPO;
+import com.fengdu.gas.repository.vo.DataUploadRecordMonthVO;
+
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 数据上报记录-月统计
+ * @author {#=author}
+ */
+@Mapper
+public interface DataUploadRecordMonthConvert {
+    DataUploadRecordMonthConvert INSTANCE = Mappers.getMapper(DataUploadRecordMonthConvert.class);
+
+    DataUploadRecordMonthPO toCreate(ReqCreateDataUploadRecordMonth request);
+    DataUploadRecordMonthPO toModify(ReqModifyDataUploadRecordMonth request);
+
+    DataUploadRecordMonthVO toVo(DataUploadRecordMonthPO item);
+    List<DataUploadRecordMonthVO> toVo(List<DataUploadRecordMonthPO> list);
+}
diff --git a/src/main/java/com/fengdu/gas/service/quartz/QuartzExecutor.java b/src/main/java/com/fengdu/gas/service/quartz/QuartzExecutor.java
index a4e190d..e5cfb7b 100644
--- a/src/main/java/com/fengdu/gas/service/quartz/QuartzExecutor.java
+++ b/src/main/java/com/fengdu/gas/service/quartz/QuartzExecutor.java
@@ -1,5 +1,10 @@
 package com.fengdu.gas.service.quartz;
 
+import com.fengdu.gas.common.util.LocalDateTimeUtils;
+import com.fengdu.gas.service.DataUploadRecordDayService;
+import com.fengdu.gas.service.DataUploadRecordHourService;
+import com.fengdu.gas.service.DataUploadRecordMonthService;
+import com.fengdu.gas.service.DataUploadRecordService;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
@@ -27,6 +32,8 @@
     private QuartzTaskRecordMapperImpl taskRecordsDao;
     @Autowired
     private QuartzTaskErrorMapperImpl taskErrorsDao;
+    @Autowired
+    private DataUploadRecordService dataUploadRecordService;
 
     /**
      * 执行job
@@ -42,7 +49,48 @@
             return ExecutedResult.failed(e.toString());
         }
     }
-
+    /***
+     * job执行器-按上小时统计上报数据
+     * @param jobParameter 执行参数
+     */
+    public ExecutedResult<String> hourDataUpload(String jobParameter) {
+        try {
+            long startTime= LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.upHourStartTime()).getTime();
+            long endTime= LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.upHourEndTime()).getTime();
+            dataUploadRecordService.dataUpload(startTime,endTime,1);
+            return ExecutedResult.success();
+        } catch (Exception e) {
+            return ExecutedResult.failed(e.toString());
+        }
+    }
+    /***
+     * job执行器-按昨天统计上报数据
+     * @param jobParameter 执行参数
+     */
+    public ExecutedResult<String> dayDataUpload(String jobParameter) {
+        try {
+            long startTime= LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.yesterdayStartTime()).getTime();
+            long endTime= LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.yesterdayEndTime()).getTime();
+            dataUploadRecordService.dataUpload(startTime,endTime,2);
+            return ExecutedResult.success();
+        } catch (Exception e) {
+            return ExecutedResult.failed(e.toString());
+        }
+    }
+    /***
+     * job执行器-按月统计上报数据
+     * @param jobParameter 执行参数
+     */
+    public ExecutedResult<String> monthDataUpload(String jobParameter) {
+        try {
+            long startTime= LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.lastMonthStartTime()).getTime();
+            long endTime= LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.lastMonthEndTime()).getTime();
+            dataUploadRecordService.dataUpload(startTime,endTime,3);
+            return ExecutedResult.success();
+        } catch (Exception e) {
+            return ExecutedResult.failed(e.toString());
+        }
+    }
     /***
      * job执行器-清理任务调度日志
      * @param jobParameter 执行参数
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 6c0cffb..36bf291 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,6 +1,6 @@
 spring:
   application:
-    name: fengdu_gases
+    name: fengdu-gases
   profiles:
     # 通过mvn打包传递参数,指定配置文件环境
     active: @package.environment@
@@ -21,7 +21,7 @@
 
 jwt:
   token_header: Token #JWT存储的请求头
-  secret: fengdu_gases-secret #hardware-lunhan-secret #JWT加解密密钥(所有硬件项目通用,公用一个用户中心登录,其他项目不写登录接口,直接用token)
+  secret: fengdu-gases-secret #hardware-lunhan-secret #JWT加解密密钥(所有硬件项目通用,公用一个用户中心登录,其他项目不写登录接口,直接用token)
   expiration: 15811200 #JWT的超期限时间(60*60*24*183) 单位:秒
   head: 'Bearer '  #JWT负载中拿到开头
 
diff --git a/src/test/java/com/fengdu/gas/GenCodeGauss.java b/src/test/java/com/fengdu/gas/GenCodeGauss.java
index 3f70249..057df0e 100644
--- a/src/test/java/com/fengdu/gas/GenCodeGauss.java
+++ b/src/test/java/com/fengdu/gas/GenCodeGauss.java
@@ -243,7 +243,7 @@
      * 只生成以下配置的表
      */
     private static final List<String> ONLY_TABLES = Arrays.asList(
-       "user_work_order","user_work_order_record"
+       "data_upload_record","data_upload_record_day","data_upload_record_hour","data_upload_record_month"
     );
 
     public static void main(String[] args) {
diff --git a/src/test/resources/application.yml b/src/test/resources/application.yml
index 1002dda..ffd138c 100644
--- a/src/test/resources/application.yml
+++ b/src/test/resources/application.yml
@@ -1,6 +1,6 @@
 spring:
   application:
-    name: fengdu_gases
+    name: fengdu-gases
   profiles:
     # 通过mvn打包传递参数,指定配置文件环境
     active: dev

--
Gitblit v1.9.3