liujie
2026-06-05 ca250d6bd5c2487734459a669a44f06dcdaa95f1
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TScreenContentServiceImpl.java
@@ -1,42 +1,26 @@
package com.ruoyi.other.service.impl;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.BasePojo;
import com.ruoyi.order.api.feignClient.ChargingOrderClient;
import com.ruoyi.order.api.model.TChargingOrder;
import com.ruoyi.other.api.domain.TScreenContent;
import com.ruoyi.other.api.domain.TSystemConfiguration;
import com.ruoyi.other.mapper.TScreenContentMapper;
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;
import com.ruoyi.other.vo.ScreenTopVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.json.Json;
import javax.json.JsonObject;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.concurrent.ThreadLocalRandom;
/**
 * <p>
 *  服务实现类
 * 服务实现类
 * </p>
 *
 * @author huliguo
@@ -47,8 +31,6 @@
    @Resource
    private ChargingOrderClient chargingOrderClient;
    @Resource
    private TSystemConfigurationMapper systemConfigurationMapper;
    @Override
    public EmissionReductionVO emissionReduction(List<Integer> siteIds) {
@@ -56,23 +38,23 @@
        //需调用接口 计算光伏减排
        EmissionReductionVO vo = new EmissionReductionVO();
        //获取总电量 计算累计充电二氧化碳减排量
        BigDecimal charge=top.getCarCharge();
        BigDecimal multiplier = new BigDecimal("0.1404");
        BigDecimal charge = top.getCarCharge();
        BigDecimal multiplier = new BigDecimal("1.564");
        //计算累计充电二氧化碳减排量
        if (charge.compareTo(BigDecimal.ZERO) != 0) {
            // 定义乘数和除数
           // 0.1404
            // 0.1404
            // 计算:charge × 0.1404 ÷ 1000
            charge = charge
                    .multiply(multiplier)      // 乘以 0.1404
                    .divide(new BigDecimal("1000"),2, RoundingMode.HALF_DOWN); // 除以 1000,保留6位小数,四舍五入
                    .divide(new BigDecimal("10000"), 2, RoundingMode.HALF_DOWN); // 除以 1000,保留6位小数,四舍五入
        }
        vo.setCharge(charge);
        //获取累计储能放电量
        String s = KsolarUtils.getElectricity().split("_")[0];
        vo.setEnergyStorage(new BigDecimal(s).multiply(multiplier)      // 乘以 0.1404
                .divide(new BigDecimal("1000"),2, RoundingMode.HALF_DOWN));
                .divide(new BigDecimal("1000"), 2, RoundingMode.HALF_DOWN));
        //获取累计发电
        vo.setPhotovoltaic(KsolarUtils.getYearAllEnergy());
@@ -82,12 +64,10 @@
        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")));
        vo.setChargeRate(calculateRatio(vo.getCharge(),vo.getTotal()).multiply(new BigDecimal("100")));
        vo.setPhotovoltaicRate(calculateRatio(vo.getPhotovoltaic(), vo.getTotal()).multiply(new BigDecimal("100")));
        vo.setEnergyStorageRate(calculateRatio(vo.getEnergyStorage(), vo.getTotal()).multiply(new BigDecimal("100")));
        vo.setChargeRate(calculateRatio(vo.getCharge(), vo.getTotal()).multiply(new BigDecimal("100")));
        return vo;
    }
@@ -113,9 +93,9 @@
            LocalDate day = today.minusDays(i);
            dates.add(day);
            Map<String, Object> stringObjectMap = monthEnergy.stream().filter(e -> e.get("time").toString().contains(day.toString())).findFirst().orElse(null);
            if(stringObjectMap!=null){
            if (stringObjectMap != null) {
                values.add(Double.valueOf(stringObjectMap.get("value").toString()));
            }else {
            } else {
                values.add(0.0);
            }
        }
@@ -128,14 +108,14 @@
    public ScreenTopVO top(List<Integer> siteIds) {
        ScreenTopVO vo = new ScreenTopVO();
        BigDecimal charge=new BigDecimal("0.00");
        BigDecimal carCharge=new BigDecimal("0.00");
        BigDecimal greenElectricity=new BigDecimal("0.00");
        if (siteIds!=null && !siteIds.isEmpty()){
        BigDecimal charge = new BigDecimal("0.00");
        BigDecimal carCharge = new BigDecimal("0.00");
        BigDecimal greenElectricity = new BigDecimal("0.00");
        if (siteIds != null && !siteIds.isEmpty()) {
            //获取充电量
            R<BigDecimal> r = chargingOrderClient.getSumDegreeBySiteIds(Arrays.asList(25,26));
            if (r.getCode()==200){
                charge=r.getData();
            R<BigDecimal> r = chargingOrderClient.getSumDegreeBySiteIds(Arrays.asList(25, 26));
            if (r.getCode() == 200) {
                charge = r.getData();
            }
            //汽车放电量
            carCharge = this.baseMapper.getCarDisCharge(siteIds);
@@ -149,24 +129,24 @@
        //计算储能充电量
        String electricity = KsolarUtils.getElectricity();
        vo.setStorageCharge(new BigDecimal( electricity.split("_")[0]));
        vo.setStorageCharge(new BigDecimal(electricity.split("_")[0]));
        vo.setPhotovoltaic(new BigDecimal(KsolarUtils.getAllEnergy(LocalDate.now().toString())));
        vo.setGreenElectricity(vo.getPhotovoltaic().multiply(new BigDecimal("0.94")).setScale(2,  RoundingMode.HALF_UP));
        vo.setGreenElectricity(vo.getPhotovoltaic().multiply(new BigDecimal("0.94")).setScale(2, RoundingMode.HALF_UP));
        vo.setStorageDisCharge(new BigDecimal(electricity.split("_")[1]));
        return vo;
    }
    @Override
    public void carportData(Integer parkingPlace, Integer remainPlace) {
        this.baseMapper.carportData(parkingPlace,remainPlace);
        this.baseMapper.carportData(parkingPlace, remainPlace);
    }
    @Override
    public HashMap<String, Object> getCarportData() {
        HashMap<String, Object> carportData = this.baseMapper.getCarportData();
        int count = Integer.valueOf(carportData.get("parkingPlace").toString()) - Integer.valueOf(carportData.get("remainPlace").toString());
        carportData.put("useCarport",count);
        carportData.put("useCarport", count);
        return carportData;
    }
}