Parcourir la source

看板BUg修复

jichaobo il y a 3 ans
Parent
commit
fda1e051ce

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 3
.shelf/Uncommitted_changes_before_rebase_[Default_Changelist]/shelved.patch


+ 0 - 4
.shelf/Uncommitted_changes_before_rebase__Default_Changelist_.xml

@@ -1,4 +0,0 @@
-<changelist name="Uncommitted_changes_before_rebase_[Default_Changelist]" date="1654737005243" recycled="true" deleted="true">
-  <option name="PATH" value="$PROJECT_DIR$/.shelf/Uncommitted_changes_before_rebase_[Default_Changelist]/shelved.patch" />
-  <option name="DESCRIPTION" value="Uncommitted changes before rebase [Default Changelist]" />
-</changelist>

+ 0 - 5
fiveep-model/src/main/java/com/bizmatics/model/PlatformArea.java

@@ -64,9 +64,4 @@ public class PlatformArea implements Serializable {
      * 添加时间
      */
     private Date createTime;
-
-
-
-
-
 }

+ 1397 - 1397
fiveep-service/src/main/java/com/bizmatics/service/impl/RtAnalogDataServiceImpl.java

@@ -1,1397 +1,1397 @@
-package com.bizmatics.service.impl;
-
-import cn.afterturn.easypoi.excel.ExcelExportUtil;
-import cn.afterturn.easypoi.excel.entity.ExportParams;
-import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.bizmatics.common.core.exception.BusinessException;
-import com.bizmatics.common.core.util.*;
-import com.bizmatics.common.mvc.base.AbstractCrudService;
-import com.bizmatics.common.spring.util.GlobalUtils;
-import com.bizmatics.model.*;
-import com.bizmatics.model.vo.ContextualDataVo;
-import com.bizmatics.model.vo.EvaluationReporVo;
-import com.bizmatics.persistence.mapper.RtAnalogDataMapper;
-import com.bizmatics.service.DeviceAttributeService;
-import com.bizmatics.service.DeviceService;
-import com.bizmatics.service.RtAnalogDataService;
-import com.bizmatics.service.SiteDynamicPropertiesService;
-import com.bizmatics.service.util.SecurityUtils;
-import com.bizmatics.service.vo.RadCountVO;
-import com.bizmatics.service.vo.RealScoreOneVO;
-import com.bizmatics.service.vo.RealScoreVO;
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-/**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author ya
- * @since 2021-07-07
- */
-@Service
-public class RtAnalogDataServiceImpl extends AbstractCrudService<RtAnalogDataMapper, RtAnalogData> implements RtAnalogDataService {
-
-
-    @Autowired
-    private DeviceService deviceService;
-    @Autowired
-    private SiteDynamicPropertiesService siteDynamicPropertiesService;
-    @Autowired
-    private DeviceAttributeService deviceAttributeService;
-
-
-    @Override
-    public RadCountVO selectCount() {
-        Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
-        AtomicReference<Integer> heavyLoad = new AtomicReference<>(0);
-        AtomicReference<Integer> easyLoad = new AtomicReference<>(0);
-        AtomicReference<Integer> norMalLoad = new AtomicReference<>(0);
-        AtomicReference<Integer> count = new AtomicReference<>(0);
-        List<Device> deviceList = deviceService.list(userId, null, null, null, null, null);
-        List<RtAnalogData> list = baseMapper.list(userId);
-        for (Device device : deviceList) {
-            list.stream()
-                    .filter(rtAnalogData -> device.getDeviceCode().equals(rtAnalogData.getDeviceName())).findAny()
-                    .ifPresent(rtAnalogData -> {
-                        String installedCapacity = device.getInstalledCapacity();
-                        double installedCapacityDouble = 0.00;
-                        if (StringUtils.isNotBlank(installedCapacity)) {
-                            installedCapacityDouble = Double.parseDouble(installedCapacity);
-                            if (installedCapacityDouble > 0) {
-                                installedCapacityDouble = Arith.div(rtAnalogData.getP(), installedCapacityDouble);
-                            }
-                        }
-                        if (installedCapacityDouble < 0.4) {
-                            easyLoad.getAndSet(easyLoad.get() + 1);
-                        } else if (installedCapacityDouble >= 0.4 && installedCapacityDouble <= 0.8) {
-                            norMalLoad.getAndSet(norMalLoad.get() + 1);
-                        } else {
-                            heavyLoad.getAndSet(heavyLoad.get() + 1);
-                        }
-                        count.getAndSet(count.get() + 1);
-                    });
-
-        }
-        RadCountVO radCountVO = new RadCountVO();
-        radCountVO.setHeavyLoad(subRadio(heavyLoad.get(), count.get()));
-        radCountVO.setEasyLoad(subRadio(easyLoad.get(), count.get()));
-        radCountVO.setNorMalLoad(Arith.sub(1, Arith.add(radCountVO.getEasyLoad(), radCountVO.getHeavyLoad())));
-        return radCountVO;
-    }
-
-    public Double subRadio(Integer typeCount, Integer count) {
-        return Optional.of(count).filter(total -> total != 0).map(sub -> Arith.div(typeCount, sub)).orElse(0.00);
-    }
-
-
-    public String addUnitOne(String name) {
-        if (name.endsWith("电压")) {
-            return "V";
-        } else if (name.endsWith("电流")) {
-            return "A";
-        } else if (name.endsWith("温度")) {
-            return "℃";
-        } else if (name.endsWith("频率")) {
-            return "Hz";
-        } else if (name.endsWith("有功功率") || name.endsWith("需量")) {
-            return "KW";
-        } else if (name.endsWith("无功功率")) {
-            return "KVar";
-        } else if (name.endsWith("不平衡度") || name.endsWith("电压畸变率")) {
-            return "%";
-        } else if (name.endsWith("次数")) {
-            return "次";
-        } else if (name.endsWith("电度") || name.endsWith("有功")) {
-            return "KWh";
-        } else if (name.endsWith("THD")) {
-            return "%";
-        }
-        return "";
-    }
-
-    @Override
-    public List<Map<String, Object>> getOne(Integer siteId) {
-        Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
-        List<Map<String, Object>> list = new ArrayList<>();
-        Map<String, Object> radMap = baseMapper.getOneMap(userId,siteId);
-        Optional.ofNullable(radMap).ifPresent(rad -> {
-            for (String name : rad.keySet()) {
-                Map<String, Object> map = new HashMap<>();
-                map.put("name", name);
-                map.put("value", rad.get(name) + "" + addUnitOne(name));
-                list.add(map);
-            }
-        });
-        return list;
-    }
-
-    @Override
-    public Double getEpLoad(Integer siteId) {
-        Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
-        return baseMapper.selectTotalLoad(userId, siteId);
-    }
-
-    @Override
-    public RealScoreVO realScore(String deviceCode) {
-        //查询设备
-        LambdaQueryWrapper<Device> deviceQuery = Wrappers.lambdaQuery();
-        deviceQuery.eq(Device::getDeviceCode, deviceCode);
-        Device device = deviceService.getOne(deviceQuery);
-        Optional.ofNullable(device).orElseThrow(() -> new BusinessException("设备不存在"));
-
-        String table = "rt_analog_data";
-        if (device.getDeviceType().equals("1")){
-            table = "rt_analog_data";
-        }else if (device.getDeviceType().equals("4")){
-            table = "rt_analog_173_data";
-        }
-
-        List<RtAnalogData> rtAnalogDataList = baseMapper.getRtAnalogDataList(deviceCode,table);
-        RtAnalogData rtAnalogData = new RtAnalogData();
-        if (rtAnalogDataList.size()>0){
-            rtAnalogData = rtAnalogDataList.get(0);
-        }else {
-            new BusinessException("设备实时信息不存在");
-        }
-        //查询sd
-        LambdaQueryWrapper<SiteDynamicProperties> sdQuery = Wrappers.lambdaQuery();
-        sdQuery.eq(SiteDynamicProperties::getSiteId, device.getSiteId());
-        SiteDynamicProperties siteDynamicProperties = siteDynamicPropertiesService.getOne(sdQuery);
-        Optional.ofNullable(siteDynamicProperties).orElseThrow(() -> new BusinessException("sd不存在"));
-        LambdaQueryWrapper<DeviceAttribute> adQuery = Wrappers.lambdaQuery();
-        adQuery.eq(DeviceAttribute::getSiteId, device.getSiteId());
-        List<DeviceAttribute> deviceAttributes = deviceAttributeService.list(adQuery);
-        if (CollectionUtils.isEmpty(deviceAttributes)) {
-            throw new BusinessException("da不存在");
-        }
-        DeviceAttribute deviceAttribute = deviceAttributes.stream().min(Comparator.comparing(DeviceAttribute::getId)).get();
-        return fillRealScoreData(rtAnalogData, siteDynamicProperties, deviceAttribute);
-    }
-//    public RealScoreVO realScore(String deviceCode) {
-//        LambdaQueryWrapper<RtAnalogData> queryWrapper = Wrappers.lambdaQuery();
-//        queryWrapper.eq(RtAnalogData::getDeviceName, deviceCode);
-//        RtAnalogData rtAnalogData = getOne(queryWrapper);
-//        Optional.ofNullable(rtAnalogData).orElseThrow(() -> new BusinessException("设备实时信息不存在"));
-//        //查询设备
-//        LambdaQueryWrapper<Device> deviceQuery = Wrappers.lambdaQuery();
-//        deviceQuery.eq(Device::getDeviceCode, deviceCode);
-//        Device device = deviceService.getOne(deviceQuery);
-//        Optional.ofNullable(device).orElseThrow(() -> new BusinessException("设备不存在"));
-//        //查询sd
-//        LambdaQueryWrapper<SiteDynamicProperties> sdQuery = Wrappers.lambdaQuery();
-//        sdQuery.eq(SiteDynamicProperties::getSiteId, device.getSiteId());
-//        SiteDynamicProperties siteDynamicProperties = siteDynamicPropertiesService.getOne(sdQuery);
-//        Optional.ofNullable(siteDynamicProperties).orElseThrow(() -> new BusinessException("sd不存在"));
-//        LambdaQueryWrapper<DeviceAttribute> adQuery = Wrappers.lambdaQuery();
-//        adQuery.eq(DeviceAttribute::getSiteId, device.getSiteId());
-//        List<DeviceAttribute> deviceAttributes = deviceAttributeService.list(adQuery);
-//        if (CollectionUtils.isEmpty(deviceAttributes)) {
-//            throw new BusinessException("da不存在");
-//        }
-//        DeviceAttribute deviceAttribute = deviceAttributes.stream().min(Comparator.comparing(DeviceAttribute::getId)).get();
-//        return fillRealScoreData(rtAnalogData, siteDynamicProperties, deviceAttribute);
-//    }
-
-    @Override
-    public RealScoreOneVO realScoreOne(String deviceCode) {
-        //查询设备
-        LambdaQueryWrapper<Device> deviceQuery = Wrappers.lambdaQuery();
-        deviceQuery.eq(Device::getDeviceCode, deviceCode);
-        Device device = deviceService.getOne(deviceQuery);
-        Optional.ofNullable(device).orElseThrow(() -> new BusinessException("设备不存在"));
-
-
-        String table = "rt_analog_data";
-        if (device.getDeviceType().equals("1")){
-            table = "rt_analog_data";
-        }else if (device.getDeviceType().equals("4")){
-            table = "rt_analog_173_data";
-        }
-
-        List<RtAnalogData> rtAnalogDataList = baseMapper.getRtAnalogDataList(deviceCode,table);
-        RtAnalogData rtAnalogData = new RtAnalogData();
-        if (rtAnalogDataList.size()>0){
-            rtAnalogData = rtAnalogDataList.get(0);
-        }else {
-            new BusinessException("设备实时信息不存在");
-        }
-
-        //查询sd
-        LambdaQueryWrapper<SiteDynamicProperties> sdQuery = Wrappers.lambdaQuery();
-        sdQuery.eq(SiteDynamicProperties::getSiteId, device.getSiteId());
-        SiteDynamicProperties siteDynamicProperties = siteDynamicPropertiesService.getOne(sdQuery);
-        Optional.ofNullable(siteDynamicProperties).orElseThrow(() -> new BusinessException("sd不存在"));
-        return fillRealScoreDataOne(rtAnalogData, siteDynamicProperties);
-    }
-
-//    public RealScoreOneVO realScoreOne(String deviceCode) {
-//        LambdaQueryWrapper<RtAnalogData> queryWrapper = Wrappers.lambdaQuery();
-//        queryWrapper.eq(RtAnalogData::getDeviceName, deviceCode);
-//        RtAnalogData rtAnalogData = getOne(queryWrapper);
-//        Optional.ofNullable(rtAnalogData).orElseThrow(() -> new BusinessException("设备实时信息不存在"));
-//        //查询设备
-//        LambdaQueryWrapper<Device> deviceQuery = Wrappers.lambdaQuery();
-//        deviceQuery.eq(Device::getDeviceCode, deviceCode);
-//        Device device = deviceService.getOne(deviceQuery);
-//        Optional.ofNullable(device).orElseThrow(() -> new BusinessException("设备不存在"));
-//        //查询sd
-//        LambdaQueryWrapper<SiteDynamicProperties> sdQuery = Wrappers.lambdaQuery();
-//        sdQuery.eq(SiteDynamicProperties::getSiteId, device.getSiteId());
-//        SiteDynamicProperties siteDynamicProperties = siteDynamicPropertiesService.getOne(sdQuery);
-//        Optional.ofNullable(siteDynamicProperties).orElseThrow(() -> new BusinessException("sd不存在"));
-//        return fillRealScoreDataOne(rtAnalogData, siteDynamicProperties);
-//    }
-
-    @Override
-    public RealScoreOneVO fillRealScoreDataOne(RtAnalogData rtAnalogData, SiteDynamicProperties siteDynamicProperties) {
-        List<Double> checkList = new ArrayList<>();
-        RealScoreOneVO realScoreVo = BeanMapperUtils.map(rtAnalogData, RealScoreOneVO.class);
-
-        checkList.add(realScoreVo.getIa());
-        checkList.add(realScoreVo.getIb());
-        checkList.add(realScoreVo.getIc());
-
-        //电流不平衡
-        realScoreVo.setElBalun(checkBalun(checkList));
-
-        checkList.clear();
-        checkList.add(realScoreVo.getUa());
-        checkList.add(realScoreVo.getUb());
-        checkList.add(realScoreVo.getUc());
-        //ABC三相电压占比
-        Double max = checkList.stream().max(Double::compareTo).get();
-        if (max == 0.00) {
-            realScoreVo.setUaPercentage(0.00);
-            realScoreVo.setUbPercentage(0.00);
-            realScoreVo.setUcPercentage(0.00);
-        } else {
-            realScoreVo.setUaPercentage(Arith.div(realScoreVo.getUa(), (max / 100 * 20 + max) * 100));
-            realScoreVo.setUbPercentage(Arith.div(realScoreVo.getUb(), (max / 100 * 20 + max) * 100));
-            realScoreVo.setUcPercentage(Arith.div(realScoreVo.getUc(), (max / 100 * 20 + max) * 100));
-        }
-
-
-        //电压不平衡
-        realScoreVo.setVtBalun(checkBalun(checkList));
-        //当前频率
-        realScoreVo.setF(realScoreVo.getF());
-        //频率偏差
-        if (realScoreVo.getF() == 0.00) {
-            realScoreVo.setFdeviation(0.00);
-        } else {
-            checkList.clear();
-            checkList.add(50.00);
-            checkList.add(realScoreVo.getF());
-            Double max1 = checkList.stream().max(Double::compareTo).get();
-            Double min1 = checkList.stream().min(Double::compareTo).get();
-            realScoreVo.setFdeviation(Arith.sub(max1, min1) / 50 * 100);
-        }
-        if (realScoreVo.getP() == 0.00) {
-            realScoreVo.setPpercentage(0.00);
-        } else {
-            realScoreVo.setPpercentage(Arith.div(realScoreVo.getP(), realScoreVo.getP() / 100 * 20 + realScoreVo.getP()));
-        }
-        if (realScoreVo.getQ() == 0.00) {
-            realScoreVo.setQpercentage(0.00);
-        } else {
-            realScoreVo.setQpercentage(Arith.div(realScoreVo.getQ(), realScoreVo.getQ() / 100 * 20 + realScoreVo.getQ()));
-        }
-
-        realScoreVo.setVoltageLevel(siteDynamicProperties.getVoltageLevel());
-        return realScoreVo;
-    }
-
-    /**
-     * 填充实时数据
-     */
-    @Override
-    public RealScoreVO fillRealScoreData(RtAnalogData rtAnalogData, SiteDynamicProperties siteDynamicProperties, DeviceAttribute deviceAttribute) {
-        List<Double> checkList = new ArrayList<>();
-        Integer score = 0;
-        RealScoreVO realScoreVo = BeanMapperUtils.map(rtAnalogData, RealScoreVO.class);
-        if (null == realScoreVo.getCos()) {
-            realScoreVo.setCos(0.00);
-        }
-        checkList.add(realScoreVo.getIa());
-        checkList.add(realScoreVo.getIb());
-        checkList.add(realScoreVo.getIc());
-        //电流不平衡
-        realScoreVo.setElBalun(checkBalun(checkList));
-        checkList.clear();
-        checkList.add(realScoreVo.getUa());
-        checkList.add(realScoreVo.getUb());
-        checkList.add(realScoreVo.getUc());
-        //电压不平衡
-        realScoreVo.setVtBalun(checkBalun(checkList));
-        //电压合格率
-        double voltageLevel = Double.parseDouble(siteDynamicProperties.getVoltageLevel());
-        realScoreVo.setUaQualified(Arith.sub(rtAnalogData.getUa(), voltageLevel));
-        realScoreVo.setUbQualified(Arith.sub(rtAnalogData.getUb(), voltageLevel));
-        realScoreVo.setUcQualified(Arith.sub(rtAnalogData.getUc(), voltageLevel));
-        //电流负载率
-        Double ratedCurrent = deviceAttribute.getRatedCurrent();
-        realScoreVo.setIaLoad(Arith.div(realScoreVo.getIa(), ratedCurrent));
-        realScoreVo.setIbLoad(Arith.div(realScoreVo.getIb(), ratedCurrent));
-        realScoreVo.setIcLoad(Arith.div(realScoreVo.getIc(), ratedCurrent));
-        //计算分数
-        //电压分数
-        realScoreVo.setUaQ(computeUScore(realScoreVo.getUaQualified(), voltageLevel));
-        realScoreVo.setUbQ(computeUScore(realScoreVo.getUbQualified(), voltageLevel));
-        realScoreVo.setUcQ(computeUScore(realScoreVo.getUcQualified(), voltageLevel));
-        if (realScoreVo.getUaQ() && realScoreVo.getUbQ() && realScoreVo.getUcQ()) {
-            realScoreVo.setUQ(true);
-            score += 20;
-        } else {
-            realScoreVo.setUQ(false);
-        }
-        //电流分数
-        realScoreVo.setIaLoadQ(realScoreVo.getIaLoad() <= 0.8);
-        realScoreVo.setIbLoadQ(realScoreVo.getIbLoad() <= 0.8);
-        realScoreVo.setIcLoadQ(realScoreVo.getIcLoad() <= 0.8);
-        if (realScoreVo.getIaLoadQ() && realScoreVo.getIbLoadQ() && realScoreVo.getIcLoadQ()) {
-            realScoreVo.setILoadQ(true);
-            score += 20;
-        } else {
-            realScoreVo.setILoadQ(false);
-        }
-        //电压平衡分数
-        realScoreVo.setElBalunQ(realScoreVo.getElBalun() <= 0.15);
-        if (realScoreVo.getElBalunQ()) {
-            score += 20;
-        }
-        //电流平衡分数
-        realScoreVo.setVtBalunQ(realScoreVo.getVtBalun() <= 0.15);
-        if (realScoreVo.getVtBalunQ()) {
-            score += 20;
-        }
-        //功率
-        realScoreVo.setCosQ(realScoreVo.getCos() <= 0.15);
-        if (realScoreVo.getCosQ()) {
-            score += 20;
-        }
-        realScoreVo.setScore(score);
-        return realScoreVo;
-    }
-
-    /**
-     * 计算电压分数
-     *
-     * @return
-     */
-    public Boolean computeUScore(Double qualified, Double voltageLevel) {
-        double mul = Arith.mul(qualified, voltageLevel);
-        if (mul <= 0.07 && mul >= -0.07) {
-            return true;
-        }
-        return false;
-    }
-
-
-    /**
-     * 计算电流/电压不平衡
-     *
-     * @param list
-     * @return
-     */
-    public Double checkBalun(List<Double> list) {
-        long count = list.stream().filter(code -> 0.00 == code).count();
-        if (3 == count) {
-            return 0.00;
-        }
-        Double max = list.stream().max(Double::compareTo).get();
-        Double min = list.stream().min(Double::compareTo).get();
-        return Arith.div(Arith.sub(max, min), max);
-    }
-
-    /**
-     * 添加数据单位
-     *
-     * @return
-     */
-    public String addUnit(String name, String value) {
-        if (name.endsWith("电压")) {
-            return value + "V";
-        } else if (name.endsWith("电流")) {
-            return value + "A";
-        } else if (name.endsWith("温度")) {
-            return value + "C";
-        } else if (name.endsWith("频率")) {
-            return value + "Hz";
-        } else if (name.endsWith("有功功率") || name.endsWith("需量")) {
-            return value + "KW";
-        } else if (name.endsWith("无功功率")) {
-            return value + "KVar";
-        } else if (name.endsWith("不平衡度") || name.endsWith("电压畸变率")) {
-            return value + "%";
-        } else if (name.endsWith("次数")) {
-            return value + "次";
-        } else if (name.endsWith("电度") || name.endsWith("有功")) {
-            return value + "KWh";
-        }
-        return value;
-    }
-
-    @Override
-    public List<Map<String, Object>> getDataReport(Integer siteId, Date startTime, Date endTime, String queryType) {
-        List<Map<String, Object>> list = new ArrayList<>();
-        List<HtAnalogData> rtAnalogDataList = null;
-        long diff = endTime.getTime() - startTime.getTime();
-        long days = diff / (1000 * 60 * 60);
-
-        if (days <= 24) {
-            rtAnalogDataList = baseMapper.getDataReportMap(siteId, startTime, endTime);
-        } else if (days < 360 && days > 24) {
-            List<Device> device_list = baseMapper.getDeviceListMap(siteId);
-            rtAnalogDataList = baseMapper.getDataReportMMap(device_list, startTime, endTime);
-        } else if (days >= 360) {
-            List<Device> device_list = baseMapper.getDeviceListMap(siteId);
-            rtAnalogDataList = baseMapper.getDataReportDMap(device_list, startTime, endTime);
-        }
-        String[] result = queryType.split(",");
-        if (rtAnalogDataList.size() > 0) {
-            rtAnalogDataList.forEach(rtAnalogData -> {
-                Map<String, Object> map = new HashMap<>();
-                if (ArrayUtils.contains(result, "I")) {
-                    map.put("Ia", rtAnalogData.getIa());
-                    map.put("Ib", rtAnalogData.getIb());
-                    map.put("Ic", rtAnalogData.getIc());
-                    if (ArrayUtils.contains(result, "P")) {
-                        map.put("P", rtAnalogData.getP());
-                        map.put("Q", rtAnalogData.getQ());
-                        map.put("Pa", rtAnalogData.getPa());
-                        map.put("Pb", rtAnalogData.getPb());
-                        map.put("Pc", rtAnalogData.getPc());
-                        map.put("Qa", rtAnalogData.getQa());
-                        map.put("Qb", rtAnalogData.getQb());
-                        map.put("Qc", rtAnalogData.getQc());
-                        map.put("Demand", rtAnalogData.getDemand());
-                        if (ArrayUtils.contains(result, "KWh")) {
-                            map.put("Epn", rtAnalogData.getEpn());
-                            map.put("Epp", rtAnalogData.getEpp());
-                            map.put("Eqn", rtAnalogData.getEqn());
-                            map.put("Eqp", rtAnalogData.getEqp());
-                            if (ArrayUtils.contains(result, "V")) {
-                                map.put("Ua", rtAnalogData.getUa());
-                                map.put("Ub", rtAnalogData.getUb());
-                                map.put("Uc", rtAnalogData.getUc());
-                                map.put("Uab", rtAnalogData.getUab());
-                                map.put("Ubc", rtAnalogData.getUbc());
-                                map.put("Uca", rtAnalogData.getUca());
-                                map.put("Ul", rtAnalogData.getUl());
-                                if (ArrayUtils.contains(result, "C")) {
-                                    map.put("T1", rtAnalogData.getT1());
-                                    map.put("T2", rtAnalogData.getT2());
-                                    map.put("T3", rtAnalogData.getT3());
-                                    map.put("T4", rtAnalogData.getT4());
-                                    map.put("DeviceTemp", rtAnalogData.getDeviceTemp());
-                                    if (ArrayUtils.contains(result, "HZ")) {
-                                        map.put("F", rtAnalogData.getF());
-                                        if (ArrayUtils.contains(result, "PS")) {
-                                            map.put("COSa", rtAnalogData.getCOSa());
-                                            map.put("COSb", rtAnalogData.getCOSb());
-                                            map.put("COSc", rtAnalogData.getCOSc());
-                                            map.put("COS", rtAnalogData.getCos());
-                                            if (ArrayUtils.contains(result, "RMS")) {
-                                                map.put("IHa", rtAnalogData.getIHa());
-                                                map.put("IHb", rtAnalogData.getIHb());
-                                                map.put("IHc", rtAnalogData.getIHc());
-                                                if (ArrayUtils.contains(result, "DDB")) {
-                                                    map.put("SignalIntensity", rtAnalogData.getSignalIntensity());
-                                                    if (ArrayUtils.contains(result, "VT")) {
-                                                        map.put("Upt", rtAnalogData.getUpt());
-                                                        map.put("Udt", rtAnalogData.getUdt());
-                                                        map.put("Ust", rtAnalogData.getUst());
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-                if (days <= 24) {
-                    map.put("dataTime", DateUtils.format(rtAnalogData.getDataTime(), "MM-dd HH:mm"));
-                } else if (days < 360 && days > 24) {
-                    map.put("dataTime", DateUtils.format(rtAnalogData.getDataTime(), "MM-dd HH:mm"));
-                } else if (days >= 360) {
-                    map.put("dataTime", DateUtils.format(rtAnalogData.getDataTime(), DateUtils.PARSE_PATTERNS[8]));
-                }
-                list.add(map);
-            });
-        }
-        return list;
-    }
-
-    @Override
-    public List<Map<String, Object>> getHistoricalCurve(Integer siteId, Date startTime, Date endTime, String queryType) {
-        List<Map<String, Object>> list = new ArrayList<>();
-        List<Map<String, Object>> listdataTime = new ArrayList<>();
-        List<Map<String, Object>> list1 = new ArrayList<>();
-        List<Map<String, Object>> list2 = new ArrayList<>();
-        List<Map<String, Object>> list3 = new ArrayList<>();
-        List<Map<String, Object>> list4 = new ArrayList<>();
-        List<Map<String, Object>> list5 = new ArrayList<>();
-        List<Map<String, Object>> list6 = new ArrayList<>();
-        List<Map<String, Object>> list7 = new ArrayList<>();
-        List<Map<String, Object>> list8 = new ArrayList<>();
-        List<Map<String, Object>> list9 = new ArrayList<>();
-        List<HtAnalogData> rtAnalogDataList = null;
-        long diff = endTime.getTime() - startTime.getTime();
-        long days = diff / (1000 * 60 * 60);
-
-        if (days <= 24) {
-            rtAnalogDataList = baseMapper.getDataReportMap(siteId, startTime, endTime);
-        } else if (days < 360 && days > 24) {
-            List<Device> device_list = baseMapper.getDeviceListMap(siteId);
-            rtAnalogDataList = baseMapper.getDataReportMMap(device_list, startTime, endTime);
-        } else if (days >= 360) {
-            List<Device> device_list = baseMapper.getDeviceListMap(siteId);
-            rtAnalogDataList = baseMapper.getDataReportDMap(device_list, startTime, endTime);
-        }
-        String[] result = queryType.split(",");
-        if (rtAnalogDataList.size() > 0) {
-            Map<String, Object> mapIe1 = new HashMap<>();
-            Map<String, Object> mapIe2 = new HashMap<>();
-            Map<String, Object> mapIe3 = new HashMap<>();
-            Map<String, Object> mapIe4 = new HashMap<>();
-            Map<String, Object> mapIe5 = new HashMap<>();
-            Map<String, Object> mapIe6 = new HashMap<>();
-            Map<String, Object> mapIe7 = new HashMap<>();
-            Map<String, Object> mapIe8 = new HashMap<>();
-            Map<String, Object> mapIe9 = new HashMap<>();
-            for (int i = 0; i < rtAnalogDataList.size(); i++) {
-                Map<String, Object> map = new HashMap<>();
-                Map<String, Object> map1 = new HashMap<>();
-                Map<String, Object> map2 = new HashMap<>();
-                Map<String, Object> map3 = new HashMap<>();
-                Map<String, Object> map4 = new HashMap<>();
-                Map<String, Object> map5 = new HashMap<>();
-                Map<String, Object> map6 = new HashMap<>();
-                Map<String, Object> map7 = new HashMap<>();
-                Map<String, Object> map8 = new HashMap<>();
-                Map<String, Object> map9 = new HashMap<>();
-                HtAnalogData rtAnalogData = (HtAnalogData) rtAnalogDataList.get(i);
-//                if (days<=24){
-//                    map.put("dataTime",DateUtils.format(rtAnalogData.getDataTime(),"MM-dd HH:mm"));
-//                }else if (days<360&&days>24){
-//                    map.put("dataTime", DateUtils.format(rtAnalogData.getDataTime(),"MM-dd HH:mm"));
-//                }else if (days>=360){
-//                    map.put("dataTime",DateUtils.format(rtAnalogData.getDataTime(),DateUtils.PARSE_PATTERNS[8]));
-//                }
-                map.put("dataTime", rtAnalogData.getDataTime());
-
-                if (ArrayUtils.contains(result, "I")) {
-                    map1.put("Ia", rtAnalogData.getIa());
-                    map2.put("Ib", rtAnalogData.getIb());
-                    map3.put("Ic", rtAnalogData.getIc());
-                } else if (ArrayUtils.contains(result, "P")) {
-                    map1.put("P", rtAnalogData.getP());
-                    map2.put("Q", rtAnalogData.getQ());
-                    map3.put("Pa", rtAnalogData.getPa());
-                    map4.put("Pb", rtAnalogData.getPb());
-                    map5.put("Pc", rtAnalogData.getPc());
-                    map6.put("Qa", rtAnalogData.getQa());
-                    map7.put("Qb", rtAnalogData.getQb());
-                    map8.put("Qc", rtAnalogData.getQc());
-                    map9.put("Demand", rtAnalogData.getDemand());
-                } else if (ArrayUtils.contains(result, "KWh")) {
-                    map1.put("Epn", rtAnalogData.getEpn());
-                    map2.put("Epp", rtAnalogData.getEpp());
-                    map3.put("Eqn", rtAnalogData.getEqn());
-                    map4.put("Eqp", rtAnalogData.getEqp());
-                } else if (ArrayUtils.contains(result, "V")) {
-                    map1.put("Ua", rtAnalogData.getUa());
-                    map2.put("Ub", rtAnalogData.getUb());
-                    map3.put("Uc", rtAnalogData.getUc());
-                    map4.put("Uab", rtAnalogData.getUab());
-                    map5.put("Ubc", rtAnalogData.getUbc());
-                    map6.put("Uca", rtAnalogData.getUca());
-                    map7.put("Ul", rtAnalogData.getUl());
-                } else if (ArrayUtils.contains(result, "C")) {
-                    map1.put("T1", rtAnalogData.getT1());
-                    map2.put("T2", rtAnalogData.getT2());
-                    map3.put("T3", rtAnalogData.getT3());
-                    map4.put("T4", rtAnalogData.getT4());
-                    map5.put("DeviceTemp", rtAnalogData.getDeviceTemp());
-                } else if (ArrayUtils.contains(result, "HZ")) {
-                    map1.put("F", rtAnalogData.getF());
-                } else if (ArrayUtils.contains(result, "PS")) {
-                    map1.put("COSa", rtAnalogData.getCOSa());
-                    map2.put("COSb", rtAnalogData.getCOSb());
-                    map3.put("COSc", rtAnalogData.getCOSc());
-                    map4.put("COS", rtAnalogData.getCos());
-                } else if (ArrayUtils.contains(result, "RMS")) {
-                    map1.put("IHa", rtAnalogData.getIHa());
-                    map2.put("IHb", rtAnalogData.getIHb());
-                    map3.put("IHc", rtAnalogData.getIHc());
-                } else if (ArrayUtils.contains(result, "DDB")) {
-                    map1.put("SignalIntensity", rtAnalogData.getSignalIntensity());
-                } else if (ArrayUtils.contains(result, "VT")) {
-                    map1.put("Upt", rtAnalogData.getUpt());
-                    map2.put("Udt", rtAnalogData.getUdt());
-                    map3.put("Ust", rtAnalogData.getUst());
-                }
-                listdataTime.add(map);
-                list1.add(map1);
-                list2.add(map2);
-                list3.add(map3);
-                list4.add(map4);
-                list5.add(map5);
-                list6.add(map6);
-                list7.add(map7);
-                list8.add(map8);
-                list9.add(map9);
-            }
-            Object arre1[][] = new Object[listdataTime.size()][2];
-            Object arre2[][] = new Object[listdataTime.size()][2];
-            Object arre3[][] = new Object[listdataTime.size()][2];
-            Object arre4[][] = new Object[listdataTime.size()][2];
-            Object arre5[][] = new Object[listdataTime.size()][2];
-            Object arre6[][] = new Object[listdataTime.size()][2];
-            Object arre7[][] = new Object[listdataTime.size()][2];
-            Object arre8[][] = new Object[listdataTime.size()][2];
-            Object arre9[][] = new Object[listdataTime.size()][2];
-
-            if (ArrayUtils.contains(result, "I")) {
-                for (int i = 0; i < listdataTime.size(); i++) {
-                    arre1[i][0] = listdataTime.get(i).get("dataTime");
-                    arre1[i][1] = list1.get(i).get("Ia");
-                    arre2[i][0] = listdataTime.get(i).get("dataTime");
-                    arre2[i][1] = list2.get(i).get("Ib");
-                    arre3[i][0] = listdataTime.get(i).get("dataTime");
-                    arre3[i][1] = list3.get(i).get("Ic");
-                }
-                mapIe1.put("name", "A相电流");
-                mapIe1.put("arr", arre1);
-                mapIe2.put("name", "B相电流");
-                mapIe2.put("arr", arre2);
-                mapIe3.put("name", "C相电流");
-                mapIe3.put("arr", arre3);
-                list.add(mapIe1);
-                list.add(mapIe2);
-                list.add(mapIe3);
-            } else if (ArrayUtils.contains(result, "P")) {
-                for (int i = 0; i < listdataTime.size(); i++) {
-                    arre1[i][0] = listdataTime.get(i).get("dataTime");
-                    arre1[i][1] = list1.get(i).get("P");
-                    arre2[i][0] = listdataTime.get(i).get("dataTime");
-                    arre2[i][1] = list2.get(i).get("Q");
-                    arre3[i][0] = listdataTime.get(i).get("dataTime");
-                    arre3[i][1] = list3.get(i).get("Pa");
-                    arre4[i][0] = listdataTime.get(i).get("dataTime");
-                    arre4[i][1] = list4.get(i).get("Pb");
-                    arre5[i][0] = listdataTime.get(i).get("dataTime");
-                    arre5[i][1] = list5.get(i).get("Pc");
-                    arre6[i][0] = listdataTime.get(i).get("dataTime");
-                    arre6[i][1] = list6.get(i).get("Qa");
-                    arre7[i][0] = listdataTime.get(i).get("dataTime");
-                    arre7[i][1] = list7.get(i).get("Qb");
-                    arre8[i][0] = listdataTime.get(i).get("dataTime");
-                    arre8[i][1] = list8.get(i).get("Qc");
-                    arre9[i][0] = listdataTime.get(i).get("dataTime");
-                    arre9[i][1] = list9.get(i).get("Demand");
-                }
-                mapIe1.put("name", "总有功功率");
-                mapIe1.put("arr", arre1);
-                mapIe2.put("name", "总无功功率");
-                mapIe2.put("arr", arre2);
-                mapIe3.put("name", "A相有功功率");
-                mapIe3.put("arr", arre3);
-                mapIe4.put("name", "B相有功功率");
-                mapIe4.put("arr", arre4);
-                mapIe5.put("name", "C相有功功率");
-                mapIe5.put("arr", arre5);
-                mapIe6.put("name", "A相无功功率");
-                mapIe6.put("arr", arre6);
-                mapIe7.put("name", "B相无功功率");
-                mapIe7.put("arr", arre7);
-                mapIe8.put("name", "C相无功功率");
-                mapIe8.put("arr", arre8);
-                mapIe9.put("name", "实时需量");
-                mapIe9.put("arr", arre9);
-                list.add(mapIe1);
-                list.add(mapIe2);
-                list.add(mapIe3);
-                list.add(mapIe4);
-                list.add(mapIe5);
-                list.add(mapIe6);
-                list.add(mapIe7);
-                list.add(mapIe8);
-                list.add(mapIe9);
-            } else if (ArrayUtils.contains(result, "KWh")) {
-                for (int i = 0; i < listdataTime.size(); i++) {
-                    arre1[i][0] = listdataTime.get(i).get("dataTime");
-                    arre1[i][1] = list1.get(i).get("Epn");
-                    arre2[i][0] = listdataTime.get(i).get("dataTime");
-                    arre2[i][1] = list2.get(i).get("Epp");
-                    arre3[i][0] = listdataTime.get(i).get("dataTime");
-                    arre3[i][1] = list3.get(i).get("Eqn");
-                    arre4[i][0] = listdataTime.get(i).get("dataTime");
-                    arre4[i][1] = list4.get(i).get("Eqp");
-                }
-                mapIe1.put("name", "负有功电度");
-                mapIe1.put("arr", arre1);
-                mapIe2.put("name", "正有功电度");
-                mapIe2.put("arr", arre2);
-                mapIe3.put("name", "负无功电度");
-                mapIe3.put("arr", arre3);
-                mapIe4.put("name", "正无功电度");
-                mapIe4.put("arr", arre4);
-                list.add(mapIe1);
-                list.add(mapIe2);
-                list.add(mapIe3);
-                list.add(mapIe4);
-            } else if (ArrayUtils.contains(result, "V")) {
-                for (int i = 0; i < listdataTime.size(); i++) {
-                    arre1[i][0] = listdataTime.get(i).get("dataTime");
-                    arre1[i][1] = list1.get(i).get("Ua");
-                    arre2[i][0] = listdataTime.get(i).get("dataTime");
-                    arre2[i][1] = list2.get(i).get("Ub");
-                    arre3[i][0] = listdataTime.get(i).get("dataTime");
-                    arre3[i][1] = list3.get(i).get("Uc");
-                    arre4[i][0] = listdataTime.get(i).get("dataTime");
-                    arre4[i][1] = list4.get(i).get("Uab");
-                    arre5[i][0] = listdataTime.get(i).get("dataTime");
-                    arre5[i][1] = list5.get(i).get("Ubc");
-                    arre6[i][0] = listdataTime.get(i).get("dataTime");
-                    arre6[i][1] = list6.get(i).get("Uca");
-                    arre7[i][0] = listdataTime.get(i).get("dataTime");
-                    arre7[i][1] = list7.get(i).get("Ul");
-                }
-                mapIe1.put("name", "A相电压");
-                mapIe1.put("arr", arre1);
-                mapIe2.put("name", "B相电压");
-                mapIe2.put("arr", arre2);
-                mapIe3.put("name", "C相电压");
-                mapIe3.put("arr", arre3);
-                mapIe4.put("name", "AB线电压");
-                mapIe4.put("arr", arre4);
-                mapIe5.put("name", "BC线电压");
-                mapIe5.put("arr", arre5);
-                mapIe6.put("name", "CA线电压");
-                mapIe6.put("arr", arre6);
-                mapIe7.put("name", "回路电压");
-                mapIe7.put("arr", arre7);
-                list.add(mapIe1);
-                list.add(mapIe2);
-                list.add(mapIe3);
-                list.add(mapIe4);
-                list.add(mapIe5);
-                list.add(mapIe6);
-                list.add(mapIe7);
-            } else if (ArrayUtils.contains(result, "C")) {
-                for (int i = 0; i < listdataTime.size(); i++) {
-                    arre1[i][0] = listdataTime.get(i).get("dataTime");
-                    arre1[i][1] = list1.get(i).get("T1");
-                    arre2[i][0] = listdataTime.get(i).get("dataTime");
-                    arre2[i][1] = list2.get(i).get("T2");
-                    arre3[i][0] = listdataTime.get(i).get("dataTime");
-                    arre3[i][1] = list3.get(i).get("T3");
-                    arre4[i][0] = listdataTime.get(i).get("dataTime");
-                    arre4[i][1] = list4.get(i).get("T4");
-                    arre5[i][0] = listdataTime.get(i).get("dataTime");
-                    arre5[i][1] = list5.get(i).get("DeviceTemp");
-                }
-                mapIe1.put("name", "外接温度1");
-                mapIe1.put("arr", arre1);
-                mapIe2.put("name", "外接温度1");
-                mapIe2.put("arr", arre2);
-                mapIe3.put("name", "外接温度1");
-                mapIe3.put("arr", arre3);
-                mapIe4.put("name", "外接温度1");
-                mapIe4.put("arr", arre4);
-                mapIe5.put("name", "环境温度");
-                mapIe5.put("arr", arre5);
-                list.add(mapIe1);
-                list.add(mapIe2);
-                list.add(mapIe3);
-                list.add(mapIe4);
-                list.add(mapIe5);
-            } else if (ArrayUtils.contains(result, "HZ")) {
-                for (int i = 0; i < listdataTime.size(); i++) {
-                    arre1[i][0] = listdataTime.get(i).get("dataTime");
-                    arre1[i][1] = list1.get(i).get("F");
-                }
-                mapIe1.put("name", "频率");
-                mapIe1.put("arr", arre1);
-                list.add(mapIe1);
-            } else if (ArrayUtils.contains(result, "PS")) {
-                for (int i = 0; i < listdataTime.size(); i++) {
-                    arre1[i][0] = listdataTime.get(i).get("dataTime");
-                    arre1[i][1] = list1.get(i).get("COSa");
-                    arre2[i][0] = listdataTime.get(i).get("dataTime");
-                    arre2[i][1] = list2.get(i).get("COSb");
-                    arre3[i][0] = listdataTime.get(i).get("dataTime");
-                    arre3[i][1] = list3.get(i).get("COSc");
-                    arre4[i][0] = listdataTime.get(i).get("dataTime");
-                    arre4[i][1] = list4.get(i).get("COS");
-                }
-                mapIe1.put("name", "A相功率因数");
-                mapIe1.put("arr", arre1);
-                mapIe2.put("name", "B相功率因数");
-                mapIe2.put("arr", arre2);
-                mapIe3.put("name", "C相功率因数");
-                mapIe3.put("arr", arre3);
-                mapIe4.put("name", "功率因数");
-                mapIe4.put("arr", arre4);
-                list.add(mapIe1);
-                list.add(mapIe2);
-                list.add(mapIe3);
-                list.add(mapIe4);
-            } else if (ArrayUtils.contains(result, "RMS")) {
-                for (int i = 0; i < listdataTime.size(); i++) {
-                    arre1[i][0] = listdataTime.get(i).get("dataTime");
-                    arre1[i][1] = list1.get(i).get("IHa");
-                    arre2[i][0] = listdataTime.get(i).get("dataTime");
-                    arre2[i][1] = list2.get(i).get("IHb");
-                    arre3[i][0] = listdataTime.get(i).get("dataTime");
-                    arre3[i][1] = list3.get(i).get("IHc");
-                }
-                mapIe1.put("name", "Ia总谐波电流");
-                mapIe1.put("arr", arre1);
-                mapIe2.put("name", "Ib总谐波电流");
-                mapIe2.put("arr", arre2);
-                mapIe3.put("name", "Ic总谐波电流");
-                mapIe3.put("arr", arre3);
-                list.add(mapIe1);
-                list.add(mapIe2);
-                list.add(mapIe3);
-            } else if (ArrayUtils.contains(result, "DDB")) {
-                for (int i = 0; i < listdataTime.size(); i++) {
-                    arre1[i][0] = listdataTime.get(i).get("dataTime");
-                    arre1[i][1] = list1.get(i).get("SignalIntensity");
-                }
-                mapIe1.put("name", "设备信号强度");
-                mapIe1.put("arr", arre1);
-                list.add(mapIe1);
-            } else if (ArrayUtils.contains(result, "VT")) {
-                for (int i = 0; i < listdataTime.size(); i++) {
-                    arre1[i][0] = listdataTime.get(i).get("dataTime");
-                    arre1[i][1] = list1.get(i).get("Upt");
-                    arre2[i][0] = listdataTime.get(i).get("dataTime");
-                    arre2[i][1] = list2.get(i).get("Udt");
-                    arre3[i][0] = listdataTime.get(i).get("dataTime");
-                    arre3[i][1] = list3.get(i).get("Ust");
-                }
-                mapIe1.put("name", "电压暂升次数");
-                mapIe1.put("arr", arre1);
-                mapIe2.put("name", "电压暂降次数");
-                mapIe2.put("arr", arre2);
-                mapIe3.put("name", "电压中断次数");
-                mapIe3.put("arr", arre3);
-                list.add(mapIe1);
-                list.add(mapIe2);
-                list.add(mapIe3);
-            }
-        }
-
-        return list;
-    }
-
-
-    @Override
-    public String DataReportExport(Integer siteId, Date startTime, Date endTime, String queryType) {
-        DateFormat dFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
-        Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
-        Workbook workbook = null;
-        File file = null;
-        long diff = endTime.getTime() - startTime.getTime();
-        long days = diff / (1000 * 60 * 60);
-        ExportParams params = new ExportParams("数据报表", "数据报表");
-        List<HtAnalogData> page1 = null;
-        if (days <= 24) {
-            page1 = baseMapper.getDataReportMap(siteId, startTime, endTime);
-        } else if (days < 360 && days > 24) {
-            List<Device> device_list = baseMapper.getDeviceListMap(siteId);
-            page1 = baseMapper.getDataReportMMap(device_list, startTime, endTime);
-        } else if (days >= 360) {
-            List<Device> device_list = baseMapper.getDeviceListMap(siteId);
-            page1 = baseMapper.getDataReportDMap(device_list, startTime, endTime);
-        }
-        String[] result = queryType.split(",");
-        try {
-            List<ExcelExportEntity> colList = new ArrayList<ExcelExportEntity>();
-            ExcelExportEntity colEntity = new ExcelExportEntity("序号", "xh");
-            colEntity.setNeedMerge(true);
-            colList.add(colEntity);
-            colEntity = new ExcelExportEntity("时间", "dataTime");
-            colEntity.setNeedMerge(true);
-            colList.add(colEntity);
-            if (ArrayUtils.contains(result, "I")) {
-                colEntity = new ExcelExportEntity("A相电流", "Ia");
-                colEntity.setNeedMerge(true);
-                colList.add(colEntity);
-                colEntity = new ExcelExportEntity("B相电流", "Ib");
-                colEntity.setNeedMerge(true);
-                colList.add(colEntity);
-                colEntity = new ExcelExportEntity("C相电流", "Ic");
-                colEntity.setNeedMerge(true);
-                colList.add(colEntity);
-                if (ArrayUtils.contains(result, "P")) {
-                    colEntity = new ExcelExportEntity("总有功功率", "P");
-                    colEntity.setNeedMerge(true);
-                    colList.add(colEntity);
-                    colEntity = new ExcelExportEntity("总无功功率", "Q");
-                    colEntity.setNeedMerge(true);
-                    colList.add(colEntity);
-                    colEntity = new ExcelExportEntity("A相有功功率", "Pa");
-                    colEntity.setNeedMerge(true);
-                    colList.add(colEntity);
-                    colEntity = new ExcelExportEntity("B相有功功率", "Pb");
-                    colEntity.setNeedMerge(true);
-                    colList.add(colEntity);
-                    colEntity = new ExcelExportEntity("C相有功功率", "Pc");
-                    colEntity.setNeedMerge(true);
-                    colList.add(colEntity);
-                    colEntity = new ExcelExportEntity("A相无功功率", "Qa");
-                    colEntity.setNeedMerge(true);
-                    colList.add(colEntity);
-                    colEntity = new ExcelExportEntity("B相无功功率", "Qb");
-                    colEntity.setNeedMerge(true);
-                    colList.add(colEntity);
-                    colEntity = new ExcelExportEntity("C相无功功率", "Qc");
-                    colEntity.setNeedMerge(true);
-                    colList.add(colEntity);
-                    colEntity = new ExcelExportEntity("实时需量", "Demand");
-                    colEntity.setNeedMerge(true);
-                    colList.add(colEntity);
-                    if (ArrayUtils.contains(result, "KWh")) {
-                        colEntity = new ExcelExportEntity("负有功电度", "Epn");
-                        colEntity.setNeedMerge(true);
-                        colList.add(colEntity);
-                        colEntity = new ExcelExportEntity("正有功电度", "Epp");
-                        colEntity.setNeedMerge(true);
-                        colList.add(colEntity);
-                        colEntity = new ExcelExportEntity("负无功电度", "Eqn");
-                        colEntity.setNeedMerge(true);
-                        colList.add(colEntity);
-                        colEntity = new ExcelExportEntity("正无功电度", "Eqp");
-                        colEntity.setNeedMerge(true);
-                        colList.add(colEntity);
-                        if (ArrayUtils.contains(result, "V")) {
-                            colEntity = new ExcelExportEntity("A相电压", "Ua");
-                            colEntity.setNeedMerge(true);
-                            colList.add(colEntity);
-                            colEntity = new ExcelExportEntity("B相电压", "Ub");
-                            colEntity.setNeedMerge(true);
-                            colList.add(colEntity);
-                            colEntity = new ExcelExportEntity("C相电压", "Ub");
-                            colEntity.setNeedMerge(true);
-                            colList.add(colEntity);
-                            colEntity = new ExcelExportEntity("AB线电压", "Uab");
-                            colEntity.setNeedMerge(true);
-                            colList.add(colEntity);
-                            colEntity = new ExcelExportEntity("BC线电压", "Ubc");
-                            colEntity.setNeedMerge(true);
-                            colList.add(colEntity);
-                            colEntity = new ExcelExportEntity("CA线电压", "Uca");
-                            colEntity.setNeedMerge(true);
-                            colList.add(colEntity);
-                            colEntity = new ExcelExportEntity("回路电压", "Ul");
-                            colEntity.setNeedMerge(true);
-                            colList.add(colEntity);
-                            if (ArrayUtils.contains(result, "C")) {
-                                colEntity = new ExcelExportEntity("外接温度1", "T1");
-                                colEntity.setNeedMerge(true);
-                                colList.add(colEntity);
-                                colEntity = new ExcelExportEntity("外接温度2", "T2");
-                                colEntity.setNeedMerge(true);
-                                colList.add(colEntity);
-                                colEntity = new ExcelExportEntity("外接温度3", "T3");
-                                colEntity.setNeedMerge(true);
-                                colList.add(colEntity);
-                                colEntity = new ExcelExportEntity("外接温度4", "T4");
-                                colEntity.setNeedMerge(true);
-                                colList.add(colEntity);
-                                colEntity = new ExcelExportEntity("环境温度", "DeviceTemp");
-                                colEntity.setNeedMerge(true);
-                                colList.add(colEntity);
-                                if (ArrayUtils.contains(result, "HZ")) {
-                                    colEntity = new ExcelExportEntity("频率", "F");
-                                    colEntity.setNeedMerge(true);
-                                    colList.add(colEntity);
-//                                    map.put("F",rtAnalogData.getF());
-                                    if (ArrayUtils.contains(result, "PS")) {
-                                        colEntity = new ExcelExportEntity("A相功率因数", "COSa");
-                                        colEntity.setNeedMerge(true);
-                                        colList.add(colEntity);
-                                        colEntity = new ExcelExportEntity("B相功率因数", "COSb");
-                                        colEntity.setNeedMerge(true);
-                                        colList.add(colEntity);
-                                        colEntity = new ExcelExportEntity("C相功率因数", "COSc");
-                                        colEntity.setNeedMerge(true);
-                                        colList.add(colEntity);
-                                        colEntity = new ExcelExportEntity("功率因数", "COS");
-                                        colEntity.setNeedMerge(true);
-                                        colList.add(colEntity);
-                                        if (ArrayUtils.contains(result, "RMS")) {
-                                            colEntity = new ExcelExportEntity("Ia总谐波电流", "IHa");
-                                            colEntity.setNeedMerge(true);
-                                            colList.add(colEntity);
-                                            colEntity = new ExcelExportEntity("Ib总谐波电流", "IHb");
-                                            colEntity.setNeedMerge(true);
-                                            colList.add(colEntity);
-                                            colEntity = new ExcelExportEntity("Ic总谐波电流", "IHc");
-                                            colEntity.setNeedMerge(true);
-                                            colList.add(colEntity);
-                                            if (ArrayUtils.contains(result, "DDB")) {
-                                                colEntity = new ExcelExportEntity("设备信号强度", "SignalIntensity");
-                                                colEntity.setNeedMerge(true);
-                                                colList.add(colEntity);
-                                                if (ArrayUtils.contains(result, "VT")) {
-                                                    colEntity = new ExcelExportEntity("电压暂升次数", "Upt");
-                                                    colEntity.setNeedMerge(true);
-                                                    colList.add(colEntity);
-                                                    colEntity = new ExcelExportEntity("电压暂降次数", "Udt");
-                                                    colEntity.setNeedMerge(true);
-                                                    colList.add(colEntity);
-                                                    colEntity = new ExcelExportEntity("电压中断次数", "Ust");
-                                                    colEntity.setNeedMerge(true);
-                                                    colList.add(colEntity);
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-            List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
-            for (int i = 0; i < page1.size(); i++) {
-                Map<String, Object> valMap = new HashMap<String, Object>();
-                valMap.put("xh", i + 1);
-                if (days <= 24) {
-                    valMap.put("dataTime", DateUtils.format(page1.get(i).getDataTime(), "MM-dd HH:mm"));
-                } else if (days < 360 && days > 24) {
-                    valMap.put("dataTime", DateUtils.format(page1.get(i).getDataTime(), "MM-dd HH:mm"));
-                } else if (days >= 360) {
-                    valMap.put("dataTime", DateUtils.format(page1.get(i).getDataTime(), DateUtils.PARSE_PATTERNS[8]));
-                }
-                if (ArrayUtils.contains(result, "I")) {
-                    valMap.put("Ia", page1.get(i).getIa());
-                    valMap.put("Ib", page1.get(i).getIb());
-                    valMap.put("Ic", page1.get(i).getIc());
-                    if (ArrayUtils.contains(result, "P")) {
-                        valMap.put("P", page1.get(i).getP());
-                        valMap.put("Q", page1.get(i).getQ());
-                        valMap.put("Pa", page1.get(i).getPa());
-                        valMap.put("Pb", page1.get(i).getPb());
-                        valMap.put("Pc", page1.get(i).getPc());
-                        valMap.put("Qa", page1.get(i).getQa());
-                        valMap.put("Qb", page1.get(i).getQb());
-                        valMap.put("Qc", page1.get(i).getQc());
-                        valMap.put("Demand", page1.get(i).getDemand());
-                        if (ArrayUtils.contains(result, "KWh")) {
-                            valMap.put("Epn", page1.get(i).getEpn());
-                            valMap.put("Epp", page1.get(i).getEpp());
-                            valMap.put("Eqn", page1.get(i).getEqn());
-                            valMap.put("Eqp", page1.get(i).getEqp());
-                            if (ArrayUtils.contains(result, "V")) {
-                                valMap.put("Ua", page1.get(i).getUa());
-                                valMap.put("Ub", page1.get(i).getUb());
-                                valMap.put("Uc", page1.get(i).getUc());
-                                valMap.put("Uab", page1.get(i).getUab());
-                                valMap.put("Ubc", page1.get(i).getUbc());
-                                valMap.put("Uca", page1.get(i).getUca());
-                                valMap.put("Ul", page1.get(i).getUl());
-                                if (ArrayUtils.contains(result, "C")) {
-                                    valMap.put("T1", page1.get(i).getT1());
-                                    valMap.put("T2", page1.get(i).getT2());
-                                    valMap.put("T3", page1.get(i).getT3());
-                                    valMap.put("T4", page1.get(i).getT4());
-                                    valMap.put("DeviceTemp", page1.get(i).getDeviceTemp());
-                                    if (ArrayUtils.contains(result, "HZ")) {
-                                        valMap.put("F", page1.get(i).getF());
-                                        if (ArrayUtils.contains(result, "PS")) {
-                                            valMap.put("COSa", page1.get(i).getCOSa());
-                                            valMap.put("COSb", page1.get(i).getCOSb());
-                                            valMap.put("COSc", page1.get(i).getCOSc());
-                                            valMap.put("COS", page1.get(i).getCos());
-                                            if (ArrayUtils.contains(result, "RMS")) {
-                                                valMap.put("IHa", page1.get(i).getIHa());
-                                                valMap.put("IHb", page1.get(i).getIHb());
-                                                valMap.put("IHc", page1.get(i).getIHc());
-                                                if (ArrayUtils.contains(result, "DDB")) {
-                                                    valMap.put("SignalIntensity", page1.get(i).getSignalIntensity());
-                                                    if (ArrayUtils.contains(result, "VT")) {
-                                                        valMap.put("Upt", page1.get(i).getUpt());
-                                                        valMap.put("Udt", page1.get(i).getUdt());
-                                                        valMap.put("Ust", page1.get(i).getUst());
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-                list.add(valMap);
-            }
-
-            workbook = ExcelExportUtil.exportExcel(params, colList, list);
-
-            if (null != workbook) {
-                file = FileUtils.getFile(GlobalUtils.getTempBaseDir(), String.format("%s-%s.xlsx", "数据报表", dFormat.format(System.currentTimeMillis()) + ""));
-                FileUtils.createFile(file.getAbsolutePath());
-                FileOutputStream allListingFileOutputStream = new FileOutputStream(file);
-                workbook.write(allListingFileOutputStream);
-            } else {
-                throw new BusinessException("表格数据为空");
-            }
-        } catch (FileNotFoundException e) {
-            log.error("导出文件失败", e);
-            throw new BusinessException("导出文件失败");
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return file.getName();
-    }
-
-    public static Date getLastDayOfMonth(Date sDate1) {
-        Calendar cDay1 = Calendar.getInstance();
-        cDay1.setTime(sDate1);
-        final int lastDay = cDay1.getActualMaximum(Calendar.DAY_OF_MONTH);
-        Date lastDate = cDay1.getTime();
-        lastDate.setDate(lastDay);
-        return lastDate;
-    }
-
-
-
-
-    @Override
-    public List<RealScoreVO> evaluationReport(int siteId, Date time, int type) {
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM");
-        String startTime = null;
-        String endtime = null;
-        if (type == 1) {
-            startTime = sdf.format(time) + " 00:00:00";
-            endtime = sdf.format(time) + " 23:59:59";
-        } else {
-            startTime = sdf1.format(time) + "-01 00:00:00";
-            String time1 = sdf1.format(time) + "-01";
-            try {
-                Date yq = getLastDayOfMonth(sdf.parse(time1));
-                endtime = sdf.format(yq) + " 23:59:59";
-            } catch (Exception e) {
-                throw new BusinessException("时间错误");
-            }
-        }
-        LambdaQueryWrapper<Device> queryWrapper1 = Wrappers.lambdaQuery();
-        queryWrapper1.eq(Device::getSiteId,siteId);
-        List<Device> deviceList = deviceService.list(queryWrapper1);
-        List<String> fieldDisplayOne183 = new ArrayList();
-        List<String> fieldDisplayOne171 = new ArrayList();
-        List<String> fieldDisplayOne173 = new ArrayList();
-        if (deviceList.size() > 0) {
-            for(int j = 0; j < deviceList.size(); j++){
-                if (deviceList.get(j).getDeviceType().equals("1")) {
-                    fieldDisplayOne183.add(deviceList.get(j).getDeviceCode());
-                } else if (deviceList.get(j).getDeviceType().equals("3")) {
-                    fieldDisplayOne171.add(deviceList.get(j).getDeviceCode());
-                } else if (deviceList.get(j).getDeviceType().equals("4")) {
-                    fieldDisplayOne173.add(deviceList.get(j).getDeviceCode());
-                }
-            }
-        }
-        List<EvaluationReporVo> evaluationReporVo1 = new ArrayList<>();
-        List<EvaluationReporVo> evaluationReporVo2 = new ArrayList<>();
-        if (fieldDisplayOne183.size()>0){
-            evaluationReporVo1 = baseMapper.getEvaluationReportList(siteId, startTime, endtime,"ht_analog_data",fieldDisplayOne183);
-        }
-        if (fieldDisplayOne173.size()>0){
-            evaluationReporVo2 = baseMapper.getEvaluationReportList(siteId, startTime, endtime,"ht_analog_173_data",fieldDisplayOne173);
-        }
-
-        List<EvaluationReporVo> evaluationReporVo = Stream.of(evaluationReporVo1, evaluationReporVo2).flatMap(Collection::stream).distinct().collect(Collectors.toList());
-        return fillRealScoreDataTwo(evaluationReporVo);
-    }
-
-//    public List<RealScoreVO> evaluationReport(int siteId, Date time, int type) {
-//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-//        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM");
-//        String startTime = null;
-//        String endtime = null;
-//        if (type == 1) {
-//            startTime = sdf.format(time) + " 00:00:00";
-//            endtime = sdf.format(time) + " 23:59:59";
-//        } else {
-//            startTime = sdf1.format(time) + "-01 00:00:00";
-//            String time1 = sdf1.format(time) + "-01";
-//            try {
-//                Date yq = getLastDayOfMonth(sdf.parse(time1));
-//                endtime = sdf.format(yq) + " 23:59:59";
-//            } catch (Exception e) {
-//                throw new BusinessException("时间错误");
-//            }
-//        }
-//
-//        List<EvaluationReporVo> evaluationReporVo = baseMapper.evaluationReportList(siteId, startTime, endtime);
-//        return fillRealScoreDataTwo(evaluationReporVo);
-//    }
-
-    /**
-     * 计算电压分数2
-     *
-     * @return
-     */
-    public Boolean computeUScoreOne(Double qualified, Double voltageLevel) {
-//        double mul = Arith.mul(qualified, voltageLevel);
-        Double voltageLevels = voltageLevel+(voltageLevel / 100 * 7);
-        Double voltageLevelx = voltageLevel-(voltageLevel / 100 * 7);
-        if (voltageLevelx <= qualified && voltageLevels >= qualified) {
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public List<RealScoreVO> fillRealScoreDataTwo(List<EvaluationReporVo> evaluationReporVo) {
-        List<RealScoreVO> realScoreVoList = new ArrayList<>();
-        if (evaluationReporVo.size() > 0) {
-            for (int i = 0; i < evaluationReporVo.size(); i++) {
-                List<Double> checkList = new ArrayList<>();
-                Integer score = 0;
-                RealScoreVO realScoreVo = BeanMapperUtils.map(evaluationReporVo.get(i), RealScoreVO.class);
-                if (null == realScoreVo.getCos()) {
-                    realScoreVo.setCos(0.00);
-                }
-                checkList.clear();
-                checkList.add(realScoreVo.getIa());
-                checkList.add(realScoreVo.getIb());
-                checkList.add(realScoreVo.getIc());
-                //电流不平衡
-                realScoreVo.setElBalun(checkBalun(checkList));
-                checkList.clear();
-                checkList.add(realScoreVo.getUa());
-                checkList.add(realScoreVo.getUb());
-                checkList.add(realScoreVo.getUc());
-                //电压不平衡
-                realScoreVo.setVtBalun(checkBalun(checkList));
-                //电压合格率
-                double voltageLevel = Double.parseDouble(evaluationReporVo.get(i).getVoltageLevel());
-                realScoreVo.setUaQualified(Arith.sub(evaluationReporVo.get(i).getUa(), voltageLevel));
-                realScoreVo.setUbQualified(Arith.sub(evaluationReporVo.get(i).getUb(), voltageLevel));
-                realScoreVo.setUcQualified(Arith.sub(evaluationReporVo.get(i).getUc(), voltageLevel));
-                //电流负载率
-                Double ratedCurrent = evaluationReporVo.get(i).getRatedCurrent();
-                realScoreVo.setIaLoad(Arith.div(realScoreVo.getIa(), ratedCurrent));
-                realScoreVo.setIbLoad(Arith.div(realScoreVo.getIb(), ratedCurrent));
-                realScoreVo.setIcLoad(Arith.div(realScoreVo.getIc(), ratedCurrent));
-                //计算分数
-                //电压分数
-                realScoreVo.setUaQ(computeUScoreOne(realScoreVo.getUa(), voltageLevel));
-                realScoreVo.setUbQ(computeUScoreOne(realScoreVo.getUb(), voltageLevel));
-                realScoreVo.setUcQ(computeUScoreOne(realScoreVo.getUc(), voltageLevel));
-                if (realScoreVo.getUaQ() && realScoreVo.getUbQ() && realScoreVo.getUcQ()) {
-                    realScoreVo.setUQ(true);
-                    score += 20;
-                } else {
-                    realScoreVo.setUQ(false);
-                }
-                //电流分数
-                realScoreVo.setIaLoadQ(realScoreVo.getIaLoad() <= 0.8);
-                realScoreVo.setIbLoadQ(realScoreVo.getIbLoad() <= 0.8);
-                realScoreVo.setIcLoadQ(realScoreVo.getIcLoad() <= 0.8);
-                if (realScoreVo.getIaLoadQ() && realScoreVo.getIbLoadQ() && realScoreVo.getIcLoadQ()) {
-                    realScoreVo.setILoadQ(true);
-                    score += 20;
-                } else {
-                    realScoreVo.setILoadQ(false);
-                }
-                //电压平衡分数
-                realScoreVo.setElBalunQ(realScoreVo.getElBalun() <= 0.15);
-                if (realScoreVo.getElBalunQ()) {
-                    score += 20;
-                }
-                //电流平衡分数
-                realScoreVo.setVtBalunQ(realScoreVo.getVtBalun() <= 0.15);
-                if (realScoreVo.getVtBalunQ()) {
-                    score += 20;
-                }
-                //功率
-                realScoreVo.setCosQ(realScoreVo.getCos() <= 0.15);
-                if (realScoreVo.getCosQ()) {
-                    score += 20;
-                }
-                realScoreVo.setScore(score);
-                realScoreVoList.add(realScoreVo);
-            }
-        }
-        return realScoreVoList;
-    }
-
-//    @Override
-//    public String DataReportExport(Integer siteId,Date startTime, Date endTime,String queryType){
-//        Integer userId = UserUtil.getUserId();
-//        Workbook workbook = null;
-//        File file = null;
-//        long diff = endTime.getTime() - startTime.getTime();
-//        long days = diff / (1000 * 60 * 60);
-//        try {
-//            ExportParams params = new ExportParams(null, "数据报表");
-//            workbook = ExcelExportUtil.exportBigExcel(params, HtAnalogDataExportVO.class,
-//                    (o, i) -> {
-//                        Page<HtAnalogData> page = new Page<>(i, 30);
-//                        if (days<=24){
-//                            page = baseMapper.getDataReportMap1(page,siteId, startTime, endTime);
-//                        }else if (days<360&&days>24){
-//                            List<Device> device_list = baseMapper.getDeviceListMap(siteId);
-//                            page = baseMapper.getDataReportMMap1(page,device_list,startTime, endTime);
-//                        }else if (days>=360){
-//                            List<Device> device_list = baseMapper.getDeviceListMap(siteId);
-//                            page = baseMapper.getDataReportDMap1(page,device_list,startTime, endTime);
-//                        }
-//
-//                        return new ArrayList<>(BeanMapperUtils.mapList(page.getRecords(), HtAnalogData.class, HtAnalogDataExportVO.class));
-//                    },null);
-//            if (null != workbook) {
-//                file = FileUtils.getFile(GlobalUtils.getTempBaseDir(), String.format("%s-%s.xlsx", "数据报表", System.currentTimeMillis() + ""));
-//                FileUtils.createFile(file.getAbsolutePath());
-//                FileOutputStream allListingFileOutputStream = new FileOutputStream(file);
-//                workbook.write(allListingFileOutputStream);
-//            } else {
-//                throw new BusinessException("表格数据为空");
-//            }
-//        } catch (Exception e) {
-//            log.error("导出文件失败", e);
-//            throw new BusinessException("导出文件失败");
-//        } finally {
-//            if (workbook != null) {
-//                try {
-//                    workbook.close();
-//                } catch (IOException e) {
-//                    log.error("===export spec=== 关闭workbook失败", e);
-//                }
-//            }
-//        }
-//        return file.getName();
-//    }
-
-
-}
+package com.bizmatics.service.impl;
+
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
+import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.bizmatics.common.core.exception.BusinessException;
+import com.bizmatics.common.core.util.*;
+import com.bizmatics.common.mvc.base.AbstractCrudService;
+import com.bizmatics.common.spring.util.GlobalUtils;
+import com.bizmatics.model.*;
+import com.bizmatics.model.vo.ContextualDataVo;
+import com.bizmatics.model.vo.EvaluationReporVo;
+import com.bizmatics.persistence.mapper.RtAnalogDataMapper;
+import com.bizmatics.service.DeviceAttributeService;
+import com.bizmatics.service.DeviceService;
+import com.bizmatics.service.RtAnalogDataService;
+import com.bizmatics.service.SiteDynamicPropertiesService;
+import com.bizmatics.service.util.SecurityUtils;
+import com.bizmatics.service.vo.RadCountVO;
+import com.bizmatics.service.vo.RealScoreOneVO;
+import com.bizmatics.service.vo.RealScoreVO;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author ya
+ * @since 2021-07-07
+ */
+@Service
+public class RtAnalogDataServiceImpl extends AbstractCrudService<RtAnalogDataMapper, RtAnalogData> implements RtAnalogDataService {
+
+
+    @Autowired
+    private DeviceService deviceService;
+    @Autowired
+    private SiteDynamicPropertiesService siteDynamicPropertiesService;
+    @Autowired
+    private DeviceAttributeService deviceAttributeService;
+
+
+    @Override
+    public RadCountVO selectCount() {
+        Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
+        AtomicReference<Integer> heavyLoad = new AtomicReference<>(0);
+        AtomicReference<Integer> easyLoad = new AtomicReference<>(0);
+        AtomicReference<Integer> norMalLoad = new AtomicReference<>(0);
+        AtomicReference<Integer> count = new AtomicReference<>(0);
+        List<Device> deviceList = deviceService.list(userId, null, null, null, null, null);
+        List<RtAnalogData> list = baseMapper.list(userId);
+        for (Device device : deviceList) {
+            list.stream()
+                    .filter(rtAnalogData -> device.getDeviceCode().equals(rtAnalogData.getDeviceName())).findAny()
+                    .ifPresent(rtAnalogData -> {
+                        String installedCapacity = device.getInstalledCapacity();
+                        double installedCapacityDouble = 0.00;
+                        if (StringUtils.isNotBlank(installedCapacity)) {
+                            installedCapacityDouble = Double.parseDouble(installedCapacity);
+                            if (installedCapacityDouble > 0) {
+                                installedCapacityDouble = Arith.div(rtAnalogData.getP(), installedCapacityDouble);
+                            }
+                        }
+                        if (installedCapacityDouble < 0.4) {
+                            easyLoad.getAndSet(easyLoad.get() + 1);
+                        } else if (installedCapacityDouble >= 0.4 && installedCapacityDouble <= 0.8) {
+                            norMalLoad.getAndSet(norMalLoad.get() + 1);
+                        } else {
+                            heavyLoad.getAndSet(heavyLoad.get() + 1);
+                        }
+                        count.getAndSet(count.get() + 1);
+                    });
+
+        }
+        RadCountVO radCountVO = new RadCountVO();
+        radCountVO.setHeavyLoad(subRadio(heavyLoad.get(), count.get()));
+        radCountVO.setEasyLoad(subRadio(easyLoad.get(), count.get()));
+        radCountVO.setNorMalLoad(Arith.sub(1, Arith.add(radCountVO.getEasyLoad(), radCountVO.getHeavyLoad())));
+        return radCountVO;
+    }
+
+    public Double subRadio(Integer typeCount, Integer count) {
+        return Optional.of(count).filter(total -> total != 0).map(sub -> Arith.div(typeCount, sub)).orElse(0.00);
+    }
+
+
+    public String addUnitOne(String name) {
+        if (name.endsWith("电压")) {
+            return "V";
+        } else if (name.endsWith("电流")) {
+            return "A";
+        } else if (name.endsWith("温度")) {
+            return "℃";
+        } else if (name.endsWith("频率")) {
+            return "Hz";
+        } else if (name.endsWith("有功功率") || name.endsWith("需量")) {
+            return "KW";
+        } else if (name.endsWith("无功功率")) {
+            return "KVar";
+        } else if (name.endsWith("不平衡度") || name.endsWith("电压畸变率")) {
+            return "%";
+        } else if (name.endsWith("次数")) {
+            return "次";
+        } else if (name.endsWith("电度") || name.endsWith("有功")) {
+            return "KWh";
+        } else if (name.endsWith("THD")) {
+            return "%";
+        }
+        return "";
+    }
+
+    @Override
+    public List<Map<String, Object>> getOne(Integer siteId) {
+        Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
+        List<Map<String, Object>> list = new ArrayList<>();
+        Map<String, Object> radMap = baseMapper.getOneMap(userId,siteId);
+        Optional.ofNullable(radMap).ifPresent(rad -> {
+            for (String name : rad.keySet()) {
+                Map<String, Object> map = new HashMap<>();
+                map.put("name", name);
+                map.put("value", rad.get(name) + "" + addUnitOne(name));
+                list.add(map);
+            }
+        });
+        return list;
+    }
+
+    @Override
+    public Double getEpLoad(Integer siteId) {
+        Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
+        return baseMapper.selectTotalLoad(userId, siteId);
+    }
+
+    @Override
+    public RealScoreVO realScore(String deviceCode) {
+        //查询设备
+        LambdaQueryWrapper<Device> deviceQuery = Wrappers.lambdaQuery();
+        deviceQuery.eq(Device::getDeviceCode, deviceCode);
+        Device device = deviceService.getOne(deviceQuery);
+        Optional.ofNullable(device).orElseThrow(() -> new BusinessException("设备不存在"));
+
+        String table = "rt_analog_data";
+        if (device.getDeviceType().equals("1")){
+            table = "rt_analog_data";
+        }else if (device.getDeviceType().equals("4")){
+            table = "rt_analog_173_data";
+        }
+
+        List<RtAnalogData> rtAnalogDataList = baseMapper.getRtAnalogDataList(deviceCode,table);
+        RtAnalogData rtAnalogData = new RtAnalogData();
+        if (rtAnalogDataList.size()>0){
+            rtAnalogData = rtAnalogDataList.get(0);
+        }else {
+            new BusinessException("设备实时信息不存在");
+        }
+        //查询sd
+        LambdaQueryWrapper<SiteDynamicProperties> sdQuery = Wrappers.lambdaQuery();
+        sdQuery.eq(SiteDynamicProperties::getSiteId, device.getSiteId());
+        SiteDynamicProperties siteDynamicProperties = siteDynamicPropertiesService.getOne(sdQuery);
+        Optional.ofNullable(siteDynamicProperties).orElseThrow(() -> new BusinessException("sd不存在"));
+        LambdaQueryWrapper<DeviceAttribute> adQuery = Wrappers.lambdaQuery();
+        adQuery.eq(DeviceAttribute::getSiteId, device.getSiteId());
+        List<DeviceAttribute> deviceAttributes = deviceAttributeService.list(adQuery);
+        if (CollectionUtils.isEmpty(deviceAttributes)) {
+            throw new BusinessException("da不存在");
+        }
+        DeviceAttribute deviceAttribute = deviceAttributes.stream().min(Comparator.comparing(DeviceAttribute::getId)).get();
+        return fillRealScoreData(rtAnalogData, siteDynamicProperties, deviceAttribute);
+    }
+//    public RealScoreVO realScore(String deviceCode) {
+//        LambdaQueryWrapper<RtAnalogData> queryWrapper = Wrappers.lambdaQuery();
+//        queryWrapper.eq(RtAnalogData::getDeviceName, deviceCode);
+//        RtAnalogData rtAnalogData = getOne(queryWrapper);
+//        Optional.ofNullable(rtAnalogData).orElseThrow(() -> new BusinessException("设备实时信息不存在"));
+//        //查询设备
+//        LambdaQueryWrapper<Device> deviceQuery = Wrappers.lambdaQuery();
+//        deviceQuery.eq(Device::getDeviceCode, deviceCode);
+//        Device device = deviceService.getOne(deviceQuery);
+//        Optional.ofNullable(device).orElseThrow(() -> new BusinessException("设备不存在"));
+//        //查询sd
+//        LambdaQueryWrapper<SiteDynamicProperties> sdQuery = Wrappers.lambdaQuery();
+//        sdQuery.eq(SiteDynamicProperties::getSiteId, device.getSiteId());
+//        SiteDynamicProperties siteDynamicProperties = siteDynamicPropertiesService.getOne(sdQuery);
+//        Optional.ofNullable(siteDynamicProperties).orElseThrow(() -> new BusinessException("sd不存在"));
+//        LambdaQueryWrapper<DeviceAttribute> adQuery = Wrappers.lambdaQuery();
+//        adQuery.eq(DeviceAttribute::getSiteId, device.getSiteId());
+//        List<DeviceAttribute> deviceAttributes = deviceAttributeService.list(adQuery);
+//        if (CollectionUtils.isEmpty(deviceAttributes)) {
+//            throw new BusinessException("da不存在");
+//        }
+//        DeviceAttribute deviceAttribute = deviceAttributes.stream().min(Comparator.comparing(DeviceAttribute::getId)).get();
+//        return fillRealScoreData(rtAnalogData, siteDynamicProperties, deviceAttribute);
+//    }
+
+    @Override
+    public RealScoreOneVO realScoreOne(String deviceCode) {
+        //查询设备
+        LambdaQueryWrapper<Device> deviceQuery = Wrappers.lambdaQuery();
+        deviceQuery.eq(Device::getDeviceCode, deviceCode);
+        Device device = deviceService.getOne(deviceQuery);
+        Optional.ofNullable(device).orElseThrow(() -> new BusinessException("设备不存在"));
+
+
+        String table = "rt_analog_data";
+        if (device.getDeviceType().equals("1")){
+            table = "rt_analog_data";
+        }else if (device.getDeviceType().equals("4")){
+            table = "rt_analog_173_data";
+        }
+
+        List<RtAnalogData> rtAnalogDataList = baseMapper.getRtAnalogDataList(deviceCode,table);
+        RtAnalogData rtAnalogData = new RtAnalogData();
+        if (rtAnalogDataList.size()>0){
+            rtAnalogData = rtAnalogDataList.get(0);
+        }else {
+            new BusinessException("设备实时信息不存在");
+        }
+
+        //查询sd
+        LambdaQueryWrapper<SiteDynamicProperties> sdQuery = Wrappers.lambdaQuery();
+        sdQuery.eq(SiteDynamicProperties::getSiteId, device.getSiteId());
+        SiteDynamicProperties siteDynamicProperties = siteDynamicPropertiesService.getOne(sdQuery);
+        Optional.ofNullable(siteDynamicProperties).orElseThrow(() -> new BusinessException("sd不存在"));
+        return fillRealScoreDataOne(rtAnalogData, siteDynamicProperties);
+    }
+
+//    public RealScoreOneVO realScoreOne(String deviceCode) {
+//        LambdaQueryWrapper<RtAnalogData> queryWrapper = Wrappers.lambdaQuery();
+//        queryWrapper.eq(RtAnalogData::getDeviceName, deviceCode);
+//        RtAnalogData rtAnalogData = getOne(queryWrapper);
+//        Optional.ofNullable(rtAnalogData).orElseThrow(() -> new BusinessException("设备实时信息不存在"));
+//        //查询设备
+//        LambdaQueryWrapper<Device> deviceQuery = Wrappers.lambdaQuery();
+//        deviceQuery.eq(Device::getDeviceCode, deviceCode);
+//        Device device = deviceService.getOne(deviceQuery);
+//        Optional.ofNullable(device).orElseThrow(() -> new BusinessException("设备不存在"));
+//        //查询sd
+//        LambdaQueryWrapper<SiteDynamicProperties> sdQuery = Wrappers.lambdaQuery();
+//        sdQuery.eq(SiteDynamicProperties::getSiteId, device.getSiteId());
+//        SiteDynamicProperties siteDynamicProperties = siteDynamicPropertiesService.getOne(sdQuery);
+//        Optional.ofNullable(siteDynamicProperties).orElseThrow(() -> new BusinessException("sd不存在"));
+//        return fillRealScoreDataOne(rtAnalogData, siteDynamicProperties);
+//    }
+
+    @Override
+    public RealScoreOneVO fillRealScoreDataOne(RtAnalogData rtAnalogData, SiteDynamicProperties siteDynamicProperties) {
+        List<Double> checkList = new ArrayList<>();
+        RealScoreOneVO realScoreVo = BeanMapperUtils.map(rtAnalogData, RealScoreOneVO.class);
+
+        checkList.add(realScoreVo.getIa());
+        checkList.add(realScoreVo.getIb());
+        checkList.add(realScoreVo.getIc());
+
+        //电流不平衡
+        realScoreVo.setElBalun(checkBalun(checkList));
+
+        checkList.clear();
+        checkList.add(realScoreVo.getUa());
+        checkList.add(realScoreVo.getUb());
+        checkList.add(realScoreVo.getUc());
+        //ABC三相电压占比
+        Double max = checkList.stream().max(Double::compareTo).get();
+        if (max == 0.00) {
+            realScoreVo.setUaPercentage(0.00);
+            realScoreVo.setUbPercentage(0.00);
+            realScoreVo.setUcPercentage(0.00);
+        } else {
+            realScoreVo.setUaPercentage(Arith.div(realScoreVo.getUa(), (max / 100 * 20 + max) * 100));
+            realScoreVo.setUbPercentage(Arith.div(realScoreVo.getUb(), (max / 100 * 20 + max) * 100));
+            realScoreVo.setUcPercentage(Arith.div(realScoreVo.getUc(), (max / 100 * 20 + max) * 100));
+        }
+
+
+        //电压不平衡
+        realScoreVo.setVtBalun(checkBalun(checkList));
+        //当前频率
+        realScoreVo.setF(realScoreVo.getF());
+        //频率偏差
+        if (realScoreVo.getF() == 0.00) {
+            realScoreVo.setFdeviation(0.00);
+        } else {
+            checkList.clear();
+            checkList.add(50.00);
+            checkList.add(realScoreVo.getF());
+            Double max1 = checkList.stream().max(Double::compareTo).get();
+            Double min1 = checkList.stream().min(Double::compareTo).get();
+            realScoreVo.setFdeviation(Arith.sub(max1, min1) / 50 * 100);
+        }
+        if (realScoreVo.getP() == 0.00) {
+            realScoreVo.setPpercentage(0.00);
+        } else {
+            realScoreVo.setPpercentage(Arith.div(realScoreVo.getP(), realScoreVo.getP() / 100 * 20 + realScoreVo.getP()));
+        }
+        if (realScoreVo.getQ() == 0.00) {
+            realScoreVo.setQpercentage(0.00);
+        } else {
+            realScoreVo.setQpercentage(Arith.div(realScoreVo.getQ(), realScoreVo.getQ() / 100 * 20 + realScoreVo.getQ()));
+        }
+
+        realScoreVo.setVoltageLevel(siteDynamicProperties.getVoltageLevel());
+        return realScoreVo;
+    }
+
+    /**
+     * 填充实时数据
+     */
+    @Override
+    public RealScoreVO fillRealScoreData(RtAnalogData rtAnalogData, SiteDynamicProperties siteDynamicProperties, DeviceAttribute deviceAttribute) {
+        List<Double> checkList = new ArrayList<>();
+        Integer score = 0;
+        RealScoreVO realScoreVo = BeanMapperUtils.map(rtAnalogData, RealScoreVO.class);
+        if (null == realScoreVo.getCos()) {
+            realScoreVo.setCos(0.00);
+        }
+        checkList.add(realScoreVo.getIa());
+        checkList.add(realScoreVo.getIb());
+        checkList.add(realScoreVo.getIc());
+        //电流不平衡
+        realScoreVo.setElBalun(checkBalun(checkList));
+        checkList.clear();
+        checkList.add(realScoreVo.getUa());
+        checkList.add(realScoreVo.getUb());
+        checkList.add(realScoreVo.getUc());
+        //电压不平衡
+        realScoreVo.setVtBalun(checkBalun(checkList));
+        //电压合格率
+        double voltageLevel = Double.parseDouble(siteDynamicProperties.getVoltageLevel());
+        realScoreVo.setUaQualified(Arith.sub(rtAnalogData.getUa(), voltageLevel));
+        realScoreVo.setUbQualified(Arith.sub(rtAnalogData.getUb(), voltageLevel));
+        realScoreVo.setUcQualified(Arith.sub(rtAnalogData.getUc(), voltageLevel));
+        //电流负载率
+        Double ratedCurrent = deviceAttribute.getRatedCurrent();
+        realScoreVo.setIaLoad(Arith.div(realScoreVo.getIa(), ratedCurrent));
+        realScoreVo.setIbLoad(Arith.div(realScoreVo.getIb(), ratedCurrent));
+        realScoreVo.setIcLoad(Arith.div(realScoreVo.getIc(), ratedCurrent));
+        //计算分数
+        //电压分数
+        realScoreVo.setUaQ(computeUScore(realScoreVo.getUaQualified(), voltageLevel));
+        realScoreVo.setUbQ(computeUScore(realScoreVo.getUbQualified(), voltageLevel));
+        realScoreVo.setUcQ(computeUScore(realScoreVo.getUcQualified(), voltageLevel));
+        if (realScoreVo.getUaQ() && realScoreVo.getUbQ() && realScoreVo.getUcQ()) {
+            realScoreVo.setUQ(true);
+            score += 20;
+        } else {
+            realScoreVo.setUQ(false);
+        }
+        //电流分数
+        realScoreVo.setIaLoadQ(realScoreVo.getIaLoad() <= 0.8);
+        realScoreVo.setIbLoadQ(realScoreVo.getIbLoad() <= 0.8);
+        realScoreVo.setIcLoadQ(realScoreVo.getIcLoad() <= 0.8);
+        if (realScoreVo.getIaLoadQ() && realScoreVo.getIbLoadQ() && realScoreVo.getIcLoadQ()) {
+            realScoreVo.setILoadQ(true);
+            score += 20;
+        } else {
+            realScoreVo.setILoadQ(false);
+        }
+        //电压平衡分数
+        realScoreVo.setElBalunQ(realScoreVo.getElBalun() <= 0.15);
+        if (realScoreVo.getElBalunQ()) {
+            score += 20;
+        }
+        //电流平衡分数
+        realScoreVo.setVtBalunQ(realScoreVo.getVtBalun() <= 0.15);
+        if (realScoreVo.getVtBalunQ()) {
+            score += 20;
+        }
+        //功率
+        realScoreVo.setCosQ(realScoreVo.getCos() >= 0.9);
+        if (realScoreVo.getCosQ()) {
+            score += 20;
+        }
+        realScoreVo.setScore(score);
+        return realScoreVo;
+    }
+
+    /**
+     * 计算电压分数
+     *
+     * @return
+     */
+    public Boolean computeUScore(Double qualified, Double voltageLevel) {
+        double mul = Arith.mul(qualified, voltageLevel);
+        if (mul <= 0.07 && mul >= -0.07) {
+            return true;
+        }
+        return false;
+    }
+
+
+    /**
+     * 计算电流/电压不平衡
+     *
+     * @param list
+     * @return
+     */
+    public Double checkBalun(List<Double> list) {
+        long count = list.stream().filter(code -> 0.00 == code).count();
+        if (3 == count) {
+            return 0.00;
+        }
+        Double max = list.stream().max(Double::compareTo).get();
+        Double min = list.stream().min(Double::compareTo).get();
+        return Arith.div(Arith.sub(max, min), max);
+    }
+
+    /**
+     * 添加数据单位
+     *
+     * @return
+     */
+    public String addUnit(String name, String value) {
+        if (name.endsWith("电压")) {
+            return value + "V";
+        } else if (name.endsWith("电流")) {
+            return value + "A";
+        } else if (name.endsWith("温度")) {
+            return value + "C";
+        } else if (name.endsWith("频率")) {
+            return value + "Hz";
+        } else if (name.endsWith("有功功率") || name.endsWith("需量")) {
+            return value + "KW";
+        } else if (name.endsWith("无功功率")) {
+            return value + "KVar";
+        } else if (name.endsWith("不平衡度") || name.endsWith("电压畸变率")) {
+            return value + "%";
+        } else if (name.endsWith("次数")) {
+            return value + "次";
+        } else if (name.endsWith("电度") || name.endsWith("有功")) {
+            return value + "KWh";
+        }
+        return value;
+    }
+
+    @Override
+    public List<Map<String, Object>> getDataReport(Integer siteId, Date startTime, Date endTime, String queryType) {
+        List<Map<String, Object>> list = new ArrayList<>();
+        List<HtAnalogData> rtAnalogDataList = null;
+        long diff = endTime.getTime() - startTime.getTime();
+        long days = diff / (1000 * 60 * 60);
+
+        if (days <= 24) {
+            rtAnalogDataList = baseMapper.getDataReportMap(siteId, startTime, endTime);
+        } else if (days < 360 && days > 24) {
+            List<Device> device_list = baseMapper.getDeviceListMap(siteId);
+            rtAnalogDataList = baseMapper.getDataReportMMap(device_list, startTime, endTime);
+        } else if (days >= 360) {
+            List<Device> device_list = baseMapper.getDeviceListMap(siteId);
+            rtAnalogDataList = baseMapper.getDataReportDMap(device_list, startTime, endTime);
+        }
+        String[] result = queryType.split(",");
+        if (rtAnalogDataList.size() > 0) {
+            rtAnalogDataList.forEach(rtAnalogData -> {
+                Map<String, Object> map = new HashMap<>();
+                if (ArrayUtils.contains(result, "I")) {
+                    map.put("Ia", rtAnalogData.getIa());
+                    map.put("Ib", rtAnalogData.getIb());
+                    map.put("Ic", rtAnalogData.getIc());
+                    if (ArrayUtils.contains(result, "P")) {
+                        map.put("P", rtAnalogData.getP());
+                        map.put("Q", rtAnalogData.getQ());
+                        map.put("Pa", rtAnalogData.getPa());
+                        map.put("Pb", rtAnalogData.getPb());
+                        map.put("Pc", rtAnalogData.getPc());
+                        map.put("Qa", rtAnalogData.getQa());
+                        map.put("Qb", rtAnalogData.getQb());
+                        map.put("Qc", rtAnalogData.getQc());
+                        map.put("Demand", rtAnalogData.getDemand());
+                        if (ArrayUtils.contains(result, "KWh")) {
+                            map.put("Epn", rtAnalogData.getEpn());
+                            map.put("Epp", rtAnalogData.getEpp());
+                            map.put("Eqn", rtAnalogData.getEqn());
+                            map.put("Eqp", rtAnalogData.getEqp());
+                            if (ArrayUtils.contains(result, "V")) {
+                                map.put("Ua", rtAnalogData.getUa());
+                                map.put("Ub", rtAnalogData.getUb());
+                                map.put("Uc", rtAnalogData.getUc());
+                                map.put("Uab", rtAnalogData.getUab());
+                                map.put("Ubc", rtAnalogData.getUbc());
+                                map.put("Uca", rtAnalogData.getUca());
+                                map.put("Ul", rtAnalogData.getUl());
+                                if (ArrayUtils.contains(result, "C")) {
+                                    map.put("T1", rtAnalogData.getT1());
+                                    map.put("T2", rtAnalogData.getT2());
+                                    map.put("T3", rtAnalogData.getT3());
+                                    map.put("T4", rtAnalogData.getT4());
+                                    map.put("DeviceTemp", rtAnalogData.getDeviceTemp());
+                                    if (ArrayUtils.contains(result, "HZ")) {
+                                        map.put("F", rtAnalogData.getF());
+                                        if (ArrayUtils.contains(result, "PS")) {
+                                            map.put("COSa", rtAnalogData.getCOSa());
+                                            map.put("COSb", rtAnalogData.getCOSb());
+                                            map.put("COSc", rtAnalogData.getCOSc());
+                                            map.put("COS", rtAnalogData.getCos());
+                                            if (ArrayUtils.contains(result, "RMS")) {
+                                                map.put("IHa", rtAnalogData.getIHa());
+                                                map.put("IHb", rtAnalogData.getIHb());
+                                                map.put("IHc", rtAnalogData.getIHc());
+                                                if (ArrayUtils.contains(result, "DDB")) {
+                                                    map.put("SignalIntensity", rtAnalogData.getSignalIntensity());
+                                                    if (ArrayUtils.contains(result, "VT")) {
+                                                        map.put("Upt", rtAnalogData.getUpt());
+                                                        map.put("Udt", rtAnalogData.getUdt());
+                                                        map.put("Ust", rtAnalogData.getUst());
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+                if (days <= 24) {
+                    map.put("dataTime", DateUtils.format(rtAnalogData.getDataTime(), "MM-dd HH:mm"));
+                } else if (days < 360 && days > 24) {
+                    map.put("dataTime", DateUtils.format(rtAnalogData.getDataTime(), "MM-dd HH:mm"));
+                } else if (days >= 360) {
+                    map.put("dataTime", DateUtils.format(rtAnalogData.getDataTime(), DateUtils.PARSE_PATTERNS[8]));
+                }
+                list.add(map);
+            });
+        }
+        return list;
+    }
+
+    @Override
+    public List<Map<String, Object>> getHistoricalCurve(Integer siteId, Date startTime, Date endTime, String queryType) {
+        List<Map<String, Object>> list = new ArrayList<>();
+        List<Map<String, Object>> listdataTime = new ArrayList<>();
+        List<Map<String, Object>> list1 = new ArrayList<>();
+        List<Map<String, Object>> list2 = new ArrayList<>();
+        List<Map<String, Object>> list3 = new ArrayList<>();
+        List<Map<String, Object>> list4 = new ArrayList<>();
+        List<Map<String, Object>> list5 = new ArrayList<>();
+        List<Map<String, Object>> list6 = new ArrayList<>();
+        List<Map<String, Object>> list7 = new ArrayList<>();
+        List<Map<String, Object>> list8 = new ArrayList<>();
+        List<Map<String, Object>> list9 = new ArrayList<>();
+        List<HtAnalogData> rtAnalogDataList = null;
+        long diff = endTime.getTime() - startTime.getTime();
+        long days = diff / (1000 * 60 * 60);
+
+        if (days <= 24) {
+            rtAnalogDataList = baseMapper.getDataReportMap(siteId, startTime, endTime);
+        } else if (days < 360 && days > 24) {
+            List<Device> device_list = baseMapper.getDeviceListMap(siteId);
+            rtAnalogDataList = baseMapper.getDataReportMMap(device_list, startTime, endTime);
+        } else if (days >= 360) {
+            List<Device> device_list = baseMapper.getDeviceListMap(siteId);
+            rtAnalogDataList = baseMapper.getDataReportDMap(device_list, startTime, endTime);
+        }
+        String[] result = queryType.split(",");
+        if (rtAnalogDataList.size() > 0) {
+            Map<String, Object> mapIe1 = new HashMap<>();
+            Map<String, Object> mapIe2 = new HashMap<>();
+            Map<String, Object> mapIe3 = new HashMap<>();
+            Map<String, Object> mapIe4 = new HashMap<>();
+            Map<String, Object> mapIe5 = new HashMap<>();
+            Map<String, Object> mapIe6 = new HashMap<>();
+            Map<String, Object> mapIe7 = new HashMap<>();
+            Map<String, Object> mapIe8 = new HashMap<>();
+            Map<String, Object> mapIe9 = new HashMap<>();
+            for (int i = 0; i < rtAnalogDataList.size(); i++) {
+                Map<String, Object> map = new HashMap<>();
+                Map<String, Object> map1 = new HashMap<>();
+                Map<String, Object> map2 = new HashMap<>();
+                Map<String, Object> map3 = new HashMap<>();
+                Map<String, Object> map4 = new HashMap<>();
+                Map<String, Object> map5 = new HashMap<>();
+                Map<String, Object> map6 = new HashMap<>();
+                Map<String, Object> map7 = new HashMap<>();
+                Map<String, Object> map8 = new HashMap<>();
+                Map<String, Object> map9 = new HashMap<>();
+                HtAnalogData rtAnalogData = (HtAnalogData) rtAnalogDataList.get(i);
+//                if (days<=24){
+//                    map.put("dataTime",DateUtils.format(rtAnalogData.getDataTime(),"MM-dd HH:mm"));
+//                }else if (days<360&&days>24){
+//                    map.put("dataTime", DateUtils.format(rtAnalogData.getDataTime(),"MM-dd HH:mm"));
+//                }else if (days>=360){
+//                    map.put("dataTime",DateUtils.format(rtAnalogData.getDataTime(),DateUtils.PARSE_PATTERNS[8]));
+//                }
+                map.put("dataTime", rtAnalogData.getDataTime());
+
+                if (ArrayUtils.contains(result, "I")) {
+                    map1.put("Ia", rtAnalogData.getIa());
+                    map2.put("Ib", rtAnalogData.getIb());
+                    map3.put("Ic", rtAnalogData.getIc());
+                } else if (ArrayUtils.contains(result, "P")) {
+                    map1.put("P", rtAnalogData.getP());
+                    map2.put("Q", rtAnalogData.getQ());
+                    map3.put("Pa", rtAnalogData.getPa());
+                    map4.put("Pb", rtAnalogData.getPb());
+                    map5.put("Pc", rtAnalogData.getPc());
+                    map6.put("Qa", rtAnalogData.getQa());
+                    map7.put("Qb", rtAnalogData.getQb());
+                    map8.put("Qc", rtAnalogData.getQc());
+                    map9.put("Demand", rtAnalogData.getDemand());
+                } else if (ArrayUtils.contains(result, "KWh")) {
+                    map1.put("Epn", rtAnalogData.getEpn());
+                    map2.put("Epp", rtAnalogData.getEpp());
+                    map3.put("Eqn", rtAnalogData.getEqn());
+                    map4.put("Eqp", rtAnalogData.getEqp());
+                } else if (ArrayUtils.contains(result, "V")) {
+                    map1.put("Ua", rtAnalogData.getUa());
+                    map2.put("Ub", rtAnalogData.getUb());
+                    map3.put("Uc", rtAnalogData.getUc());
+                    map4.put("Uab", rtAnalogData.getUab());
+                    map5.put("Ubc", rtAnalogData.getUbc());
+                    map6.put("Uca", rtAnalogData.getUca());
+                    map7.put("Ul", rtAnalogData.getUl());
+                } else if (ArrayUtils.contains(result, "C")) {
+                    map1.put("T1", rtAnalogData.getT1());
+                    map2.put("T2", rtAnalogData.getT2());
+                    map3.put("T3", rtAnalogData.getT3());
+                    map4.put("T4", rtAnalogData.getT4());
+                    map5.put("DeviceTemp", rtAnalogData.getDeviceTemp());
+                } else if (ArrayUtils.contains(result, "HZ")) {
+                    map1.put("F", rtAnalogData.getF());
+                } else if (ArrayUtils.contains(result, "PS")) {
+                    map1.put("COSa", rtAnalogData.getCOSa());
+                    map2.put("COSb", rtAnalogData.getCOSb());
+                    map3.put("COSc", rtAnalogData.getCOSc());
+                    map4.put("COS", rtAnalogData.getCos());
+                } else if (ArrayUtils.contains(result, "RMS")) {
+                    map1.put("IHa", rtAnalogData.getIHa());
+                    map2.put("IHb", rtAnalogData.getIHb());
+                    map3.put("IHc", rtAnalogData.getIHc());
+                } else if (ArrayUtils.contains(result, "DDB")) {
+                    map1.put("SignalIntensity", rtAnalogData.getSignalIntensity());
+                } else if (ArrayUtils.contains(result, "VT")) {
+                    map1.put("Upt", rtAnalogData.getUpt());
+                    map2.put("Udt", rtAnalogData.getUdt());
+                    map3.put("Ust", rtAnalogData.getUst());
+                }
+                listdataTime.add(map);
+                list1.add(map1);
+                list2.add(map2);
+                list3.add(map3);
+                list4.add(map4);
+                list5.add(map5);
+                list6.add(map6);
+                list7.add(map7);
+                list8.add(map8);
+                list9.add(map9);
+            }
+            Object arre1[][] = new Object[listdataTime.size()][2];
+            Object arre2[][] = new Object[listdataTime.size()][2];
+            Object arre3[][] = new Object[listdataTime.size()][2];
+            Object arre4[][] = new Object[listdataTime.size()][2];
+            Object arre5[][] = new Object[listdataTime.size()][2];
+            Object arre6[][] = new Object[listdataTime.size()][2];
+            Object arre7[][] = new Object[listdataTime.size()][2];
+            Object arre8[][] = new Object[listdataTime.size()][2];
+            Object arre9[][] = new Object[listdataTime.size()][2];
+
+            if (ArrayUtils.contains(result, "I")) {
+                for (int i = 0; i < listdataTime.size(); i++) {
+                    arre1[i][0] = listdataTime.get(i).get("dataTime");
+                    arre1[i][1] = list1.get(i).get("Ia");
+                    arre2[i][0] = listdataTime.get(i).get("dataTime");
+                    arre2[i][1] = list2.get(i).get("Ib");
+                    arre3[i][0] = listdataTime.get(i).get("dataTime");
+                    arre3[i][1] = list3.get(i).get("Ic");
+                }
+                mapIe1.put("name", "A相电流");
+                mapIe1.put("arr", arre1);
+                mapIe2.put("name", "B相电流");
+                mapIe2.put("arr", arre2);
+                mapIe3.put("name", "C相电流");
+                mapIe3.put("arr", arre3);
+                list.add(mapIe1);
+                list.add(mapIe2);
+                list.add(mapIe3);
+            } else if (ArrayUtils.contains(result, "P")) {
+                for (int i = 0; i < listdataTime.size(); i++) {
+                    arre1[i][0] = listdataTime.get(i).get("dataTime");
+                    arre1[i][1] = list1.get(i).get("P");
+                    arre2[i][0] = listdataTime.get(i).get("dataTime");
+                    arre2[i][1] = list2.get(i).get("Q");
+                    arre3[i][0] = listdataTime.get(i).get("dataTime");
+                    arre3[i][1] = list3.get(i).get("Pa");
+                    arre4[i][0] = listdataTime.get(i).get("dataTime");
+                    arre4[i][1] = list4.get(i).get("Pb");
+                    arre5[i][0] = listdataTime.get(i).get("dataTime");
+                    arre5[i][1] = list5.get(i).get("Pc");
+                    arre6[i][0] = listdataTime.get(i).get("dataTime");
+                    arre6[i][1] = list6.get(i).get("Qa");
+                    arre7[i][0] = listdataTime.get(i).get("dataTime");
+                    arre7[i][1] = list7.get(i).get("Qb");
+                    arre8[i][0] = listdataTime.get(i).get("dataTime");
+                    arre8[i][1] = list8.get(i).get("Qc");
+                    arre9[i][0] = listdataTime.get(i).get("dataTime");
+                    arre9[i][1] = list9.get(i).get("Demand");
+                }
+                mapIe1.put("name", "总有功功率");
+                mapIe1.put("arr", arre1);
+                mapIe2.put("name", "总无功功率");
+                mapIe2.put("arr", arre2);
+                mapIe3.put("name", "A相有功功率");
+                mapIe3.put("arr", arre3);
+                mapIe4.put("name", "B相有功功率");
+                mapIe4.put("arr", arre4);
+                mapIe5.put("name", "C相有功功率");
+                mapIe5.put("arr", arre5);
+                mapIe6.put("name", "A相无功功率");
+                mapIe6.put("arr", arre6);
+                mapIe7.put("name", "B相无功功率");
+                mapIe7.put("arr", arre7);
+                mapIe8.put("name", "C相无功功率");
+                mapIe8.put("arr", arre8);
+                mapIe9.put("name", "实时需量");
+                mapIe9.put("arr", arre9);
+                list.add(mapIe1);
+                list.add(mapIe2);
+                list.add(mapIe3);
+                list.add(mapIe4);
+                list.add(mapIe5);
+                list.add(mapIe6);
+                list.add(mapIe7);
+                list.add(mapIe8);
+                list.add(mapIe9);
+            } else if (ArrayUtils.contains(result, "KWh")) {
+                for (int i = 0; i < listdataTime.size(); i++) {
+                    arre1[i][0] = listdataTime.get(i).get("dataTime");
+                    arre1[i][1] = list1.get(i).get("Epn");
+                    arre2[i][0] = listdataTime.get(i).get("dataTime");
+                    arre2[i][1] = list2.get(i).get("Epp");
+                    arre3[i][0] = listdataTime.get(i).get("dataTime");
+                    arre3[i][1] = list3.get(i).get("Eqn");
+                    arre4[i][0] = listdataTime.get(i).get("dataTime");
+                    arre4[i][1] = list4.get(i).get("Eqp");
+                }
+                mapIe1.put("name", "负有功电度");
+                mapIe1.put("arr", arre1);
+                mapIe2.put("name", "正有功电度");
+                mapIe2.put("arr", arre2);
+                mapIe3.put("name", "负无功电度");
+                mapIe3.put("arr", arre3);
+                mapIe4.put("name", "正无功电度");
+                mapIe4.put("arr", arre4);
+                list.add(mapIe1);
+                list.add(mapIe2);
+                list.add(mapIe3);
+                list.add(mapIe4);
+            } else if (ArrayUtils.contains(result, "V")) {
+                for (int i = 0; i < listdataTime.size(); i++) {
+                    arre1[i][0] = listdataTime.get(i).get("dataTime");
+                    arre1[i][1] = list1.get(i).get("Ua");
+                    arre2[i][0] = listdataTime.get(i).get("dataTime");
+                    arre2[i][1] = list2.get(i).get("Ub");
+                    arre3[i][0] = listdataTime.get(i).get("dataTime");
+                    arre3[i][1] = list3.get(i).get("Uc");
+                    arre4[i][0] = listdataTime.get(i).get("dataTime");
+                    arre4[i][1] = list4.get(i).get("Uab");
+                    arre5[i][0] = listdataTime.get(i).get("dataTime");
+                    arre5[i][1] = list5.get(i).get("Ubc");
+                    arre6[i][0] = listdataTime.get(i).get("dataTime");
+                    arre6[i][1] = list6.get(i).get("Uca");
+                    arre7[i][0] = listdataTime.get(i).get("dataTime");
+                    arre7[i][1] = list7.get(i).get("Ul");
+                }
+                mapIe1.put("name", "A相电压");
+                mapIe1.put("arr", arre1);
+                mapIe2.put("name", "B相电压");
+                mapIe2.put("arr", arre2);
+                mapIe3.put("name", "C相电压");
+                mapIe3.put("arr", arre3);
+                mapIe4.put("name", "AB线电压");
+                mapIe4.put("arr", arre4);
+                mapIe5.put("name", "BC线电压");
+                mapIe5.put("arr", arre5);
+                mapIe6.put("name", "CA线电压");
+                mapIe6.put("arr", arre6);
+                mapIe7.put("name", "回路电压");
+                mapIe7.put("arr", arre7);
+                list.add(mapIe1);
+                list.add(mapIe2);
+                list.add(mapIe3);
+                list.add(mapIe4);
+                list.add(mapIe5);
+                list.add(mapIe6);
+                list.add(mapIe7);
+            } else if (ArrayUtils.contains(result, "C")) {
+                for (int i = 0; i < listdataTime.size(); i++) {
+                    arre1[i][0] = listdataTime.get(i).get("dataTime");
+                    arre1[i][1] = list1.get(i).get("T1");
+                    arre2[i][0] = listdataTime.get(i).get("dataTime");
+                    arre2[i][1] = list2.get(i).get("T2");
+                    arre3[i][0] = listdataTime.get(i).get("dataTime");
+                    arre3[i][1] = list3.get(i).get("T3");
+                    arre4[i][0] = listdataTime.get(i).get("dataTime");
+                    arre4[i][1] = list4.get(i).get("T4");
+                    arre5[i][0] = listdataTime.get(i).get("dataTime");
+                    arre5[i][1] = list5.get(i).get("DeviceTemp");
+                }
+                mapIe1.put("name", "外接温度1");
+                mapIe1.put("arr", arre1);
+                mapIe2.put("name", "外接温度1");
+                mapIe2.put("arr", arre2);
+                mapIe3.put("name", "外接温度1");
+                mapIe3.put("arr", arre3);
+                mapIe4.put("name", "外接温度1");
+                mapIe4.put("arr", arre4);
+                mapIe5.put("name", "环境温度");
+                mapIe5.put("arr", arre5);
+                list.add(mapIe1);
+                list.add(mapIe2);
+                list.add(mapIe3);
+                list.add(mapIe4);
+                list.add(mapIe5);
+            } else if (ArrayUtils.contains(result, "HZ")) {
+                for (int i = 0; i < listdataTime.size(); i++) {
+                    arre1[i][0] = listdataTime.get(i).get("dataTime");
+                    arre1[i][1] = list1.get(i).get("F");
+                }
+                mapIe1.put("name", "频率");
+                mapIe1.put("arr", arre1);
+                list.add(mapIe1);
+            } else if (ArrayUtils.contains(result, "PS")) {
+                for (int i = 0; i < listdataTime.size(); i++) {
+                    arre1[i][0] = listdataTime.get(i).get("dataTime");
+                    arre1[i][1] = list1.get(i).get("COSa");
+                    arre2[i][0] = listdataTime.get(i).get("dataTime");
+                    arre2[i][1] = list2.get(i).get("COSb");
+                    arre3[i][0] = listdataTime.get(i).get("dataTime");
+                    arre3[i][1] = list3.get(i).get("COSc");
+                    arre4[i][0] = listdataTime.get(i).get("dataTime");
+                    arre4[i][1] = list4.get(i).get("COS");
+                }
+                mapIe1.put("name", "A相功率因数");
+                mapIe1.put("arr", arre1);
+                mapIe2.put("name", "B相功率因数");
+                mapIe2.put("arr", arre2);
+                mapIe3.put("name", "C相功率因数");
+                mapIe3.put("arr", arre3);
+                mapIe4.put("name", "功率因数");
+                mapIe4.put("arr", arre4);
+                list.add(mapIe1);
+                list.add(mapIe2);
+                list.add(mapIe3);
+                list.add(mapIe4);
+            } else if (ArrayUtils.contains(result, "RMS")) {
+                for (int i = 0; i < listdataTime.size(); i++) {
+                    arre1[i][0] = listdataTime.get(i).get("dataTime");
+                    arre1[i][1] = list1.get(i).get("IHa");
+                    arre2[i][0] = listdataTime.get(i).get("dataTime");
+                    arre2[i][1] = list2.get(i).get("IHb");
+                    arre3[i][0] = listdataTime.get(i).get("dataTime");
+                    arre3[i][1] = list3.get(i).get("IHc");
+                }
+                mapIe1.put("name", "Ia总谐波电流");
+                mapIe1.put("arr", arre1);
+                mapIe2.put("name", "Ib总谐波电流");
+                mapIe2.put("arr", arre2);
+                mapIe3.put("name", "Ic总谐波电流");
+                mapIe3.put("arr", arre3);
+                list.add(mapIe1);
+                list.add(mapIe2);
+                list.add(mapIe3);
+            } else if (ArrayUtils.contains(result, "DDB")) {
+                for (int i = 0; i < listdataTime.size(); i++) {
+                    arre1[i][0] = listdataTime.get(i).get("dataTime");
+                    arre1[i][1] = list1.get(i).get("SignalIntensity");
+                }
+                mapIe1.put("name", "设备信号强度");
+                mapIe1.put("arr", arre1);
+                list.add(mapIe1);
+            } else if (ArrayUtils.contains(result, "VT")) {
+                for (int i = 0; i < listdataTime.size(); i++) {
+                    arre1[i][0] = listdataTime.get(i).get("dataTime");
+                    arre1[i][1] = list1.get(i).get("Upt");
+                    arre2[i][0] = listdataTime.get(i).get("dataTime");
+                    arre2[i][1] = list2.get(i).get("Udt");
+                    arre3[i][0] = listdataTime.get(i).get("dataTime");
+                    arre3[i][1] = list3.get(i).get("Ust");
+                }
+                mapIe1.put("name", "电压暂升次数");
+                mapIe1.put("arr", arre1);
+                mapIe2.put("name", "电压暂降次数");
+                mapIe2.put("arr", arre2);
+                mapIe3.put("name", "电压中断次数");
+                mapIe3.put("arr", arre3);
+                list.add(mapIe1);
+                list.add(mapIe2);
+                list.add(mapIe3);
+            }
+        }
+
+        return list;
+    }
+
+
+    @Override
+    public String DataReportExport(Integer siteId, Date startTime, Date endTime, String queryType) {
+        DateFormat dFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
+        Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
+        Workbook workbook = null;
+        File file = null;
+        long diff = endTime.getTime() - startTime.getTime();
+        long days = diff / (1000 * 60 * 60);
+        ExportParams params = new ExportParams("数据报表", "数据报表");
+        List<HtAnalogData> page1 = null;
+        if (days <= 24) {
+            page1 = baseMapper.getDataReportMap(siteId, startTime, endTime);
+        } else if (days < 360 && days > 24) {
+            List<Device> device_list = baseMapper.getDeviceListMap(siteId);
+            page1 = baseMapper.getDataReportMMap(device_list, startTime, endTime);
+        } else if (days >= 360) {
+            List<Device> device_list = baseMapper.getDeviceListMap(siteId);
+            page1 = baseMapper.getDataReportDMap(device_list, startTime, endTime);
+        }
+        String[] result = queryType.split(",");
+        try {
+            List<ExcelExportEntity> colList = new ArrayList<ExcelExportEntity>();
+            ExcelExportEntity colEntity = new ExcelExportEntity("序号", "xh");
+            colEntity.setNeedMerge(true);
+            colList.add(colEntity);
+            colEntity = new ExcelExportEntity("时间", "dataTime");
+            colEntity.setNeedMerge(true);
+            colList.add(colEntity);
+            if (ArrayUtils.contains(result, "I")) {
+                colEntity = new ExcelExportEntity("A相电流", "Ia");
+                colEntity.setNeedMerge(true);
+                colList.add(colEntity);
+                colEntity = new ExcelExportEntity("B相电流", "Ib");
+                colEntity.setNeedMerge(true);
+                colList.add(colEntity);
+                colEntity = new ExcelExportEntity("C相电流", "Ic");
+                colEntity.setNeedMerge(true);
+                colList.add(colEntity);
+                if (ArrayUtils.contains(result, "P")) {
+                    colEntity = new ExcelExportEntity("总有功功率", "P");
+                    colEntity.setNeedMerge(true);
+                    colList.add(colEntity);
+                    colEntity = new ExcelExportEntity("总无功功率", "Q");
+                    colEntity.setNeedMerge(true);
+                    colList.add(colEntity);
+                    colEntity = new ExcelExportEntity("A相有功功率", "Pa");
+                    colEntity.setNeedMerge(true);
+                    colList.add(colEntity);
+                    colEntity = new ExcelExportEntity("B相有功功率", "Pb");
+                    colEntity.setNeedMerge(true);
+                    colList.add(colEntity);
+                    colEntity = new ExcelExportEntity("C相有功功率", "Pc");
+                    colEntity.setNeedMerge(true);
+                    colList.add(colEntity);
+                    colEntity = new ExcelExportEntity("A相无功功率", "Qa");
+                    colEntity.setNeedMerge(true);
+                    colList.add(colEntity);
+                    colEntity = new ExcelExportEntity("B相无功功率", "Qb");
+                    colEntity.setNeedMerge(true);
+                    colList.add(colEntity);
+                    colEntity = new ExcelExportEntity("C相无功功率", "Qc");
+                    colEntity.setNeedMerge(true);
+                    colList.add(colEntity);
+                    colEntity = new ExcelExportEntity("实时需量", "Demand");
+                    colEntity.setNeedMerge(true);
+                    colList.add(colEntity);
+                    if (ArrayUtils.contains(result, "KWh")) {
+                        colEntity = new ExcelExportEntity("负有功电度", "Epn");
+                        colEntity.setNeedMerge(true);
+                        colList.add(colEntity);
+                        colEntity = new ExcelExportEntity("正有功电度", "Epp");
+                        colEntity.setNeedMerge(true);
+                        colList.add(colEntity);
+                        colEntity = new ExcelExportEntity("负无功电度", "Eqn");
+                        colEntity.setNeedMerge(true);
+                        colList.add(colEntity);
+                        colEntity = new ExcelExportEntity("正无功电度", "Eqp");
+                        colEntity.setNeedMerge(true);
+                        colList.add(colEntity);
+                        if (ArrayUtils.contains(result, "V")) {
+                            colEntity = new ExcelExportEntity("A相电压", "Ua");
+                            colEntity.setNeedMerge(true);
+                            colList.add(colEntity);
+                            colEntity = new ExcelExportEntity("B相电压", "Ub");
+                            colEntity.setNeedMerge(true);
+                            colList.add(colEntity);
+                            colEntity = new ExcelExportEntity("C相电压", "Ub");
+                            colEntity.setNeedMerge(true);
+                            colList.add(colEntity);
+                            colEntity = new ExcelExportEntity("AB线电压", "Uab");
+                            colEntity.setNeedMerge(true);
+                            colList.add(colEntity);
+                            colEntity = new ExcelExportEntity("BC线电压", "Ubc");
+                            colEntity.setNeedMerge(true);
+                            colList.add(colEntity);
+                            colEntity = new ExcelExportEntity("CA线电压", "Uca");
+                            colEntity.setNeedMerge(true);
+                            colList.add(colEntity);
+                            colEntity = new ExcelExportEntity("回路电压", "Ul");
+                            colEntity.setNeedMerge(true);
+                            colList.add(colEntity);
+                            if (ArrayUtils.contains(result, "C")) {
+                                colEntity = new ExcelExportEntity("外接温度1", "T1");
+                                colEntity.setNeedMerge(true);
+                                colList.add(colEntity);
+                                colEntity = new ExcelExportEntity("外接温度2", "T2");
+                                colEntity.setNeedMerge(true);
+                                colList.add(colEntity);
+                                colEntity = new ExcelExportEntity("外接温度3", "T3");
+                                colEntity.setNeedMerge(true);
+                                colList.add(colEntity);
+                                colEntity = new ExcelExportEntity("外接温度4", "T4");
+                                colEntity.setNeedMerge(true);
+                                colList.add(colEntity);
+                                colEntity = new ExcelExportEntity("环境温度", "DeviceTemp");
+                                colEntity.setNeedMerge(true);
+                                colList.add(colEntity);
+                                if (ArrayUtils.contains(result, "HZ")) {
+                                    colEntity = new ExcelExportEntity("频率", "F");
+                                    colEntity.setNeedMerge(true);
+                                    colList.add(colEntity);
+//                                    map.put("F",rtAnalogData.getF());
+                                    if (ArrayUtils.contains(result, "PS")) {
+                                        colEntity = new ExcelExportEntity("A相功率因数", "COSa");
+                                        colEntity.setNeedMerge(true);
+                                        colList.add(colEntity);
+                                        colEntity = new ExcelExportEntity("B相功率因数", "COSb");
+                                        colEntity.setNeedMerge(true);
+                                        colList.add(colEntity);
+                                        colEntity = new ExcelExportEntity("C相功率因数", "COSc");
+                                        colEntity.setNeedMerge(true);
+                                        colList.add(colEntity);
+                                        colEntity = new ExcelExportEntity("功率因数", "COS");
+                                        colEntity.setNeedMerge(true);
+                                        colList.add(colEntity);
+                                        if (ArrayUtils.contains(result, "RMS")) {
+                                            colEntity = new ExcelExportEntity("Ia总谐波电流", "IHa");
+                                            colEntity.setNeedMerge(true);
+                                            colList.add(colEntity);
+                                            colEntity = new ExcelExportEntity("Ib总谐波电流", "IHb");
+                                            colEntity.setNeedMerge(true);
+                                            colList.add(colEntity);
+                                            colEntity = new ExcelExportEntity("Ic总谐波电流", "IHc");
+                                            colEntity.setNeedMerge(true);
+                                            colList.add(colEntity);
+                                            if (ArrayUtils.contains(result, "DDB")) {
+                                                colEntity = new ExcelExportEntity("设备信号强度", "SignalIntensity");
+                                                colEntity.setNeedMerge(true);
+                                                colList.add(colEntity);
+                                                if (ArrayUtils.contains(result, "VT")) {
+                                                    colEntity = new ExcelExportEntity("电压暂升次数", "Upt");
+                                                    colEntity.setNeedMerge(true);
+                                                    colList.add(colEntity);
+                                                    colEntity = new ExcelExportEntity("电压暂降次数", "Udt");
+                                                    colEntity.setNeedMerge(true);
+                                                    colList.add(colEntity);
+                                                    colEntity = new ExcelExportEntity("电压中断次数", "Ust");
+                                                    colEntity.setNeedMerge(true);
+                                                    colList.add(colEntity);
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
+            for (int i = 0; i < page1.size(); i++) {
+                Map<String, Object> valMap = new HashMap<String, Object>();
+                valMap.put("xh", i + 1);
+                if (days <= 24) {
+                    valMap.put("dataTime", DateUtils.format(page1.get(i).getDataTime(), "MM-dd HH:mm"));
+                } else if (days < 360 && days > 24) {
+                    valMap.put("dataTime", DateUtils.format(page1.get(i).getDataTime(), "MM-dd HH:mm"));
+                } else if (days >= 360) {
+                    valMap.put("dataTime", DateUtils.format(page1.get(i).getDataTime(), DateUtils.PARSE_PATTERNS[8]));
+                }
+                if (ArrayUtils.contains(result, "I")) {
+                    valMap.put("Ia", page1.get(i).getIa());
+                    valMap.put("Ib", page1.get(i).getIb());
+                    valMap.put("Ic", page1.get(i).getIc());
+                    if (ArrayUtils.contains(result, "P")) {
+                        valMap.put("P", page1.get(i).getP());
+                        valMap.put("Q", page1.get(i).getQ());
+                        valMap.put("Pa", page1.get(i).getPa());
+                        valMap.put("Pb", page1.get(i).getPb());
+                        valMap.put("Pc", page1.get(i).getPc());
+                        valMap.put("Qa", page1.get(i).getQa());
+                        valMap.put("Qb", page1.get(i).getQb());
+                        valMap.put("Qc", page1.get(i).getQc());
+                        valMap.put("Demand", page1.get(i).getDemand());
+                        if (ArrayUtils.contains(result, "KWh")) {
+                            valMap.put("Epn", page1.get(i).getEpn());
+                            valMap.put("Epp", page1.get(i).getEpp());
+                            valMap.put("Eqn", page1.get(i).getEqn());
+                            valMap.put("Eqp", page1.get(i).getEqp());
+                            if (ArrayUtils.contains(result, "V")) {
+                                valMap.put("Ua", page1.get(i).getUa());
+                                valMap.put("Ub", page1.get(i).getUb());
+                                valMap.put("Uc", page1.get(i).getUc());
+                                valMap.put("Uab", page1.get(i).getUab());
+                                valMap.put("Ubc", page1.get(i).getUbc());
+                                valMap.put("Uca", page1.get(i).getUca());
+                                valMap.put("Ul", page1.get(i).getUl());
+                                if (ArrayUtils.contains(result, "C")) {
+                                    valMap.put("T1", page1.get(i).getT1());
+                                    valMap.put("T2", page1.get(i).getT2());
+                                    valMap.put("T3", page1.get(i).getT3());
+                                    valMap.put("T4", page1.get(i).getT4());
+                                    valMap.put("DeviceTemp", page1.get(i).getDeviceTemp());
+                                    if (ArrayUtils.contains(result, "HZ")) {
+                                        valMap.put("F", page1.get(i).getF());
+                                        if (ArrayUtils.contains(result, "PS")) {
+                                            valMap.put("COSa", page1.get(i).getCOSa());
+                                            valMap.put("COSb", page1.get(i).getCOSb());
+                                            valMap.put("COSc", page1.get(i).getCOSc());
+                                            valMap.put("COS", page1.get(i).getCos());
+                                            if (ArrayUtils.contains(result, "RMS")) {
+                                                valMap.put("IHa", page1.get(i).getIHa());
+                                                valMap.put("IHb", page1.get(i).getIHb());
+                                                valMap.put("IHc", page1.get(i).getIHc());
+                                                if (ArrayUtils.contains(result, "DDB")) {
+                                                    valMap.put("SignalIntensity", page1.get(i).getSignalIntensity());
+                                                    if (ArrayUtils.contains(result, "VT")) {
+                                                        valMap.put("Upt", page1.get(i).getUpt());
+                                                        valMap.put("Udt", page1.get(i).getUdt());
+                                                        valMap.put("Ust", page1.get(i).getUst());
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+                list.add(valMap);
+            }
+
+            workbook = ExcelExportUtil.exportExcel(params, colList, list);
+
+            if (null != workbook) {
+                file = FileUtils.getFile(GlobalUtils.getTempBaseDir(), String.format("%s-%s.xlsx", "数据报表", dFormat.format(System.currentTimeMillis()) + ""));
+                FileUtils.createFile(file.getAbsolutePath());
+                FileOutputStream allListingFileOutputStream = new FileOutputStream(file);
+                workbook.write(allListingFileOutputStream);
+            } else {
+                throw new BusinessException("表格数据为空");
+            }
+        } catch (FileNotFoundException e) {
+            log.error("导出文件失败", e);
+            throw new BusinessException("导出文件失败");
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return file.getName();
+    }
+
+    public static Date getLastDayOfMonth(Date sDate1) {
+        Calendar cDay1 = Calendar.getInstance();
+        cDay1.setTime(sDate1);
+        final int lastDay = cDay1.getActualMaximum(Calendar.DAY_OF_MONTH);
+        Date lastDate = cDay1.getTime();
+        lastDate.setDate(lastDay);
+        return lastDate;
+    }
+
+
+
+
+    @Override
+    public List<RealScoreVO> evaluationReport(int siteId, Date time, int type) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM");
+        String startTime = null;
+        String endtime = null;
+        if (type == 1) {
+            startTime = sdf.format(time) + " 00:00:00";
+            endtime = sdf.format(time) + " 23:59:59";
+        } else {
+            startTime = sdf1.format(time) + "-01 00:00:00";
+            String time1 = sdf1.format(time) + "-01";
+            try {
+                Date yq = getLastDayOfMonth(sdf.parse(time1));
+                endtime = sdf.format(yq) + " 23:59:59";
+            } catch (Exception e) {
+                throw new BusinessException("时间错误");
+            }
+        }
+        LambdaQueryWrapper<Device> queryWrapper1 = Wrappers.lambdaQuery();
+        queryWrapper1.eq(Device::getSiteId,siteId);
+        List<Device> deviceList = deviceService.list(queryWrapper1);
+        List<String> fieldDisplayOne183 = new ArrayList();
+        List<String> fieldDisplayOne171 = new ArrayList();
+        List<String> fieldDisplayOne173 = new ArrayList();
+        if (deviceList.size() > 0) {
+            for(int j = 0; j < deviceList.size(); j++){
+                if (deviceList.get(j).getDeviceType().equals("1")) {
+                    fieldDisplayOne183.add(deviceList.get(j).getDeviceCode());
+                } else if (deviceList.get(j).getDeviceType().equals("3")) {
+                    fieldDisplayOne171.add(deviceList.get(j).getDeviceCode());
+                } else if (deviceList.get(j).getDeviceType().equals("4")) {
+                    fieldDisplayOne173.add(deviceList.get(j).getDeviceCode());
+                }
+            }
+        }
+        List<EvaluationReporVo> evaluationReporVo1 = new ArrayList<>();
+        List<EvaluationReporVo> evaluationReporVo2 = new ArrayList<>();
+        if (fieldDisplayOne183.size()>0){
+            evaluationReporVo1 = baseMapper.getEvaluationReportList(siteId, startTime, endtime,"ht_analog_data",fieldDisplayOne183);
+        }
+        if (fieldDisplayOne173.size()>0){
+            evaluationReporVo2 = baseMapper.getEvaluationReportList(siteId, startTime, endtime,"ht_analog_173_data",fieldDisplayOne173);
+        }
+
+        List<EvaluationReporVo> evaluationReporVo = Stream.of(evaluationReporVo1, evaluationReporVo2).flatMap(Collection::stream).distinct().collect(Collectors.toList());
+        return fillRealScoreDataTwo(evaluationReporVo);
+    }
+
+//    public List<RealScoreVO> evaluationReport(int siteId, Date time, int type) {
+//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+//        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM");
+//        String startTime = null;
+//        String endtime = null;
+//        if (type == 1) {
+//            startTime = sdf.format(time) + " 00:00:00";
+//            endtime = sdf.format(time) + " 23:59:59";
+//        } else {
+//            startTime = sdf1.format(time) + "-01 00:00:00";
+//            String time1 = sdf1.format(time) + "-01";
+//            try {
+//                Date yq = getLastDayOfMonth(sdf.parse(time1));
+//                endtime = sdf.format(yq) + " 23:59:59";
+//            } catch (Exception e) {
+//                throw new BusinessException("时间错误");
+//            }
+//        }
+//
+//        List<EvaluationReporVo> evaluationReporVo = baseMapper.evaluationReportList(siteId, startTime, endtime);
+//        return fillRealScoreDataTwo(evaluationReporVo);
+//    }
+
+    /**
+     * 计算电压分数2
+     *
+     * @return
+     */
+    public Boolean computeUScoreOne(Double qualified, Double voltageLevel) {
+//        double mul = Arith.mul(qualified, voltageLevel);
+        Double voltageLevels = voltageLevel+(voltageLevel / 100 * 7);
+        Double voltageLevelx = voltageLevel-(voltageLevel / 100 * 7);
+        if (voltageLevelx <= qualified && voltageLevels >= qualified) {
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public List<RealScoreVO> fillRealScoreDataTwo(List<EvaluationReporVo> evaluationReporVo) {
+        List<RealScoreVO> realScoreVoList = new ArrayList<>();
+        if (evaluationReporVo.size() > 0) {
+            for (int i = 0; i < evaluationReporVo.size(); i++) {
+                List<Double> checkList = new ArrayList<>();
+                Integer score = 0;
+                RealScoreVO realScoreVo = BeanMapperUtils.map(evaluationReporVo.get(i), RealScoreVO.class);
+                if (null == realScoreVo.getCos()) {
+                    realScoreVo.setCos(0.00);
+                }
+                checkList.clear();
+                checkList.add(realScoreVo.getIa());
+                checkList.add(realScoreVo.getIb());
+                checkList.add(realScoreVo.getIc());
+                //电流不平衡
+                realScoreVo.setElBalun(checkBalun(checkList));
+                checkList.clear();
+                checkList.add(realScoreVo.getUa());
+                checkList.add(realScoreVo.getUb());
+                checkList.add(realScoreVo.getUc());
+                //电压不平衡
+                realScoreVo.setVtBalun(checkBalun(checkList));
+                //电压合格率
+                double voltageLevel = Double.parseDouble(evaluationReporVo.get(i).getVoltageLevel());
+                realScoreVo.setUaQualified(Arith.sub(evaluationReporVo.get(i).getUa(), voltageLevel));
+                realScoreVo.setUbQualified(Arith.sub(evaluationReporVo.get(i).getUb(), voltageLevel));
+                realScoreVo.setUcQualified(Arith.sub(evaluationReporVo.get(i).getUc(), voltageLevel));
+                //电流负载率
+                Double ratedCurrent = evaluationReporVo.get(i).getRatedCurrent();
+                realScoreVo.setIaLoad(Arith.div(realScoreVo.getIa(), ratedCurrent));
+                realScoreVo.setIbLoad(Arith.div(realScoreVo.getIb(), ratedCurrent));
+                realScoreVo.setIcLoad(Arith.div(realScoreVo.getIc(), ratedCurrent));
+                //计算分数
+                //电压分数
+                realScoreVo.setUaQ(computeUScoreOne(realScoreVo.getUa(), voltageLevel));
+                realScoreVo.setUbQ(computeUScoreOne(realScoreVo.getUb(), voltageLevel));
+                realScoreVo.setUcQ(computeUScoreOne(realScoreVo.getUc(), voltageLevel));
+                if (realScoreVo.getUaQ() && realScoreVo.getUbQ() && realScoreVo.getUcQ()) {
+                    realScoreVo.setUQ(true);
+                    score += 20;
+                } else {
+                    realScoreVo.setUQ(false);
+                }
+                //电流分数
+                realScoreVo.setIaLoadQ(realScoreVo.getIaLoad() <= 0.8);
+                realScoreVo.setIbLoadQ(realScoreVo.getIbLoad() <= 0.8);
+                realScoreVo.setIcLoadQ(realScoreVo.getIcLoad() <= 0.8);
+                if (realScoreVo.getIaLoadQ() && realScoreVo.getIbLoadQ() && realScoreVo.getIcLoadQ()) {
+                    realScoreVo.setILoadQ(true);
+                    score += 20;
+                } else {
+                    realScoreVo.setILoadQ(false);
+                }
+                //电压平衡分数
+                realScoreVo.setElBalunQ(realScoreVo.getElBalun() <= 0.15);
+                if (realScoreVo.getElBalunQ()) {
+                    score += 20;
+                }
+                //电流平衡分数
+                realScoreVo.setVtBalunQ(realScoreVo.getVtBalun() <= 0.15);
+                if (realScoreVo.getVtBalunQ()) {
+                    score += 20;
+                }
+                //功率
+                realScoreVo.setCosQ(realScoreVo.getCos() <= 0.15);
+                if (realScoreVo.getCosQ()) {
+                    score += 20;
+                }
+                realScoreVo.setScore(score);
+                realScoreVoList.add(realScoreVo);
+            }
+        }
+        return realScoreVoList;
+    }
+
+//    @Override
+//    public String DataReportExport(Integer siteId,Date startTime, Date endTime,String queryType){
+//        Integer userId = UserUtil.getUserId();
+//        Workbook workbook = null;
+//        File file = null;
+//        long diff = endTime.getTime() - startTime.getTime();
+//        long days = diff / (1000 * 60 * 60);
+//        try {
+//            ExportParams params = new ExportParams(null, "数据报表");
+//            workbook = ExcelExportUtil.exportBigExcel(params, HtAnalogDataExportVO.class,
+//                    (o, i) -> {
+//                        Page<HtAnalogData> page = new Page<>(i, 30);
+//                        if (days<=24){
+//                            page = baseMapper.getDataReportMap1(page,siteId, startTime, endTime);
+//                        }else if (days<360&&days>24){
+//                            List<Device> device_list = baseMapper.getDeviceListMap(siteId);
+//                            page = baseMapper.getDataReportMMap1(page,device_list,startTime, endTime);
+//                        }else if (days>=360){
+//                            List<Device> device_list = baseMapper.getDeviceListMap(siteId);
+//                            page = baseMapper.getDataReportDMap1(page,device_list,startTime, endTime);
+//                        }
+//
+//                        return new ArrayList<>(BeanMapperUtils.mapList(page.getRecords(), HtAnalogData.class, HtAnalogDataExportVO.class));
+//                    },null);
+//            if (null != workbook) {
+//                file = FileUtils.getFile(GlobalUtils.getTempBaseDir(), String.format("%s-%s.xlsx", "数据报表", System.currentTimeMillis() + ""));
+//                FileUtils.createFile(file.getAbsolutePath());
+//                FileOutputStream allListingFileOutputStream = new FileOutputStream(file);
+//                workbook.write(allListingFileOutputStream);
+//            } else {
+//                throw new BusinessException("表格数据为空");
+//            }
+//        } catch (Exception e) {
+//            log.error("导出文件失败", e);
+//            throw new BusinessException("导出文件失败");
+//        } finally {
+//            if (workbook != null) {
+//                try {
+//                    workbook.close();
+//                } catch (IOException e) {
+//                    log.error("===export spec=== 关闭workbook失败", e);
+//                }
+//            }
+//        }
+//        return file.getName();
+//    }
+
+
+}

+ 56 - 56
fiveep-service/src/main/java/com/bizmatics/service/util/manager/AsyncManager.java

@@ -1,56 +1,56 @@
-package com.bizmatics.service.util.manager;
-
-import com.bizmatics.common.spring.util.SpringContextUtils;
-import com.bizmatics.common.spring.util.ThreadUtils;
-
-import java.util.TimerTask;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-/**
- * 异步任务管理器
- * 
- * @author yq
- */
-public class AsyncManager
-{
-    /**
-     * 操作延迟10毫秒
-     */
-    private final int OPERATE_DELAY_TIME = 10;
-
-    /**
-     * 异步操作任务调度线程池
-     */
-    private ScheduledExecutorService executor = SpringContextUtils.getBean("scheduledExecutorService");
-
-    /**
-     * 单例模式
-     */
-    private AsyncManager(){}
-
-    private static AsyncManager me = new AsyncManager();
-
-    public static AsyncManager me()
-    {
-        return me;
-    }
-
-    /**
-     * 执行任务
-     * 
-     * @param task 任务
-     */
-    public void execute(TimerTask task)
-    {
-        executor.schedule(task, OPERATE_DELAY_TIME, TimeUnit.MILLISECONDS);
-    }
-
-    /**
-     * 停止任务线程池
-     */
-    public void shutdown()
-    {
-        ThreadUtils.shutdownAndAwaitTermination(executor);
-    }
-}
+package com.bizmatics.service.util.manager;
+
+import com.bizmatics.common.spring.util.SpringContextUtils;
+import com.bizmatics.common.spring.util.ThreadUtils;
+
+import java.util.TimerTask;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 异步任务管理器
+ * 
+ * @author yq
+ */
+public class AsyncManager
+{
+    /**
+     * 操作延迟10毫秒
+     */
+    private final int OPERATE_DELAY_TIME = 10;
+
+    /**
+     * 异步操作任务调度线程池
+     */
+    private ScheduledExecutorService executor = SpringContextUtils.getBean("scheduledExecutorService");
+
+    /**
+     * 单例模式
+     */
+    private AsyncManager(){}
+
+    private static AsyncManager me = new AsyncManager();
+
+    public static AsyncManager me()
+    {
+        return me;
+    }
+
+    /**
+     * 执行任务
+     * 
+     * @param task 任务
+     */
+    public void execute(TimerTask task)
+    {
+        executor.schedule(task, OPERATE_DELAY_TIME, TimeUnit.MILLISECONDS);
+    }
+
+    /**
+     * 停止任务线程池
+     */
+    public void shutdown()
+    {
+        ThreadUtils.shutdownAndAwaitTermination(executor);
+    }
+}

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff