Merge remote-tracking branch 'origin/master'

master
魔神煜修罗皇 2 years ago
commit 834a9ec5a4
  1. 11
      psdc-admin/src/main/java/com/psdc/PsdcApplication.java
  2. 6
      psdc-admin/src/main/resources/application-dev.yml
  3. 102
      psdc-business/src/main/java/com/psdc/entity/PsdcStatisticsDay.java
  4. 125
      psdc-business/src/main/java/com/psdc/entity/PsdcStatisticsMonth.java
  5. 68
      psdc-business/src/main/java/com/psdc/entity/PsdcStatisticsYear.java
  6. 34
      psdc-business/src/main/java/com/psdc/entity/request/EnergyStatisticsRequest.java
  7. 11
      psdc-business/src/main/java/com/psdc/mapper/PsdcDeviceMapper.java
  8. 7
      psdc-business/src/main/java/com/psdc/mapper/PsdcElectricHtdataMapper.java
  9. 64
      psdc-business/src/main/java/com/psdc/mapper/PsdcStatisticsDayMapper.java
  10. 91
      psdc-business/src/main/java/com/psdc/mapper/PsdcStatisticsMonthMapper.java
  11. 85
      psdc-business/src/main/java/com/psdc/mapper/PsdcStatisticsYearMapper.java
  12. 29
      psdc-business/src/main/java/com/psdc/service/IPsdcElectricHtdataService.java
  13. 27
      psdc-business/src/main/java/com/psdc/service/impl/PsdcDeviceServiceImpl.java
  14. 121
      psdc-business/src/main/java/com/psdc/service/impl/PsdcElectricHtdataServiceImpl.java
  15. 5
      psdc-business/src/main/resources/mapper/business/PsdcDeviceMapper.xml
  16. 7
      psdc-business/src/main/resources/mapper/business/PsdcElectricHtdataMapper.xml
  17. 223
      psdc-business/src/main/resources/mapper/business/PsdcStatisticsDayMapper.xml
  18. 332
      psdc-business/src/main/resources/mapper/business/PsdcStatisticsMonthMapper.xml
  19. 165
      psdc-business/src/main/resources/mapper/business/PsdcStatisticsYearMapper.xml
  20. 11
      psdc-common/src/main/java/com/psdc/mqtt/MqttProviderConfig.java
  21. 51
      psdc-common/src/main/java/com/psdc/utils/bean/BeanUtils.java
  22. 22
      psdc-web/src/main/java/com/psdc/controller/control/ManualController.java
  23. 4
      psdc-web/src/main/java/com/psdc/controller/control/TimerController.java
  24. 2
      psdc-web/src/main/java/com/psdc/controller/evaluate/EnergyAnalysisController.java
  25. 4
      psdc-web/src/main/java/com/psdc/controller/evaluate/EnergyStatistics.java
  26. 96
      psdc-web/src/main/java/com/psdc/controller/evaluate/EnergyStatisticsController.java

@ -2,13 +2,20 @@ package com.psdc;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@SpringBootApplication()
@EnableScheduling
@EnableAsync
@EnableTransactionManagement
public class PsdcApplication {
public static void main(String[] args) {
public class PsdcApplication
{
public static void main(String[] args)
{
SpringApplication.run(PsdcApplication.class, args);
System.out.println("《= = = 系统启动成功 = = =》");
}

@ -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

@ -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 ;
}

@ -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 ;
}

@ -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 ;
}

@ -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;
}

@ -83,5 +83,16 @@ public interface PsdcDeviceMapper{
int updateDevRunStatusByDevId(@Param(value = "deviceId") Integer deviceId,
@Param(value = "runStatus") Integer runStatus);
/**
* 根据设备id查询设备名称
* @param deviceId
* @return
*/
String queryDeviceNameByDeviceId(Integer deviceId);
void saveDevicesData(@Param(value = "devRecord") List<PsdcDevice> devRecord);
}

@ -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<PsdcElectricHtdata> queryAllByLimit(PsdcElectricHtdata psdcElectricHtdata, @Param("pageable") Pageable pageable);
List<PsdcElectricHtdata> statisticalGroupByTime(String dateTime);
/**
* 统计总行数
*

@ -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<PsdcStatisticsDay> 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);
}

@ -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<PsdcStatisticsMonth> 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);
}

@ -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<PsdcStatisticsYear> 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);
}

@ -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<PsdcStatisticsDay> selectAllByListDay(EnergyStatisticsRequest energyStatisticsRequest);
/**
* 一月每天能耗统计数据
* @param energyStatisticsRequest 请求数据
* @return 一天每小时能耗数据
*/
List<PsdcStatisticsMonth> selectAllByListMonth(EnergyStatisticsRequest energyStatisticsRequest);
/**
* 一年每月能耗统计数据
* @param energyStatisticsRequest 请求数据
* @return 一天每小时能耗数据
*/
List<PsdcStatisticsYear> selectAllByListYear(EnergyStatisticsRequest energyStatisticsRequest);
void statisticalTask();
}

