无关风月
2024-08-27 e86ed626de30e3e60ba5e1294b0d134546ac5b4d
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -21,6 +21,8 @@
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
import com.ruoyi.order.api.model.TChargingOrder;
import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
import com.ruoyi.order.api.query.ChargingOrderQuery;
@@ -47,6 +49,7 @@
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.stream.Collectors;
/**
 * <p>
@@ -91,6 +94,13 @@
   
   @Resource
   private RedisService redisService;
   @Resource
   private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient;
   /**
    * 获取小程序充电记录列表数据
@@ -164,11 +174,39 @@
                  .orderByAsc(TChargingOrderAccountingStrategy::getStartTime)
      );
      myChargingOrderInfo.setStageCost(stageCost);
      // todo 待完善
      //再MongoDB中获取数据
      myChargingOrderInfo.setCurrentAndVoltage(null);
      //再MongoDB中获取数据
      myChargingOrderInfo.setPower(null);
      List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData();
      if(null != dataList){
         //在MongoDB中获取数据
         SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
         List<String> time = dataList.stream().map(s -> sdf.format(s.getCreate_time())).collect(Collectors.toList());
         List<BigDecimal> outputVoltage = dataList.stream().map(UploadRealTimeMonitoringData::getOutput_voltage).collect(Collectors.toList());
         List<BigDecimal> outputCurrent = dataList.stream().map(UploadRealTimeMonitoringData::getOutput_current).collect(Collectors.toList());
         List<Map<String, Object>> currentAndVoltage = new ArrayList<>();
         for (int i = 0; i < time.size(); i++) {
            Map<String, Object> map = new HashMap<>();
            map.put("time", time.get(i));
            //电流
            map.put("electricity", outputCurrent.get(i));
            //电压
            map.put("voltage", outputVoltage.get(i));
            currentAndVoltage.add(map);
         }
         myChargingOrderInfo.setCurrentAndVoltage(currentAndVoltage);
         //在MongoDB中获取数据
         List<Integer> soc = dataList.stream().map(UploadRealTimeMonitoringData::getSoc).collect(Collectors.toList());
         List<BigDecimal> po = dataList.stream().map(s -> s.getOutput_current().multiply(s.getOutput_voltage()).divide(new BigDecimal(1000))).collect(Collectors.toList());
         List<Map<String, Object>> power = new ArrayList<>();
         for (int i = 0; i < time.size(); i++) {
            Map<String, Object> map = new HashMap<>();
            map.put("time", time.get(i));
            //soc
            map.put("soc", soc.get(i));
            //电压
            map.put("power", po.get(i));
            power.add(map);
         }
         myChargingOrderInfo.setPower(power);
      }
      myChargingOrderInfo.setActionable(myChargingOrderInfo.getEndTime() + 604800000L > System.currentTimeMillis() ? 0 : 1);
      return myChargingOrderInfo;
   }