|
@@ -27,6 +27,7 @@ import java.io.File;
|
|
|
import java.time.Instant;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.ZoneId;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -68,71 +69,68 @@ public class ParsingFjInfoServiceImpl extends ServiceImpl<ParsingFjInfoMapper, P
|
|
|
fileAnalysisStatusDto.setFileType(FileTypeEnum.FJ.getCode()+"");
|
|
|
|
|
|
try {
|
|
|
-
|
|
|
-
|
|
|
List<ParsingFjInfo> parsingFjInfos = baseMapper.selectList(Wrappers.lambdaQuery(ParsingFjInfo.class).like(ParsingInfo::getStationCode, ftpParsingUrl.getStationCode()));
|
|
|
if (parsingFjInfos.size() > 0) {
|
|
|
-
|
|
|
- List<String> fileContent = FileUtil.getFileContent(file);
|
|
|
- List<WindTurbineInfo> windTurbineInfoList = windTurbineInfoService.list(Wrappers.lambdaQuery(WindTurbineInfo.class).eq(WindTurbineInfo::getStationCode, ftpParsingUrl.getStationCode()));
|
|
|
-
|
|
|
for (ParsingFjInfo parsingFjInfo : parsingFjInfos) {
|
|
|
//判断文件名是否符合配置
|
|
|
if (file.getName().indexOf(parsingFjInfo.getFileName()) >= 0) {
|
|
|
-
|
|
|
- WindTurbineStatusData windTurbineStatusData = new WindTurbineStatusData();
|
|
|
-
|
|
|
+ List<WindTurbineStatusData> windTurbineStatusDataList = new ArrayList<>();
|
|
|
if (parsingFjInfo.getDataType().equals(FieldUtil.SINGLE)) {
|
|
|
-
|
|
|
- String fjName = parsingName(parsingFjInfo.getEquipmentName(), fileContent);
|
|
|
-
|
|
|
- List<WindTurbineInfo> filterWindTurbineInfos = windTurbineInfoList.stream().filter(i -> i.getName().equals(fjName)).collect(Collectors.toList());
|
|
|
-
|
|
|
- if (filterWindTurbineInfos.size() > 0) {
|
|
|
- windTurbineStatusData.setEquipmentId(filterWindTurbineInfos.get(0).getEquipmentNo());
|
|
|
- Long time = parsingTime(parsingFjInfo.getTime(), fileContent);
|
|
|
- if (time != 0l) {
|
|
|
- windTurbineStatusData.setTime(new Date(time));
|
|
|
-
|
|
|
- windTurbineStatusData.setActivePower(parsingValue(parsingFjInfo.getActivePower(), fileContent));
|
|
|
- windTurbineStatusData.setCumulativeGeneratedEnergy(parsingValue(parsingFjInfo.getCumulativeGeneratedEnergy(), fileContent));
|
|
|
- windTurbineStatusData.setDayGridConnectedHours(parsingValue(parsingFjInfo.getDayGridConnectedHours(), fileContent));
|
|
|
- windTurbineStatusData.setWindWheelRatedSpeed(parsingValue(parsingFjInfo.getWindWheelRatedSpeed(), fileContent));
|
|
|
- windTurbineStatusData.setDayElectricQuantity(parsingValue(parsingFjInfo.getDayElectricQuantity(), fileContent));
|
|
|
- windTurbineStatusData.setElectricalCurrent(parsingValue(parsingFjInfo.getElectricalCurrent(), fileContent));
|
|
|
- windTurbineStatusData.setPitchAngle(parsingValue(parsingFjInfo.getPitchAngle(), fileContent));
|
|
|
- windTurbineStatusData.setPowerFactor(parsingValue(parsingFjInfo.getPowerFactor(), fileContent));
|
|
|
- windTurbineStatusData.setReactivePower(parsingValue(parsingFjInfo.getReactivePower(), fileContent));
|
|
|
- windTurbineStatusData.setVoltage(parsingValue(parsingFjInfo.getVoltage(), fileContent));
|
|
|
- windTurbineStatusData.setWd(parsingValue(parsingFjInfo.getWd(), fileContent));
|
|
|
- windTurbineStatusData.setWs(parsingValue(parsingFjInfo.getWs(), fileContent));
|
|
|
- windTurbineStatusData.setT(parsingValue(parsingFjInfo.getT(), fileContent));
|
|
|
-
|
|
|
- windTurbineStatusData.setStatus(parsingStatus(parsingFjInfo.getStatus(), fileContent));
|
|
|
- windTurbineStatusData.setStationCode(parsingFjInfo.getStationCode());
|
|
|
-
|
|
|
- windTurbineStatusDataService.save(windTurbineStatusData);
|
|
|
- log.info("解析FJ文件:" + file.getName() + " 成功! O(∩_∩)O");
|
|
|
- fileAnalysisStatusDto.setStatus("1");
|
|
|
- } else {
|
|
|
- fileAnalysisStatusDto.setStatus("0");
|
|
|
- fileAnalysisStatusDto.setMessage("解析风机文件时间错误");
|
|
|
- log.error("解析FJ文件时间错误");
|
|
|
+ List<WindTurbineInfo> windTurbineInfoList = windTurbineInfoService.list(Wrappers.lambdaQuery(WindTurbineInfo.class).eq(WindTurbineInfo::getStationCode, ftpParsingUrl.getStationCode()));
|
|
|
+ List<String> fileContent = FileUtil.getFileContent(file);
|
|
|
+ // 对#号开头的数据行获取
|
|
|
+ for (String str: fileContent){
|
|
|
+ if (str.startsWith("#")){
|
|
|
+ // 循环获取每行数据风机名称
|
|
|
+ String fjName = parsingName(parsingFjInfo.getEquipmentName(), str);
|
|
|
+ List<WindTurbineInfo> filterWindTurbineInfos = windTurbineInfoList.stream().filter(i -> i.getName().equals(fjName)).collect(Collectors.toList());
|
|
|
+ if (filterWindTurbineInfos.size() > 0) {
|
|
|
+ WindTurbineStatusData windTurbineStatusData = new WindTurbineStatusData();
|
|
|
+ windTurbineStatusData.setEquipmentId(filterWindTurbineInfos.get(0).getEquipmentNo());
|
|
|
+ Long time = parsingTime(parsingFjInfo.getTime(), fileContent);
|
|
|
+ if (time != 0l) {
|
|
|
+ windTurbineStatusData.setTime(new Date(time));
|
|
|
+ windTurbineStatusData.setActivePower(parsingRowValue(parsingFjInfo.getActivePower(), str));
|
|
|
+ windTurbineStatusData.setCumulativeGeneratedEnergy(parsingRowValue(parsingFjInfo.getCumulativeGeneratedEnergy(), str));
|
|
|
+ windTurbineStatusData.setDayGridConnectedHours(parsingRowValue(parsingFjInfo.getDayGridConnectedHours(), str));
|
|
|
+ windTurbineStatusData.setWindWheelRatedSpeed(parsingRowValue(parsingFjInfo.getWindWheelRatedSpeed(), str));
|
|
|
+ windTurbineStatusData.setDayElectricQuantity(parsingRowValue(parsingFjInfo.getDayElectricQuantity(), str));
|
|
|
+ windTurbineStatusData.setElectricalCurrent(parsingRowValue(parsingFjInfo.getElectricalCurrent(), str));
|
|
|
+ windTurbineStatusData.setPitchAngle(parsingRowValue(parsingFjInfo.getPitchAngle(), str));
|
|
|
+ windTurbineStatusData.setPowerFactor(parsingRowValue(parsingFjInfo.getPowerFactor(), str));
|
|
|
+ windTurbineStatusData.setReactivePower(parsingRowValue(parsingFjInfo.getReactivePower(), str));
|
|
|
+ windTurbineStatusData.setVoltage(parsingRowValue(parsingFjInfo.getVoltage(), str));
|
|
|
+ windTurbineStatusData.setWd(parsingRowValue(parsingFjInfo.getWd(), str));
|
|
|
+ windTurbineStatusData.setWs(parsingRowValue(parsingFjInfo.getWs(), str));
|
|
|
+ windTurbineStatusData.setT(parsingRowValue(parsingFjInfo.getT(), str));
|
|
|
+ windTurbineStatusData.setStatus(parsingRowStatus(parsingFjInfo.getStatus(), str));
|
|
|
+ windTurbineStatusData.setStationCode(ftpParsingUrl.getStationCode());
|
|
|
+ } else {
|
|
|
+ fileAnalysisStatusDto.setStatus("0");
|
|
|
+ fileAnalysisStatusDto.setMessage("解析风机文件时间错误");
|
|
|
+ log.error("解析FJ文件时间错误");
|
|
|
+ }
|
|
|
+ windTurbineStatusDataList.add(windTurbineStatusData);
|
|
|
+ } else {
|
|
|
+ fileAnalysisStatusDto.setStatus("0");
|
|
|
+ fileAnalysisStatusDto.setMessage("风机缺少配置无法解析");
|
|
|
+ log.info("风机 {} 缺少配置无法解析", fjName);
|
|
|
+ }
|
|
|
}
|
|
|
- } else {
|
|
|
- fileAnalysisStatusDto.setStatus("0");
|
|
|
- fileAnalysisStatusDto.setMessage("风机在本地无配置无法解析");
|
|
|
- log.info("fj {} 在本地无配置无法解析", fjName);
|
|
|
}
|
|
|
} else {
|
|
|
fileAnalysisStatusDto.setStatus("0");
|
|
|
fileAnalysisStatusDto.setMessage("风机暂无多行解析方式");
|
|
|
log.info("fj暂无多行解析方式");
|
|
|
}
|
|
|
+ if (!"0".equals(fileAnalysisStatusDto.getStatus()) && windTurbineStatusDataList.size() > 0){
|
|
|
+ windTurbineStatusDataService.saveBatch(windTurbineStatusDataList);
|
|
|
+ log.info("解析FJ文件:" + file.getName() + " 成功! O(∩_∩)O");
|
|
|
+ fileAnalysisStatusDto.setStatus("1");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
} catch (Exception e) {
|
|
|
fileAnalysisStatusDto.setStatus("0");
|
|
|
fileAnalysisStatusDto.setMessage("解析风机数据错误!");
|
|
@@ -140,8 +138,5 @@ public class ParsingFjInfoServiceImpl extends ServiceImpl<ParsingFjInfoMapper, P
|
|
|
} finally {
|
|
|
return fileAnalysisStatusDto;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}
|