From 8b0cf2731d2b61999fdd1aeee91567dc47d67e14 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 11 七月 2025 14:26:08 +0800
Subject: [PATCH] Merge branch 'dev' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile

---
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TScreenContentServiceImpl.java |  127 +++++++----------------------------------
 1 files changed, 23 insertions(+), 104 deletions(-)

diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TScreenContentServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TScreenContentServiceImpl.java
index a3065d8..bee6136 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TScreenContentServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TScreenContentServiceImpl.java
@@ -15,6 +15,7 @@
 import com.ruoyi.other.mapper.TSystemConfigurationMapper;
 import com.ruoyi.other.service.TScreenContentService;
 import com.ruoyi.other.service.TSystemConfigurationService;
+import com.ruoyi.other.util.KsolarUtils;
 import com.ruoyi.other.vo.EmissionReductionVO;
 import com.ruoyi.other.vo.PhotovoltaicPowerGenerationVO;
 import com.ruoyi.other.vo.ScreenStorageConfigVO;
@@ -56,11 +57,11 @@
         EmissionReductionVO vo = new EmissionReductionVO();
         //获取总电量 计算累计充电二氧化碳减排量
         BigDecimal charge=top.getCarCharge();
+        BigDecimal multiplier = new BigDecimal("0.1404");
         //计算累计充电二氧化碳减排量
         if (charge.compareTo(BigDecimal.ZERO) != 0) {
             // 定义乘数和除数
-            BigDecimal multiplier = new BigDecimal("0.1404"); // 0.1404
-            BigDecimal divisor = new BigDecimal("1000");    // 1000
+           // 0.1404
             // 计算:charge × 0.1404 ÷ 1000
             charge = charge
                     .multiply(multiplier)      // 乘以 0.1404
@@ -69,37 +70,20 @@
         vo.setCharge(charge);
 
         //获取累计储能放电量
-        TSystemConfiguration sysConfig = systemConfigurationMapper.selectOne(new LambdaQueryWrapper<TSystemConfiguration>()
-                .eq(TSystemConfiguration::getType,3));
-        //解析
-        ScreenStorageConfigVO configVO = JSON.parseObject(sysConfig.getContent(), ScreenStorageConfigVO.class);
-        LocalDate today = LocalDate.now();
-        // 判断是否等于今天
-        if (configVO.getLastUpdated().equals(today)) {
-            vo.setEnergyStorage(configVO.getStorageDisCharge().multiply(new BigDecimal("0.1404")).divide(new BigDecimal("1000"),2,RoundingMode.DOWN));
-        }else {
-            //判断离今天还有几天
-            int count = (int) ChronoUnit.DAYS.between(configVO.getLastUpdated(), today) +1;//包括今天
-            BigDecimal storageDisCharge = configVO.getStorageDisCharge();
-            // 每天生成一个随机值(不超过100)并累加
-            for (int i = 0; i < count; i++) {
-                int dailyCharge = ThreadLocalRandom.current().nextInt(0, 101); // 0-100的随机数
-                storageDisCharge = storageDisCharge.add(new BigDecimal(dailyCharge));
-            }
+        String s = KsolarUtils.getElectricity().split("_")[0];
+        vo.setEnergyStorage(new BigDecimal(s).multiply(multiplier)      // 乘以 0.1404
+                .divide(new BigDecimal("1000"),2, RoundingMode.HALF_DOWN));
 
-            // 更新回对象
-            configVO.setStorageDisCharge(storageDisCharge);
-            configVO.setLastUpdated(today);
-            String json = JSON.toJSONString(configVO);
-            sysConfig.setContent(json);
-
-            systemConfigurationMapper.updateById(sysConfig);
-            vo.setEnergyStorage(storageDisCharge.multiply(new BigDecimal("0.1404")).divide(new BigDecimal("1000"),2,RoundingMode.DOWN));
-        }
+        //获取累计发电
+        vo.setPhotovoltaic(KsolarUtils.getYearAllEnergy());
 
         //总数:
         BigDecimal total = vo.getPhotovoltaic().add(vo.getEnergyStorage()).add(vo.getCharge());
         vo.setTotal(total);
+
+
+
+
         //计算比率
         vo.setPhotovoltaicRate(calculateRatio(vo.getPhotovoltaic(),vo.getTotal()).multiply(new BigDecimal("100")));
         vo.setEnergyStorageRate(calculateRatio(vo.getEnergyStorage(),vo.getTotal()).multiply(new BigDecimal("100")));
@@ -108,61 +92,32 @@
         return vo;
     }
 
