zhitan-cloud
2025-02-12 7bdd62f0266f8caa8fbb167c8906a756f0299428
!67 !66 电能质量分析,匹配模板编码
Merge pull request !67 from zhitan-cloud/develop1.0
已修改20个文件
已删除1个文件
712 ■■■■ 文件已修改
zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/DailyComprehensiveController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/MonthlyComprehensiveController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/YearComprehensiveController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/src/main/java/com/zhitan/web/controller/energyMonitor/ElectricLoadController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/DailyKeyEquipmenteController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/MonthlyKeyEquipmentController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/YearKeyEquipmentController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-common/src/main/java/com/zhitan/common/constant/CommonConst.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/basicdata/mapper/MeterImplementMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/dataitem/service/impl/DataItemServiceImpl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/energyMonitor/service/IElectricLoadService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/energyMonitor/service/impl/ElectricLoadServiceImpl.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/model/mapper/EnergyIndexMapper.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/model/service/impl/EnergyIndexServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/realtimedata/data/RealtimeDatabaseManager.java 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/realtimedata/domain/DataItem.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/realtimedata/service/impl/RealtimeDatabaseServiceImpl.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/resources/mapper/basicdata/MeterImplementMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-vue/src/api/energyAnalysis/energyAnalysis.js 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-vue/src/views/deepanalysis/deepAnalysis.vue 304 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/DailyComprehensiveController.java
@@ -67,7 +67,7 @@
                i++;
            }
            List<DailyComprehensive> list = dailyComprehensiveService.getDailyComprehensiveList(modelNode.getNodeId(),
                    dataList, dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(), dataItem.getIndexStorageId());
                    dataList, dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(), dataItem.getEnergyType());
            return AjaxResult.success(list);
        } catch (Exception ex) {
            logger.error("获取出错!", ex);
@@ -87,7 +87,7 @@
        dataItem.setBeginTime(dataItem.getDataTime());
        String endTime=aa+" 24:00:00";
        dataItem.setEndTime(sf.parse(endTime));
        List<DailyComprehensive> list = dailyComprehensiveService.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
        List<DailyComprehensive> list = dailyComprehensiveService.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
        return AjaxResult.success(list);
    }
zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/MonthlyComprehensiveController.java
@@ -82,7 +82,7 @@
                return AjaxResult.success(reportList);
            }
            List<MonthlyComprehensive> list = monthlyComprehensive.getMonthlyComprehensiveList(modelNode.getNodeId(),
                    dataList, dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(), dataItem.getIndexStorageId());
                    dataList, dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(), dataItem.getEnergyType());
            int count = Integer.parseInt(getLastDayOfMonth(aa).substring(getLastDayOfMonth(aa).length() - 2));
            list.forEach(monthlyReport -> monthlyReport.setCount(count));
            reportList.setTabledata(list);
@@ -107,7 +107,7 @@
        dataItem.setBeginTime(sf.parse(beginTime));
        String endTime=aa+"-"+Integer.valueOf(getLastDayOfMonth(aa).substring(getLastDayOfMonth(aa).length()-2))+" 00:00:00";
        dataItem.setEndTime(sf.parse(endTime));
        List<MonthlyComprehensive> list = monthlyComprehensive.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
        List<MonthlyComprehensive> list = monthlyComprehensive.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
        return AjaxResult.success(list);
    }
    public static String getLastDayOfMonth(String yearMonth) {
@@ -171,7 +171,7 @@
                return AjaxResult.success(reportList);
            }
            List<MonthlyComprehensive> list = monthlyComprehensive.getMonthlyComprehensiveList(modelNode.getNodeId(), dataList,
                    dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(), dataItem.getIndexStorageId());
                    dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(), dataItem.getEnergyType());
            int count = Integer.parseInt(getLastDayOfMonth(aa).substring(getLastDayOfMonth(aa).length() - 2));
            list.forEach(monthlyReport -> monthlyReport.setCount(count));
            if (CollectionUtils.isNotEmpty(list)) {
zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/YearComprehensiveController.java
@@ -74,7 +74,7 @@
                i++;
            }
            List<YearComperhensive> list = yearComprehensive.getYearComprehensiveList(modelNode.getNodeId(),
                    dataList,dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
                    dataList,dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
            return AjaxResult.success(list);
        } catch (Exception ex) {
            logger.error("获取出错!", ex);
@@ -92,7 +92,7 @@
        dataItem.setBeginTime(DateUtil.beginOfYear(dataItem.getDataTime()));
        dataItem.setEndTime(DateUtil.endOfYear(dataItem.getDataTime()));
        List<YearComperhensive> list = yearComprehensive.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
        List<YearComperhensive> list = yearComprehensive.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
        return AjaxResult.success(list);
    }
