package com.ruoyi.integration.iotda.utils.tools; import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.integration.api.model.AcquisitionBillingModeReply; import lombok.extern.slf4j.Slf4j; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalTime; import java.util.*; import java.util.stream.Collectors; @Slf4j public class StrategyUtil implements Serializable { /** * 获取计费模版的价格 * @return */ public static Map getStrategyPrice(List accountingStrategyDetails) { Map phaseToServiceFee = new HashMap<>(); for (TAccountingStrategyDetail detail : accountingStrategyDetails) { Integer type = detail.getType(); if (!phaseToServiceFee.containsKey(type)) { phaseToServiceFee.put(type, detail); } } return phaseToServiceFee; } /** * 计费模版的价格设置 * @return */ public static void setStrategyPrice(Map accountingStrategyDetails,AcquisitionBillingModeReply acquisitionBillingModeReply) { accountingStrategyDetails.forEach((k,v)->{ BigDecimal electrovalence = v.getElectrovalence(); BigDecimal serviceCharge = v.getServiceCharge(); if(Objects.isNull(electrovalence)){ electrovalence = BigDecimal.ZERO; } if(Objects.isNull(serviceCharge)){ serviceCharge = BigDecimal.ZERO; } switch (k){ case 1: acquisitionBillingModeReply.setSharp_peak_electricity_rate(electrovalence); acquisitionBillingModeReply.setSharp_peak_service_rate(serviceCharge); break; case 2: acquisitionBillingModeReply.setPeak_electricity_rate(electrovalence); acquisitionBillingModeReply.setPeak_service_rate(serviceCharge); break; case 3: acquisitionBillingModeReply.setFlat_peak_electricity_rate(electrovalence); acquisitionBillingModeReply.setFlat_peak_service_rate(serviceCharge); break; default: acquisitionBillingModeReply.setLow_peak_electricity_rate(electrovalence); acquisitionBillingModeReply.setLow_peak_service_rate(serviceCharge); break; } }); } /** * 计费模版的时段设置 * @return */ public static void setTime(List accountingStrategyDetails,AcquisitionBillingModeReply acquisitionBillingModeReply) { LocalTime time = LocalTime.of(0, 15, 0); for (int i = 1; i <= 48; i++) { if(i != 1){ time = time.plusMinutes(30); } accountingStrategyDetails = accountingStrategyDetails.stream().sorted(Comparator.comparing(TAccountingStrategyDetail::getStartTime)).collect(Collectors.toList()); for (TAccountingStrategyDetail accountingStrategyDetail : accountingStrategyDetails) { String startTime = accountingStrategyDetail.getStartTime(); String endTime = accountingStrategyDetail.getEndTime(); if("00:00".equals(endTime)){ endTime = "23:59"; } if(DateUtils.string2LocalTime(startTime + ":00").isBefore(time) && DateUtils.string2LocalTime(endTime + ":00").isAfter(time)){ switch (i){ case 1: acquisitionBillingModeReply.setTime1(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 2: acquisitionBillingModeReply.setTime2(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 3: acquisitionBillingModeReply.setTime3(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 4: acquisitionBillingModeReply.setTime4(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 5: acquisitionBillingModeReply.setTime5(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 6: acquisitionBillingModeReply.setTime6(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 7: acquisitionBillingModeReply.setTime7(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 8: acquisitionBillingModeReply.setTime8(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 9: acquisitionBillingModeReply.setTime9(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 10: acquisitionBillingModeReply.setTime10(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 11: acquisitionBillingModeReply.setTime11(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 12: acquisitionBillingModeReply.setTime12(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 13: acquisitionBillingModeReply.setTime13(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 14: acquisitionBillingModeReply.setTime14(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 15: acquisitionBillingModeReply.setTime15(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 16: acquisitionBillingModeReply.setTime16(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 17: acquisitionBillingModeReply.setTime17(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 18: acquisitionBillingModeReply.setTime18(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 19: acquisitionBillingModeReply.setTime19(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 20: acquisitionBillingModeReply.setTime20(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 21: acquisitionBillingModeReply.setTime21(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 22: acquisitionBillingModeReply.setTime22(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 23: acquisitionBillingModeReply.setTime23(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 24: acquisitionBillingModeReply.setTime24(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 25: acquisitionBillingModeReply.setTime25(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 26: acquisitionBillingModeReply.setTime26(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 27: acquisitionBillingModeReply.setTime27(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 28: acquisitionBillingModeReply.setTime28(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 29: acquisitionBillingModeReply.setTime29(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 30: acquisitionBillingModeReply.setTime30(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 31: acquisitionBillingModeReply.setTime31(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 32: acquisitionBillingModeReply.setTime32(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 33: acquisitionBillingModeReply.setTime33(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 34: acquisitionBillingModeReply.setTime34(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 35: acquisitionBillingModeReply.setTime35(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 36: acquisitionBillingModeReply.setTime36(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 37: acquisitionBillingModeReply.setTime37(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 38: acquisitionBillingModeReply.setTime38(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 39: acquisitionBillingModeReply.setTime39(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 40: acquisitionBillingModeReply.setTime40(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 41: acquisitionBillingModeReply.setTime41(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 42: acquisitionBillingModeReply.setTime42(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 43: acquisitionBillingModeReply.setTime43(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 44: acquisitionBillingModeReply.setTime44(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 45: acquisitionBillingModeReply.setTime45(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 46: acquisitionBillingModeReply.setTime46(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 47: acquisitionBillingModeReply.setTime47(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; case 48: acquisitionBillingModeReply.setTime48(accountingStrategyDetail.getType().equals(1)?0 :accountingStrategyDetail.getType().equals(2)?1:accountingStrategyDetail.getType().equals(3)?2:3); break; } } } } } }