-    public static void main(String[] args) {
-        BigDecimal divide = new BigDecimal("607").multiply(new BigDecimal("0.1404")).divide(new BigDecimal("1000"),2,RoundingMode.DOWN);
-        System.out.println(divide);
-    }
 
     //百分比计算
     public static BigDecimal calculateRatio(BigDecimal part, BigDecimal total) {
         if (total.compareTo(BigDecimal.ZERO) == 0) {
             throw new ArithmeticException("分母不能为零");
         }
-
         return part.divide(total, 4, RoundingMode.HALF_UP);
     }
 
     @Override
     public PhotovoltaicPowerGenerationVO photovoltaicPowerGeneration(List<Integer> siteIds) {
-        //需调用接口
-
-        //假数据
         PhotovoltaicPowerGenerationVO vo = new PhotovoltaicPowerGenerationVO();
         List<LocalDate> dates = new ArrayList<>();
-        List<Integer> values = new ArrayList<>();
+        List<Double> values = new ArrayList<>();
         LocalDate today = LocalDate.now();
+        ArrayList<Map<String, Object>> monthEnergy = KsolarUtils.getMonthEnergy(today.minusDays(7).toString().substring(0, 7), today.minusDays(1).toString().substring(0, 7));
         // 生成每天数据
         for (int i = 7; i >= 1; i--) {//升序
             LocalDate day = today.minusDays(i);
-            //统计
             dates.add(day);
-            int value = new Random().nextInt(151) + 100; // 100-250
-
-            switch (i){
-                case 1:
-                    value = 1780; // 50-100
-                    break;
-                case 2:
-                    value = 1810; // 50-100
-                    break;
-                case 3:
-                    value = 1765; // 50-100
-                    break;
-                    case 4:
-                    value = 1793; // 50-100
-                    break;
-                    case 5:
-                    value = 1833; // 50-100
-                    break;
-                    case 6:
-                    value = 1815; // 50-100
-                    break;
-                    case 7:
-                    value =1794; // 50-100
-                    break;
-
+            Map<String, Object> stringObjectMap = monthEnergy.stream().filter(e -> e.get("time").toString().contains(day.toString())).findFirst().orElse(null);
+            if(stringObjectMap!=null){
+                values.add(Double.valueOf(stringObjectMap.get("value").toString()));
+            }else {
+                values.add(0.0);
             }
-            values.add(value);
         }
         vo.setDates(dates);
         vo.setValues(values);
@@ -192,49 +147,13 @@
         vo.setCarDisCharge(carCharge);
         vo.setGreenElectricity(greenElectricity);
 
-        //获取系统建设日期和累计储能放电量
-        TSystemConfiguration sysConfig = systemConfigurationMapper.selectOne(new LambdaQueryWrapper<TSystemConfiguration>()
-                .eq(TSystemConfiguration::getType,3));
-        //解析
-        ScreenStorageConfigVO configVO = JSON.parseObject(sysConfig.getContent(), ScreenStorageConfigVO.class);
         //计算储能充电量
-        LocalDate systemCreateTime = configVO.getSystemCreateTime();
-        LocalDate today = LocalDate.now();
-        int days = (int) ChronoUnit.DAYS.between(systemCreateTime, today) +1;//包括今天
+        String electricity = KsolarUtils.getElectricity();
+        vo.setStorageCharge(new BigDecimal( electricity.split("_")[0]));
 
-        BigDecimal dailyRate = new BigDecimal("100");
-        BigDecimal totalCharge = dailyRate.multiply(BigDecimal.valueOf(days));
-        vo.setStorageCharge(totalCharge);
-        //获取储能放电量
-
-        // 判断是否等于今天
-        if (configVO.getLastUpdated().equals(today)) {
-            vo.setStorageDisCharge(configVO.getStorageDisCharge());
-            return vo;
-        }
-        //判断离今天还有几天
-        int count = (int) ChronoUnit.DAYS.between(configVO.getLastUpdated(), today) +1;//包括今天
-        BigDecimal storageDisCharge = configVO.getStorageDisCharge();
-        // 每天生成一个随机值(不超过100)并累加
-        for (int i = 0; i < count; i++) {
-            int dailyCharge = ThreadLocalRandom.current().nextInt(0, 101); // 0-100的随机数
-            storageDisCharge = storageDisCharge.add(new BigDecimal(dailyCharge));
-        }
-
-        // 更新回对象
-        configVO.setStorageDisCharge(storageDisCharge);
-        configVO.setLastUpdated(today);
-        String json = JSON.toJSONString(configVO);
-        sysConfig.setContent(json);
-
-        systemConfigurationMapper.updateById(sysConfig);
-        vo.setStorageDisCharge(storageDisCharge);
-
-
-        TSystemConfiguration sysConfig1 = systemConfigurationMapper.selectOne(new LambdaQueryWrapper<TSystemConfiguration>()
-                .eq(TSystemConfiguration::getType,4));
-        vo.setPhotovoltaic(new BigDecimal(sysConfig1.getContent()));
+        vo.setPhotovoltaic(new BigDecimal(KsolarUtils.getAllEnergy(LocalDate.now().toString())));
         vo.setGreenElectricity(vo.getPhotovoltaic().multiply(new BigDecimal("0.94")).setScale(2,  RoundingMode.HALF_UP));
+        vo.setStorageDisCharge(new BigDecimal(electricity.split("_")[1]));
         return vo;
     }
 

--
Gitblit v1.7.1