liujie
1 天以前 6aad35552e8b958ff8480a775343e6de1a66d23b
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;
@@ -96,10 +97,19 @@
            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,60 +118,27 @@
        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();
        // 生成每天数据
        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;
            }
            Double value = KsolarUtils.getTodayEnergy(day.toString()); // 100-250
            values.add(value);
        }
        vo.setDates(dates);
@@ -206,13 +183,10 @@
        BigDecimal totalCharge = dailyRate.multiply(BigDecimal.valueOf(days));
        vo.setStorageCharge(totalCharge);
        TSystemConfiguration sysConfig1 = systemConfigurationMapper.selectOne(new LambdaQueryWrapper<TSystemConfiguration>()
                .eq(TSystemConfiguration::getType,5));
        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));
        //获取储能放电量
        // 判断是否等于今天
        if (configVO.getLastUpdated().equals(today)) {
            vo.setStorageDisCharge(configVO.getStorageDisCharge());