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.time.LocalTime;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
@Slf4j
|
public class StrategyUtil implements Serializable {
|
|
|
/**
|
* 获取计费模版的价格
|
* @return
|
*/
|
public static Map<Integer, TAccountingStrategyDetail> getStrategyPrice(List<TAccountingStrategyDetail> accountingStrategyDetails) {
|
Map<Integer, TAccountingStrategyDetail> 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<Integer, TAccountingStrategyDetail> accountingStrategyDetails,AcquisitionBillingModeReply acquisitionBillingModeReply) {
|
accountingStrategyDetails.forEach((k,v)->{
|
switch (k){
|
case 1:
|
acquisitionBillingModeReply.setSharp_peak_electricity_rate(v.getElectrovalence());
|
// acquisitionBillingModeReply.setSharp_peak_service_rate(v.getServiceCharge());
|
break;
|
case 2:
|
acquisitionBillingModeReply.setPeak_electricity_rate(v.getElectrovalence());
|
// acquisitionBillingModeReply.setPeak_service_rate(v.getServiceCharge());
|
break;
|
case 3:
|
acquisitionBillingModeReply.setFlat_peak_electricity_rate(v.getElectrovalence());
|
// acquisitionBillingModeReply.setFlat_peak_service_rate(v.getServiceCharge());
|
break;
|
default:
|
acquisitionBillingModeReply.setLow_peak_electricity_rate(v.getElectrovalence());
|
// acquisitionBillingModeReply.setLow_peak_service_rate(v.getServiceCharge());
|
break;
|
}
|
});
|
}
|
|
/**
|
* 计费模版的时段设置
|
* @return
|
*/
|
public static void setTime(List<TAccountingStrategyDetail> 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;
|
}
|
}
|
}
|
}
|
}
|
|
}
|