From 0275cba0ed92f61dcc909b7e08e7a0b220e42a57 Mon Sep 17 00:00:00 2001 From: hzj <826100833@qq.com> Date: Mon, 1 Apr 2024 09:08:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=B7=E5=8D=97=E7=89=88=E6=9C=AC=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CarryCapacityResultPOServiceImpl.java | 2 +- .../impl/CarryCapacityUserPOServiceImpl.java | 2 +- .../impl/CarryCapcityServiceImpl.java | 168 ++++++++++-------- .../java/com/njcn/advance/utils/CZNLPG.java | 4 +- 4 files changed, 101 insertions(+), 75 deletions(-) diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityResultPOServiceImpl.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityResultPOServiceImpl.java index 94db896e9..ee4e4d012 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityResultPOServiceImpl.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityResultPOServiceImpl.java @@ -46,7 +46,7 @@ public class CarryCapacityResultPOServiceImpl extends ServiceImpl 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); diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityUserPOServiceImpl.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityUserPOServiceImpl.java index 4f639242f..2f06fae4d 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityUserPOServiceImpl.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapacityUserPOServiceImpl.java @@ -64,7 +64,7 @@ public class CarryCapacityUserPOServiceImpl extends ServiceImpl page = this.page (returnpage, queryWrapper); diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapcityServiceImpl.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapcityServiceImpl.java index 3e294afd3..3416781cc 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapcityServiceImpl.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/carrycapacity/impl/CarryCapcityServiceImpl.java @@ -123,10 +123,10 @@ public class CarryCapcityServiceImpl implements CarryCapcityService { String endTime = LocalDateTimeUtil.format(queryParam.getEndTime(), formatter) + " 23:59:00"; //先重redis读取数据,无数据,查看是否存在文件,不存在文件查数据库,数据校验补通过上传文件 -// dataHarmPowerPList = (List) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate, formatter) + "#" + LocalDateTimeUtil.format(endDate, formatter) + "#" + "P"); -// dataHarmPowerP2List = (List) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate2, formatter) + "#" + LocalDateTimeUtil.format(endDate2, formatter) + "#" + "P"); -// dataHarmPowerQ2List = (List) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate2, formatter) + "#" + LocalDateTimeUtil.format(endDate2, formatter) + "#" + "Q"); -// dataHarmPowerU2List = (List) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate2, formatter) + "#" + LocalDateTimeUtil.format(endDate2, formatter) + "#" + "U"); + dataHarmPowerPList = (List) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate, formatter) + "#" + LocalDateTimeUtil.format(endDate, formatter) + "#" + "P"); + dataHarmPowerP2List = (List) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate2, formatter) + "#" + LocalDateTimeUtil.format(endDate2, formatter) + "#" + "P"); + dataHarmPowerQ2List = (List) redisUtil.getObjectByKey(lineId + "#" + LocalDateTimeUtil.format(startDate2, formatter) + "#" + LocalDateTimeUtil.format(endDate2, formatter) + "#" + "Q"); + dataHarmPowerU2List = (List) 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 dataHarmPowerList = dataHarmPowerQMapper.getSqlResult(SqlQ1); - if(CollectionUtil.isEmpty(dataHarmPowerList)){ - throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND); - }else { - - if (!checkData(dataHarmPowerList,startDate,endDate,timeInterval)){ - + List dataHarmPowerQList = new ArrayList<>(); + dataHarmPowerQList = (List) 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 results = new HashMap<>(4); //计算最小Cp95值用于评估 + List finalDataHarmPowerQList = dataHarmPowerQList; phaseType.stream().forEach(phase -> { - List listQ = dataHarmPowerList.stream().filter(temp -> Utils.isTimeInRange(temp.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) + List 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 = dataIMapper.getSqlResult(sqlI1); - if(CollectionUtil.isEmpty(dataI)){ - throw new BusinessException(AdvanceResponseEnum.DATA_NOT_FOUND); - }else { - List 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 = new ArrayList<>(); + dataI = (List) 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 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 i_list = dataI.stream().map(temp -> { CarryCapcityData carryCapcityData = new CarryCapcityData(); BeanUtils.copyProperties(temp, carryCapcityData); @@ -404,11 +429,12 @@ public class CarryCapcityServiceImpl implements CarryCapcityService { List I_βmax =new ArrayList<>(); List 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 phaseType = Stream.of("A", "B", "C").collect(Collectors.toList()); + List finalDataI = dataI; integerList.stream().forEach(temp->{ List iList = new ArrayList<>(); phaseType.stream().forEach(phase -> { - List tempDataIList = dataI.stream().filter(temp1 -> Utils.isTimeInRange(temp1.getTime(), LocalTime.of(9, 0), LocalTime.of(15, 0))) + List 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 dataHarmPowerPList = new ArrayList<>(); List dataHarmPowerQList= new ArrayList<>(); diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/CZNLPG.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/CZNLPG.java index 764cff0da..2166aae47 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/CZNLPG.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/CZNLPG.java @@ -78,9 +78,9 @@ public class CZNLPG { matU.setEntry(i, 0, u.get(i)); } - System.out.println("matPQ="); +// System.out.println("matPQ="); printMatrix(matPQ); - System.out.println("matPQ transpose="); +// System.out.println("matPQ transpose="); printMatrix(matPQ.transpose()); // w = inv(PQ1'*PQ1)*PQ1'*U