@ -12,16 +12,15 @@ import com.psdc.utils.SecurityUtils;
import com.psdc.utils.poi.ExcelUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.InputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@ -31,10 +30,10 @@ import static org.springframework.transaction.annotation.Propagation.REQUIRES_NE
@Slf4j
public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
@Autowired
@Resource
private PsdcDeviceMapper psdcDeviceMapper;
@Autowired
@Resource
private PsdcControlLogMapper psdcControlLogMapper;
/**
@ -50,8 +49,12 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
/**
* 根据用户id查询设备列表
<<<<<<< HEAD
* @return 设备列表
=======
*
* @return
>>>>>>> e7257650302fdf30d685bfae8df3cc0405bb51f6
*/
public List<PsdcDevice> queryByUserId() {
return psdcDeviceMapper.queryByUserId(SecurityUtils.getUserId());
@ -156,10 +159,16 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
/**
* 控制设备启动停止
<<<<<<< HEAD
* @param deviceId 主键
* @param runStatus 状态
* @return 条数
=======
*
* @param deviceId
* @param runStatus
* @return
>>>>>>> e7257650302fdf30d685bfae8df3cc0405bb51f6
*/
@Override
public int controlDeviceStartAndStop(Integer deviceId, Integer runStatus, String controlBy, Integer controlMethod) {
@ -170,6 +179,7 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
} else if (runStatus == 2) {
value = "停止";
}
log.info("设备id:{}", deviceId);
PsdcDevice psdcDevice = psdcDeviceMapper.queryById(deviceId);
@ -178,12 +188,13 @@ 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));
psdcControlLogMapper.insert(new PsdcControlLog(deviceId,psdcDevice.getDeviceName(), psdcDevice.getDeviceSn(), "设备启停", value, controlMethod, 2, "手动控制,控制成功", controlBy));
return psdcDeviceMapper.updateDevRunStatusByDevId(deviceId, runStatus);
}
@Override
@ -202,7 +213,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();

@ -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<PsdcStatisticsDay> 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<PsdcStatisticsMonth> selectAllByListMonth(EnergyStatisticsRequest energyStatisticsRequest) {
return psdcStatisticsMonthMapper.queryAllByLimit(energyStatisticsRequest);
}
/**
* 一年每月能耗统计数据
* @param energyStatisticsRequest 请求数据
* @return 一天每小时能耗数据
*/
public List<PsdcStatisticsYear> 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<PsdcElectricHtdata> 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());
}
}
//每月数据
//先
}
}

@ -293,4 +293,9 @@
update psdc_device set device_runstatus = #{runStatus} where device_id = #{deviceId}
</update>
<!-- 根据设备id查询设备名称-->
<select id="queryDeviceNameByDeviceId" resultType="string">
select device_name from psdc_device where device_id = #{deviceId}
</select>
</mapper>

@ -237,6 +237,13 @@
limit #{pageable.offset}, #{pageable.pageSize}
</select>
<select id="statisticalGroupByTime" resultMap="PsdcElectricHtdataMap">
select device_id,SUM(use_deiffen) as use_deiffen ,DATE_FORMAT(update_time,'%Y-%m-%d') as update_time
FROM psdc_electric_htdata
where DATE_FORMAT(update_time,'%Y-%m-%d') = #{dateTime}
GROUP BY device_id
</select>
<!--统计总行数-->
<select id="count" resultType="java.lang.Long">
select count(1)

