DYL
2025-02-10 3ef2e9d87847763b7b2cae55fe52f75d5ef7f65f
电能负荷分析
已删除7个文件
已修改5个文件
585 ■■■■■ 文件已修改
zhitan-admin/src/main/java/com/zhitan/web/controller/energyMonitor/ElectricLoadController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/energyMonitor/domain/ElectricLoadEntity.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/energyMonitor/domain/EnergyUnitToDevice.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/energyMonitor/mapper/ElectricLoadMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/energyMonitor/mapper/EnergyUnitToDeviceMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/energyMonitor/service/IElectricLoadService.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/energyMonitor/service/IEnergyUnitToDeviceService.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/energyMonitor/service/impl/ElectricLoadServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/energyMonitor/service/impl/EnergyUnitToDeviceServiceImpl.java 232 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/model/domain/EnergyIndex.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/model/service/impl/EnergyIndexServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/resources/mapper/energyMonitor/ElectricLoadMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/src/main/java/com/zhitan/web/controller/energyMonitor/ElectricLoadController.java
@@ -4,10 +4,8 @@
import com.zhitan.common.constant.CommonConst;
import com.zhitan.common.core.controller.BaseController;
import com.zhitan.common.core.domain.AjaxResult;
import com.zhitan.energyMonitor.domain.EnergyUnitToDevice;
import com.zhitan.energyMonitor.domain.vo.ListElectricLoadVO;
import com.zhitan.energyMonitor.service.IElectricLoadService;
import com.zhitan.energyMonitor.service.IEnergyUnitToDeviceService;
import com.zhitan.model.domain.EnergyIndex;
import com.zhitan.model.service.IEnergyIndexService;
import io.swagger.annotations.Api;
@@ -31,8 +29,6 @@
@Slf4j
public class ElectricLoadController extends BaseController {
    @Autowired
    private IEnergyUnitToDeviceService energyUnitToDeviceService;
    @Autowired
    private IElectricLoadService electricLoadService;
    @Autowired
    private IEnergyIndexService energyIndexService;
@@ -40,23 +36,21 @@
    /**
     * æ ¹æ®ç”µè¡¨id获取负荷分析数据
     *
     * @param energyUnitId ç”¨èƒ½å•å…ƒid
     * @param meterId      ç”µè¡¨id
     * @param timeType     æ—¶é—´ç±»åž‹ DAY/MONTH/YEAR
     * @param timeCode     æ—¶é—´å€¼ ä¸Žæ—¶é—´ç±»åž‹å¯¹åº”:2022-03-21/2022-03/2022
     * @return
     * @param nodeId   ç”¨èƒ½å•å…ƒid
     * @param meterId  ç”µè¡¨id
     * @param timeType æ—¶é—´ç±»åž‹ DAY/MONTH/YEAR
     * @param timeCode æ—¶é—´å€¼ ä¸Žæ—¶é—´ç±»åž‹å¯¹åº”:2022-03-21/2022-03/2022
     */
    @Log(title = "根据电表id获取负荷分析数据")
    @ApiOperation(value = "根据电表id获取负荷分析数据", notes = "根据电表id获取负荷分析数据")
    @GetMapping(value = "/detail")
    public AjaxResult list(@RequestParam(name = "energyUnitId") String energyUnitId,
    public AjaxResult list(@RequestParam(name = "nodeId") String nodeId,
                           @RequestParam(name = "meterId") String meterId,
                           @RequestParam(name = "timeType") String timeType,
                           @RequestParam(name = "timeCode") String timeCode) {
        EnergyIndex energyIndex = energyIndexService.getDeviceIndexByCode(energyUnitId, meterId, CommonConst.TAG_CODE_ZYGGL);
        EnergyIndex energyIndex = energyIndexService.getDeviceIndexByCode(nodeId, meterId, CommonConst.TAG_CODE_ZYGGL);
        EnergyUnitToDevice energyUnitToDevice = energyUnitToDeviceService.getEnergyUnitToDeviceById(energyUnitId, meterId);
        ListElectricLoadVO vo = electricLoadService.list(timeType, timeCode, energyIndex, energyUnitToDevice);
        ListElectricLoadVO vo = electricLoadService.list(timeType, timeCode, energyIndex);
        return AjaxResult.success(vo);
    }
zhitan-system/src/main/java/com/zhitan/energyMonitor/domain/ElectricLoadEntity.java
ÎļþÒÑɾ³ý
zhitan-system/src/main/java/com/zhitan/energyMonitor/domain/EnergyUnitToDevice.java
ÎļþÒÑɾ³ý
zhitan-system/src/main/java/com/zhitan/energyMonitor/mapper/ElectricLoadMapper.java
ÎļþÒÑɾ³ý
zhitan-system/src/main/java/com/zhitan/energyMonitor/mapper/EnergyUnitToDeviceMapper.java
ÎļþÒÑɾ³ý
zhitan-system/src/main/java/com/zhitan/energyMonitor/service/IElectricLoadService.java
@@ -1,8 +1,5 @@
package com.zhitan.energyMonitor.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhitan.energyMonitor.domain.ElectricLoadEntity;
import com.zhitan.energyMonitor.domain.EnergyUnitToDevice;
import com.zhitan.energyMonitor.domain.vo.ListElectricLoadVO;
import com.zhitan.model.domain.EnergyIndex;
@@ -12,15 +9,10 @@
 * @Date: 2022-04-19
 * @Version: V1.0
 */
public interface IElectricLoadService extends IService<ElectricLoadEntity> {
public interface IElectricLoadService {
    /**
     * èŽ·å–è´Ÿè·åˆ†æžæ•°æ®
     *
     * @param timeType
     * @param timeCode
     * @param energyIndex
     * @return
     */
    ListElectricLoadVO list(String timeType, String timeCode, EnergyIndex energyIndex, EnergyUnitToDevice energyUnitToDevice);
    ListElectricLoadVO list(String timeType, String timeCode, EnergyIndex energyIndex);
}
zhitan-system/src/main/java/com/zhitan/energyMonitor/service/IEnergyUnitToDeviceService.java
ÎļþÒÑɾ³ý
zhitan-system/src/main/java/com/zhitan/energyMonitor/service/impl/ElectricLoadServiceImpl.java
@@ -1,7 +1,8 @@
package com.zhitan.energyMonitor.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhitan.basicdata.domain.MeterImplement;
import com.zhitan.basicdata.mapper.MeterImplementMapper;
import com.zhitan.common.constant.CommonConst;
import com.zhitan.common.constant.TimeTypeConst;
import com.zhitan.common.enums.CollectionModes;
@@ -10,12 +11,9 @@
import com.zhitan.common.utils.DateTimeUtil;
import com.zhitan.common.utils.DoubleUtil;
import com.zhitan.common.utils.StringUtil;
import com.zhitan.energyMonitor.domain.ElectricLoadEntity;
import com.zhitan.energyMonitor.domain.EnergyUnitToDevice;
import com.zhitan.energyMonitor.domain.vo.ListElectricLoadDetail;
import com.zhitan.energyMonitor.domain.vo.ListElectricLoadItem;
import com.zhitan.energyMonitor.domain.vo.ListElectricLoadVO;
import com.zhitan.energyMonitor.mapper.ElectricLoadMapper;
import com.zhitan.energyMonitor.service.IElectricLoadService;
import com.zhitan.model.domain.EnergyIndex;
import com.zhitan.realtimedata.domain.TagValue;
@@ -26,6 +24,7 @@
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -37,12 +36,14 @@
 * @Version: V1.0
 */
@Service
public class ElectricLoadServiceImpl extends ServiceImpl<ElectricLoadMapper, ElectricLoadEntity> implements IElectricLoadService {
public class ElectricLoadServiceImpl implements IElectricLoadService {
    @Autowired
    private RealtimeDatabaseService realtimeDatabaseService;
    @Resource
    private MeterImplementMapper meterImplementMapper;
    @Override
    public ListElectricLoadVO list(String timeType, String timeCode, EnergyIndex energyIndex, EnergyUnitToDevice energyUnitToDevice) {
    public ListElectricLoadVO list(String timeType, String timeCode, EnergyIndex energyIndex) {
        ListElectricLoadVO vo = new ListElectricLoadVO();
        List<ListElectricLoadItem> itemList = new ArrayList<>();
        vo.setItemList(itemList);
@@ -54,16 +55,19 @@
        detail.setAvg(CommonConst.DOUBLE_MINUS_SIGN);
        detail.setRate(CommonConst.DOUBLE_MINUS_SIGN);
        vo.setDetail(detail);
        if (ObjectUtil.isEmpty(energyIndex) || ObjectUtil.isEmpty(energyUnitToDevice)) {
        MeterImplement meterImplement = meterImplementMapper.selectById(energyIndex.getMeterId());
        if (ObjectUtil.isEmpty(meterImplement)) {
            return vo;
        }
        List<Date> dateList = new ArrayList<>();
        ChartUtils.generateDateList(timeType, timeCode, dateList);
        // å› ä¸ºinfluxdb没有按照月分组取数据,只能按照日期循环取数据
        if (TimeTypeConst.TIME_TYPE_YEAR.equals(timeType)) {
            getYearData(timeType, dateList, energyIndex, energyUnitToDevice, detail, itemList);
            getYearData(timeType, dateList, energyIndex, meterImplement.getMeterName(), itemList);
        } else {
            getDayAndMonthData(timeType, timeCode, energyIndex, energyUnitToDevice, detail, itemList);
            getDayAndMonthData(timeType, timeCode, energyIndex, meterImplement.getMeterName(), itemList);
        }
        if (!StringUtil.isEmptyOrNull(energyIndex.getCode())) {
            Date start = ChartUtils.getDateTime(timeType, timeCode);
@@ -113,15 +117,8 @@
    /**
     * èŽ·å–æœˆå’Œå¤©æ•°æ®,因为influxdb可以按照分。时。天分组取数,不可以按照月分组取数,所以分成两个方法来写
     *
     * @param timeType
     * @param timeCode
     * @param energyIndex
     * @param energyUnitToDevice
     * @param detail
     * @param itemList
     */
    private void getDayAndMonthData(String timeType, String timeCode, EnergyIndex energyIndex, EnergyUnitToDevice energyUnitToDevice, ListElectricLoadDetail detail, List<ListElectricLoadItem> itemList) {
    private void getDayAndMonthData(String timeType, String timeCode, EnergyIndex energyIndex, String meterName, List<ListElectricLoadItem> itemList) {
        String tagCodes = energyIndex.getCode();
        List<TagValue> maxList = new ArrayList<>();
        List<TagValue> minList = new ArrayList<>();
@@ -165,7 +162,7 @@
        for (Date date : dateList) {
            ListElectricLoadItem temp = new ListElectricLoadItem();
            temp.setTimeCode(ChartUtils.getTimeCode(timeType, date));
            temp.setName(ObjectUtils.isNotEmpty(energyUnitToDevice) ? energyUnitToDevice.getName() : "");
            temp.setName(ObjectUtils.isNotEmpty(meterName) ? meterName : "");
            temp.setMax(CommonConst.DOUBLE_MINUS_SIGN);
            temp.setMin(CommonConst.DOUBLE_MINUS_SIGN);
            temp.setAvg(CommonConst.DOUBLE_MINUS_SIGN);
@@ -219,15 +216,8 @@
    /**
     * èŽ·å–å¹´æ•°æ®
     *
     * @param timeType
     * @param dateList
     * @param energyIndex
     * @param energyUnitToDevice
     * @param detail
     * @param itemList
     */
    private void getYearData(String timeType, List<Date> dateList, EnergyIndex energyIndex, EnergyUnitToDevice energyUnitToDevice, ListElectricLoadDetail detail, List<ListElectricLoadItem> itemList) {
    private void getYearData(String timeType, List<Date> dateList, EnergyIndex energyIndex, String meterName, List<ListElectricLoadItem> itemList) {
        String tagCode = StringUtil.ifEmptyOrNullReturnValue(energyIndex.getCode());
        for (Date date : dateList) {
            ListElectricLoadItem temp = new ListElectricLoadItem();
@@ -253,7 +243,7 @@
            temp.setTimeCode(ChartUtils.getTimeCode(timeType, date));
            temp.setTimeCodeChart(ChartUtils.getTimeCodeChart(timeType, date));
            temp.setName(StringUtil.ifEmptyOrNullReturnValue(energyUnitToDevice.getName()));
            temp.setName(StringUtil.ifEmptyOrNullReturnValue(meterName));
            temp.setRate(CommonConst.DOUBLE_MINUS_SIGN);
            temp.setValue(CommonConst.DOUBLE_MINUS_SIGN);
            if (!temp.getMax().equals(CommonConst.DOUBLE_MINUS_SIGN) && Double.parseDouble(temp.getMax()) != CommonConst.DIGIT_DOUBLE_0) {
zhitan-system/src/main/java/com/zhitan/energyMonitor/service/impl/EnergyUnitToDeviceServiceImpl.java
ÎļþÒÑɾ³ý
zhitan-system/src/main/java/com/zhitan/model/domain/EnergyIndex.java
@@ -75,6 +75,7 @@
  @ApiModelProperty(value = "表计id")
  private String meterId;
  @ApiModelProperty(value = "顺序号")
  @Excel(name = "顺序号")
  private int orderNum;
@@ -85,35 +86,9 @@
  @ApiModelProperty(value = "id")
  private String energyId;
  /**
   * ç”¨èƒ½å•å…ƒid
   */
  private String energyUnitId;
  /**
   * å•元到设备的id
   */
  private String energyUnitToDeviceId;
  @Transient
  @TableField(exist = false)
  private  String meterName;
  public String getEnergyUnitId() {
    return energyUnitId;
  }
  public String getEnergyUnitToDeviceId() {
    return energyUnitToDeviceId;
  }
  public void setEnergyUnitId(String energyUnitId) {
    this.energyUnitId = energyUnitId;
  }
  public void setEnergyUnitToDeviceId(String energyUnitToDeviceId) {
    this.energyUnitToDeviceId = energyUnitToDeviceId;
  }
  public void setIndexId(String indexId) {
    this.indexId = indexId;
zhitan-system/src/main/java/com/zhitan/model/service/impl/EnergyIndexServiceImpl.java
@@ -321,15 +321,15 @@
  /**
   * æ ¹æ®ç”¨èƒ½å•å…ƒid和设备id,以及点位编码获取点位
   *
   * @param energyUnitId ç”¨èƒ½å•å…ƒid
   * @param nodeId èŠ‚ç‚¹id
   * @param meterId      è®¾å¤‡id
   * @param indexCode    ç‚¹ä½ç¼–码或者点位编码的一部分
   * @return
   */
  @Override
  public EnergyIndex getDeviceIndexByCode(String energyUnitId, String meterId, String indexCode) {
  public EnergyIndex getDeviceIndexByCode(String nodeId, String meterId, String indexCode) {
    List<EnergyIndex> energyIndexList = listDeviceIndexByCode(energyUnitId, meterId, indexCode);
    List<EnergyIndex> energyIndexList = listDeviceIndexByCode(nodeId, meterId, indexCode);
    EnergyIndex energyIndex = energyIndexList.stream().findFirst().orElse(null);
    if (ObjectUtils.isEmpty(energyIndex)) {
      energyIndex = new EnergyIndex();
@@ -347,8 +347,8 @@
   */
  public List<EnergyIndex> listDeviceIndexByCode(String energyUnitId, String meterId, String indexCode) {
    return energyIndexMapper.selectList(Wrappers.<EnergyIndex>lambdaQuery()
            .eq(EnergyIndex::getEnergyUnitId, energyUnitId)
            .eq(EnergyIndex::getEnergyUnitToDeviceId, meterId)
            .eq(EnergyIndex::getNodeId, energyUnitId)
            .eq(EnergyIndex::getMeterId, meterId)
            .like(EnergyIndex::getCode, indexCode));
  }
}
zhitan-system/src/main/resources/mapper/energyMonitor/ElectricLoadMapper.xml
ÎļþÒÑɾ³ý