Commit e0d20c9d authored by lilongyang's avatar lilongyang

1、获取并网容量接口的片区数据获取改为从本地获取

2、获取片区指标完成情况接口的片区数据获取改为从本地获取,并与调用外部接口的数据对比汇总
parent 8a58c918
......@@ -37,7 +37,7 @@ public class EnergyAccessController extends BaseController {
@RequestMapping(value = "/getQuotaCompleteInfo", method = RequestMethod.GET)
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "获取片区指标完成情况", notes = "获取片区指标完成情况")
public ResponseModel<Page<Map<String, Object>>> getQuotaCompleteInfo(String current, String pageSize, String code,String sourceStationId,String tp) {
public ResponseModel<Page<Map<String, Object>>> getQuotaCompleteInfo(String current, String pageSize, String code, String sourceStationId, String tp) {
logger.info("获取片区指标完成情况入参:current ={},pageSize ={},code = {},sourceStationId = {},tp = {}",current,pageSize,code,sourceStationId,tp);
return ResponseHelper.buildResponse(energyAccessServiceImpl.getQuotaCompleteInfo(current, pageSize, code,sourceStationId,tp));
}
......
......@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.Map;
public interface EnergyAccessService {
Page<Map<String, Object>> getInstalledCapacity(String current, String pageSize, String code, String sourceStationId, String tp);
Page<Map<String, Object>> getInstalledCapacity(String current, String pageSize, String code, String sourceStationId, String tp) throws Exception;
Page<Map<String, Object>> getQuotaCompleteInfo(String current, String pageSize, String code, String sourceStationId, String tp);
}
package com.yeejoin.amos.boot.module.jxiop.biz.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.jxiop.api.util.Constants;
import com.yeejoin.amos.boot.module.jxiop.api.util.HttpRequestUtil;
import com.yeejoin.amos.boot.module.jxiop.api.mapper.EnergyAccessMapper;
import com.yeejoin.amos.boot.module.jxiop.biz.service.EnergyAccessService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
......@@ -15,9 +18,8 @@ import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class EnergyAccessServiceImpl implements EnergyAccessService {
......@@ -25,35 +27,53 @@ public class EnergyAccessServiceImpl implements EnergyAccessService {
@Autowired
private HttpRequestUtil httpRequestUtil;
@Autowired
EnergyAccessMapper energyAccessMapper;
private final Logger logger = LoggerFactory.getLogger(EnergyAccessServiceImpl.class);
@Override
public Page<Map<String, Object>> getInstalledCapacity(String current, String pageSize, String code, String sourceStationId, String tp) {
//改为部盾接口
StringBuilder requestUrl = new StringBuilder(Constants.BASE_URL).append("?").append(Constants.get_station_actual_installed_capacity);
if (StringUtils.isNotEmpty(code)) {
requestUrl.append("&code=").append(code);
}
if (StringUtils.isNotEmpty(sourceStationId)) {
requestUrl.append("&source_station_id=").append(sourceStationId);
if (StringUtils.isEmpty(tp)) {
logger.error("参数tp不能为空");
throw new RuntimeException("参数tp不能为空");
}
List<Map<String, Object>> returnList;
if ("1".equals(tp)) {
returnList = energyAccessMapper.getStationInfo(code);
logger.info("获取并网容量接口查询本地返回结果:{}", returnList.toString());
} else {
//改为部盾接口
StringBuilder requestUrl = new StringBuilder(Constants.BASE_URL).append("?").append(Constants.get_station_actual_installed_capacity);
if (StringUtils.isNotEmpty(code)) {
requestUrl.append("&code=").append(code);
}
if (StringUtils.isNotEmpty(tp)) {
requestUrl.append("&tp=").append(tp);
}
JSONObject data = httpRequestUtil.getResPonse(requestUrl.toString(), Constants.REQUEST_GET, "",
Constants.resovleRule_data);
if (StringUtils.isNotEmpty(sourceStationId)) {
requestUrl.append("&source_station_id=").append(sourceStationId);
}
List returnList = data.getJSONArray("data");
logger.info("获取并网容量接口调用对端返回结果:{}",returnList.toString());
if (StringUtils.isNotEmpty(tp)) {
requestUrl.append("&tp=").append(tp);
}
JSONObject data = httpRequestUtil.getResPonse(requestUrl.toString(), Constants.REQUEST_GET, "",
Constants.resovleRule_data);
returnList = JSONArray.parseObject(data.getJSONArray("data").toJSONString(), new TypeReference<List<Map<String, Object>>>() {});
logger.info("获取并网容量接口调用对端返回结果:{}", returnList.toString());
}
Page<Map<String, Object>> pageIPage;
returnList.forEach(result -> {
JSONObject jsonObject = (JSONObject) result;
String actualInstalledCapacity = jsonObject.getString("actual_installed_capacity");
returnList.forEach(jsonObject -> {
String actualInstalledCapacity;
if ("1".equals(tp)) {
actualInstalledCapacity = String.valueOf(jsonObject.get("installed_capacity"));
}else{
actualInstalledCapacity = String.valueOf(jsonObject.get("actual_installed_capacity"));
}
if (StringUtils.isNotEmpty(actualInstalledCapacity)) {
BigDecimal bd = new BigDecimal(actualInstalledCapacity);
jsonObject.put("actual_installed_capacity", bd.setScale(4,BigDecimal.ROUND_HALF_UP));
jsonObject.put("actual_installed_capacity", bd.setScale(4, BigDecimal.ROUND_HALF_UP));
}
});
int newCurrent = Integer.parseInt(current);
......@@ -75,7 +95,7 @@ public class EnergyAccessServiceImpl implements EnergyAccessService {
} else {
pageIPage.setRecords(returnList.subList(((newCurrent - 1) * newPageSize), returnList.size()));
}
logger.info("获取并网容量接口最终返回结果:{}",pageIPage.getRecords());
logger.info("获取并网容量接口最终返回结果:{}", pageIPage.getRecords());
return pageIPage;
}
......@@ -101,8 +121,38 @@ public class EnergyAccessServiceImpl implements EnergyAccessService {
JSONObject data = httpRequestUtil.getResPonse(requestUrl.toString(), Constants.REQUEST_GET, "",
Constants.resovleRule_data);
List returnList = data.getJSONArray("data");
logger.info("获取片区指标完成情况调用对端返回结果:{}",returnList.toString());
List<Map<String, Object>> returnList = JSONArray.parseObject(data.getJSONArray("data").toJSONString(), new TypeReference<List<Map<String, Object>>>() {});
logger.info("获取片区指标完成情况调用对端返回结果:{}", returnList.toString());
List<Map<String, Object>> finalList = new ArrayList<>();
//tp=1,代表是根据片区查询,需要根据本地查询的结果数据取交集
if ("1".equals(tp)) {
List<Map<String, Object>> currentList = energyAccessMapper.getStationInfo(code);
logger.info("获取片区指标完成情况查询本地返回结果:{}", currentList.toString());
if(!CollectionUtils.isEmpty(currentList)){
finalList = currentList.stream().map(e1 ->
returnList.stream()
.filter(e2 -> e1.get("station_name").equals(e2.get("station_name")))
.findFirst()
.map(e2 -> {
e1.put("name", String.valueOf(e2.get("station_name")));
e1.put("quota", String.valueOf(e2.get("quota")));
e1.put("generating_capacity", e2.get("generating_capacity"));
e1.put("rate", String.valueOf(e2.get("rate")));
return e1;
}).orElseGet(() -> {
e1.put("name", e1.get("station_name"));
e1.put("quota", "0");
e1.put("generating_capacity", "0");
e1.put("rate", "0");
return e1;
})
).collect(Collectors.toList());
}
} else {
finalList.addAll(returnList);
}
//rate的值去掉百分号,名称字段名统一用name代替
Page<Map<String, Object>> pageIPage;
int newCurrent = Integer.parseInt(current);
......@@ -112,52 +162,51 @@ public class EnergyAccessServiceImpl implements EnergyAccessService {
} else {
pageIPage = new Page<>(newCurrent, newPageSize);
}
if (CollectionUtils.isEmpty(returnList)) {
if (CollectionUtils.isEmpty(finalList)) {
return pageIPage;
}
returnList.forEach(result -> {
finalList.forEach(result -> {
String oldName = "";
JSONObject jsonObject = (JSONObject) result;
String rate = jsonObject.getString("rate");
String rate = String.valueOf(result.get("rate"));
String newRate = "";
if (StringUtils.isNotEmpty(rate)) {
newRate = rate.replace("%", "");
BigDecimal bd = new BigDecimal(newRate);
jsonObject.put("rate", bd.setScale(4,BigDecimal.ROUND_HALF_UP));
result.put("rate", bd.setScale(4, BigDecimal.ROUND_HALF_UP));
}
String quota = jsonObject.getString("quota");
String quota = String.valueOf(result.get("quota"));
if (StringUtils.isNotEmpty(quota)) {
BigDecimal bd = new BigDecimal(quota);
jsonObject.put("quota", bd.setScale(4,BigDecimal.ROUND_HALF_UP));
result.put("quota", bd.setScale(4, BigDecimal.ROUND_HALF_UP));
}
String generatingCapacity = jsonObject.getString("generating_capacity");
String generatingCapacity = String.valueOf(result.get("generating_capacity"));
if (StringUtils.isNotEmpty(generatingCapacity)) {
BigDecimal bd = new BigDecimal(generatingCapacity);
jsonObject.put("generating_capacity", bd.setScale(4,BigDecimal.ROUND_HALF_UP));
result.put("generating_capacity", bd.setScale(4, BigDecimal.ROUND_HALF_UP));
}
jsonObject.put("seriesData", StringUtils.isNotEmpty(newRate) ? Arrays.asList(new BigDecimal(newRate).setScale(4,BigDecimal.ROUND_HALF_UP)) : 0D);
jsonObject.put("axisData", Arrays.asList("RATE"));
result.put("seriesData", StringUtils.isNotEmpty(newRate) ? Arrays.asList(new BigDecimal(newRate).setScale(4, BigDecimal.ROUND_HALF_UP)) : 0D);
result.put("axisData", Arrays.asList("RATE"));
if ("1".equals(tp)) {
oldName = jsonObject.getString("station_name");
jsonObject.remove("station_name");
oldName = String.valueOf(result.get("station_name"));
result.remove("station_name");
} else {
oldName = jsonObject.getString("area_name");
jsonObject.remove("area_name");
oldName = String.valueOf(result.get("area_name"));
result.remove("area_name");
}
jsonObject.put("name", oldName);
result.put("name", oldName);
});
pageIPage.setTotal(returnList.size());
int endIndex = newCurrent * newPageSize;
if (returnList.size() > endIndex) {
pageIPage.setRecords(returnList.subList(((newCurrent - 1) * newPageSize), endIndex));
pageIPage.setRecords(finalList.subList(((newCurrent - 1) * newPageSize), endIndex));
} else {
pageIPage.setRecords(returnList.subList(((newCurrent - 1) * newPageSize), returnList.size()));
pageIPage.setRecords(finalList.subList(((newCurrent - 1) * newPageSize), returnList.size()));
}
logger.info("获取片区指标完成情况最终返回结果:{}",pageIPage.getRecords());
logger.info("获取片区指标完成情况最终返回结果:{}", pageIPage.getRecords());
return pageIPage;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment