From 70312027dbcf36e6742e2140b9e6d7f9c1b0d025 Mon Sep 17 00:00:00 2001 From: stone <827672943@qq.com> Date: Fri, 12 May 2023 15:26:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E8=83=BD=E8=80=97=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=AE=9A=E6=97=B6=E9=87=87?= =?UTF-8?q?=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/psdc/PsdcApplication.java | 5 + .../src/main/resources/application-dev.yml | 6 +- .../com/psdc/entity/PsdcStatisticsDay.java | 102 ++++++ .../com/psdc/entity/PsdcStatisticsMonth.java | 125 +++++++ .../com/psdc/entity/PsdcStatisticsYear.java | 68 ++++ .../request/EnergyStatisticsRequest.java | 34 ++ .../com/psdc/mapper/PsdcDeviceMapper.java | 11 +- .../psdc/mapper/PsdcElectricHtdataMapper.java | 7 +- .../psdc/mapper/PsdcStatisticsDayMapper.java | 64 ++++ .../mapper/PsdcStatisticsMonthMapper.java | 91 +++++ .../psdc/mapper/PsdcStatisticsYearMapper.java | 85 +++++ .../service/IPsdcElectricHtdataService.java | 29 ++ .../service/impl/PsdcDeviceServiceImpl.java | 29 +- .../impl/PsdcElectricHtdataServiceImpl.java | 121 ++++++- .../mapper/business/PsdcDeviceMapper.xml | 5 + .../business/PsdcElectricHtdataMapper.xml | 7 + .../business/PsdcStatisticsDayMapper.xml | 223 ++++++++++++ .../business/PsdcStatisticsMonthMapper.xml | 332 ++++++++++++++++++ .../business/PsdcStatisticsYearMapper.xml | 165 +++++++++ .../com/psdc/mqtt/MqttProviderConfig.java | 11 +- .../java/com/psdc/utils/bean/BeanUtils.java | 51 +++ ...nualControl.java => ManualController.java} | 22 +- ...TimerControl.java => TimerController.java} | 4 +- ...sis.java => EnergyAnalysisController.java} | 2 +- .../controller/evaluate/EnergyStatistics.java | 4 - .../evaluate/EnergyStatisticsController.java | 96 +++++ 26 files changed, 1655 insertions(+), 44 deletions(-) create mode 100644 psdc-business/src/main/java/com/psdc/entity/PsdcStatisticsDay.java create mode 100644 psdc-business/src/main/java/com/psdc/entity/PsdcStatisticsMonth.java create mode 100644 psdc-business/src/main/java/com/psdc/entity/PsdcStatisticsYear.java create mode 100644 psdc-business/src/main/java/com/psdc/entity/request/EnergyStatisticsRequest.java create mode 100644 psdc-business/src/main/java/com/psdc/mapper/PsdcStatisticsDayMapper.java create mode 100644 psdc-business/src/main/java/com/psdc/mapper/PsdcStatisticsMonthMapper.java create mode 100644 psdc-business/src/main/java/com/psdc/mapper/PsdcStatisticsYearMapper.java create mode 100644 psdc-business/src/main/resources/mapper/business/PsdcStatisticsDayMapper.xml create mode 100644 psdc-business/src/main/resources/mapper/business/PsdcStatisticsMonthMapper.xml create mode 100644 psdc-business/src/main/resources/mapper/business/PsdcStatisticsYearMapper.xml rename psdc-web/src/main/java/com/psdc/controller/control/{ManualControl.java => ManualController.java} (92%) rename psdc-web/src/main/java/com/psdc/controller/control/{TimerControl.java => TimerController.java} (96%) rename psdc-web/src/main/java/com/psdc/controller/evaluate/{EnergyAnalysis.java => EnergyAnalysisController.java} (50%) delete mode 100644 psdc-web/src/main/java/com/psdc/controller/evaluate/EnergyStatistics.java create mode 100644 psdc-web/src/main/java/com/psdc/controller/evaluate/EnergyStatisticsController.java diff --git a/psdc-admin/src/main/java/com/psdc/PsdcApplication.java b/psdc-admin/src/main/java/com/psdc/PsdcApplication.java index 099e06d..3dfdf79 100644 --- a/psdc-admin/src/main/java/com/psdc/PsdcApplication.java +++ b/psdc-admin/src/main/java/com/psdc/PsdcApplication.java @@ -2,9 +2,14 @@ package com.psdc; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication() +@EnableScheduling +@EnableAsync public class PsdcApplication { public static void main(String[] args) diff --git a/psdc-admin/src/main/resources/application-dev.yml b/psdc-admin/src/main/resources/application-dev.yml index 40ddff2..36cac2a 100644 --- a/psdc-admin/src/main/resources/application-dev.yml +++ b/psdc-admin/src/main/resources/application-dev.yml @@ -145,6 +145,6 @@ mqtt: #心跳间隔时间,默认3000 keepAlive: 200 #主题 - dataTopic: /psdc/devices/1672921261340/datas/report/dataTimingReport - statusTopic: /psdc/devices/1672921261340/datas/report/statusReport - warnTopic: /psdc/devices/1672921261340/datas/report/devWarning + dataTopic: /hwj1/dntd/datas/report/dataTimingReport + controlTopic: /hwj1/dntd/request/action/command + controlResponseTopic: /hwj1/dntd/response/action/command diff --git a/psdc-business/src/main/java/com/psdc/entity/PsdcStatisticsDay.java b/psdc-business/src/main/java/com/psdc/entity/PsdcStatisticsDay.java new file mode 100644 index 0000000..381364e --- /dev/null +++ b/psdc-business/src/main/java/com/psdc/entity/PsdcStatisticsDay.java @@ -0,0 +1,102 @@ +package com.psdc.entity; + +import com.psdc.annotation.Excel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.stereotype.Component; + + +/** + * 每日统计表; + * @date : 2023-5-11 + */ +@Data +@Component +@AllArgsConstructor +@NoArgsConstructor +public class PsdcStatisticsDay{ + /** 主键 */ + @Excel(name = "序号", cellType = Excel.ColumnType.NUMERIC, prompt = "序号") + private Integer dayId ; + /** 日期 */ + @Excel(name = "日期") + private String dayDate ; + /** 设备id */ + private Integer deviceId ; + /** 设备名称 */ + @Excel(name="设备名称") + private String deviceName ; + /** */ + @Excel(name = "00时") + private Double hour00 ; + /** */ + @Excel(name = "01时") + private Double hour01 ; + /** */ + @Excel(name = "02时") + private Double hour02 ; + /** */ + @Excel(name = "03时") + private Double hour03 ; + /** */ + @Excel(name = "04时") + private Double hour04 ; + /** */ + @Excel(name = "05时") + private Double hour05 ; + /** */ + @Excel(name = "06时") + private Double hour06 ; + /** */ + @Excel(name = "07时") + private Double hour07 ; + /** */ + @Excel(name = "08时") + private Double hour08 ; + /** */ + @Excel(name = "09时") + private Double hour09 ; + /** */ + @Excel(name = "10时") + private Double hour10 ; + /** */ + @Excel(name = "11时") + private Double hour11 ; + /** */ + @Excel(name = "12时") + private Double hour12 ; + /** */ + @Excel(name = "13时") + private Double hour13 ; + /** */ + @Excel(name = "14时") + private Double hour14 ; + /** */ + @Excel(name = "15时") + private Double hour15 ; + /** */ + @Excel(name = "16时") + private Double hour16 ; + /** */ + @Excel(name = "17时") + private Double hour17 ; + /** */ + @Excel(name = "18时") + private Double hour18 ; + /** */ + @Excel(name = "19时") + private Double hour19 ; + /** */ + @Excel(name = "20时") + private Double hour20 ; + /** */ + @Excel(name = "21时") + private Double hour21 ; + /** */ + @Excel(name = "22时") + private Double hour22 ; + /** */ + @Excel(name = "23时") + private Double hour23 ; +} \ No newline at end of file diff --git a/psdc-business/src/main/java/com/psdc/entity/PsdcStatisticsMonth.java b/psdc-business/src/main/java/com/psdc/entity/PsdcStatisticsMonth.java new file mode 100644 index 0000000..6572573 --- /dev/null +++ b/psdc-business/src/main/java/com/psdc/entity/PsdcStatisticsMonth.java @@ -0,0 +1,125 @@ +package com.psdc.entity; + + +import com.psdc.annotation.Excel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.stereotype.Component; + + +/** + * 每月统计表; + * @date : 2023-5-11 + */ +@Data +@Component +@AllArgsConstructor +@NoArgsConstructor +public class PsdcStatisticsMonth { + /** id */ + @Excel(name = "序号", cellType = Excel.ColumnType.NUMERIC, prompt = "序号") + private Integer monthId ; + /** 设备id */ + private Integer deviceId ; + /** 设备名称 */ + @Excel(name="设备名称") + private String deviceName ; + /** 月 */ + @Excel(name = "日期") + private String monthDate ; + /** 第1日电量 */ + @Excel(name="01日") + private Double day01 ; + /** 第2日电量 */ + @Excel(name="02日") + private Double day02 ; + /** 第3日电量 */ + @Excel(name="03日") + private Double day03 ; + /** 第4日电量 */ + @Excel(name="04日") + private Double day04 ; + /** 第5日电量 */ + @Excel(name="05日") + private Double day05 ; + /** 第6日电量 */ + @Excel(name="06日") + private Double day06 ; + /** 第7日电量 */ + @Excel(name="07日") + private Double day07 ; + /** 第8日电量 */ + @Excel(name="08日") + private Double day08 ; + /** 第9日电量 */ + @Excel(name="09日") + private Double day09 ; + /** 第10日电量 */ + @Excel(name="10日") + private Double day10 ; + /** 第11日电量 */ + @Excel(name="11日") + private Double day11 ; + /** 第12日电量 */ + @Excel(name="12日") + private Double day12 ; + /** 第13日电量 */ + @Excel(name="13日") + private Double day13 ; + /** 第14日电量 */ + @Excel(name="14日") + private Double day14 ; + /** 第15日电量 */ + @Excel(name="15日") + private Double day15 ; + /** 第16日电量 */ + @Excel(name="16日") + private Double day16 ; + /** */ + @Excel(name="17日") + private Double day17 ; + /** 第18日电量 */ + @Excel(name="18日") + private Double day18 ; + /** 第19日电量 */ + @Excel(name="19日") + private Double day19 ; + /** 第20日电量 */ + @Excel(name="20日") + private Double day20 ; + /** 第21日电量 */ + @Excel(name="21日") + private Double day21 ; + /** 第22日电量 */ + @Excel(name="22日") + private Double day22 ; + /** 第23日电量 */ + @Excel(name="23日") + private Double day23 ; + /** 第24日电量 */ + @Excel(name="24日") + private Double day24 ; + /** 第25日电量 */ + @Excel(name="25日") + private Double day25 ; + /** 第26日电量 */ + @Excel(name="26日") + private Double day26 ; + /** 第27日电量 */ + @Excel(name="27日") + private Double day27 ; + /** 第28日电量 */ + @Excel(name="28日") + private Double day28 ; + /** 第29日电量 */ + @Excel(name="29日") + private Double day29 ; + /** 第30日电量 */ + @Excel(name="30日") + private Double day30 ; + /** */ + @Excel(name="31日") + private Double day31 ; + +} \ No newline at end of file diff --git a/psdc-business/src/main/java/com/psdc/entity/PsdcStatisticsYear.java b/psdc-business/src/main/java/com/psdc/entity/PsdcStatisticsYear.java new file mode 100644 index 0000000..90b809d --- /dev/null +++ b/psdc-business/src/main/java/com/psdc/entity/PsdcStatisticsYear.java @@ -0,0 +1,68 @@ +package com.psdc.entity; + +import com.psdc.annotation.Excel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.stereotype.Component; + + + +/** + * 每年数据; + * @date : 2023-5-11 + */ + @Data + @Component + @AllArgsConstructor + @NoArgsConstructor + public class PsdcStatisticsYear { + /** id */ + @Excel(name = "序号", cellType = Excel.ColumnType.NUMERIC, prompt = "序号") + private Integer yearId ; + /** 设备id */ + private Integer deviceId ; + /** 设备名称 */ + @Excel(name="设备名称") + private String deviceName ; + /** 年份 */ + @Excel(name = "日期") + private String yearDate ; + /** 第1月电量 */ + @Excel(name = "一月") + private Double month01 ; + /** 第2月电量 */ + @Excel(name = "二月") + private Double month02 ; + /** 第3月电量 */ + @Excel(name = "三月") + private Double month03 ; + /** 第4月电量 */ + @Excel(name = "四月") + private Double month04 ; + /** 第5月电量 */ + @Excel(name = "五月") + private Double month05 ; + /** 第6月电量 */ + @Excel(name = "六月") + private Double month06 ; + /** 第7月电量 */ + @Excel(name = "七月") + private Double month07 ; + /** 第8月电量 */ + @Excel(name = "八月") + private Double month08 ; + /** 第9月电量 */ + @Excel(name = "九月") + private Double month09 ; + /** 第10月电量 */ + @Excel(name = "十月") + private Double month10 ; + /** 第11月电量 */ + @Excel(name = "十一月") + private Double month11 ; + /** 第12月电量 */ + @Excel(name = "十二月") + private Double month12 ; + +} \ No newline at end of file diff --git a/psdc-business/src/main/java/com/psdc/entity/request/EnergyStatisticsRequest.java b/psdc-business/src/main/java/com/psdc/entity/request/EnergyStatisticsRequest.java new file mode 100644 index 0000000..3376ac4 --- /dev/null +++ b/psdc-business/src/main/java/com/psdc/entity/request/EnergyStatisticsRequest.java @@ -0,0 +1,34 @@ +package com.psdc.entity.request; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class EnergyStatisticsRequest { + + /** + * 设备id + */ + private Integer deviceId; + + /** + * 时间类型,1日2月3年 + */ + private Integer timeType; + + /** + * 开始时间 + */ + private String startTime; + + /** + * 结束时间 + */ + private String endTime; + + + +} diff --git a/psdc-business/src/main/java/com/psdc/mapper/PsdcDeviceMapper.java b/psdc-business/src/main/java/com/psdc/mapper/PsdcDeviceMapper.java index 2ed5229..730bec2 100644 --- a/psdc-business/src/main/java/com/psdc/mapper/PsdcDeviceMapper.java +++ b/psdc-business/src/main/java/com/psdc/mapper/PsdcDeviceMapper.java @@ -82,5 +82,14 @@ public interface PsdcDeviceMapper{ * @return */ int updateDevRunStatusByDevId(@Param(value = "deviceId") Integer deviceId, - @Param(value = "runStatus") Integer runStatus); + @Param(value = "runStatus") Integer runStatus); + + /** + * 根据设备id查询设备名称 + * @param deviceId + * @return + */ + String queryDeviceNameByDeviceId(Integer deviceId); + + } \ No newline at end of file diff --git a/psdc-business/src/main/java/com/psdc/mapper/PsdcElectricHtdataMapper.java b/psdc-business/src/main/java/com/psdc/mapper/PsdcElectricHtdataMapper.java index 9e5cf35..700aa38 100644 --- a/psdc-business/src/main/java/com/psdc/mapper/PsdcElectricHtdataMapper.java +++ b/psdc-business/src/main/java/com/psdc/mapper/PsdcElectricHtdataMapper.java @@ -7,9 +7,10 @@ import com.psdc.entity.res.TodayThisHourUseElectricInfoRes; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.data.domain.Pageable; +import org.springframework.security.core.parameters.P; - /** +/** * 电表实时数据;(psdc_electric_htdata)表数据库访问层 * @author : http://www.chiner.pro * @date : 2023-4-23 @@ -43,6 +44,10 @@ public interface PsdcElectricHtdataMapper{ * @return 对象列表 */ List queryAllByLimit(PsdcElectricHtdata psdcElectricHtdata, @Param("pageable") Pageable pageable); + + List statisticalGroupByTime(String dateTime); + + /** * 统计总行数 * diff --git a/psdc-business/src/main/java/com/psdc/mapper/PsdcStatisticsDayMapper.java b/psdc-business/src/main/java/com/psdc/mapper/PsdcStatisticsDayMapper.java new file mode 100644 index 0000000..7ea8c19 --- /dev/null +++ b/psdc-business/src/main/java/com/psdc/mapper/PsdcStatisticsDayMapper.java @@ -0,0 +1,64 @@ +package com.psdc.mapper; + +import java.util.List; + +import com.psdc.entity.PsdcStatisticsDay; +import com.psdc.entity.request.EnergyStatisticsRequest; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.data.domain.Pageable; + + + /** + * 每日统计表;(psdc_statistics_day)表数据库访问层 + * @date : 2023-5-11 + */ +@Mapper +public interface PsdcStatisticsDayMapper{ + /** + * 通过ID查询单条数据 + * + * @param statisticsId 主键 + * @return 实例对象 + */ + PsdcStatisticsDay queryById(Integer statisticsId); + /** + * 分页查询指定行数据 + * + * @param psdcStatisticsDay 查询条件 + * @param pageable 分页对象 + * @return 对象列表 + */ + List queryAllByLimit(EnergyStatisticsRequest energyStatisticsRequest); + + /** + * 新增数据 + * + * @param psdcStatisticsDay 实例对象 + * @return 影响行数 + */ + int insert(PsdcStatisticsDay psdcStatisticsDay); + + /** + * 新增数据 + * + * @param psdcStatisticsDay 实例对象 + * @return 影响行数 + */ + int insertDay(PsdcStatisticsDay psdcStatisticsDay); + + /** + * 更新数据 + * + * @param psdcStatisticsDay 实例对象 + * @return 影响行数 + */ + int update(PsdcStatisticsDay psdcStatisticsDay); + /** + * 通过主键删除数据 + * + * @param statisticsId 主键 + * @return 影响行数 + */ + int deleteById(Integer statisticsId); +} \ No newline at end of file diff --git a/psdc-business/src/main/java/com/psdc/mapper/PsdcStatisticsMonthMapper.java b/psdc-business/src/main/java/com/psdc/mapper/PsdcStatisticsMonthMapper.java new file mode 100644 index 0000000..d7fb79b --- /dev/null +++ b/psdc-business/src/main/java/com/psdc/mapper/PsdcStatisticsMonthMapper.java @@ -0,0 +1,91 @@ +package com.psdc.mapper; + +import java.util.List; + +import com.psdc.entity.PsdcStatisticsMonth; +import com.psdc.entity.request.EnergyStatisticsRequest; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.data.domain.Pageable; +import org.springframework.security.core.parameters.P; + + +/** + * 每月统计表;(psdc_statistics_month)表数据库访问层 + * @date : 2023-5-11 + */ +@Mapper +public interface PsdcStatisticsMonthMapper{ + /** + * 通过ID查询单条数据 + * + * @param monthId 主键 + * @return 实例对象 + */ + PsdcStatisticsMonth queryById(Integer monthId); + /** + * 分页查询指定行数据 + * + * @param psdcStatisticsMonth 查询条件 + * @param pageable 分页对象 + * @return 对象列表 + */ + List queryAllByLimit(EnergyStatisticsRequest energyStatisticsRequest); + /** + * 新增数据 + * + * @param psdcStatisticsMonth 实例对象 + * @return 影响行数 + */ + int insert(PsdcStatisticsMonth psdcStatisticsMonth); + /** + * 新增数据 + * + * @param psdcStatisticsMonth 实例对象 + * @return 影响行数 + */ + int insertMonth(PsdcStatisticsMonth psdcStatisticsMonth); + /** + * 更新数据 + * + * @param psdcStatisticsMonth 实例对象 + * @return 影响行数 + */ + int update(PsdcStatisticsMonth psdcStatisticsMonth); + + /** + * 更新固定点位数据 + * @param monthPoint 点位 + * @param value 值 + * @param monthId 月id + * @return 条数 + */ + int updatePoint(@Param("monthPoint") String monthPoint, + @Param("value") Double value, + @Param("monthId") Integer monthId); + /** + * 通过主键删除数据 + * + * @param monthId 主键 + * @return 影响行数 + */ + int deleteById(Integer monthId); + + /** + * 根据设备id和日期查询 + * @param deviceId 设备id + * @param date 日期 + * @return 对象 + */ + PsdcStatisticsMonth queryByDeviceIdAndDate(@Param("deviceId") Integer deviceId, + @Param("date") String date); + + /** + * 计算一行数据总和 + * @param deviceId 设备id + * @param date 日期 + * @return 总和 + */ + Double queryOneLineSum(@Param("deviceId") Integer deviceId, + @Param("date") String date); + } \ No newline at end of file diff --git a/psdc-business/src/main/java/com/psdc/mapper/PsdcStatisticsYearMapper.java b/psdc-business/src/main/java/com/psdc/mapper/PsdcStatisticsYearMapper.java new file mode 100644 index 0000000..a7e788b --- /dev/null +++ b/psdc-business/src/main/java/com/psdc/mapper/PsdcStatisticsYearMapper.java @@ -0,0 +1,85 @@ +package com.psdc.mapper; + +import java.util.List; + +import com.psdc.entity.PsdcStatisticsMonth; +import com.psdc.entity.PsdcStatisticsYear; +import com.psdc.entity.request.EnergyStatisticsRequest; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.data.domain.Pageable; + + + /** + * 每年数据;(psdc_statistics_year)表数据库访问层 + * @date : 2023-5-11 + */ +@Mapper +public interface PsdcStatisticsYearMapper{ + /** + * 通过ID查询单条数据 + * + * @param yearId 主键 + * @return 实例对象 + */ + PsdcStatisticsYear queryById(Integer yearId); + /** + * 分页查询指定行数据 + * + * @param psdcStatisticsYear 查询条件 + * @param pageable 分页对象 + * @return 对象列表 + */ + List queryAllByLimit(EnergyStatisticsRequest energyStatisticsRequest); + + /** + * 新增数据 + * + * @param psdcStatisticsYear 实例对象 + * @return 影响行数 + */ + int insert(PsdcStatisticsYear psdcStatisticsYear); + /** + * 新增数据 + * + * @param psdcStatisticsYear 实例对象 + * @return 影响行数 + */ + int insertYear(PsdcStatisticsYear psdcStatisticsYear); + + /** + * 更新数据 + * + * @param psdcStatisticsYear 实例对象 + * @return 影响行数 + */ + int update(PsdcStatisticsYear psdcStatisticsYear); + + + /** + * 更新固定点位数据 + * @param yearPoint 点位 + * @param value 值 + * @param yearId 年id + * @return 条数 + */ + int updatePoint(@Param("yearPoint") String yearPoint, + @Param("value") Double value, + @Param("yearId") Integer yearId); + /** + * 通过主键删除数据 + * + * @param yearId 主键 + * @return 影响行数 + */ + int deleteById(Integer yearId); + + /** + * 根据设备id和日期查询 + * @param deviceId + * @param date + * @return + */ + PsdcStatisticsYear queryByDeviceIdAndDate(@Param("deviceId") Integer deviceId, + @Param("date") String date); + } \ No newline at end of file diff --git a/psdc-business/src/main/java/com/psdc/service/IPsdcElectricHtdataService.java b/psdc-business/src/main/java/com/psdc/service/IPsdcElectricHtdataService.java index 855874f..999c9f2 100644 --- a/psdc-business/src/main/java/com/psdc/service/IPsdcElectricHtdataService.java +++ b/psdc-business/src/main/java/com/psdc/service/IPsdcElectricHtdataService.java @@ -1,5 +1,11 @@ package com.psdc.service; +import com.psdc.entity.PsdcStatisticsDay; +import com.psdc.entity.PsdcStatisticsMonth; +import com.psdc.entity.PsdcStatisticsYear; +import com.psdc.entity.request.EnergyStatisticsRequest; +import org.springframework.scheduling.annotation.Scheduled; + import java.util.List; import java.util.Map; @@ -21,4 +27,27 @@ public interface IPsdcElectricHtdataService { List selDcglThisDayUseElectric(Integer deviceId); + /** + * 一天每小时能耗统计数据 + * @param energyStatisticsRequest 请求数据 + * @return 一天每小时能耗数据 + */ + List selectAllByListDay(EnergyStatisticsRequest energyStatisticsRequest); + + /** + * 一月每天能耗统计数据 + * @param energyStatisticsRequest 请求数据 + * @return 一天每小时能耗数据 + */ + List selectAllByListMonth(EnergyStatisticsRequest energyStatisticsRequest); + + /** + * 一年每月能耗统计数据 + * @param energyStatisticsRequest 请求数据 + * @return 一天每小时能耗数据 + */ + List selectAllByListYear(EnergyStatisticsRequest energyStatisticsRequest); + + void statisticalTask(); + } diff --git a/psdc-business/src/main/java/com/psdc/service/impl/PsdcDeviceServiceImpl.java b/psdc-business/src/main/java/com/psdc/service/impl/PsdcDeviceServiceImpl.java index d81fc2d..5c9575a 100644 --- a/psdc-business/src/main/java/com/psdc/service/impl/PsdcDeviceServiceImpl.java +++ b/psdc-business/src/main/java/com/psdc/service/impl/PsdcDeviceServiceImpl.java @@ -11,9 +11,9 @@ import com.psdc.service.IPsdcDeviceService; import com.psdc.utils.SecurityUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -24,10 +24,10 @@ import java.util.stream.Collectors; @Slf4j public class PsdcDeviceServiceImpl implements IPsdcDeviceService{ - @Autowired + @Resource private PsdcDeviceMapper psdcDeviceMapper; - @Autowired + @Resource private PsdcControlLogMapper psdcControlLogMapper; /** @@ -44,7 +44,7 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService{ /** * 根据用户id查询设备列表 - * @return + * @return 设备列表 */ public List queryByUserId(){ return psdcDeviceMapper.queryByUserId(SecurityUtils.getUserId()); @@ -88,8 +88,7 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService{ /** * 通过主键删除数据 - * - * @param deviceId 主键 + * @param deviceId 主键 * @return 是否成功 */ public boolean deleteById(Integer deviceId){ @@ -110,9 +109,9 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService{ /** * 控制设备启动停止 - * @param deviceId - * @param runStatus - * @return + * @param deviceId 主键 + * @param runStatus 状态 + * @return 条数 */ @Override public int controlDeviceStartAndStop(Integer deviceId, Integer runStatus,String controlBy,Integer controlMethod) { @@ -120,8 +119,10 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService{ String value = ""; if(runStatus == 1){ value = "启动"; - } else if ( runStatus == 2 ) { - value = "停止"; + } else { + if ( runStatus == 2 ) { + value = "停止"; + } } log.info("设备id:{}",deviceId); @@ -131,10 +132,10 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService{ throw new ControlException("控制失败,未找到该设备"); } - //TODO 发送MQTT指令 + // TODO 发送MQTT指令 // psdcControlLogMapper.insert(new PsdcControlLog(deviceId,psdcDevice.getDeviceName(),psdcDevice.getDeviceSn(),"设备启停",value,controlMethod,3,"手动控制,等待终端响应超时",controlBy)); + // 发送成功 - //发送成功 psdcControlLogMapper.insert(new PsdcControlLog(deviceId,psdcDevice.getDeviceName(),psdcDevice.getDeviceSn(),"设备启停",value,controlMethod,2,"手动控制,控制成功",controlBy)); return psdcDeviceMapper.updateDevRunStatusByDevId(deviceId,runStatus); } @@ -155,7 +156,7 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService{ AtomicInteger atomicInteger = new AtomicInteger(0); - for (Map map: data) { + for (HashMap map: data) { String controlKey = map.get("controlKey").toString(); String controlValue = map.get("controlValue").toString(); diff --git a/psdc-business/src/main/java/com/psdc/service/impl/PsdcElectricHtdataServiceImpl.java b/psdc-business/src/main/java/com/psdc/service/impl/PsdcElectricHtdataServiceImpl.java index 083ca21..ab90aa3 100644 --- a/psdc-business/src/main/java/com/psdc/service/impl/PsdcElectricHtdataServiceImpl.java +++ b/psdc-business/src/main/java/com/psdc/service/impl/PsdcElectricHtdataServiceImpl.java @@ -1,7 +1,15 @@ package com.psdc.service.impl; -import com.psdc.mapper.PsdcElectricHtdataMapper; +import com.psdc.entity.PsdcElectricHtdata; +import com.psdc.entity.PsdcStatisticsDay; +import com.psdc.entity.PsdcStatisticsMonth; +import com.psdc.entity.PsdcStatisticsYear; +import com.psdc.entity.request.EnergyStatisticsRequest; +import com.psdc.mapper.*; import com.psdc.service.IPsdcElectricHtdataService; +import com.psdc.utils.StringUtils; +import com.psdc.utils.bean.BeanUtils; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -16,6 +24,7 @@ import java.util.*; * @Version 1.0 */ @Service +@Slf4j public class PsdcElectricHtdataServiceImpl implements IPsdcElectricHtdataService { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); @@ -23,6 +32,18 @@ public class PsdcElectricHtdataServiceImpl implements IPsdcElectricHtdataService @Resource PsdcElectricHtdataMapper electricHtdataMapper; + @Resource + private PsdcDeviceMapper psdcDeviceMapper; + + @Resource + private PsdcStatisticsDayMapper psdcStatisticsDayMapper; + + @Resource + private PsdcStatisticsMonthMapper psdcStatisticsMonthMapper; + + @Resource + private PsdcStatisticsYearMapper psdcStatisticsYearMapper; + /** * 总电表查询 * @return @@ -87,4 +108,102 @@ public class PsdcElectricHtdataServiceImpl implements IPsdcElectricHtdataService return s1; } + /** + * 一天每小时能耗统计数据 + * @param energyStatisticsRequest 请求数据 + * @return 一天每小时能耗数据 + */ + public List selectAllByListDay(EnergyStatisticsRequest energyStatisticsRequest){ + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + /* + 先判断日期是不是今天,若为今天去查历史数据表,不是今天则查统计表 + */ + String today = simpleDateFormat.format(new Date()); + return psdcStatisticsDayMapper.queryAllByLimit(energyStatisticsRequest); + + + } + + /** + * 一月每天能耗统计数据 + * @param energyStatisticsRequest 请求数据 + * @return 一天每小时能耗数据 + */ + public List selectAllByListMonth(EnergyStatisticsRequest energyStatisticsRequest) { + return psdcStatisticsMonthMapper.queryAllByLimit(energyStatisticsRequest); + + } + + /** + * 一年每月能耗统计数据 + * @param energyStatisticsRequest 请求数据 + * @return 一天每小时能耗数据 + */ + public List selectAllByListYear(EnergyStatisticsRequest energyStatisticsRequest){ + return psdcStatisticsYearMapper.queryAllByLimit(energyStatisticsRequest); + } + + /** + * 每日统计定时任务 + */ + // @Scheduled(cron = "0 10 0 * * ? ") + public void statisticalTask(){ + //获取昨日用电量总和 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat dayDateFormat = new SimpleDateFormat("dd"); + SimpleDateFormat yearMonthDateFormat = new SimpleDateFormat("yyyy-MM"); + SimpleDateFormat monthDateFormat = new SimpleDateFormat("MM"); + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.DATE, -1); + Date yesterday = calendar.getTime(); + List psdcElectricHtdatas = electricHtdataMapper.statisticalGroupByTime(simpleDateFormat.format(yesterday)); + + //月点位 + String monthPoint = "day_" + dayDateFormat.format(yesterday); + String yearPoint = "month_" + monthDateFormat.format(yesterday); + for (PsdcElectricHtdata psdcElectricHtdata: psdcElectricHtdatas) { + //先查询是否有该id当月数据 + Integer deviceId = psdcElectricHtdata.getDeviceId(); + PsdcStatisticsMonth psdcStatisticsMonth = psdcStatisticsMonthMapper.queryByDeviceIdAndDate(deviceId,yearMonthDateFormat.format(yesterday)); + if (psdcStatisticsMonth == null){ + //插入 + PsdcStatisticsMonth newPsdcStatisticsMonth = new PsdcStatisticsMonth(); + newPsdcStatisticsMonth.setMonthDate(simpleDateFormat.format(yesterday)); + newPsdcStatisticsMonth.setDeviceId(deviceId); + newPsdcStatisticsMonth.setDeviceName(psdcDeviceMapper.queryDeviceNameByDeviceId(deviceId)); + psdcStatisticsMonthMapper.insert(newPsdcStatisticsMonth); + Integer monthId = newPsdcStatisticsMonth.getMonthId(); + psdcStatisticsMonthMapper.updatePoint(monthPoint,psdcElectricHtdata.getUseDeiffen(),monthId); + } else { + //更新 + psdcStatisticsMonthMapper.updatePoint(monthPoint,psdcElectricHtdata.getUseDeiffen(),psdcStatisticsMonth.getMonthId() + ); + } + + //每月数据 + //先查询该id今年每月数据 + PsdcStatisticsYear psdcStatisticsYear = psdcStatisticsYearMapper.queryByDeviceIdAndDate(deviceId, yearMonthDateFormat.format(yesterday)); + Double aDouble = psdcStatisticsMonthMapper.queryOneLineSum(deviceId, yearMonthDateFormat.format(yesterday)); + if (psdcStatisticsYear == null){ + //插入 + PsdcStatisticsYear newPsdcStatisticsYear = new PsdcStatisticsYear(); + newPsdcStatisticsYear.setYearDate(simpleDateFormat.format(yesterday)); + newPsdcStatisticsYear.setDeviceId(deviceId); + newPsdcStatisticsYear.setDeviceName(psdcDeviceMapper.queryDeviceNameByDeviceId(deviceId)); + psdcStatisticsYearMapper.insertYear(newPsdcStatisticsYear); + Integer yearId = newPsdcStatisticsYear.getYearId(); + psdcStatisticsYearMapper.updatePoint(yearPoint,aDouble,yearId); + } else { + //更新 + psdcStatisticsYearMapper.updatePoint(yearPoint,aDouble,psdcStatisticsYear.getYearId()); + + } + } + + //每月数据 + //先 + + } + + } diff --git a/psdc-business/src/main/resources/mapper/business/PsdcDeviceMapper.xml b/psdc-business/src/main/resources/mapper/business/PsdcDeviceMapper.xml index 2ed7128..2161955 100644 --- a/psdc-business/src/main/resources/mapper/business/PsdcDeviceMapper.xml +++ b/psdc-business/src/main/resources/mapper/business/PsdcDeviceMapper.xml @@ -280,4 +280,9 @@ update psdc_device set device_runstatus = #{runStatus} where device_id = #{deviceId} + + + \ No newline at end of file diff --git a/psdc-business/src/main/resources/mapper/business/PsdcElectricHtdataMapper.xml b/psdc-business/src/main/resources/mapper/business/PsdcElectricHtdataMapper.xml index b6c1d9a..238638e 100644 --- a/psdc-business/src/main/resources/mapper/business/PsdcElectricHtdataMapper.xml +++ b/psdc-business/src/main/resources/mapper/business/PsdcElectricHtdataMapper.xml @@ -237,6 +237,13 @@ limit #{pageable.offset}, #{pageable.pageSize} + + + select + day_id,day_date,device_id,device_name,hour_00,hour_01,hour_02,hour_03,hour_04,hour_05,hour_06,hour_07,hour_08,hour_09,hour_10,hour_11,hour_12,hour_13,hour_14,hour_15,hour_16,hour_17,hour_18,hour_19,hour_20,hour_21,hour_22,hour_23 + from psdc_statistics_day + where day_id = #{dayId} + + + + + + + + + insert into psdc_statistics_day(day_id,day_date,device_id,device_name,hour_00,hour_01,hour_02,hour_03,hour_04,hour_05,hour_06,hour_07,hour_08,hour_09,hour_10,hour_11,hour_12,hour_13,hour_14,hour_15,hour_16,hour_17,hour_18,hour_19,hour_20,hour_21,hour_22,hour_23) + values (#{dayId},#{dayDate},#{deviceId},#{deviceName},#{hour00},#{hour01},#{hour02},#{hour03},#{hour04},#{hour05},#{hour06},#{hour07},#{hour08},#{hour09},#{hour10},#{hour11},#{hour12},#{hour13},#{hour14},#{hour15},#{hour16},#{hour17},#{hour18},#{hour19},#{hour20},#{hour21},#{hour22},#{hour23}) + + + + + Insert into psdc_statistics_day( + day_date, + device_id, + device_name + ,hour_00, + hour_01, + hour_02, + hour_03, + hour_04, + hour_05, + hour_06, + hour_07, + hour_08, + hour_09, + hour_10, + hour_11, + hour_12, + hour_13, + hour_14, + hour_15, + hour_16, + hour_17, + hour_18, + hour_19, + hour_20, + hour_21, + hour_22, + hour_23, + )values( + #{dayDate}, + #{deviceId}, + #{deviceName} + ,#{hour00}, + #{hour01}, + #{hour02}, + #{hour03}, + #{hour04}, + #{hour05}, + #{hour06}, + #{hour07}, + #{hour08}, + #{hour09}, + #{hour10}, + #{hour11}, + #{hour12}, + #{hour13}, + #{hour14}, + #{hour15}, + #{hour16}, + #{hour17}, + #{hour18}, + #{hour19}, + #{hour20}, + #{hour21}, + #{hour22}, + #{hour23}, + ) + + + + + + update psdc_statistics_day + + + day_date = #{dayDate}, + + + device_id = #{deviceId}, + + + device_name = #{deviceName}, + + + hour_00 = #{hour00}, + + + hour_01 = #{hour01}, + + + hour_02 = #{hour02}, + + + hour_03 = #{hour03}, + + + hour_04 = #{hour04}, + + + hour_05 = #{hour05}, + + + hour_06 = #{hour06}, + + + hour_07 = #{hour07}, + + + hour_08 = #{hour08}, + + + hour_09 = #{hour09}, + + + hour_10 = #{hour10}, + + + hour_11 = #{hour11}, + + + hour_12 = #{hour12}, + + + hour_13 = #{hour13}, + + + hour_14 = #{hour14}, + + + hour_15 = #{hour15}, + + + hour_16 = #{hour16}, + + + hour_17 = #{hour17}, + + + hour_18 = #{hour18}, + + + hour_19 = #{hour19}, + + + hour_20 = #{hour20}, + + + hour_21 = #{hour21}, + + + hour_22 = #{hour22}, + + + hour_23 = #{hour23}, + + + where day_id = #{dayId} + + + + + delete from psdc_statistics_day where day_id = #{dayId} + + \ No newline at end of file diff --git a/psdc-business/src/main/resources/mapper/business/PsdcStatisticsMonthMapper.xml b/psdc-business/src/main/resources/mapper/business/PsdcStatisticsMonthMapper.xml new file mode 100644 index 0000000..b860ddd --- /dev/null +++ b/psdc-business/src/main/resources/mapper/business/PsdcStatisticsMonthMapper.xml @@ -0,0 +1,332 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Insert into psdc_statistics_month( + month_date, + device_id, + device_name + ,day_01, + day_02, + day_03, + day_04, + day_05, + day_06, + day_07, + day_08, + day_09, + day_10, + day_11, + day_12, + day_13, + day_14, + day_15, + day_16, + day_17, + day_18, + day_19, + day_20, + day_21, + day_22, + day_23, + day_24, + day_25, + day_26, + day_27, + day_28, + day_29, + day_30, + day_31, + )values( + #{monthDate}, + #{deviceId}, + #{deviceName} + ,#{day01}, + #{day02}, + #{day03}, + #{day04}, + #{day05}, + #{day06}, + #{day07}, + #{day08}, + #{day09}, + #{day10}, + #{day11}, + #{day12}, + #{day13}, + #{day14}, + #{day15}, + #{day16}, + #{day17}, + #{day18}, + #{day19}, + #{day20}, + #{day21}, + #{day22}, + #{day23}, + #{day24}, + #{day25}, + #{day26}, + #{day27}, + #{day28}, + #{day29}, + #{day30}, + #{day31}, + ) + + + + + + insert into psdc_statistics_month(month_id, device_id, device_name, month_date, day_01, day_02, day_03, day_04, + day_05, day_06, day_07, day_08, day_09, day_10, day_11, day_12, day_13, + day_14, day_15, day_16, day_17, day_18, day_19, day_20, day_21, day_22, + day_23, day_24, day_25, day_26, day_27, day_28, day_29, day_30, day_31) + values (#{monthId}, #{deviceId}, #{deviceName}, #{monthDate}, #{day01}, #{day02}, #{day03}, #{day04}, #{day05}, + #{day06}, #{day07}, #{day08}, #{day09}, #{day10}, #{day11}, #{day12}, #{day13}, #{day14}, #{day15}, + #{day16}, #{day17}, #{day18}, #{day19}, #{day20}, #{day21}, #{day22}, #{day23}, #{day24}, #{day25}, + #{day26}, #{day27}, #{day28}, #{day29}, #{day30}, #{day31}) + + + + + update psdc_statistics_month + set ${monthPoint} = #{value} + where month_id = #{monthId}; + + + + + update psdc_statistics_month + + + month_id = #{monthId}, + + + device_id = #{deviceId}, + + + device_name = #{deviceName}, + + + month_date = #{monthDate}, + + + day_01 = #{day01}, + + + day_02 = #{day02}, + + + day_03 = #{day03}, + + + day_04 = #{day04}, + + + day_05 = #{day05}, + + + day_06 = #{day06}, + + + day_07 = #{day07}, + + + day_08 = #{day08}, + + + day_09 = #{day09}, + + + day_10 = #{day10}, + + + day_11 = #{day11}, + + + day_12 = #{day12}, + + + day_13 = #{day13}, + + + day_14 = #{day14}, + + + day_15 = #{day15}, + + + day_16 = #{day16}, + + + day_17 = #{day17}, + + + day_18 = #{day18}, + + + day_19 = #{day19}, + + + day_20 = #{day20}, + + + day_21 = #{day21}, + + + day_22 = #{day22}, + + + day_23 = #{day23}, + + + day_24 = #{day24}, + + + day_25 = #{day25}, + + + day_26 = #{day26}, + + + day_27 = #{day27}, + + + day_28 = #{day28}, + + + day_29 = #{day29}, + + + day_30 = #{day30}, + + + day_31 = #{day31}, + + + where month_id = #{monthId} + + + + + delete + from psdc_statistics_month + where month_id = #{monthId} + + + + + + + + \ No newline at end of file diff --git a/psdc-business/src/main/resources/mapper/business/PsdcStatisticsYearMapper.xml b/psdc-business/src/main/resources/mapper/business/PsdcStatisticsYearMapper.xml new file mode 100644 index 0000000..39c3038 --- /dev/null +++ b/psdc-business/src/main/resources/mapper/business/PsdcStatisticsYearMapper.xml @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into psdc_statistics_year(year_id,device_id,device_name,year_date,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11,month_12) + values (#{yearId},#{deviceId},#{deviceName},#{yearDate},#{month01},#{month02},#{month03},#{month04},#{month05},#{month06},#{month07},#{month08},#{month09},#{month10},#{month11},#{month12}) + + + + Insert into psdc_statistics_year( + year_date, + device_id, + device_name + ,month_01, + month_02, + month_03, + month_04, + month_05, + month_06, + month_07, + month_08, + month_09, + month_10, + month_11, + month_12, + )values( + #{yearDate}, + #{deviceId}, + #{deviceName} + ,#{month01}, + #{month02}, + #{month03}, + #{month04}, + #{month05}, + #{month06}, + #{month07}, + #{month08}, + #{month09}, + #{month10}, + #{month11}, + #{month12}, + ) + + + + + + update psdc_statistics_year + + + device_id = #{deviceId}, + + + device_name = #{deviceName}, + + + year_date = #{yearDate}, + + + month_01 = #{month01}, + + + month_02 = #{month02}, + + + month_03 = #{month03}, + + + month_04 = #{month04}, + + + month_05 = #{month05}, + + + month_06 = #{month06}, + + + month_07 = #{month07}, + + + month_08 = #{month08}, + + + month_09 = #{month09}, + + + month_10 = #{month10}, + + + month_11 = #{month11}, + + + month_12 = #{month12}, + + + where year_id = #{yearId} + + + + + update psdc_statistics_year + set ${yearPoint} = #{value} + where year_id = #{yearId}; + + + + + delete from psdc_statistics_year where year_id = #{yearId} + + + + + \ No newline at end of file diff --git a/psdc-common/src/main/java/com/psdc/mqtt/MqttProviderConfig.java b/psdc-common/src/main/java/com/psdc/mqtt/MqttProviderConfig.java index d8da9eb..cda5563 100644 --- a/psdc-common/src/main/java/com/psdc/mqtt/MqttProviderConfig.java +++ b/psdc-common/src/main/java/com/psdc/mqtt/MqttProviderConfig.java @@ -38,11 +38,11 @@ public class MqttProviderConfig { @Value("${mqtt.dataTopic}") private String dataTopic; - @Value("${mqtt.statusTopic}") - private String statusTopic; + @Value("${mqtt.controlTopic}") + private String controlTopic; - @Value("${mqtt.warnTopic}") - private String warnTopic; + @Value("${mqtt.controlResponseTopic}") + private String controlResponseTopic; /** * 客户端对象 @@ -66,7 +66,8 @@ public class MqttProviderConfig { myMQTTClient.connect(); //不同的主题 myMQTTClient.subscribe(dataTopic, 0); - myMQTTClient.subscribe(statusTopic, 0); + myMQTTClient.subscribe(controlTopic, 0); + myMQTTClient.subscribe(controlResponseTopic, 0); return myMQTTClient; } catch (MqttException e) { log.error("MQTT connect exception,connect time = " + i); diff --git a/psdc-common/src/main/java/com/psdc/utils/bean/BeanUtils.java b/psdc-common/src/main/java/com/psdc/utils/bean/BeanUtils.java index d981fe3..3cac78a 100644 --- a/psdc-common/src/main/java/com/psdc/utils/bean/BeanUtils.java +++ b/psdc-common/src/main/java/com/psdc/utils/bean/BeanUtils.java @@ -1,6 +1,10 @@ package com.psdc.utils.bean; +import org.springframework.util.ObjectUtils; + +import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; @@ -107,4 +111,51 @@ public class BeanUtils extends org.springframework.beans.BeanUtils { return m1.substring(BEAN_METHOD_PROP_INDEX).equals(m2.substring(BEAN_METHOD_PROP_INDEX)); } + + /** + * 将实体类的字段内容转成List + * + * @param start 解析实体类的开始字段 + * @param end 解析实体类的结束字段 + * @param obj 实体类 + * @param arraryList 列表 + */ + public static void coverObjToList(Integer start, Integer end, Object obj, List arraryList) { + if (ObjectUtils.isEmpty(obj)) { + return; + } + + Field[] declaredFields = obj.getClass().getDeclaredFields(); + if (ObjectUtils.isEmpty(start)) { + start = 0; + } + if (ObjectUtils.isEmpty(end)) { + end = declaredFields.length; + } + try { + try { + for (int i = start; i <= end; i++) { + Field f = obj.getClass().getDeclaredField(declaredFields[i].getName()); + // 在反射时允许访问私有变量 + f.setAccessible(true); + Object o = f.get(obj); + if (ObjectUtils.isEmpty(o)) { + arraryList.add(""); + } else { + if (f.getType() == Double.class) { + // 解决导出金额变成科学计数法的问题,保留两位小数 + DecimalFormat decimalFormat = new DecimalFormat("0.00"); + arraryList.add(decimalFormat.format(o)); + } else { + arraryList.add(o.toString()); + } + } + } + } catch (NoSuchFieldException | IllegalAccessException | IllegalArgumentException e) { + e.printStackTrace(); + } + } catch (SecurityException e) { + e.printStackTrace(); + } + } } diff --git a/psdc-web/src/main/java/com/psdc/controller/control/ManualControl.java b/psdc-web/src/main/java/com/psdc/controller/control/ManualController.java similarity index 92% rename from psdc-web/src/main/java/com/psdc/controller/control/ManualControl.java rename to psdc-web/src/main/java/com/psdc/controller/control/ManualController.java index d3828fb..f4fcd8b 100644 --- a/psdc-web/src/main/java/com/psdc/controller/control/ManualControl.java +++ b/psdc-web/src/main/java/com/psdc/controller/control/ManualController.java @@ -11,10 +11,10 @@ import com.psdc.service.IPsdcDeviceService; import com.psdc.service.IPsdcSceneService; import com.psdc.utils.SecurityUtils; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -23,21 +23,21 @@ import java.util.Map; @RestController @Slf4j @RequestMapping("/control/manual") -public class ManualControl extends BaseController { +public class ManualController extends BaseController { - @Autowired + @Resource private IPsdcDeviceService psdcDeviceService; - @Autowired + @Resource private IPsdcControlLogService psdcControlLogService; - @Autowired + @Resource private IPsdcSceneService psdcSceneService; /** * 查询设备状态列表 - * @return + * @return ajax */ @PreAuthorize("@ss.hasPermi('control:manual:devlist')") @GetMapping("/deviceStatusList") @@ -48,8 +48,8 @@ public class ManualControl extends BaseController { /** * 控制设备启停 - * @param jsonObject - * @return + * @param jsonObject 传参对象 + * @return ajax */ @PreAuthorize("@ss.hasPermi('control:manual:startstop')") @PostMapping("/startAndStop") @@ -76,7 +76,7 @@ public class ManualControl extends BaseController { /** * 获取策略控制 - * @return + * @return ajax */ @PreAuthorize("@ss.hasPermi('control:manual:strategy')") @GetMapping("/strategyList") @@ -87,8 +87,8 @@ public class ManualControl extends BaseController { /** * 设置温度 - * @param jsonObject - * @return + * @param jsonObject 传参对象 + * @return ajax */ @PreAuthorize("@ss.hasPermi('control:manual:temperature')") @PostMapping("/setTemperature") diff --git a/psdc-web/src/main/java/com/psdc/controller/control/TimerControl.java b/psdc-web/src/main/java/com/psdc/controller/control/TimerController.java similarity index 96% rename from psdc-web/src/main/java/com/psdc/controller/control/TimerControl.java rename to psdc-web/src/main/java/com/psdc/controller/control/TimerController.java index 3268e69..615717d 100644 --- a/psdc-web/src/main/java/com/psdc/controller/control/TimerControl.java +++ b/psdc-web/src/main/java/com/psdc/controller/control/TimerController.java @@ -4,13 +4,11 @@ import com.alibaba.fastjson2.JSONObject; import com.psdc.core.controller.BaseController; import com.psdc.core.domain.AjaxResult; import com.psdc.core.page.TableDataInfo; -import com.psdc.entity.PsdcControlLog; import com.psdc.entity.request.PsdcTimerRequest; import com.psdc.entity.request.PsdcTimerRunTimeRequest; import com.psdc.entity.vo.PsdcTimerVo; import com.psdc.service.IPsdcTimerService; import lombok.extern.slf4j.Slf4j; -import org.aspectj.weaver.loadtime.Aj; import org.quartz.SchedulerException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; @@ -21,7 +19,7 @@ import java.util.List; @RestController @Slf4j @RequestMapping("/control/timer") -public class TimerControl extends BaseController { +public class TimerController extends BaseController { @Autowired private IPsdcTimerService psdcTimerService; diff --git a/psdc-web/src/main/java/com/psdc/controller/evaluate/EnergyAnalysis.java b/psdc-web/src/main/java/com/psdc/controller/evaluate/EnergyAnalysisController.java similarity index 50% rename from psdc-web/src/main/java/com/psdc/controller/evaluate/EnergyAnalysis.java rename to psdc-web/src/main/java/com/psdc/controller/evaluate/EnergyAnalysisController.java index 6fc9c73..4c0e68b 100644 --- a/psdc-web/src/main/java/com/psdc/controller/evaluate/EnergyAnalysis.java +++ b/psdc-web/src/main/java/com/psdc/controller/evaluate/EnergyAnalysisController.java @@ -1,4 +1,4 @@ package com.psdc.controller.evaluate; -public class EnergyAnalysis { +public class EnergyAnalysisController { } diff --git a/psdc-web/src/main/java/com/psdc/controller/evaluate/EnergyStatistics.java b/psdc-web/src/main/java/com/psdc/controller/evaluate/EnergyStatistics.java deleted file mode 100644 index a3df1c6..0000000 --- a/psdc-web/src/main/java/com/psdc/controller/evaluate/EnergyStatistics.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.psdc.controller.evaluate; - -public class EnergyStatistics { -} diff --git a/psdc-web/src/main/java/com/psdc/controller/evaluate/EnergyStatisticsController.java b/psdc-web/src/main/java/com/psdc/controller/evaluate/EnergyStatisticsController.java new file mode 100644 index 0000000..8f4091d --- /dev/null +++ b/psdc-web/src/main/java/com/psdc/controller/evaluate/EnergyStatisticsController.java @@ -0,0 +1,96 @@ +package com.psdc.controller.evaluate; + +import com.alibaba.fastjson2.JSONObject; +import com.psdc.core.controller.BaseController; +import com.psdc.core.page.TableDataInfo; +import com.psdc.entity.PsdcStatisticsDay; +import com.psdc.entity.PsdcStatisticsMonth; +import com.psdc.entity.PsdcStatisticsYear; +import com.psdc.entity.request.EnergyStatisticsRequest; +import com.psdc.service.IPsdcElectricHtdataService; +import com.psdc.utils.poi.ExcelUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +@RestController +@Slf4j +@RequestMapping("/evaluate/statistics") +public class EnergyStatisticsController extends BaseController { + + @Resource + private IPsdcElectricHtdataService psdcElectricHtdataService; + + /** + * 查询能耗统计列表 + * @return ajax + */ + @PreAuthorize("@ss.hasPermi('analyse:nhtj:list')") + @PostMapping("/list") + public TableDataInfo getStatisticsList(@RequestBody JSONObject jsonObject) { + EnergyStatisticsRequest energyStatisticsRequest = myPage(jsonObject, EnergyStatisticsRequest.class); + if ( energyStatisticsRequest.getTimeType() == 1){ + + log.info("日"); + List list = psdcElectricHtdataService.selectAllByListDay(energyStatisticsRequest); + return getDataTable(list); + + } else if ( energyStatisticsRequest.getTimeType() == 2) { + + log.info("月"); + List list = psdcElectricHtdataService.selectAllByListMonth(energyStatisticsRequest); + return getDataTable(list); + + } else if ( energyStatisticsRequest.getTimeType() == 3){ + + log.info("年"); + List list = psdcElectricHtdataService.selectAllByListYear(energyStatisticsRequest); + return getDataTable(list); + + } + return null; + } + + /** + * 导出能耗数据 + */ + @PreAuthorize("@ss.hasPermi('analyse:nhtj:export')") + @PostMapping("/export") + public void exportStatisticsList(HttpServletResponse response,@RequestBody EnergyStatisticsRequest energyStatisticsRequest){ + if ( energyStatisticsRequest.getTimeType() == 1){ + log.info("日"); + List list = psdcElectricHtdataService.selectAllByListDay(energyStatisticsRequest); + ExcelUtil psdcStatisticsDayExcelUtil = new ExcelUtil<>(PsdcStatisticsDay.class); + psdcStatisticsDayExcelUtil.exportExcel(response, list, "今日每小时数据"); + } else if ( energyStatisticsRequest.getTimeType() == 2) { + log.info("月"); + List list = psdcElectricHtdataService.selectAllByListMonth(energyStatisticsRequest); + ExcelUtil psdcStatisticsMonthExcelUtil = new ExcelUtil<>(PsdcStatisticsMonth.class); + psdcStatisticsMonthExcelUtil.exportExcel(response, list, "本月每天数据"); + } else if ( energyStatisticsRequest.getTimeType() == 3){ + log.info("年"); + List list = psdcElectricHtdataService.selectAllByListYear(energyStatisticsRequest); + ExcelUtil psdcStatisticsYearExcelUtil = new ExcelUtil<>(PsdcStatisticsYear.class); + psdcStatisticsYearExcelUtil.exportExcel(response, list, "今年每月数据"); + } + } + + /** + * 查询能耗统计列表 + * @return ajax + */ + @PreAuthorize("@ss.hasPermi('analyse:nhtj:list')") + @PostMapping("/list2") + public TableDataInfo getStatisticsList() { + psdcElectricHtdataService.statisticalTask(); + return null; + } + + + + +}