query_equip_business_policy接口开发部分完成

This commit is contained in:
wen 2021-10-26 11:00:57 +08:00
parent 24d978b6f3
commit 8c873b1722

View File

@ -1,19 +1,22 @@
package com.xhpc.evcs.api; package com.xhpc.evcs.api;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.xhpc.common.data.redis.CacheRateModel; import com.xhpc.common.data.redis.CacheRateModel;
import com.xhpc.evcs.dto.CommonResponse;
import com.xhpc.evcs.dto.EquipBizRequest; import com.xhpc.evcs.dto.EquipBizRequest;
import com.xhpc.evcs.dto.EquipBizResponse; import com.xhpc.evcs.dto.EquipBizResponse;
import com.xhpc.evcs.dto.PolicyInfos; import com.xhpc.evcs.dto.PolicyInfos;
import com.xhpc.evcs.jpa.XhpcTerminalRepository; import com.xhpc.evcs.jpa.XhpcTerminalRepository;
import com.xhpc.evcs.utils.JSONUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS; import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS;
@ -26,7 +29,7 @@ public class QueryEquipBusinessPolicyController {
private XhpcTerminalRepository xhpcTerminalRepository; private XhpcTerminalRepository xhpcTerminalRepository;
@PostMapping("/v1/query_equip_business_policy") @PostMapping("/v1/query_equip_business_policy")
public EquipBizResponse queryEquipBusinessPolicy(@RequestBody EquipBizRequest equipBizRequest) { public CommonResponse queryEquipBusinessPolicy(@RequestBody EquipBizRequest equipBizRequest) throws JsonProcessingException {
//获取充电设备接口编码枪编码 //获取充电设备接口编码枪编码
String connectorId = equipBizRequest.getConnectorId(); String connectorId = equipBizRequest.getConnectorId();
//获取枪所对应的桩编码 //获取枪所对应的桩编码
@ -44,6 +47,8 @@ public class QueryEquipBusinessPolicyController {
ArrayList<String> modelTypes = new ArrayList<>(); ArrayList<String> modelTypes = new ArrayList<>();
//存储时段个数 //存储时段个数
ArrayList<Integer> modelCount = new ArrayList<>(); ArrayList<Integer> modelCount = new ArrayList<>();
//建立对应时段的映射Map集合存放其对应的价格和服务费
Map<String, Object> timeMap = new HashMap<>();
//个数计数器 //个数计数器
int count = 0; int count = 0;
//最后一个时段的前一个时段的下标索引 //最后一个时段的前一个时段的下标索引
@ -99,83 +104,52 @@ public class QueryEquipBusinessPolicyController {
} }
PolicyInfos[] policyInfosArr = new PolicyInfos[timeList.size()]; PolicyInfos[] policyInfosArr = new PolicyInfos[timeList.size()];
for (int i = 0; i < timeList.size() - 1; i++) { for (int i = 0; i <= timeList.size() - 1; i++) {
PolicyInfos policyInfos = new PolicyInfos(); PolicyInfos policyInfos = new PolicyInfos();
policyInfos.setStartTime(timeList.get(i)); policyInfos.setStartTime(timeList.get(i));
//todo 明天继续 String modelType = modelTypes.get(i);
policyInfos.setServicePrice(0); switch (modelType) {
policyInfos.setElecPrice(0); case "00":
} policyInfos.setServicePrice(BigDecimal.valueOf((long) rateModel.getT1SvcPrice()).divide(BigDecimal.valueOf(100000L)).setScale(4).doubleValue());
policyInfos.setElecPrice(BigDecimal.valueOf((long) rateModel.getT1Price()).divide(BigDecimal.valueOf(100000L)).setScale(4).doubleValue());
break;
EquipBizResponse equipBizResponse = new EquipBizResponse(); case "01":
//总时段数 policyInfos.setServicePrice(BigDecimal.valueOf((long) rateModel.getT2SvcPrice()).divide(BigDecimal.valueOf(100000L)).setScale(4).doubleValue());
equipBizResponse.setSumPeriod(modelTypes.size()); policyInfos.setElecPrice(BigDecimal.valueOf((long) rateModel.getT2Price()).divide(BigDecimal.valueOf(100000L)).setScale(4).doubleValue());
break;
case "02":
return equipBizResponse; policyInfos.setServicePrice(BigDecimal.valueOf((long) rateModel.getT3SvcPrice()).divide(BigDecimal.valueOf(100000L)).setScale(4).doubleValue());
} policyInfos.setElecPrice(BigDecimal.valueOf((long) rateModel.getT3Price()).divide(BigDecimal.valueOf(100000L)).setScale(4).doubleValue());
break;
public EquipBizResponse load(String[] arr,EquipBizRequest equipBizRequest) { case "03":
Map<String, String> priceMap = new HashMap<>(); policyInfos.setServicePrice(BigDecimal.valueOf((long) rateModel.getT4SvcPrice()).divide(BigDecimal.valueOf(100000L)).setScale(4).doubleValue());
Map<String, String> svcPriceMap = new HashMap<>(); policyInfos.setElecPrice(BigDecimal.valueOf((long) rateModel.getT4Price()).divide(BigDecimal.valueOf(100000L)).setScale(4).doubleValue());
String[] keys = {"01","02","03","04"}; break;
String[] values1 = {"t1Price","t2Price","t3Price","t4Price"};
String[] values2 = {"t1SvcPrice","t2SvcPrice","t3SvcPrice","t4SvcPrice"};
for(int i = 0; i < keys.length; i ++){
priceMap.put(keys[i],values1[i]);
svcPriceMap.put(keys[i],values2[i]);
}
List<String> timeSigns = new ArrayList<>();
List<Integer> locations = new ArrayList<>();
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i].equals(arr[i + 1])) {
timeSigns.add(arr[i]);
locations.add(i);
} }
policyInfosArr[i] = policyInfos;
} }
timeSigns.add(arr[arr.length - 1]);
locations.add(arr.length - 1);
List<Integer> time = new ArrayList<>();
time.add(0);
time.add(locations.get(0));
for (int i = 1; i < locations.size(); i++) {
time.add(locations.get(i - 1));
time.add(locations.get(i));
}
List<Integer> startTimes = new ArrayList<>();
List<Double> priceResult = new ArrayList<>();
List<Double> svcPriceResult = new ArrayList<>();
for(int i = 0, j = 0; i < locations.size(); i += 2, j ++){
priceResult.add(REDIS.getCacheObject(priceMap.get(timeSigns.get(j))));
svcPriceResult.add(REDIS.getCacheObject(svcPriceMap.get(timeSigns.get(j))));
startTimes.add((int) (i * 10000 * 0.5));
}
PolicyInfos[] repsData = new PolicyInfos[startTimes.size()];
for(int i = 0; i < startTimes.size(); i ++){
PolicyInfos policyInfos = new PolicyInfos();
policyInfos.setStartTime(String.valueOf(startTimes.get(i)));
policyInfos.setElecPrice(priceResult.get(i));
policyInfos.setServicePrice(svcPriceResult.get(i));
repsData[i] = policyInfos;
}
//封装数据 //封装数据
EquipBizResponse equipBizResponse = new EquipBizResponse(); EquipBizResponse equipBizResponse = new EquipBizResponse();
//业务查询流水号
equipBizResponse.setEquipBizSeq(equipBizRequest.getEquipBizSeq()); equipBizResponse.setEquipBizSeq(equipBizRequest.getEquipBizSeq());
equipBizResponse.setConnectorId(equipBizRequest.getConnectorId()); //充电设备接口编码
equipBizResponse.setConnectorId(connectorId);
//操作结果
equipBizResponse.setSuccStat(0); equipBizResponse.setSuccStat(0);
//失败原因
equipBizResponse.setFailReason(0); equipBizResponse.setFailReason(0);
equipBizResponse.setSumPeriod(3); //总时段数
equipBizResponse.setPolicyInfos(repsData); equipBizResponse.setSumPeriod(modelTypes.size());
//计费信息
return equipBizResponse; equipBizResponse.setPolicyInfos(policyInfosArr);
//塞入包装类
CommonResponse commonResponse = new CommonResponse();
commonResponse.setMsg("请求查询业务策略成功");
commonResponse.setRet("0");
commonResponse.setData(JSONUtil.toJSONString(equipBizResponse));
return commonResponse;
} }
} }