@ -0,0 +1,223 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.psdc.mapper.PsdcStatisticsDayMapper">
<resultMap type="com.psdc.entity.PsdcStatisticsDay" id="PsdcStatisticsDayMap">
<result property="dayId" column="day_id" />
<result property="dayDate" column="day_date" />
<result property="deviceId" column="device_id" />
<result property="deviceName" column="device_name" />
<result property="hour00" column="hour_00" />
<result property="hour01" column="hour_01" />
<result property="hour02" column="hour_02" />
<result property="hour03" column="hour_03" />
<result property="hour04" column="hour_04" />
<result property="hour05" column="hour_05" />
<result property="hour06" column="hour_06" />
<result property="hour07" column="hour_07" />
<result property="hour08" column="hour_08" />
<result property="hour09" column="hour_09" />
<result property="hour10" column="hour_10" />
<result property="hour11" column="hour_11" />
<result property="hour12" column="hour_12" />
<result property="hour13" column="hour_13" />
<result property="hour14" column="hour_14" />
<result property="hour15" column="hour_15" />
<result property="hour16" column="hour_16" />
<result property="hour17" column="hour_17" />
<result property="hour18" column="hour_18" />
<result property="hour19" column="hour_19" />
<result property="hour20" column="hour_20" />
<result property="hour21" column="hour_21" />
<result property="hour22" column="hour_22" />
<result property="hour23" column="hour_23" />
</resultMap>
<!-- 通过ID查询单条数据 -->
<select id="queryById" resultMap="PsdcStatisticsDayMap">
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}
</select>
<!--分页查询指定行数据-->
<select id="queryAllByLimit" resultMap="PsdcStatisticsDayMap">
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>
<if test="deviceId != null and deviceId != ''">
and device_id = #{deviceId}
</if>
<if test="startTime != null and startTime != ''"><!-- 开始时间检索 -->
AND date_format(day_date,'%Y-%m-%d') &gt;= #{startTime}
</if>
<if test="endTime != null and endTime != ''"><!-- 结束时间检索 -->
AND date_format(day_date,'%Y-%m-%d') &lt;= #{endTime}
</if>
</where>
</select>
<!--新增数据-->
<insert id="insert" >
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>
<insert id="insertDay" >
Insert into psdc_statistics_day(
day_date,
device_id,
device_name
<if test="hour00 != null and hour00 != 0">,hour_00,</if>
<if test="hour01 != null and hour01 != 0">hour_01,</if>
<if test="hour02 != null and hour02 != 0">hour_02,</if>
<if test="hour03 != null and hour03 != 0">hour_03,</if>
<if test="hour04 != null and hour04 != 0">hour_04,</if>
<if test="hour05 != null and hour05 != 0">hour_05,</if>
<if test="hour06 != null and hour06 != 0">hour_06,</if>
<if test="hour07 != null and hour07 != 0">hour_07,</if>
<if test="hour08 != null and hour08 != 0">hour_08,</if>
<if test="hour09 != null and hour09 != 0">hour_09,</if>
<if test="hour10 != null and hour10 != 0">hour_10,</if>
<if test="hour11 != null and hour11 != 0">hour_11,</if>
<if test="hour12 != null and hour12 != 0">hour_12,</if>
<if test="hour13 != null and hour13 != 0">hour_13,</if>
<if test="hour14 != null and hour14 != 0">hour_14,</if>
<if test="hour15 != null and hour15 != 0">hour_15,</if>
<if test="hour16 != null and hour16 != 0">hour_16,</if>
<if test="hour17 != null and hour17 != 0">hour_17,</if>
<if test="hour18 != null and hour18 != 0">hour_18,</if>
<if test="hour19 != null and hour19 != 0">hour_19,</if>
<if test="hour20 != null and hour20 != 0">hour_20,</if>
<if test="hour21 != null and hour21 != 0">hour_21,</if>
<if test="hour22 != null and hour22 != 0">hour_22,</if>
<if test="hour23 != null and hour23 != 0">hour_23,</if>
)values(
#{dayDate},
#{deviceId},
#{deviceName}
<if test="hour00 != null and hour00 != 0">,#{hour00},</if>
<if test="hour01 != null and hour01 != 0">#{hour01},</if>
<if test="hour02 != null and hour02 != 0">#{hour02},</if>
<if test="hour03 != null and hour03 != 0">#{hour03},</if>
<if test="hour04 != null and hour04 != 0">#{hour04},</if>
<if test="hour05 != null and hour05 != 0">#{hour05},</if>
<if test="hour06 != null and hour06 != 0">#{hour06},</if>
<if test="hour07 != null and hour07 != 0">#{hour07},</if>
<if test="hour08 != null and hour08 != 0">#{hour08},</if>
<if test="hour09 != null and hour09 != 0">#{hour09},</if>
<if test="hour10 != null and hour10 != 0">#{hour10},</if>
<if test="hour11 != null and hour11 != 0">#{hour11},</if>
<if test="hour12 != null and hour12 != 0">#{hour12},</if>
<if test="hour13 != null and hour13 != 0">#{hour13},</if>
<if test="hour14 != null and hour14 != 0">#{hour14},</if>
<if test="hour15 != null and hour15 != 0">#{hour15},</if>
<if test="hour16 != null and hour16 != 0">#{hour16},</if>
<if test="hour17 != null and hour17 != 0">#{hour17},</if>
<if test="hour18 != null and hour18 != 0">#{hour18},</if>
<if test="hour19 != null and hour19 != 0">#{hour19},</if>
<if test="hour20 != null and hour20 != 0">#{hour20},</if>
<if test="hour21 != null and hour21 != 0">#{hour21},</if>
<if test="hour22 != null and hour22 != 0">#{hour22},</if>
<if test="hour23 != null and hour23 != 0">#{hour23},</if>
)
</insert>
<!-- 更新数据 -->
<update id="update">
update psdc_statistics_day
<set>
<if test="day_date != null and day_date != ''">
day_date = #{dayDate},
</if>
<if test="deviceId != null and deviceId != ''">
device_id = #{deviceId},
</if>
<if test="deviceName != null and deviceName != ''">
device_name = #{deviceName},
</if>
<if test="hour00 != null and hour00 != ''">
hour_00 = #{hour00},
</if>
<if test="hour01 != null and hour01 != ''">
hour_01 = #{hour01},
</if>
<if test="hour02 != null and hour02 != ''">
hour_02 = #{hour02},
</if>
<if test="hour03 != null and hour03 != ''">
hour_03 = #{hour03},
</if>
<if test="hour04 != null and hour04 != ''">
hour_04 = #{hour04},
</if>
<if test="hour05 != null and hour05 != ''">
hour_05 = #{hour05},
</if>
<if test="hour06 != null and hour06 != ''">
hour_06 = #{hour06},
</if>
<if test="hour07 != null and hour07 != ''">
hour_07 = #{hour07},
</if>
<if test="hour08 != null and hour08 != ''">
hour_08 = #{hour08},
</if>
<if test="hour09 != null and hour09 != ''">
hour_09 = #{hour09},
</if>
<if test="hour10 != null and hour10 != ''">
hour_10 = #{hour10},
</if>
<if test="hour11 != null and hour11 != ''">
hour_11 = #{hour11},
</if>
<if test="hour12 != null and hour12 != ''">
hour_12 = #{hour12},
</if>
<if test="hour13 != null and hour13 != ''">
hour_13 = #{hour13},
</if>
<if test="hour14 != null and hour14 != ''">
hour_14 = #{hour14},
</if>
<if test="hour15 != null and hour15 != ''">
hour_15 = #{hour15},
</if>
<if test="hour16 != null and hour16 != ''">
hour_16 = #{hour16},
</if>
<if test="hour17 != null and hour17 != ''">
hour_17 = #{hour17},
</if>
<if test="hour18 != null and hour18 != ''">
hour_18 = #{hour18},
</if>
<if test="hour19 != null and hour19 != ''">
hour_19 = #{hour19},
</if>
<if test="hour20 != null and hour20 != ''">
hour_20 = #{hour20},
</if>
<if test="hour21 != null and hour21 != ''">
hour_21 = #{hour21},
</if>
<if test="hour22 != null and hour22 != ''">
hour_22 = #{hour22},
</if>
<if test="hour23 != null and hour23 != ''">
hour_23 = #{hour23},
</if>
</set>
where day_id = #{dayId}
</update>
<!--通过主键删除-->
<delete id="deleteById">
delete from psdc_statistics_day where day_id = #{dayId}
</delete>
</mapper>

