海南版本提交
This commit is contained in:
@@ -46,7 +46,7 @@ public class CarryCapacityResultPOServiceImpl extends ServiceImpl<CarryCapacityR
|
||||
|
||||
QueryWrapper<CarryCapacityResultPO> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(StringUtils.isNotBlank(queryParam.getEvaluateType()) ,CarryCapacityResultPO::getEvaluateType,queryParam.getEvaluateType())
|
||||
.between(StringUtils.isNotBlank(queryParam.getStartTime()) && StringUtils.isNotBlank(queryParam.getEndTime()) ,CarryCapacityResultPO::getEvaluateDate,queryParam.getStartTime(),queryParam.getEndTime())
|
||||
.between(StringUtils.isNotBlank(queryParam.getStartTime()) && StringUtils.isNotBlank(queryParam.getEndTime()) ,CarryCapacityResultPO::getEvaluateDate,queryParam.getStartTime()+" 00:00:00",queryParam.getEndTime()+" 23:59:59")
|
||||
.eq(CarryCapacityResultPO::getStatus,1)
|
||||
.orderByDesc(CarryCapacityResultPO::getEvaluateDate);
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ public class CarryCapacityUserPOServiceImpl extends ServiceImpl<CarryCapacityUse
|
||||
.eq(StringUtils.isNotBlank(pageParm.getVoltage()) ,CarryCapacityUserPO::getVoltage,pageParm.getVoltage())
|
||||
.eq(StringUtils.isNotBlank(pageParm.getUserType()) ,CarryCapacityUserPO::getUserType,pageParm.getUserType())
|
||||
.in(CollectionUtil.isNotEmpty(pageParm.getUserTypeList()) ,CarryCapacityUserPO::getUserType,pageParm.getUserTypeList())
|
||||
.between(StringUtils.isNotBlank(pageParm.getStartTime()) && StringUtils.isNotBlank(pageParm.getEndTime()) ,CarryCapacityUserPO::getCreateTime,pageParm.getStartTime(),pageParm.getEndTime()).
|
||||
.between(StringUtils.isNotBlank(pageParm.getStartTime()) && StringUtils.isNotBlank(pageParm.getEndTime()) ,CarryCapacityUserPO::getCreateTime,pageParm.getStartTime()+" 00:00:00",pageParm.getEndTime()+" 23:59:59").
|
||||
orderByDesc(CarryCapacityUserPO::getCreateTime);
|
||||
|
||||
IPage<CarryCapacityUserPO> page = this.page (returnpage, queryWrapper);
|
||||
|
||||
@@ -123,10 +123,10 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
|
||||
String endTime = LocalDateTimeUtil.format(queryParam.getEndTime(), formatter) + " 23:59:00";
|
||||
|
||||
//先重redis读取数据,无数据,查看是否存在文件,不存在文件查数据库,数据校验补通过上传文件
|
||||
// dataHarmPowerPList = (List<CarryCapcityData>) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate, formatter) + "#" + LocalDateTimeUtil.format(endDate, formatter) + "#" + "P");
|
||||
// dataHarmPowerP2List = (List<CarryCapcityData>) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate2, formatter) + "#" + LocalDateTimeUtil.format(endDate2, formatter) + "#" + "P");
|
||||
// dataHarmPowerQ2List = (List<CarryCapcityData>) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate2, formatter) + "#" + LocalDateTimeUtil.format(endDate2, formatter) + "#" + "Q");
|
||||
// dataHarmPowerU2List = (List<CarryCapcityData>) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate2, formatter) + "#" + LocalDateTimeUtil.format(endDate2, formatter) + "#" + "U");
|
||||
dataHarmPowerPList = (List<CarryCapcityData>) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate, formatter) + "#" + LocalDateTimeUtil.format(endDate, formatter) + "#" + "P");
|
||||
dataHarmPowerP2List = (List<CarryCapcityData>) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate2, formatter) + "#" + LocalDateTimeUtil.format(endDate2, formatter) + "#" + "P");
|
||||
dataHarmPowerQ2List = (List<CarryCapcityData>) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate2, formatter) + "#" + LocalDateTimeUtil.format(endDate2, formatter) + "#" + "Q");
|
||||
dataHarmPowerU2List = (List<CarryCapcityData>) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate2, formatter) + "#" + LocalDateTimeUtil.format(endDate2, formatter) + "#" + "U");
|
||||
|
||||
if(CollectionUtil.isEmpty(dataHarmPowerPList)){
|
||||
CarryCapacityDataPO one = carryCapacityDataPOService.lambdaQuery().eq(CarryCapacityDataPO::getLineId, lineId)
|
||||
@@ -134,6 +134,15 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
|
||||
.eq(CarryCapacityDataPO::getEndTime, endTime).one();
|
||||
if(Objects.nonNull(one)){
|
||||
//todo 调用查询文件
|
||||
InputStream fileStream = fileStorageUtil.getFileStream(one.getDateList());
|
||||
ExcelDataDTO excelDataDTO = ParsingFile(one.getStartTime(), one.getEndTime(), fileStream);
|
||||
dataHarmPowerPList = excelDataDTO.getDataHarmPowerPList();
|
||||
dataHarmPowerQList = excelDataDTO.getDataHarmPowerQList();
|
||||
dataIList = excelDataDTO.getDataIList();
|
||||
dataHarmPowerP2List = excelDataDTO.getDataHarmPowerP2List();
|
||||
dataHarmPowerQ2List = excelDataDTO.getDataHarmPowerQ2List();
|
||||
dataHarmPowerU2List = excelDataDTO.getDataHarmPowerU2List();
|
||||
|
||||
|
||||
}else {
|
||||
/* 近一周的数据包括电流,电压,有功功率,无功功率,数据完整性校验就取有功功率一组数据校验,因为,要有都有要没有都没有,数据查询按时间间隔和tag分组,
|
||||
@@ -243,14 +252,15 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
|
||||
}
|
||||
//数据缺失填补
|
||||
linearInterpolation(dataHarmPowerU2List);
|
||||
// redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"P",
|
||||
// dataHarmPowerP2List);
|
||||
// redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"Q",
|
||||
// dataHarmPowerQ2List);
|
||||
// redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"U",
|
||||
// dataHarmPowerU2List);
|
||||
// redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate, formatter)+"#"+LocalDateTimeUtil.format(endDate, formatter)+"#"+"I",
|
||||
// dataIList);
|
||||
redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate, formatter)+"#"+LocalDateTimeUtil.format(endDate, formatter)+"#"+"P",
|
||||
dataHarmPowerPList);
|
||||
redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"P",
|
||||
dataHarmPowerP2List);
|
||||
redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"Q",
|
||||
dataHarmPowerQ2List);
|
||||
redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"U",
|
||||
dataHarmPowerU2List);
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -307,24 +317,29 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
|
||||
|
||||
String startTime = LocalDateTimeUtil.format(queryParam.getStartTime(), formatter) + " 00:00:00";
|
||||
String endTime = LocalDateTimeUtil.format(queryParam.getEndTime(), formatter) + " 23:59:00";
|
||||
|
||||
|
||||
//无功功率
|
||||
String SqlQ1 = "select mean(q)*1000 as value from data_harmpower_q where value_type='CP95' and phasic_type!='T' and line_id='"+lineId+
|
||||
"' and time >= '" + startTime + "'and time <= '" +endTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE;
|
||||
List<CarryCapcityData> dataHarmPowerList = dataHarmPowerQMapper.getSqlResult(SqlQ1);
|
||||
if(CollectionUtil.isEmpty(dataHarmPowerList)){
|
||||
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
|
||||
}else {
|
||||
|
||||
if (!checkData(dataHarmPowerList,startDate,endDate,timeInterval)){
|
||||
|
||||
List<CarryCapcityData> dataHarmPowerQList = new ArrayList<>();
|
||||
dataHarmPowerQList = (List<CarryCapcityData>) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate, formatter) + "#" + LocalDateTimeUtil.format(endDate, formatter) + "#" + "Q");
|
||||
if(CollectionUtil.isEmpty(dataHarmPowerQList)){
|
||||
//无功功率
|
||||
String SqlQ1 = "select mean(q)*1000 as value from data_harmpower_q where value_type='CP95' and phasic_type!='T' and line_id='"+lineId+
|
||||
"' and time >= '" + startTime + "'and time <= '" +endTime + "'"+"group by time("+timeInterval+"m) ,* fill(3.1415926)"+InfluxDBPublicParam.TIME_ZONE;
|
||||
dataHarmPowerQList = dataHarmPowerQMapper.getSqlResult(SqlQ1);
|
||||
if(CollectionUtil.isEmpty(dataHarmPowerQList)){
|
||||
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
|
||||
}else {
|
||||
|
||||
if (!checkData(dataHarmPowerQList,startDate,endDate,timeInterval)){
|
||||
|
||||
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
|
||||
}
|
||||
}
|
||||
//数据缺失填补
|
||||
linearInterpolation(dataHarmPowerQList);
|
||||
redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate, formatter)+"#"+LocalDateTimeUtil.format(endDate, formatter)+"#"+"Q",
|
||||
dataHarmPowerQList);
|
||||
}
|
||||
//数据缺失填补
|
||||
linearInterpolation(dataHarmPowerList);
|
||||
carryCapacityDataQVO.setData(dataHarmPowerList);
|
||||
carryCapacityDataQVO.setData(dataHarmPowerQList);
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -333,8 +348,9 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
|
||||
|
||||
Map<String,Double> results = new HashMap<>(4);
|
||||
//计算最小Cp95值用于评估
|
||||
List<CarryCapcityData> finalDataHarmPowerQList = dataHarmPowerQList;
|
||||
phaseType.stream().forEach(phase -> {
|
||||
List<Double> listQ = dataHarmPowerList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
|
||||
List<Double> listQ = finalDataHarmPowerQList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
|
||||
.filter(temp -> temp.getValue()!=DEFAULTVALUE&&Objects.nonNull(temp.getValue()))
|
||||
.filter(temp -> Objects.equals(temp.getPhaseType(),phase))
|
||||
.map(CarryCapcityData::getValue)
|
||||
@@ -364,35 +380,44 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
|
||||
String startTime = LocalDateTimeUtil.format(startDate, formatter) + " 00:00:00";
|
||||
String endTime = LocalDateTimeUtil.format(endDate, formatter) + " 23:59:00";
|
||||
|
||||
//电流
|
||||
StringBuilder stringBuilder1 = new StringBuilder();
|
||||
StringBuilder stringBuilder2 = new StringBuilder();
|
||||
for (int i = 2; i <=25 ; i++) {
|
||||
if (i==25){
|
||||
stringBuilder1.append("mean(i_").append(i).append(") AS i_").append(i);
|
||||
} else {
|
||||
stringBuilder1.append("mean(i_").append(i).append(") AS i_").append(i).append(",");
|
||||
}
|
||||
}
|
||||
stringBuilder2.append ("line_id='").append (lineId).append ("' and ").append(InfluxDBPublicParam.TIME + " >= '").append(startTime).append("' and ").append(InfluxDBPublicParam.TIME).append(" <= '").append(endTime).append("' group by time(").append(timeInterval).append("m),* fill(3.1415926) ").append(InfluxDBPublicParam.TIME_ZONE);
|
||||
String sqlI1 = "select "+stringBuilder1+" from "+ InfluxDBPublicParam.DATA_I+" where value_type='CP95' and phasic_type!='T' and "+stringBuilder2;
|
||||
List<DataI> dataI = dataIMapper.getSqlResult(sqlI1);
|
||||
if(CollectionUtil.isEmpty(dataI)){
|
||||
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
|
||||
}else {
|
||||
List<CarryCapcityData> i_list = dataI.stream().map(temp -> {
|
||||
CarryCapcityData carryCapcityData = new CarryCapcityData();
|
||||
BeanUtils.copyProperties(temp, carryCapcityData);
|
||||
carryCapcityData.setValue(temp.getI2());
|
||||
return carryCapcityData;
|
||||
}).collect(Collectors.toList());
|
||||
if (!checkData(i_list,startDate,endDate,timeInterval)){
|
||||
List<DataI> dataI = new ArrayList<>();
|
||||
dataI = (List<DataI>) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate, formatter) + "#" + LocalDateTimeUtil.format(endDate, formatter) + "#" + "I");
|
||||
|
||||
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
|
||||
if(CollectionUtil.isEmpty(dataI)){
|
||||
//电流
|
||||
StringBuilder stringBuilder1 = new StringBuilder();
|
||||
StringBuilder stringBuilder2 = new StringBuilder();
|
||||
for (int i = 2; i <=25 ; i++) {
|
||||
if (i==25){
|
||||
stringBuilder1.append("mean(i_").append(i).append(") AS i_").append(i);
|
||||
} else {
|
||||
stringBuilder1.append("mean(i_").append(i).append(") AS i_").append(i).append(",");
|
||||
}
|
||||
}
|
||||
stringBuilder2.append ("line_id='").append (lineId).append ("' and ").append(InfluxDBPublicParam.TIME + " >= '").append(startTime).append("' and ").append(InfluxDBPublicParam.TIME).append(" <= '").append(endTime).append("' group by time(").append(timeInterval).append("m),* fill(3.1415926) ").append(InfluxDBPublicParam.TIME_ZONE);
|
||||
String sqlI1 = "select "+stringBuilder1+" from "+ InfluxDBPublicParam.DATA_I+" where value_type='CP95' and phasic_type!='T' and "+stringBuilder2;
|
||||
dataI = dataIMapper.getSqlResult(sqlI1);
|
||||
if(CollectionUtil.isEmpty(dataI)){
|
||||
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
|
||||
}else {
|
||||
List<CarryCapcityData> i_list = dataI.stream().map(temp -> {
|
||||
CarryCapcityData carryCapcityData = new CarryCapcityData();
|
||||
BeanUtils.copyProperties(temp, carryCapcityData);
|
||||
carryCapcityData.setValue(temp.getI2());
|
||||
return carryCapcityData;
|
||||
}).collect(Collectors.toList());
|
||||
if (!checkData(i_list,startDate,endDate,timeInterval)){
|
||||
|
||||
throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND);
|
||||
}
|
||||
}
|
||||
//数据缺失填补
|
||||
linearInterpolationI(dataI);
|
||||
redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate, formatter)+"#"+LocalDateTimeUtil.format(endDate, formatter)+"#"+"I",
|
||||
dataI);
|
||||
|
||||
}
|
||||
//数据缺失填补
|
||||
linearInterpolationI(dataI);
|
||||
|
||||
List<CarryCapcityData> i_list = dataI.stream().map(temp -> {
|
||||
CarryCapcityData carryCapcityData = new CarryCapcityData();
|
||||
BeanUtils.copyProperties(temp, carryCapcityData);
|
||||
@@ -404,11 +429,12 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
|
||||
List<Double> I_βmax =new ArrayList<>();
|
||||
List<Integer> integerList = Stream.of(2, 3, 4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25).collect(Collectors.toList());
|
||||
List<String> phaseType = Stream.of("A", "B", "C").collect(Collectors.toList());
|
||||
List<DataI> finalDataI = dataI;
|
||||
integerList.stream().forEach(temp->{
|
||||
List<Double> iList = new ArrayList<>();
|
||||
phaseType.stream().forEach(phase -> {
|
||||
|
||||
List<DataI> tempDataIList = dataI.stream().filter(temp1 -> Utils.isTimeInRange(temp1.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
|
||||
List<DataI> tempDataIList = finalDataI.stream().filter(temp1 -> Utils.isTimeInRange(temp1.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0)))
|
||||
.filter(temp1 -> temp1.getPhaseType().equals(phase))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
@@ -696,19 +722,19 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
|
||||
}
|
||||
linearInterpolationI(dataIList);
|
||||
|
||||
//存入redis
|
||||
// redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate, formatter)+"#"+LocalDateTimeUtil.format(endDate, formatter)+"#"+"P",
|
||||
// dataHarmPowerPList);
|
||||
// redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"P",
|
||||
// dataHarmPowerP2List);
|
||||
// redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate, formatter)+"#"+LocalDateTimeUtil.format(endDate, formatter)+"#"+"Q",
|
||||
// dataHarmPowerQList);
|
||||
// redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"Q",
|
||||
// dataHarmPowerQ2List);
|
||||
// redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"U",
|
||||
// dataHarmPowerU2List);
|
||||
// redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate, formatter)+"#"+LocalDateTimeUtil.format(endDate, formatter)+"#"+"I",
|
||||
// dataIList);
|
||||
// 存入redis
|
||||
redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate, formatter)+"#"+LocalDateTimeUtil.format(endDate, formatter)+"#"+"P",
|
||||
dataHarmPowerPList);
|
||||
redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"P",
|
||||
dataHarmPowerP2List);
|
||||
redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate, formatter)+"#"+LocalDateTimeUtil.format(endDate, formatter)+"#"+"Q",
|
||||
dataHarmPowerQList);
|
||||
redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"Q",
|
||||
dataHarmPowerQ2List);
|
||||
redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate2, formatter)+"#"+LocalDateTimeUtil.format(endDate2, formatter)+"#"+"U",
|
||||
dataHarmPowerUList);
|
||||
redisUtil.saveByKey(lineId+"#"+LocalDateTimeUtil.format(startDate, formatter)+"#"+LocalDateTimeUtil.format(endDate, formatter)+"#"+"I",
|
||||
dataIList);
|
||||
//todo 将文件存入文件服务器获取url
|
||||
String filePath = fileStorageUtil.uploadMultipart(excelDataParam.getFile(), OssPath.CARRY_CAPCITY_DATA);
|
||||
String url = "temp";
|
||||
@@ -848,7 +874,7 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
|
||||
|
||||
carryCapacityResultPO.setStatus(1);
|
||||
if(rate<0.001){
|
||||
carryCapacityResultPO.setReslutLevel(1);
|
||||
carryCapacityResultPO.setReslutLevel(6);
|
||||
carryCapacityResultPOService.save(carryCapacityResultPO);
|
||||
return vo;
|
||||
}
|
||||
@@ -991,7 +1017,7 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
|
||||
vo.setIResultList(carryCapacityIResultList);
|
||||
carryCapacityResultPO.setIResultList(JSONUtil.toJsonStr(carryCapacityIResultList));
|
||||
long count = carryCapacityIResultList.stream().filter(temp -> temp.getI() > temp.getI_limit()).count();
|
||||
carryCapacityResultPO.setReslutLevel(count==0?1:6);
|
||||
carryCapacityResultPO.setReslutLevel(count==0?6:5);
|
||||
|
||||
carryCapacityResultPOService.save(carryCapacityResultPO);
|
||||
|
||||
@@ -1019,7 +1045,7 @@ public class CarryCapcityServiceImpl implements CarryCapcityService {
|
||||
}
|
||||
|
||||
|
||||
public static ExcelDataDTO ParsingFile(LocalDate startDate, LocalDate endDate, InputStream is) throws Exception{
|
||||
public static ExcelDataDTO ParsingFile(LocalDate startDate, LocalDate endDate, InputStream is) {
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||
List<CarryCapcityData> dataHarmPowerPList = new ArrayList<>();
|
||||
List<CarryCapcityData> dataHarmPowerQList= new ArrayList<>();
|
||||
|
||||
Reference in New Issue
Block a user