@@ -127,7 +127,7 @@
                i++;
            }
            List<YearComperhensive> list = yearComprehensive.getYearComprehensiveList(modelNode.getNodeId(),
                    dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
                    dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
            if(CollectionUtils.isNotEmpty(list)){
                list.forEach(this::valueRep);
            }
zhitan-admin/src/main/java/com/zhitan/web/controller/energyMonitor/ElectricLoadController.java
@@ -5,6 +5,7 @@
import com.zhitan.common.core.controller.BaseController;
import com.zhitan.common.core.domain.AjaxResult;
import com.zhitan.energyMonitor.domain.vo.ListElectricLoadVO;
import com.zhitan.energyMonitor.domain.vo.ListElectricityMeterVO;
import com.zhitan.energyMonitor.service.IElectricLoadService;
import com.zhitan.model.domain.EnergyIndex;
import com.zhitan.model.service.IEnergyIndexService;
@@ -16,6 +17,8 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
 * @Description: è´Ÿè·åˆ†æž
@@ -50,7 +53,15 @@
                           @RequestParam(name = "timeCode") String timeCode) {
        EnergyIndex energyIndex = energyIndexService.getDeviceIndexByCode(nodeId, meterId, CommonConst.TAG_CODE_ZYGGL);
        ListElectricLoadVO vo = electricLoadService.list(timeType, timeCode, energyIndex);
        ListElectricLoadVO vo = electricLoadService.list(timeType, timeCode, energyIndex, meterId);
        return AjaxResult.success(vo);
    }
    @Log(title = "获取节点下所有电表")
    @ApiOperation(value = "获取节点下所有电表", notes = "获取节点下所有电表")
    @GetMapping(value = "/listElectricMeter")
    public AjaxResult listElectricMeter(@RequestParam(name = "nodeId") String nodeId) {
        List<ListElectricityMeterVO> vo = electricLoadService.listElectricMeter(nodeId);
        return AjaxResult.success(vo);
    }
zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/DailyKeyEquipmenteController.java
@@ -75,7 +75,7 @@
            i++;
        };
        startPage();
        List<DailyKeyEquipment> list = dailykeyEquipment.getdailyKeyEquipmentList(indexIds, dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
        List<DailyKeyEquipment> list = dailykeyEquipment.getdailyKeyEquipmentList(indexIds, dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
        return getDataTable(list);
    }
@@ -88,7 +88,7 @@
        dataItem.setBeginTime(dataItem.getDataTime());
        String endTime=aa+" 24:00:00";
        dataItem.setEndTime(sf.parse(endTime));
        List<DailyKeyEquipment> list = dailykeyEquipment.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
        List<DailyKeyEquipment> list = dailykeyEquipment.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
        return AjaxResult.success(list);
    }
    /*所有设备*/
zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/MonthlyKeyEquipmentController.java
@@ -84,7 +84,7 @@
            List<String> indexIds = energyList.stream().map(EnergyIndex::getIndexId).collect(Collectors.toList());
            startPage();
            List<MonthlyKeyEquipment> list = monthlyKeyEquipmentService.getMonthlyKeyEquipmentList(indexIds, dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
            List<MonthlyKeyEquipment> list = monthlyKeyEquipmentService.getMonthlyKeyEquipmentList(indexIds, dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
            int count=Integer.valueOf(getLastDayOfMonth(aa).substring(getLastDayOfMonth(aa).length()-2));
            list.forEach(monthlyReport -> monthlyReport.setCount(count));
            reportList.setTabledata(list);
@@ -107,7 +107,7 @@
        dataItem.setBeginTime(sf.parse(beginTime));
        String endTime=aa+"-"+Integer.valueOf(getLastDayOfMonth(aa).substring(getLastDayOfMonth(aa).length()-2))+" 00:00:00";
        dataItem.setEndTime(sf.parse(endTime));
        List<MonthlyKeyEquipment> list = monthlyKeyEquipmentService.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
        List<MonthlyKeyEquipment> list = monthlyKeyEquipmentService.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
        return AjaxResult.success(list);
    }
    public static String getLastDayOfMonth(String yearMonth) {
zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/YearKeyEquipmentController.java
@@ -4,7 +4,6 @@
import com.zhitan.common.core.controller.BaseController;
import com.zhitan.common.core.domain.AjaxResult;
import com.zhitan.common.core.page.TableDataInfo;
import com.zhitan.comprehensivestatistics.domain.YearComperhensive;
import com.zhitan.keyequipment.domain.YearKeyEquipment;
import com.zhitan.keyequipment.service.IYearKeyEquipmentService;
import com.zhitan.model.domain.EnergyIndex;
@@ -77,7 +76,7 @@
            i++;
        }
        startPage();
        List<YearKeyEquipment> list = yearKeyEquipmentService.getYearKeyEquipmentList(indexIds, dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
        List<YearKeyEquipment> list = yearKeyEquipmentService.getYearKeyEquipmentList(indexIds, dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
        return getDataTable(list);
    }
@@ -85,7 +84,7 @@
    @ApiOperation(value = "重点设备能耗统计(年)图表")
    public AjaxResult listChart(DataItem dataItem){
        List<YearKeyEquipment> list = yearKeyEquipmentService.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
        List<YearKeyEquipment> list = yearKeyEquipmentService.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
        return AjaxResult.success(list);
    }
}
zhitan-common/src/main/java/com/zhitan/common/constant/CommonConst.java
@@ -867,7 +867,7 @@
    /**
     * æ€»æœ‰åŠŸåŠŸçŽ‡ç‚¹ä½æ¨¡æ¿code
     */
    public static final String TAG_CODE_ZYGGL = "\\_ActivePower_Total";
    public static final String TAG_CODE_ZYGGL = "ActivePow";
    /**
     * æ€»æœ‰åŠŸåŠŸçŽ‡ç‚¹ä½æ¨¡æ¿code
     */
@@ -887,7 +887,7 @@
    /**
     * æ€»åŠŸçŽ‡å› æ•° ç‚¹ä½æ¨¡æ¿code
     */
    public static final String TAG_CODE_GLYS = "PowerFactor_Total";
    public static final String TAG_CODE_GLYS = "PowFactorT";
    /**
     * ç”µæµ
     */
@@ -935,27 +935,27 @@
    /**
     * A相电流
     */
    public static final String TAG_CODE_CURRENT_A = "Current_A";
    public static final String TAG_CODE_CURRENT_A = "CurrentA";
    /**
     * B相电流
     */
    public static final String TAG_CODE_CURRENT_B = "Current_B";
    public static final String TAG_CODE_CURRENT_B = "CurrentB";
    /**
     * C相电流
     */
    public static final String TAG_CODE_CURRENT_C = "Current_C";
    public static final String TAG_CODE_CURRENT_C = "CurrentC";
    /**
     * A相电压
     */
    public static final String TAG_CODE_VOLTAGE_A = "Voltage_A";
    public static final String TAG_CODE_VOLTAGE_A = "VoltageA";
    /**
     * B相电压
     */
    public static final String TAG_CODE_VOLTAGE_B = "Voltage_B";
    public static final String TAG_CODE_VOLTAGE_B = "VoltageB";
    /**
     * C相电压
     */
    public static final String TAG_CODE_VOLTAGE_C = "Voltage_C";
    public static final String TAG_CODE_VOLTAGE_C = "VoltageC";
    /**
     * A相功率因数
     */
zhitan-system/src/main/java/com/zhitan/basicdata/mapper/MeterImplementMapper.java
@@ -88,4 +88,12 @@
    MeterImplement selectByNodeIdIndexId(@Param("nodeId") String nodeId, @Param("indexId") String indexId);
    List<MeterImplement> listMeterImplByInstallLocation(@Param("installactionLocation") String installactionLocation);
    /**
     * æ ¹æ®èŠ‚ç‚¹id查询计量器具信息
     *
     * @param nodeId
     * @return
     */
    List<MeterImplement> selectByNodeId(@Param("nodeId") String nodeId);
}
zhitan-system/src/main/java/com/zhitan/dataitem/service/impl/DataItemServiceImpl.java
@@ -158,18 +158,13 @@
        if(ObjectUtils.isEmpty(modelNodes)){
            throw new RuntimeException("未查询到模型信息");
        }
        Optional<ModelNode> modelNodeInfo = modelNodes.stream().findFirst();
        String nodeId = modelNodeInfo.map(ModelNode::getNodeId).toString();
        ModelNode modelNode = modelNodes.stream().findFirst().get();
        String nodeId = modelNode.getNodeId();
        dto.setNodeId(nodeId);
        String energyType = dto.getEnergyType();
        LocalDate queryTime = dto.getQueryTime();
        TimeType timeType = dto.getTimeType();
        // èŽ·å–èŠ‚ç‚¹ä¿¡æ¯
        ModelNode modelNode = modelNodeMapper.selectModelNodeById(nodeId);
        if (ObjectUtils.isEmpty(modelNode)) {
            return flowChartsVO;
        }
        // èŽ·å–æŸ¥è¯¢æ—¶é—´
        Map<String, LocalDateTime> dateTimeMap = getDataItemByIndexId(timeType, queryTime);
