Pu Zhibing
7 天以前 b4bfd886af0460ae84b2d70233c2a77866930a46
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TaskUtil.java
@@ -56,119 +56,123 @@
    // 每天凌晨12点30执行 推送充电用能统计
    @Scheduled(cron = "0 30 0 * * ?")
    public void superviseNotificationOperationStatsInfo() {
        StationStatsInfoResult res = new StationStatsInfoResult();
        int dayOfMonth1 = LocalDateTime.now().getYear();
        int dayOfMonth2 = LocalDateTime.now().getMonthValue();
        int dayOfMonth3 = LocalDateTime.now().getDayOfMonth();
        List<Site> data = siteClient.getSiteAll().getData();
        LocalDateTime startLocalDateTime = LocalDateTime.of(dayOfMonth1, dayOfMonth2, dayOfMonth3, 0, 0, 0);
        LocalDateTime endLocalDateTime = LocalDateTime.of(dayOfMonth1, dayOfMonth2, dayOfMonth3, 23, 59, 59);
        String start = DateUtils.localDateTimeToString(startLocalDateTime);
        String end = DateUtils.localDateTimeToString(endLocalDateTime);
        ChargingStatisticeDTO chargingStatisticeDTO = new ChargingStatisticeDTO();
        chargingStatisticeDTO.setStartTime(startLocalDateTime);
        chargingStatisticeDTO.setEndTime(endLocalDateTime);
        List<TChargingOrder> data1 = chargingOrderClient.getChargingStatistics(chargingStatisticeDTO).getData();
        List<StationStatsInfo> stationStatsInfos = new ArrayList<>();
        for (Site datum : data) {
            StationStatsInfo stationStatsInfo = new StationStatsInfo();
            stationStatsInfo.setStationID(datum.getId().toString());
            stationStatsInfo.setEquipmentOwnerID("906171535");
            stationStatsInfo.setOperatorID("906171535");
            stationStatsInfo.setStationClassification(1);
            stationStatsInfo.setStartTime(start);
            stationStatsInfo.setEndTime(end);
            List<TChargingOrder> chargingOrders = data1.stream().filter(e -> e.getSiteId().equals(datum.getId())).collect(Collectors.toList());
            // 充电电量
            BigDecimal electricity = new BigDecimal("0");
            int chargingCount = 0;
            for (TChargingOrder chargingOrder : chargingOrders) {
                if (chargingOrder.getElectricity()!=null){
                    electricity = electricity.add(chargingOrder.getElectricity());
                    chargingCount++;
        String port = System.getProperty("server.port");
        if("5071".equals(port)){
            StationStatsInfoResult res = new StationStatsInfoResult();
            int dayOfMonth1 = LocalDateTime.now().getYear();
            int dayOfMonth2 = LocalDateTime.now().getMonthValue();
            int dayOfMonth3 = LocalDateTime.now().getDayOfMonth();
            List<Site> data = siteClient.getSiteAll().getData();
            LocalDateTime startLocalDateTime = LocalDateTime.of(dayOfMonth1, dayOfMonth2, dayOfMonth3, 0, 0, 0);
            LocalDateTime endLocalDateTime = LocalDateTime.of(dayOfMonth1, dayOfMonth2, dayOfMonth3, 23, 59, 59);
            String start = DateUtils.localDateTimeToString(startLocalDateTime);
            String end = DateUtils.localDateTimeToString(endLocalDateTime);
            ChargingStatisticeDTO chargingStatisticeDTO = new ChargingStatisticeDTO();
            chargingStatisticeDTO.setStartTime(startLocalDateTime);
            chargingStatisticeDTO.setEndTime(endLocalDateTime);
            List<TChargingOrder> data1 = chargingOrderClient.getChargingStatistics(chargingStatisticeDTO).getData();
            List<StationStatsInfo> stationStatsInfos = new ArrayList<>();
            for (Site datum : data) {
                StationStatsInfo stationStatsInfo = new StationStatsInfo();
                stationStatsInfo.setStationID(datum.getId().toString());
                stationStatsInfo.setEquipmentOwnerID("906171535");
                stationStatsInfo.setOperatorID("906171535");
                stationStatsInfo.setStationClassification(1);
                stationStatsInfo.setStartTime(start);
                stationStatsInfo.setEndTime(end);
                List<TChargingOrder> chargingOrders = data1.stream().filter(e -> e.getSiteId().equals(datum.getId())).collect(Collectors.toList());
                // 充电电量
                BigDecimal electricity = new BigDecimal("0");
                int chargingCount = 0;
                for (TChargingOrder chargingOrder : chargingOrders) {
                    if (chargingOrder.getElectricity()!=null){
                        electricity = electricity.add(chargingOrder.getElectricity());
                        chargingCount++;
                    }
                }
                stationStatsInfo.setStationElectricity(electricity.divide(new BigDecimal("24")).setScale(4, BigDecimal.ROUND_DOWN));
                stationStatsInfo.setStationTotalChargeEnergy(electricity.setScale(4, BigDecimal.ROUND_DOWN));
                stationStatsInfo.setStationTotalWarningNum(0);
                stationStatsInfo.setStationTotalOtherEnergy(new BigDecimal("0"));
                stationStatsInfo.setStationTotalChargeNum(chargingCount);
                //构建设备统计数据
                List<EquipmentStatsInfo> EquipmentStatsInfos = new ArrayList<>();
                Map<Integer, List<TChargingOrder>> collect = chargingOrders.stream().collect(Collectors.groupingBy(TChargingOrder::getChargingPileId));
                for (Integer integer : collect.keySet()) {
                    List<TChargingOrder> tChargingOrders = collect.get(integer);
                    BigDecimal reduce1 = tChargingOrders.stream().map(TChargingOrder::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
                    EquipmentStatsInfo equipmentStatsInfo = new EquipmentStatsInfo();
                    equipmentStatsInfo.setEquipmentClassification(1);
                    long chargingTime = 0L;
                    for (TChargingOrder tChargingOrder : tChargingOrders) {
                        // 累加充电时长
                        LocalDateTime startTime = tChargingOrder.getStartTime();
                        LocalDateTime endTime = tChargingOrder.getEndTime();
                        // 计算时间差 单位分钟
                        chargingTime += ChronoUnit.SECONDS.between(startTime, endTime)/60;
                    }
                    equipmentStatsInfo.setEquipmentTotalChargeTime(chargingTime);
                    equipmentStatsInfo.setEquipmentTotalChargeNum(tChargingOrders.size());
                    equipmentStatsInfo.setEquipmentTotalWarningNum(0);
                    equipmentStatsInfo.setEquipmentID(integer.toString());
                    equipmentStatsInfo.setEquipmentElectricity(reduce1);
                    //构建设备接口统计数据
                    Map<Integer, List<TChargingOrder>> collect2 = tChargingOrders.stream().collect(Collectors.groupingBy(TChargingOrder::getChargingGunId));
                    List<ConnectorStatsInfo> ConnectorStatsInfos = new ArrayList<>();
                    for (Integer integer1 : collect2.keySet()) {
                        List<TChargingOrder> tChargingOrders1 = collect2.get(integer1);
                        BigDecimal reduce2 = tChargingOrders1.stream().map(TChargingOrder::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
                        TChargingGun chargingGun = chargingGunClient.getChargingGunById(integer1).getData();
                        ConnectorStatsInfo connectorStatsInfo = new ConnectorStatsInfo();
                        connectorStatsInfo.setConnectorID(chargingGun.getFullNumber());
                        connectorStatsInfo.setConnectorElectricity(reduce2);
                        ConnectorStatsInfos.add(connectorStatsInfo);
                    }
                    equipmentStatsInfo.setConnectorStatsInfos(ConnectorStatsInfos);
                    EquipmentStatsInfos.add(equipmentStatsInfo);
                }
                stationStatsInfo.setEquipmentStatsInfos(EquipmentStatsInfos);
                stationStatsInfos.add(stationStatsInfo);
            }
            stationStatsInfo.setStationElectricity(electricity.divide(new BigDecimal("24")).setScale(4, BigDecimal.ROUND_DOWN));
            stationStatsInfo.setStationTotalChargeEnergy(electricity.setScale(4, BigDecimal.ROUND_DOWN));
            stationStatsInfo.setStationTotalWarningNum(0);
            stationStatsInfo.setStationTotalOtherEnergy(new BigDecimal("0"));
            stationStatsInfo.setStationTotalChargeNum(chargingCount);
            //构建设备统计数据
            List<EquipmentStatsInfo> EquipmentStatsInfos = new ArrayList<>();
            Map<Integer, List<TChargingOrder>> collect = chargingOrders.stream().collect(Collectors.groupingBy(TChargingOrder::getChargingPileId));
            for (Integer integer : collect.keySet()) {
                List<TChargingOrder> tChargingOrders = collect.get(integer);
                BigDecimal reduce1 = tChargingOrders.stream().map(TChargingOrder::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
                EquipmentStatsInfo equipmentStatsInfo = new EquipmentStatsInfo();
                equipmentStatsInfo.setEquipmentClassification(1);
                long chargingTime = 0L;
                for (TChargingOrder tChargingOrder : tChargingOrders) {
                    // 累加充电时长
                    LocalDateTime startTime = tChargingOrder.getStartTime();
                    LocalDateTime endTime = tChargingOrder.getEndTime();
                    // 计算时间差 单位分钟
                    chargingTime += ChronoUnit.SECONDS.between(startTime, endTime)/60;
                }
                equipmentStatsInfo.setEquipmentTotalChargeTime(chargingTime);
                equipmentStatsInfo.setEquipmentTotalChargeNum(tChargingOrders.size());
                equipmentStatsInfo.setEquipmentTotalWarningNum(0);
                equipmentStatsInfo.setEquipmentID(integer.toString());
                equipmentStatsInfo.setEquipmentElectricity(reduce1);
                //构建设备接口统计数据
                Map<Integer, List<TChargingOrder>> collect2 = tChargingOrders.stream().collect(Collectors.groupingBy(TChargingOrder::getChargingGunId));
                List<ConnectorStatsInfo> ConnectorStatsInfos = new ArrayList<>();
                for (Integer integer1 : collect2.keySet()) {
                    List<TChargingOrder> tChargingOrders1 = collect2.get(integer1);
                    BigDecimal reduce2 = tChargingOrders1.stream().map(TChargingOrder::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
                    TChargingGun chargingGun = chargingGunClient.getChargingGunById(integer1).getData();
                    ConnectorStatsInfo connectorStatsInfo = new ConnectorStatsInfo();
                    connectorStatsInfo.setConnectorID(chargingGun.getFullNumber());
                    connectorStatsInfo.setConnectorElectricity(reduce2);
                    ConnectorStatsInfos.add(connectorStatsInfo);
                }
                equipmentStatsInfo.setConnectorStatsInfos(ConnectorStatsInfos);
                EquipmentStatsInfos.add(equipmentStatsInfo);
            }
            stationStatsInfo.setEquipmentStatsInfos(EquipmentStatsInfos);
            stationStatsInfos.add(stationStatsInfo);
            res.setStationStatsInfos(stationStatsInfos);
            tcecSuperviseUtil.superviseNotificationOperationStatsInfo(res);
        }
        res.setStationStatsInfos(stationStatsInfos);
        tcecSuperviseUtil.superviseNotificationOperationStatsInfo(res);
    }
    // 每15分钟执行一次的定时任务
    @Scheduled(cron = "0 0/15 * * * ?")
    public void supervise_notification_realtime_power_info() {
        List<Site> data = siteClient.getSiteAll().getData();
        List<Integer> siteIds = data.stream().map(Site::getId).collect(Collectors.toList());
        List<TChargingPile> tChargingPiles = chargingPileClient.getChargingPileBySiteIds(siteIds).getData();
        List<Integer> collect1 = tChargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList());
        List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(collect1).getData();
        SupStationPowerInfoResult supStationPowerInfoResult = new SupStationPowerInfoResult();
        List<SupStationPowerInfo> stationStatsInfos = new ArrayList<>();
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime startLocalDateTime = now.minusMinutes(15);
        ChargingStatisticeDTO chargingStatisticeDTO = new ChargingStatisticeDTO();
        chargingStatisticeDTO.setStartTime(startLocalDateTime);
        chargingStatisticeDTO.setEndTime(now);
        List<TChargingOrder> data1 = chargingOrderClient.getChargingStatistics(chargingStatisticeDTO).getData();
        for (Site datum : data) {
            List<TChargingOrder> collect = data1.stream().filter(e -> e.getSiteId().equals(datum.getId())
            &&e.getChargingPower()!=null).collect(Collectors.toList());
            SupStationPowerInfo supStationPowerInfo = new SupStationPowerInfo();
            supStationPowerInfo.setOperatorID("906171535");
            supStationPowerInfo.setEquipmentOwnerID("906171535");
            supStationPowerInfo.setStationID(datum.getId().toString());
            supStationPowerInfo.setStationClassification(1);
            supStationPowerInfo.setDataTime(DateUtils.localDateTimeToString(LocalDateTime.now()));
            BigDecimal divide = collect.stream().map(TChargingOrder::getChargingPower).reduce(BigDecimal::add).get().divide(new BigDecimal(collect.size()).setScale(4, BigDecimal.ROUND_DOWN));
            supStationPowerInfo.setStationRealTimePower(divide);
            supStationPowerInfo.setEquipmentPowerInfos(buildEquipmentPowerInfo(datum.getId(), tChargingPiles, chargingGunList));
            stationStatsInfos.add(supStationPowerInfo);
        String port = System.getProperty("server.port");
      if("5071".equals(port)){
            List<Site> data = siteClient.getSiteAll().getData();
            List<Integer> siteIds = data.stream().filter(s->s.getStatus() == 1).map(Site::getId).collect(Collectors.toList());
            List<TChargingPile> tChargingPiles = chargingPileClient.getChargingPileBySiteIds(siteIds).getData();
            List<Integer> collect1 = tChargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList());
            List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(collect1).getData();
            SupStationPowerInfoResult supStationPowerInfoResult = new SupStationPowerInfoResult();
            List<SupStationPowerInfo> stationStatsInfos = new ArrayList<>();
            LocalDateTime now = LocalDateTime.now();
            LocalDateTime startLocalDateTime = now.minusMinutes(15);
            ChargingStatisticeDTO chargingStatisticeDTO = new ChargingStatisticeDTO();
            chargingStatisticeDTO.setStartTime(startLocalDateTime);
            chargingStatisticeDTO.setEndTime(now);
            List<TChargingOrder> data1 = chargingOrderClient.getChargingStatistics(chargingStatisticeDTO).getData();
            for (Site datum : data) {
                List<TChargingOrder> collect = data1.stream().filter(e -> e.getSiteId().equals(datum.getId()) && e.getChargingPower()!=null).collect(Collectors.toList());
                SupStationPowerInfo supStationPowerInfo = new SupStationPowerInfo();
                supStationPowerInfo.setOperatorID("906171535");
                supStationPowerInfo.setEquipmentOwnerID("906171535");
                supStationPowerInfo.setStationID(datum.getId().toString());
                supStationPowerInfo.setStationClassification(1);
                supStationPowerInfo.setDataTime(DateUtils.localDateTimeToString(LocalDateTime.now()));
                BigDecimal divide = collect.stream().map(TChargingOrder::getChargingPower).reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal(collect.size()).setScale(4, BigDecimal.ROUND_DOWN));
                supStationPowerInfo.setStationRealTimePower(divide);
                supStationPowerInfo.setEquipmentPowerInfos(buildEquipmentPowerInfo(datum.getId(), tChargingPiles, chargingGunList));
                stationStatsInfos.add(supStationPowerInfo);
            }
            supStationPowerInfoResult.setSupStationPowerInfos(stationStatsInfos);
            tcecSuperviseUtil.superviseNotificationRealtimePowerInfo(supStationPowerInfoResult);
        }
        supStationPowerInfoResult.setSupStationPowerInfos(stationStatsInfos);
        tcecSuperviseUtil.superviseNotificationRealtimePowerInfo(supStationPowerInfoResult);
    }
    /**
     * 构建桩数据