@ -0,0 +1,332 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.psdc.mapper.PsdcStatisticsMonthMapper">
<resultMap type="com.psdc.entity.PsdcStatisticsMonth" id="PsdcStatisticsMonthMap">
<result property="monthId" column="month_id"/>
<result property="deviceId" column="device_id"/>
<result property="deviceName" column="device_name"/>
<result property="monthDate" column="month_date"/>
<result property="day01" column="day_01"/>
<result property="day02" column="day_02"/>
<result property="day03" column="day_03"/>
<result property="day04" column="day_04"/>
<result property="day05" column="day_05"/>
<result property="day06" column="day_06"/>
<result property="day07" column="day_07"/>
<result property="day08" column="day_08"/>
<result property="day09" column="day_09"/>
<result property="day10" column="day_10"/>
<result property="day11" column="day_11"/>
<result property="day12" column="day_12"/>
<result property="day13" column="day_13"/>
<result property="day14" column="day_14"/>
<result property="day15" column="day_15"/>
<result property="day16" column="day_16"/>
<result property="day17" column="day_17"/>
<result property="day18" column="day_18"/>
<result property="day19" column="day_19"/>
<result property="day20" column="day_20"/>
<result property="day21" column="day_21"/>
<result property="day22" column="day_22"/>
<result property="day23" column="day_23"/>
<result property="day24" column="day_24"/>
<result property="day25" column="day_25"/>
<result property="day26" column="day_26"/>
<result property="day27" column="day_27"/>
<result property="day28" column="day_28"/>
<result property="day29" column="day_29"/>
<result property="day30" column="day_30"/>
<result property="day31" column="day_31"/>
</resultMap>
<!-- 通过ID查询单条数据 -->
<select id="queryById" resultMap="PsdcStatisticsMonthMap">
select 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
from psdc_statistics_month
where month_id = #{monthId}
</select>
<!--分页查询指定行数据-->
<select id="queryAllByLimit" resultMap="PsdcStatisticsMonthMap">
select
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
from psdc_statistics_month
<where>
<if test="deviceId != null and deviceId != ''">
and device_id = #{deviceId}
</if>
<!-- 开始时间检索 -->
<if test="startTime != null and startTime != ''">
AND date_format(monthDate,'%Y-%m') &gt;= #{startTime}
</if>
<!-- 结束时间检索 -->
<if test="endTime != null and endTime != ''">
AND date_format(monthDate,'%Y-%m') &lt;= #{endTime}
</if>
</where>
</select>
<insert id="insertMonth">
Insert into psdc_statistics_month(
month_date,
device_id,
device_name
<if test="day01 != null and day01 != 0">,day_01,</if>
<if test="day02 != null and day02 != 0">day_02,</if>
<if test="day03 != null and day03 != 0">day_03,</if>
<if test="day04 != null and day04 != 0">day_04,</if>
<if test="day05 != null and day05 != 0">day_05,</if>
<if test="day06 != null and day06 != 0">day_06,</if>
<if test="day07 != null and day07 != 0">day_07,</if>
<if test="day08 != null and day08 != 0">day_08,</if>
<if test="day09 != null and day09 != 0">day_09,</if>
<if test="day10 != null and day10 != 0">day_10,</if>
<if test="day11 != null and day11 != 0">day_11,</if>
<if test="day12 != null and day12 != 0">day_12,</if>
<if test="day13 != null and day13 != 0">day_13,</if>
<if test="day14 != null and day14 != 0">day_14,</if>
<if test="day15 != null and day15 != 0">day_15,</if>
<if test="day16 != null and day16 != 0">day_16,</if>
<if test="day17 != null and day17 != 0">day_17,</if>
<if test="day18 != null and day18 != 0">day_18,</if>
<if test="day19 != null and day19 != 0">day_19,</if>
<if test="day20 != null and day20 != 0">day_20,</if>
<if test="day21 != null and day21 != 0">day_21,</if>
<if test="day22 != null and day22 != 0">day_22,</if>
<if test="day23 != null and day23 != 0">day_23,</if>
<if test="day24 != null and day24 != 0">day_24,</if>
<if test="day25 != null and day25 != 0">day_25,</if>
<if test="day26 != null and day26 != 0">day_26,</if>
<if test="day27 != null and day27 != 0">day_27,</if>
<if test="day28 != null and day28 != 0">day_28,</if>
<if test="day29 != null and day29 != 0">day_29,</if>
<if test="day30 != null and day30 != 0">day_30,</if>
<if test="day31 != null and day31 != 0">day_31,</if>
)values(
#{monthDate},
#{deviceId},
#{deviceName}
<if test="day01 != null and day01 != 0">,#{day01},</if>
<if test="day02 != null and day02 != 0">#{day02},</if>
<if test="day03 != null and day03 != 0">#{day03},</if>
<if test="day04 != null and day04 != 0">#{day04},</if>
<if test="day05 != null and day05 != 0">#{day05},</if>
<if test="day06 != null and day06 != 0">#{day06},</if>
<if test="day07 != null and day07 != 0">#{day07},</if>
<if test="day08 != null and day08 != 0">#{day08},</if>
<if test="day09 != null and day09 != 0">#{day09},</if>
<if test="day10 != null and day10 != 0">#{day10},</if>
<if test="day11 != null and day11 != 0">#{day11},</if>
<if test="day12 != null and day12 != 0">#{day12},</if>
<if test="day13 != null and day13 != 0">#{day13},</if>
<if test="day14 != null and day14 != 0">#{day14},</if>
<if test="day15 != null and day15 != 0">#{day15},</if>
<if test="day16 != null and day16 != 0">#{day16},</if>
<if test="day17 != null and day17 != 0">#{day17},</if>
<if test="day18 != null and day18 != 0">#{day18},</if>
<if test="day19 != null and day19 != 0">#{day19},</if>
<if test="day20 != null and day20 != 0">#{day20},</if>
<if test="day21 != null and day21 != 0">#{day21},</if>
<if test="day22 != null and day22 != 0">#{day22},</if>
<if test="day23 != null and day23 != 0">#{day23},</if>
<if test="day24 != null and day24 != 0">#{day24},</if>
<if test="day25 != null and day25 != 0">#{day25},</if>
<if test="day26 != null and day26 != 0">#{day26},</if>
<if test="day27 != null and day27 != 0">#{day27},</if>
<if test="day28 != null and day28 != 0">#{day28},</if>
<if test="day29 != null and day29 != 0">#{day29},</if>
<if test="day30 != null and day30 != 0">#{day30},</if>
<if test="day31 != null and day31 != 0">#{day31},</if>
)
</insert>
<!--新增数据-->
<insert id="insert" useGeneratedKeys = 'true' keyProperty="monthId">
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})
</insert>
<!-- 更新数据 -->
<update id="updatePoint">
update psdc_statistics_month
set ${monthPoint} = #{value}
where month_id = #{monthId};
</update>
<!-- 更新数据 -->
<update id="update">
update psdc_statistics_month
<set>
<if test="monthId != null and monthId != ''">
month_id = #{monthId},
</if>
<if test="deviceId != null and deviceId != ''">
device_id = #{deviceId},
</if>
<if test="deviceName != null and deviceName != ''">
device_name = #{deviceName},
</if>
<if test="month_date != null and month_date != ''">
month_date = #{monthDate},
</if>
<if test="day01 != null and day01 != ''">
day_01 = #{day01},
</if>
<if test="day02 != null and day02 != ''">
day_02 = #{day02},
</if>
<if test="day03 != null and day03 != ''">
day_03 = #{day03},
</if>
<if test="day04 != null and day04 != ''">
day_04 = #{day04},
</if>
<if test="day05 != null and day05 != ''">
day_05 = #{day05},
</if>
<if test="day06 != null and day06 != ''">
day_06 = #{day06},
</if>
<if test="day07 != null and day07 != ''">
day_07 = #{day07},
</if>
<if test="day08 != null and day08 != ''">
day_08 = #{day08},
</if>
<if test="day09 != null and day09 != ''">
day_09 = #{day09},
</if>
<if test="day10 != null and day10 != ''">
day_10 = #{day10},
</if>
<if test="day11 != null and day11 != ''">
day_11 = #{day11},
</if>
<if test="day12 != null and day12 != ''">
day_12 = #{day12},
</if>
<if test="day13 != null and day13 != ''">
day_13 = #{day13},
</if>
<if test="day14 != null and day14 != ''">
day_14 = #{day14},
</if>
<if test="day15 != null and day15 != ''">
day_15 = #{day15},
</if>
<if test="day16 != null and day16 != ''">
day_16 = #{day16},
</if>
<if test="day17 != null and day17 != ''">
day_17 = #{day17},
</if>
<if test="day18 != null and day18 != ''">
day_18 = #{day18},
</if>
<if test="day19 != null and day19 != ''">
day_19 = #{day19},
</if>
<if test="day20 != null and day20 != ''">
day_20 = #{day20},
</if>
<if test="day21 != null and day21 != ''">
day_21 = #{day21},
</if>
<if test="day22 != null and day22 != ''">
day_22 = #{day22},
</if>
<if test="day23 != null and day23 != ''">
day_23 = #{day23},
</if>
<if test="day24 != null and day24 != ''">
day_24 = #{day24},
</if>
<if test="day25 != null and day25 != ''">
day_25 = #{day25},
</if>
<if test="day26 != null and day26 != ''">
day_26 = #{day26},
</if>
<if test="day27 != null and day27 != ''">
day_27 = #{day27},
</if>
<if test="day28 != null and day28 != ''">
day_28 = #{day28},
</if>
<if test="day29 != null and day29 != ''">
day_29 = #{day29},
</if>
<if test="day30 != null and day30 != ''">
day_30 = #{day30},
</if>
<if test="day31 != null and day31 != ''">
day_31 = #{day31},
</if>
</set>
where month_id = #{monthId}
</update>
<!--通过主键删除-->
<delete id="deleteById">
delete
from psdc_statistics_month
where month_id = #{monthId}
</delete>
<!-- 根据设备id和日期查询-->
<select id="queryByDeviceIdAndDate" resultMap="PsdcStatisticsMonthMap">
select * from psdc_statistics_month where device_id = #{deviceId} and date_format(month_date,'%Y-%m') = #{date}
</select>
<!-- 算一行数据总和-->
<select id="queryOneLineSum" resultType="double">
select ifnull(day_01,0.0) + ifnull(day_02,0.0) + ifnull(day_03,0.0) + ifnull(day_04,0.0) + ifnull(day_05,0.0) +
ifnull(day_06,0.0) + ifnull(day_07,0.0) + ifnull(day_08,0.0) + ifnull(day_09,0.0) + ifnull(day_10,0.0) +
ifnull(day_11,0.0) + ifnull(day_12,0.0) + ifnull(day_13,0.0) + ifnull(day_14,0.0) + ifnull(day_15,0.0) +
ifnull(day_16,0.0) + ifnull(day_17,0.0) + ifnull(day_18,0.0) + ifnull(day_19,0.0) + ifnull(day_20,0.0) +
ifnull(day_21,0.0) + ifnull(day_22,0.0) + ifnull(day_23,0.0) + ifnull(day_24,0.0) + ifnull(day_25,0.0) +
ifnull(day_26,0.0) + ifnull(day_27,0.0) + ifnull(day_28,0.0) + ifnull(day_29,0.0) + ifnull(day_30,0.0) +
ifnull(day_31,0.0) as total from psdc_statistics_month where device_id = #{deviceId} and date_format(month_date,'%Y-%m') = #{date}
</select>
</mapper>