zhitan-system/src/main/java/com/zhitan/energyMonitor/service/IElectricLoadService.java
@@ -1,7 +1,10 @@
package com.zhitan.energyMonitor.service;
import com.zhitan.energyMonitor.domain.vo.ListElectricLoadVO;
import com.zhitan.energyMonitor.domain.vo.ListElectricityMeterVO;
import com.zhitan.model.domain.EnergyIndex;
import java.util.List;
/**
 * @Description:
@@ -14,5 +17,12 @@
    /**
     * èŽ·å–è´Ÿè·åˆ†æžæ•°æ®
     */
    ListElectricLoadVO list(String timeType, String timeCode, EnergyIndex energyIndex);
    ListElectricLoadVO list(String timeType, String timeCode, EnergyIndex energyIndex, String meterId);
    /**
     * èŽ·å–èŠ‚ç‚¹ä¸‹æ‰€æœ‰ç”µè¡¨
     * @param nodeId
     * @return
     */
    List<ListElectricityMeterVO> listElectricMeter(String nodeId);
}
zhitan-system/src/main/java/com/zhitan/energyMonitor/service/impl/ElectricLoadServiceImpl.java
@@ -14,7 +14,9 @@
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.domain.vo.ListElectricityMeterVO;
import com.zhitan.energyMonitor.service.IElectricLoadService;
import com.zhitan.knowledgeBase.domain.enums.EnergyTypeEnum;
import com.zhitan.model.domain.EnergyIndex;
import com.zhitan.realtimedata.domain.TagValue;
import com.zhitan.realtimedata.service.RealtimeDatabaseService;
@@ -28,6 +30,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @Description: sensor_alarm_item
@@ -43,7 +46,7 @@
    private MeterImplementMapper meterImplementMapper;
    @Override
    public ListElectricLoadVO list(String timeType, String timeCode, EnergyIndex energyIndex) {
    public ListElectricLoadVO list(String timeType, String timeCode, EnergyIndex energyIndex, String meterId) {
        ListElectricLoadVO vo = new ListElectricLoadVO();
        List<ListElectricLoadItem> itemList = new ArrayList<>();
        vo.setItemList(itemList);
@@ -56,7 +59,7 @@
        detail.setRate(CommonConst.DOUBLE_MINUS_SIGN);
        vo.setDetail(detail);
        MeterImplement meterImplement = meterImplementMapper.selectById(energyIndex.getMeterId());
        MeterImplement meterImplement = meterImplementMapper.selectById(meterId);
        if (ObjectUtil.isEmpty(meterImplement)) {
            return vo;
@@ -124,6 +127,7 @@
        List<TagValue> minList = new ArrayList<>();
        List<TagValue> avgList = new ArrayList<>();
        if (TimeTypeConst.TIME_TYPE_DAY.equals(timeType)) {
        } else {
            String tempTimeCode = StringUtil.ifEmptyOrNullReturnValue(timeCode).replace(CommonConst.SINGLE_MINUS_SIGN, CommonConst.EMPTY);
            Date start = DateTimeUtil.toDateTime(tempTimeCode, DateTimeUtil.COMMON_PATTERN_MONTH);
@@ -230,13 +234,13 @@
                TagValue rt3 = realtimeDatabaseService.statistics(code, date, endTime, CollectionModes.max);
                TagValue rt4 = realtimeDatabaseService.statistics(code, date, endTime, CollectionModes.min);
                TagValue rt2 = realtimeDatabaseService.statistics(code, date, endTime, CollectionModes.mean);
                if (ObjectUtils.isNotEmpty(rt2.getValue())) {
                if (ObjectUtils.isNotEmpty(rt2)) {
                    temp.setAvg(String.valueOf(DoubleUtil.formatDouble(rt2.getValue())));
                }
                if (ObjectUtils.isNotEmpty(rt3.getValue())) {
                if (ObjectUtils.isNotEmpty(rt3)) {
                    temp.setMax(String.valueOf(DoubleUtil.formatDouble(rt3.getValue())));
                }
                if (ObjectUtils.isNotEmpty(rt4.getValue())) {
                if (ObjectUtils.isNotEmpty(rt4)) {
                    temp.setMin(String.valueOf(DoubleUtil.formatDouble(rt4.getValue())));
                }
            }
@@ -255,4 +259,20 @@
    }
    /**
     * èŽ·å–ç”µè¡¨åˆ—è¡¨
     */
    @Override
    public List<ListElectricityMeterVO> listElectricMeter(String nodeId) {
        List<MeterImplement> meterImplements = meterImplementMapper.selectByNodeId(nodeId);
        meterImplements = meterImplements.stream().filter(x -> "electric".equals(x.getEnergyType())).collect(Collectors.toList());
        List<ListElectricityMeterVO> list = new ArrayList<>();
        for (MeterImplement meterImplement : meterImplements) {
            ListElectricityMeterVO vo = new ListElectricityMeterVO();
            vo.setCode(meterImplement.getId());
            vo.setLabel(meterImplement.getMeterName());
            list.add(vo);
        }
        return list;
    }
}
zhitan-system/src/main/java/com/zhitan/model/mapper/EnergyIndexMapper.java
@@ -99,5 +99,7 @@
  Page<EnergyIndex> selectEnergyIndexPage(@Param("page")Page<?> page, @Param("query") EnergyIndexQuery energyIndexQuery);
    List<EnergyIndex> getIndexByCode(@Param("code")String code, @Param("nodeId")String nodeId);
  List<EnergyIndex> getIndexByCode(@Param("code")String code, @Param("nodeId")String nodeId);
  List<EnergyIndex> getIndexByMeterIdIndexCode(@Param("meterId") String meterId, @Param("indexCode") String indexCode, @Param("nodeId") String nodeId);
}
zhitan-system/src/main/java/com/zhitan/model/service/impl/EnergyIndexServiceImpl.java
@@ -345,10 +345,8 @@
     * @return
     */
    public List<EnergyIndex> listDeviceIndexByCode(String nodeId, String meterId, String indexCode) {
        return energyIndexMapper.selectList(Wrappers.<EnergyIndex>lambdaQuery()
                .eq(EnergyIndex::getNodeId, nodeId)
                .eq(EnergyIndex::getMeterId, meterId)
                .like(EnergyIndex::getCode, indexCode));
        List<EnergyIndex> energyIndexList = energyIndexMapper.getIndexByMeterIdIndexCode(meterId,indexCode,nodeId);
        return energyIndexList;
    }
    /**
zhitan-system/src/main/java/com/zhitan/realtimedata/data/RealtimeDatabaseManager.java
ÎļþÒÑɾ³ý
zhitan-system/src/main/java/com/zhitan/realtimedata/domain/DataItem.java
@@ -17,8 +17,8 @@
  @ApiModelProperty(value = "指标id")
  private String indexId;
  @ApiModelProperty(value = "指标库id")
  private String indexStorageId;
  @ApiModelProperty(value = "能源品种")
  private String energyType;
  @ApiModelProperty(value = "指标code")
  private String indexCode;
  @ApiModelProperty(value = "指标名称")
@@ -54,12 +54,12 @@
    this.indexId = indexId;
  }
  public String getIndexStorageId() {
    return indexStorageId;
  public String getEnergyType() {
    return energyType;
  }
  public void setIndexStorageId(String indexStorageId) {
    this.indexStorageId = indexStorageId;
  public void setEnergyType(String energyType) {
    this.energyType = energyType;
  }
  public String getIndexCode() {
zhitan-system/src/main/java/com/zhitan/realtimedata/service/impl/RealtimeDatabaseServiceImpl.java
@@ -6,11 +6,12 @@
import com.zhitan.common.enums.CollectionModes;
import com.zhitan.common.enums.GroupTimeType;
import com.zhitan.common.enums.RetrievalModes;
import com.zhitan.realtimedata.data.RealtimeDatabaseManager;
import com.zhitan.realtimedata.data.influxdb.InfluxDBRepository;
import com.zhitan.realtimedata.domain.TagValue;
import com.zhitan.realtimedata.service.RealtimeDatabaseService;
import org.apache.commons.collections4.CollectionUtils;
import org.joda.time.DateTime;
import org.joda.time.Seconds;
import org.springframework.stereotype.Service;
import java.util.*;
@@ -23,11 +24,10 @@
    private final InfluxDBRepository repository;
    private final RealtimeDatabaseManager realtimeDatabaseManager;
    public RealtimeDatabaseServiceImpl(InfluxDBRepository repository, RealtimeDatabaseManager realtimeDatabaseManager) {
    public RealtimeDatabaseServiceImpl(InfluxDBRepository repository
    ) {
        this.repository = repository;
        this.realtimeDatabaseManager = realtimeDatabaseManager;
    }
    /**
@@ -115,7 +115,7 @@
    @Override
    public TagValue statistics(String tagCode, Date beginTime, Date endTime, CollectionModes collectionModes) {
        List<TagValue> tagValues = repository.statistics(Collections.singletonList(tagCode), beginTime, endTime, collectionModes);
        return CollectionUtils.isEmpty(tagValues) ? tagValues.get(0) : null;
        return CollectionUtils.isNotEmpty(tagValues) ? tagValues.get(0) : null;
    }
    /**
@@ -169,6 +169,15 @@
    @Override
    public List<TagValue> retrieve(String tagCode, Date beginTime, Date endTime,
                                   RetrievalModes retrievalModes, int pointCount) {
        return realtimeDatabaseManager.retrieve(tagCode, beginTime, endTime, retrievalModes, pointCount);
        repository.getHistoryData(Collections.singletonList(tagCode), beginTime, endTime, pointCount);
        pointCount = retrievalModes == RetrievalModes.Full ? 200 : pointCount;
        int span =
                Seconds.secondsBetween(new DateTime(beginTime), new DateTime(endTime)).getSeconds();
        int interval = span / pointCount;
        List<String> tagCodes = new ArrayList<>();
        tagCodes.add(tagCode);
        List<TagValue> historyData = repository.getHistoryData(tagCodes, beginTime, endTime, interval);
        return historyData;
//        return realtimeDatabaseManager.retrieve(tagCode, beginTime, endTime, retrievalModes, pointCount);
    }
}
zhitan-system/src/main/resources/mapper/basicdata/MeterImplementMapper.xml
@@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhitan.basicdata.mapper.MeterImplementMapper">
    <resultMap type="MeterImplement" id="MeterImplementResult">
    <resultMap type="com.zhitan.basicdata.domain.MeterImplement" id="MeterImplementResult">
        <result property="id"    column="id"    />
        <result property="code"    column="code"    />
        <result property="meterName"    column="meter_name"    />
@@ -31,7 +31,7 @@
        <result property="gatewayId"    column="gateway_id"    />
        <result property="gatewayName"    column="gateway_name"    />
    </resultMap>
    <resultMap type="MeterImplementExcel" id="MeterImplementResultExcel">
    <resultMap type="com.zhitan.basicdata.domain.MeterImplementExcel" id="MeterImplementResultExcel">
        <result property="id"    column="id"    />
        <result property="code"    column="code"    />
        <result property="meterName"    column="meter_name"    />
@@ -59,7 +59,7 @@
        select id,energy_type, code, meter_name, meter_type, model_number, measure_range, manufacturer, person_charge, installaction_location, start_time, check_cycle, reminder_cycle, meter_status, del_flage, remark, putrun_time,create_time, create_by, update_time, update_by,(start_time+check_cycle-reminder_cycle)&lt;=current_date as txflage,wire_diameter,max_allowable_power,gateway_id,gateway_name from meter_implement
    </sql>
    <select id="selectMeterImplementList" parameterType="MeterImplement" resultMap="MeterImplementResult">
    <select id="selectMeterImplementList" parameterType="com.zhitan.basicdata.domain.MeterImplement" resultMap="MeterImplementResult">
        <include refid="selectMeterImplementVo"/>
        <where>
            del_flage='N'
@@ -73,7 +73,7 @@
        order by code
    </select>
    <select id="exectMeterImplementList" parameterType="MeterImplement" resultMap="MeterImplementResultExcel">
    <select id="exectMeterImplementList" parameterType="com.zhitan.basicdata.domain.MeterImplement" resultMap="MeterImplementResultExcel">
        select id,energy_type, code, meter_name, fun_getDiceData('sys_device_type',meter_status) as meter_type, model_number, measure_range, manufacturer,
        person_charge, installaction_location, to_char(start_time,'YYYY-MM-DD') start_time, check_cycle, reminder_cycle, fun_getDiceData('meter_status',meter_status) as meter_status,
        del_flage, remark, create_time, create_by, update_time, update_by,wire_diameter,max_allowable_power,gateway_name
@@ -95,7 +95,7 @@
        where id = #{id}
    </select>
    <select id="selectMeterImplementByCode" parameterType="MeterImplement" resultMap="MeterImplementResult">
    <select id="selectMeterImplementByCode" parameterType="com.zhitan.basicdata.domain.MeterImplement" resultMap="MeterImplementResult">
        <include refid="selectMeterImplementVo"/>
        where code = #{code}
        <if test="id != null  and id != ''"> and id != #{id} or id is null</if>
@@ -133,8 +133,16 @@
            installaction_location = #{installactionLocation}
        </where>
    </select>
    <select id="selectByNodeId" resultType="com.zhitan.basicdata.domain.MeterImplement">
        <include refid="selectMeterImplementVo"/>
        mi
        left join node_device nd on mi.id = nd.device_id
        where
            mi.del_flage = 'N'
            AND nd.node_id = #{nodeId}
    </select>
    <insert id="insertMeterImplement" parameterType="MeterImplement">
    <insert id="insertMeterImplement" parameterType="com.zhitan.basicdata.domain.MeterImplement">
        insert into meter_implement
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null  and id != ''">id,</if>
@@ -192,7 +200,7 @@
         </trim>
    </insert>
    <update id="updateMeterImplement" parameterType="MeterImplement">
    <update id="updateMeterImplement" parameterType="com.zhitan.basicdata.domain.MeterImplement">
        update meter_implement
        <trim prefix="SET" suffixOverrides=",">
            <if test="code != null  and code != ''">code = #{code},</if>
zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml
@@ -391,4 +391,21 @@
        </if>
    </where>
  </select>
  <select id="getIndexByMeterIdIndexCode" resultType="com.zhitan.model.domain.EnergyIndex">
    SELECT ei.code,mi.meter_name||'_'||ei.name as name from energy_index ei
    LEFT JOIN node_device nd on ei.meter_id =  nd.device_id
    LEFT JOIN meter_implement  mi on mi."id" = nd.device_id
    <where>
        <if test="nodeId != null  and nodeId != ''">and nd.node_id  = #{nodeId}</if>
        <if test="indexCode != null  and indexCode != ''">
          and (mi.meter_name like concat('%', #{indexCode}, '%')
          or ei.code like concat('%', #{indexCode}, '%')
          or ei.name like concat('%', #{indexCode}, '%')
          )
        </if>
        <if test="meterId != null  and meterId != ''">
          and ei.meter_id = #{meterId}
        </if>
    </where>
  </select>
</mapper>
zhitan-vue/src/api/energyAnalysis/energyAnalysis.js
@@ -1,54 +1,62 @@
import request from '@/utils/request'
import request from "@/utils/request"
// èƒ½è€—对比分析-区域能耗分析-能耗趋势/区域能耗统计分析表-列表
// èƒ½è€—对比分析-科室能耗分析-能耗趋势/能耗统计分析表-列表
// èƒ½è€—对比分析-设备能耗分析-能耗趋势/能耗统计分析表-列表
export function listRegion(query) {
  return request({
    url: '/consumptionanalysis/getByArea',
    method: 'get',
    params: query
    url: "/consumptionanalysis/getByArea",
    method: "get",
    params: query,
  })
}
// èƒ½è€—对比分析-科室能耗分析-能耗排名-列表
// èƒ½è€—对比分析-设备能耗分析-能耗排名-列表
export function listDepartment(query) {
  return request({
    url: '/consumptionanalysis/getByDepartment',
    method: 'get',
    params: query
    url: "/consumptionanalysis/getByDepartment",
    method: "get",
    params: query,
  })
}
// èƒ½è€—对比分析-能耗指标考核-能耗趋势/区域能耗统计分析表
export function listIndicatorassessment(query) {
  return request({
    url: '/consumptionanalysis/getPlanAndProdCount',
    method: 'get',
    params: query
    url: "/consumptionanalysis/getPlanAndProdCount",
    method: "get",
    params: query,
  })
}
// èƒ½è€—对比分析-综合能耗分析-综合能耗趋势/各介质能耗占比/区域能耗统计分析表-列表
export function listComprehensive(query) {
  return request({
    url: '/consumptionanalysis/getComprehensiveEnergy',
    method: 'get',
    params: query
    url: "/consumptionanalysis/getComprehensiveEnergy",
    method: "get",
    params: query,
  })
}
// èƒ½è€—对比分析-综合能耗分析-能耗同比环比-列表
export function listYoY(query) {
  return request({
    url: '/consumptionanalysis/getYOY',
    method: 'get',
    params: query
    url: "/consumptionanalysis/getYOY",
    method: "get",
    params: query,
  })
}
// èƒ½è€—对比分析-综合能耗分析-用能单元能耗排名-列表
export function listEnergyRanking(query) {
  return request({
    url: '/consumptionanalysis/getEnergyRanking',
    method: 'get',
    params: query
    url: "/consumptionanalysis/getEnergyRanking",
    method: "get",
    params: query,
  })
}
// statisticsAnalysis/getFlowCharts
export function getFlowCharts(query) {
  return request({
    url: "/statisticsAnalysis/getFlowCharts",
    method: "get",
    params: query,
  })
}
zhitan-vue/src/views/deepanalysis/deepAnalysis.vue
@@ -4,19 +4,28 @@
      <el-form :model="form" ref="queryRef" :inline="true" label-width="80px">
        <el-form-item label="能源类型" prop="energyType">
          <el-select v-model="form.energyType" placeholder="请选择能源类型">
            <el-option :label="item.enername" :value="item.enersno" v-for="item in energyTypeList"
              :key="item.enersno" />
            <el-option
              :label="item.enername"
              :value="item.enersno"
              v-for="item in energyTypeList"
              :key="item.enersno"
            />
          </el-select>
        </el-form-item>
        <el-form-item label="期间" prop="timeType" >
        <el-form-item label="期间" prop="timeType">
          <el-select v-model="form.timeType" placeholder="期间" clearable style="width: 120px" @change="handleTimeType">
            <el-option v-for="dict in period" :key="dict.value" :label="dict.label" :value="dict.value" />
          </el-select>
        </el-form-item>
        <el-form-item label="时间选择" prop="dataTime">
          <el-date-picker v-if="form.type == 1" v-model="form.dataTime" type="year" />
          <el-date-picker v-else-if="form.type == 2" v-model="form.dataTime" type="month" format="YYYY-MM"
            value-format="YYYY-MM" />
          <el-date-picker v-if="form.timeType == 'YEAR'" v-model="form.dataTime" type="year" />
          <el-date-picker
            v-else-if="form.timeType == 'MONTH'"
            v-model="form.dataTime"
            type="month"
            format="YYYY-MM"
            value-format="YYYY-MM"
          />
          <el-date-picker v-else v-model="form.dataTime" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
        </el-form-item>
        <el-form-item>
@@ -46,178 +55,245 @@
  </div>
</template>
<script setup>
import useSettingsStore from '@/store/modules/settings'
import { listEnergyTypeList } from "@/api/modelConfiguration/energyType";
import useSettingsStore from "@/store/modules/settings"
import { listEnergyTypeList } from "@/api/modelConfiguration/energyType"
import { getFlowCharts } from "@/api/energyAnalysis/energyAnalysis"
const settingsStore = useSettingsStore()
import * as echarts from 'echarts';
import * as echarts from "echarts"
let { proxy } = getCurrentInstance()
import { onMounted } from 'vue';
const { period } = proxy.useDict("period");
import { nextTick, onMounted } from "vue"
const { period } = proxy.useDict("period")
console.log(period)
let form = ref({
  energyType: null,
  timeType: null,
  dataTime: null,
})
function handleTimeType(e) {
  form.value.timeType = e;
  form.value.dataTime = proxy.dayjs(new Date()).format("YYYY-MM-DD");
  form.value.timeType = e
  form.value.dataTime = proxy.dayjs(new Date()).format("YYYY-MM-DD")
  getData()
}
const energyTypeList = ref();
const energyTypeList = ref()
function getEnergyTypeList() {
  listEnergyTypeList().then((res) => {
    energyTypeList.value = res.data;
    energyTypeList.value = res.data
    form.value.energyType = energyTypeList.value[0].enersno
    handleTimeType(period.value[0].value);
  });
    handleTimeType(period.value[0].value)
  })
}
getEnergyTypeList()
function handleSelect(e) {
  console.log(e, form.value.type)
  if (form.value.type == 1) {
    form.value.time = proxy.dayjs().format('YYYY')
    form.value.time = proxy.dayjs().format("YYYY")
  } else if (form.value.type == 2) {
    form.value.time = proxy.dayjs().format('YYYY-MM')
    form.value.time = proxy.dayjs().format("YYYY-MM")
  } else {
    form.value.time = proxy.dayjs().format('YYYY-MM-DD')
    form.value.time = proxy.dayjs().format("YYYY-MM-DD")
  }
}
function handleQuery() { }
function handleQuery() {
  getData()
}
function resetQuery() {
  form.value = {
    type: 1,
    time: proxy.dayjs().format('YYYY'),
    time: proxy.dayjs().format("YYYY"),
  }
}
import icon1 from '@/assets/images/period/icon1.png'
import icon2 from '@/assets/images/period/icon2.png'
import icon3 from '@/assets/images/period/icon3.png'
import icon4 from '@/assets/images/period/icon4.png'
import icon5 from '@/assets/images/period/icon5.png'
import icon1 from "@/assets/images/period/icon1.png"
import icon2 from "@/assets/images/period/icon2.png"
import icon3 from "@/assets/images/period/icon3.png"
import icon4 from "@/assets/images/period/icon4.png"
import icon5 from "@/assets/images/period/icon5.png"
const periodList = ref([
  {
    icon: icon1,
    color: "#3371eb",
    title: "累计能耗",
    data: '1000.1 m³'
    data: "1000.1 m³",
  },
  {
    icon: icon3,
    color: "#ff6200",
    title: "分表能耗",
    data: ' 0 m³'
    data: " 0 m³",
  },
  {
    icon: icon4,
    color: "#ffce0c",
    title: "损失量",
    data: '1000.1 m³'
    data: "1000.1 m³",
  },
  {
    icon: icon5,
    color: "#78e801",
    title: "损失比例",
    data: '100.00%'
    data: "100.00%",
  },
])
watch(() => settingsStore.sideTheme, (val) => {
  getChart()
})
const flowData = ref({})
function getData() {
  getFlowCharts({
    energyType: form.value.energyType,
    nodeId: "",
    queryTime: form.value.dataTime,
    timeType: form.value.timeType,
    modelCode: proxy.$route.query.modelCode,
  }).then((res) => {
    periodList.value[0].data = res.data.totalAccumulatedAmount
    periodList.value[1].data = res.data.childNodeAccumulatedAmount
    periodList.value[2].data = res.data.difference
    periodList.value[3].data = res.data.energyLossRatio + "%"
    flowData.value = res.data.itemVOList
    nextTick(() => {
      getChart()
    })
  })
}
watch(
  () => settingsStore.sideTheme,
  (val) => {
    getChart()
  }
)
function getChart() {
  let colors = ["#FBB4AE", "#B3CDE3", "#CCEBC5", "#DECBE4", "#5470C6"]
  let mydata = []
  let mylinks = []
  if (flowData.value.length) {
    mylinks = flowData.value || []
    let nodes = []
    mylinks.forEach((element) => {
      nodes.push(element.source)
      nodes.push(element.target)
    })
    mydata = Array.from(new Set(nodes)).map((item) => {
      return {
        name: item,
      }
    })
  }
  console.log(mydata)
  console.log(mylinks)
  let colors = ['#FBB4AE', '#B3CDE3', '#CCEBC5', '#DECBE4', '#5470C6'];
  let mydata = [
    { name: 'L1', itemStyle: { color: colors[0] }, depth: 0 },
    { name: 'L1-1', itemStyle: { color: colors[0] }, depth: 0 },
    { name: 'L1-2', itemStyle: { color: colors[0] }, depth: 0 },
    { name: 'L1-3', itemStyle: { color: colors[0] }, depth: 0 },
    { name: 'L2', itemStyle: { color: colors[1] }, depth: 1 },
    { name: 'L2-1', itemStyle: { color: colors[1] }, depth: 1 },
    { name: 'L2-2', itemStyle: { color: colors[1] }, depth: 1 },
    { name: 'L2-3', itemStyle: { color: colors[1] }, depth: 1 },
    { name: 'L3', itemStyle: { color: colors[2] }, depth: 2 },
    { name: 'L3-1', itemStyle: { color: colors[2] }, depth: 2 },
    { name: 'L3-2', itemStyle: { color: colors[2] }, depth: 2 },
    { name: 'L4', itemStyle: { color: colors[3] }, depth: 3 },
  ];
  // mydata.reverse()
  let mylinks = [
    // L1→L4     9720
    { source: 'L1', target: 'L4', value: 9720 },
    // L2→L4     24396
    { source: 'L2', target: 'L4', value: 24396 },
    // L3→L4     1462
    { source: 'L3', target: 'L4', value: 1462 },
    // L1→L2→L3→L4     215
    { source: 'L1-1', target: 'L2-1', value: 215 },
    { source: 'L2-1', target: 'L3-1', value: 215 },
    { source: 'L3-1', target: 'L4', value: 215 },
    // L1→L2→L4     4518
    { source: 'L1-2', target: 'L2-2', value: 4518 },
    { source: 'L2-2', target: 'L4', value: 4518 },
    // L1→L3→L4     217
    { source: 'L1-3', target: 'L3-2', value: 217 },
    { source: 'L3-2', target: 'L4', value: 217 },
    // L2→L3→L4     893
    { source: 'L2-3', target: 'L3-3', value: 893 },
    { source: 'L3-3', target: 'L4', value: 893 },
  ];
  const myChart1 = echarts.init(document.getElementById("Chart1"));
  const myChart1 = echarts.init(document.getElementById("Chart1"))
  myChart1.setOption({
    tooltip: {
      trigger: 'item',
      triggerOn: 'mousemove',
      trigger: "item",
      triggerOn: "mousemove",
    },
    series: {
      type: 'sankey',
      lineStyle: {
        opacity: 0.3,
        color: 'gradient',
        curveness: 0.7,
    // series: {
    //   type: "sankey",
    //   lineStyle: {
    //     opacity: 0.3,
    //     color: "gradient",
    //     curveness: 0.7,
    //   },
    //   // nodeAlign: 'left',
    //   nodeGap: 18,
    //   layoutIterations: 1,
    //   emphasis: {
    //     focus: "adjacency",
    //   },
    //   data: mydata,
    //   links: mylinks,
    // },
    series: [
      {
        type: "sankey",
        left: 50.0,
        top: 20.0,
        right: 100.0,
        bottom: 25.0,
        data: mydata,
        links: mylinks,
        nodeGap: 18,
        layoutIterations: 1,
        //emphasis: {
        //  focus: 'adjacency',
        //},
        nodeAlign: "left",
        lineStyle: {
          color: "source",
          curveness: 0.7,
          opacity: 0.3,
        },
        itemStyle: {
          color: "#333",
          borderColor: "#1f77b4",
        },
        // label: {
        //   color: "rgba(0,0,0,0.7)",
        //   fontSize: 10,
        // },
        levels: [
          {
            depth: 0,
            itemStyle: {
              color: colors[0],
            },
            lineStyle: {
              color: "source",
              opacity: 0.3,
            },
          },
          {
            depth: 1,
            itemStyle: {
              color: colors[1],
            },
            lineStyle: {
              color: "source",
              opacity: 0.3,
            },
          },
          {
            depth: 2,
            itemStyle: {
              color: colors[2],
            },
            lineStyle: {
              color: "source",
              opacity: 0.3,
            },
          },
          {
            depth: 3,
            itemStyle: {
              color: colors[3],
            },
            lineStyle: {
              color: "source",
              opacity: 0.3,
            },
          },
        ],
      },
      // nodeAlign: 'left',
      nodeGap: 18,
      layoutIterations: 1,
      emphasis: {
        focus: 'adjacency',
      },
      data: mydata,
      links: mylinks,
    },
    ],
  })
  window.addEventListener("resize", () => {
    myChart1.resize();
  }, { passive: true });
  window.addEventListener(
    "resize",
    () => {
      myChart1.resize()
    },
    { passive: true }
  )
}
onMounted(() => {
  getChart()
  getEnergyTypeList()
})
</script>
<style scoped lang="scss">
@import "@/assets/styles/page.scss";
.themeDark {
  .card-list {
    display: flex;
    justify-content: space-between;
@@ -295,7 +371,7 @@
      height: 167px;
      background: #fff;
      border-radius: 5px 5px 5px 5px;
      border: 1px solid #E8E8E8;
      border: 1px solid #e8e8e8;
      background-size: 100% 100%;
      box-sizing: border-box;
      padding: 20px 18px 23px 16px;
@@ -337,7 +413,7 @@
          font-family: OPPOSans, OPPOSans;
          font-weight: 500;
          font-size: 14px;
          color: #5D5C5C;
          color: #5d5c5c;
        }
        .bottom-right {
@@ -360,4 +436,4 @@
    height: 100%;
  }
}
</style>
</style>