@ -0,0 +1,165 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.psdc.mapper.PsdcStatisticsYearMapper">
<resultMap type="com.psdc.entity.PsdcStatisticsYear" id="PsdcStatisticsYearMap">
<result property="yearId" column="year_id" />
<result property="deviceId" column="device_id" />
<result property="deviceName" column="device_name" />
<result property="yearDate" column="year_date" />
<result property="month01" column="month_01" />
<result property="month02" column="month_02" />
<result property="month03" column="month_03" />
<result property="month04" column="month_04" />
<result property="month05" column="month_05" />
<result property="month06" column="month_06" />
<result property="month07" column="month_07" />
<result property="month08" column="month_08" />
<result property="month09" column="month_09" />
<result property="month10" column="month_10" />
<result property="month11" column="month_11" />
<result property="month12" column="month_12" />
</resultMap>
<!-- 通过ID查询单条数据 -->
<select id="queryById" resultMap="PsdcStatisticsYearMap">
select
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
from psdc_statistics_year
where year_id = #{yearId}
</select>
<!--分页查询指定行数据-->
<select id="queryAllByLimit" resultMap="PsdcStatisticsYearMap">
select
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
from psdc_statistics_year
<where>
<if test="deviceId != null and deviceId != ''">
and device_id = #{deviceId}
</if>
<!-- 开始时间检索 -->
<if test="startTime != null and startTime != ''">
AND date_format(year_date,'%Y') &gt;= #{startTime}
</if>
<!-- 结束时间检索 -->
<if test="endTime != null and endTime != ''">
AND date_format(year_date,'%Y') &lt;= #{endTime}
</if>
</where>
</select>
<!--新增数据-->
<insert id="insert" useGeneratedKeys = 'true' keyProperty="yearId" >
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>
<insert id="insertYear" useGeneratedKeys = 'true' keyProperty="yearId">
Insert into psdc_statistics_year(
year_date,
device_id,
device_name
<if test="month01 != null and month01 != 0">,month_01,</if>
<if test="month02 != null and month02 != 0">month_02,</if>
<if test="month03 != null and month03 != 0">month_03,</if>
<if test="month04 != null and month04 != 0">month_04,</if>
<if test="month05 != null and month05 != 0">month_05,</if>
<if test="month06 != null and month06 != 0">month_06,</if>
<if test="month07 != null and month07 != 0">month_07,</if>
<if test="month08 != null and month08 != 0">month_08,</if>
<if test="month09 != null and month09 != 0">month_09,</if>
<if test="month10 != null and month10 != 0">month_10,</if>
<if test="month11 != null and month11 != 0">month_11,</if>
<if test="month12 != null and month12 != 0">month_12,</if>
)values(
#{yearDate},
#{deviceId},
#{deviceName}
<if test="month01 != null and month01 != 0">,#{month01},</if>
<if test="month02 != null and month02 != 0">#{month02},</if>
<if test="month03 != null and month03 != 0">#{month03},</if>
<if test="month04 != null and month04 != 0">#{month04},</if>
<if test="month05 != null and month05 != 0">#{month05},</if>
<if test="month06 != null and month06 != 0">#{month06},</if>
<if test="month07 != null and month07 != 0">#{month07},</if>
<if test="month08 != null and month08 != 0">#{month08},</if>
<if test="month09 != null and month09 != 0">#{month09},</if>
<if test="month10 != null and month10 != 0">#{month10},</if>
<if test="month11 != null and month11 != 0">#{month11},</if>
<if test="month12 != null and month12 != 0">#{month12},</if>
)
</insert>
<!-- 更新数据 -->
<update id="update">
update psdc_statistics_year
<set>
<if test="deviceId != null and deviceId != ''">
device_id = #{deviceId},
</if>
<if test="deviceName != null and deviceName != ''">
device_name = #{deviceName},
</if>
<if test="year_date != null and year_date != ''">
year_date = #{yearDate},
</if>
<if test="month01 != null and month01 != ''">
month_01 = #{month01},
</if>
<if test="month02 != null and month02 != ''">
month_02 = #{month02},
</if>
<if test="month03 != null and month03 != ''">
month_03 = #{month03},
</if>
<if test="month04 != null and month04 != ''">
month_04 = #{month04},
</if>
<if test="month05 != null and month05 != ''">
month_05 = #{month05},
</if>
<if test="month06 != null and month06 != ''">
month_06 = #{month06},
</if>
<if test="month07 != null and month07 != ''">
month_07 = #{month07},
</if>
<if test="month08 != null and month08 != ''">
month_08 = #{month08},
</if>
<if test="month09 != null and month09 != ''">
month_09 = #{month09},
</if>
<if test="month10 != null and month10 != ''">
month_10 = #{month10},
</if>
<if test="month11 != null and month11 != ''">
month_11 = #{month11},
</if>
<if test="month12 != null and month12 != ''">
month_12 = #{month12},
</if>
</set>
where year_id = #{yearId}
</update>
<!-- 更新固定点位数据-->
<update id="updatePoint" >
update psdc_statistics_year
set ${yearPoint} = #{value}
where year_id = #{yearId};
</update>
<!--通过主键删除-->
<delete id="deleteById">
delete from psdc_statistics_year where year_id = #{yearId}
</delete>
<!-- 根据设备id和日期查询-->
<select id="queryByDeviceIdAndDate" resultMap="PsdcStatisticsYearMap">
select * from psdc_statistics_year where device_id = #{deviceId} and date_format(year_date,'%Y-%m') = #{date}
</select>
</mapper>

@ -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);

@ -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<String> 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();
}
}
}

@ -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")

@ -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;

@ -1,4 +1,4 @@
package com.psdc.controller.evaluate;
public class EnergyAnalysis {
public class EnergyAnalysisController {
}

@ -1,4 +0,0 @@
package com.psdc.controller.evaluate;
public class EnergyStatistics {
}

@ -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<PsdcStatisticsDay> list = psdcElectricHtdataService.selectAllByListDay(energyStatisticsRequest);
return getDataTable(list);
} else if ( energyStatisticsRequest.getTimeType() == 2) {
log.info("月");
List<PsdcStatisticsMonth> list = psdcElectricHtdataService.selectAllByListMonth(energyStatisticsRequest);
return getDataTable(list);
} else if ( energyStatisticsRequest.getTimeType() == 3){
log.info("年");
List<PsdcStatisticsYear> 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<PsdcStatisticsDay> list = psdcElectricHtdataService.selectAllByListDay(energyStatisticsRequest);
ExcelUtil<PsdcStatisticsDay> psdcStatisticsDayExcelUtil = new ExcelUtil<>(PsdcStatisticsDay.class);
psdcStatisticsDayExcelUtil.exportExcel(response, list, "今日每小时数据");
} else if ( energyStatisticsRequest.getTimeType() == 2) {
log.info("月");
List<PsdcStatisticsMonth> list = psdcElectricHtdataService.selectAllByListMonth(energyStatisticsRequest);
ExcelUtil<PsdcStatisticsMonth> psdcStatisticsMonthExcelUtil = new ExcelUtil<>(PsdcStatisticsMonth.class);
psdcStatisticsMonthExcelUtil.exportExcel(response, list, "本月每天数据");
} else if ( energyStatisticsRequest.getTimeType() == 3){
log.info("年");
List<PsdcStatisticsYear> list = psdcElectricHtdataService.selectAllByListYear(energyStatisticsRequest);
ExcelUtil<PsdcStatisticsYear> 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;
}
}
Loading…
Cancel
Save