|
@@ -52,48 +52,109 @@ public class ReportDataController {
|
|
*/
|
|
*/
|
|
@GetMapping("/getData")
|
|
@GetMapping("/getData")
|
|
public R getData(String stationCode, String fileType, Long startTime, Long endTime) {
|
|
public R getData(String stationCode, String fileType, Long startTime, Long endTime) {
|
|
- // 获取应上报文件名
|
|
|
|
- List<String> shouldFileName = reportDataService.shouldFileName(fileType, startTime, endTime, stationCode);
|
|
|
|
- List<ParsingLog> parsingLogList = parsingLogService.findByTimeBetweenAndFileTypeAndStationCode(new Date(startTime), new Date(endTime), fileType, stationCode);
|
|
|
|
|
|
+
|
|
|
|
+ // 获取场站类型
|
|
|
|
+ ElectricField electricField = electricFieldService.findByStationCode(stationCode);
|
|
|
|
+
|
|
|
|
+ String electricFieldTypeEnum = electricField.getElectricFieldTypeEnum();
|
|
|
|
+
|
|
|
|
+ List<FileTypeEnum> fileTypeEnumList = new ArrayList<>();
|
|
List<ParsingLog> resultList = new ArrayList<>();
|
|
List<ParsingLog> resultList = new ArrayList<>();
|
|
- if (parsingLogList.size() > 0) {
|
|
|
|
- resultList.addAll(parsingLogList);
|
|
|
|
- for (int i = 0; i < shouldFileName.size(); i++) {
|
|
|
|
- int finalI = i;
|
|
|
|
- List<ParsingLog> collectList = parsingLogList.stream().filter(f -> f.getFileName().contains(shouldFileName.get(finalI))).collect(Collectors.toList());
|
|
|
|
- if (collectList.size() > 0) {
|
|
|
|
- continue;
|
|
|
|
- } else {
|
|
|
|
|
|
+
|
|
|
|
+ if (null == fileType) {
|
|
|
|
+ if (electricFieldTypeEnum.equals("E1")) {
|
|
|
|
+ fileTypeEnumList = FileTypeEnum.getPhotovoltaicFileType();
|
|
|
|
+ } else {
|
|
|
|
+ fileTypeEnumList = FileTypeEnum.getWindFileType();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (fileTypeEnumList.size() > 0 && null != fileTypeEnumList){
|
|
|
|
+ // 获取应上报文件名
|
|
|
|
+ List<String> shouldFileName = reportDataService.shouldFileName(fileType, startTime, endTime, stationCode);
|
|
|
|
+ List<ParsingLog> parsingLogList = parsingLogService.findByTimeBetweenAndFileTypeAndStationCode(new Date(startTime), new Date(endTime), fileType, stationCode);
|
|
|
|
+ if (parsingLogList.size() > 0) {
|
|
|
|
+ resultList.addAll(parsingLogList);
|
|
|
|
+ for (int i = 0; i < shouldFileName.size(); i++) {
|
|
|
|
+ int finalI = i;
|
|
|
|
+ List<ParsingLog> collectList = parsingLogList.stream().filter(f -> f.getFileName().contains(shouldFileName.get(finalI))).collect(Collectors.toList());
|
|
|
|
+ if (collectList.size() > 0) {
|
|
|
|
+ continue;
|
|
|
|
+ } else {
|
|
|
|
+ ParsingLog parsingLogs = new ParsingLog();
|
|
|
|
+ parsingLogs.setDataSources(DataSourcesEnum.E1);
|
|
|
|
+ if ("dq".equals(fileType) || "nwp".equals(fileType)) {
|
|
|
|
+ parsingLogs.setFileName("sign_" + shouldFileName.get(i) + "_0000_" + fileType.toUpperCase() + ".WPD");
|
|
|
|
+ }
|
|
|
|
+ if ("cdq".equals(fileType) || "status".equals(fileType) || "nbq".equals(fileType) || "qxz".equals(fileType) || "rp".equals(fileType) || "fj".equals(fileType) || "cft".equals(fileType)) {
|
|
|
|
+ parsingLogs.setFileName("sign_" + shouldFileName.get(i) + "_" + fileType.toUpperCase() + ".WPD");
|
|
|
|
+ }
|
|
|
|
+ parsingLogs.setFileType(FileTypeEnum.valueOf(fileType));
|
|
|
|
+ parsingLogs.setParsingFileStatus("失败");
|
|
|
|
+ parsingLogs.setStationCode(stationCode);
|
|
|
|
+ resultList.add(parsingLogs);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ for (int i = 0; i < shouldFileName.size(); i++) {
|
|
ParsingLog parsingLogs = new ParsingLog();
|
|
ParsingLog parsingLogs = new ParsingLog();
|
|
- parsingLogs.setDataSources(DataSourcesEnum.E1);
|
|
|
|
if ("dq".equals(fileType) || "nwp".equals(fileType)) {
|
|
if ("dq".equals(fileType) || "nwp".equals(fileType)) {
|
|
parsingLogs.setFileName("sign_" + shouldFileName.get(i) + "_0000_" + fileType.toUpperCase() + ".WPD");
|
|
parsingLogs.setFileName("sign_" + shouldFileName.get(i) + "_0000_" + fileType.toUpperCase() + ".WPD");
|
|
}
|
|
}
|
|
if ("cdq".equals(fileType) || "status".equals(fileType) || "nbq".equals(fileType) || "qxz".equals(fileType) || "rp".equals(fileType) || "fj".equals(fileType) || "cft".equals(fileType)) {
|
|
if ("cdq".equals(fileType) || "status".equals(fileType) || "nbq".equals(fileType) || "qxz".equals(fileType) || "rp".equals(fileType) || "fj".equals(fileType) || "cft".equals(fileType)) {
|
|
parsingLogs.setFileName("sign_" + shouldFileName.get(i) + "_" + fileType.toUpperCase() + ".WPD");
|
|
parsingLogs.setFileName("sign_" + shouldFileName.get(i) + "_" + fileType.toUpperCase() + ".WPD");
|
|
}
|
|
}
|
|
- parsingLogs.setFileType(FileTypeEnum.valueOf(fileType));
|
|
|
|
parsingLogs.setParsingFileStatus("失败");
|
|
parsingLogs.setParsingFileStatus("失败");
|
|
parsingLogs.setStationCode(stationCode);
|
|
parsingLogs.setStationCode(stationCode);
|
|
|
|
+ parsingLogs.setFileType(FileTypeEnum.valueOf(fileType));
|
|
|
|
+ parsingLogs.setDataSources(DataSourcesEnum.E1);
|
|
resultList.add(parsingLogs);
|
|
resultList.add(parsingLogs);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- for (int i = 0; i < shouldFileName.size(); i++) {
|
|
|
|
- ParsingLog parsingLogs = new ParsingLog();
|
|
|
|
- if ("dq".equals(fileType) || "nwp".equals(fileType)) {
|
|
|
|
- parsingLogs.setFileName("sign_" + shouldFileName.get(i) + "_0000_" + fileType.toUpperCase() + ".WPD");
|
|
|
|
|
|
+ }else {
|
|
|
|
+ // 获取应上报文件名
|
|
|
|
+ List<String> shouldFileName = reportDataService.shouldFileName(fileType, startTime, endTime, stationCode);
|
|
|
|
+ List<ParsingLog> parsingLogList = parsingLogService.findByTimeBetweenAndFileTypeAndStationCode(new Date(startTime), new Date(endTime), fileType, stationCode);
|
|
|
|
+ if (parsingLogList.size() > 0) {
|
|
|
|
+ resultList.addAll(parsingLogList);
|
|
|
|
+ for (int i = 0; i < shouldFileName.size(); i++) {
|
|
|
|
+ int finalI = i;
|
|
|
|
+ List<ParsingLog> collectList = parsingLogList.stream().filter(f -> f.getFileName().contains(shouldFileName.get(finalI))).collect(Collectors.toList());
|
|
|
|
+ if (collectList.size() > 0) {
|
|
|
|
+ continue;
|
|
|
|
+ } else {
|
|
|
|
+ ParsingLog parsingLogs = new ParsingLog();
|
|
|
|
+ parsingLogs.setDataSources(DataSourcesEnum.E1);
|
|
|
|
+ if ("dq".equals(fileType) || "nwp".equals(fileType)) {
|
|
|
|
+ parsingLogs.setFileName("sign_" + shouldFileName.get(i) + "_0000_" + fileType.toUpperCase() + ".WPD");
|
|
|
|
+ }
|
|
|
|
+ if ("cdq".equals(fileType) || "status".equals(fileType) || "nbq".equals(fileType) || "qxz".equals(fileType) || "rp".equals(fileType) || "fj".equals(fileType) || "cft".equals(fileType)) {
|
|
|
|
+ parsingLogs.setFileName("sign_" + shouldFileName.get(i) + "_" + fileType.toUpperCase() + ".WPD");
|
|
|
|
+ }
|
|
|
|
+ parsingLogs.setFileType(FileTypeEnum.valueOf(fileType));
|
|
|
|
+ parsingLogs.setParsingFileStatus("失败");
|
|
|
|
+ parsingLogs.setStationCode(stationCode);
|
|
|
|
+ resultList.add(parsingLogs);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- if ("status".equals(fileType) || "nbq".equals(fileType) || "qxz".equals(fileType) || "rp".equals(fileType) || "fj".equals(fileType) || "cft".equals(fileType)) {
|
|
|
|
- parsingLogs.setFileName("sign_" + shouldFileName.get(i) + "_" + fileType.toUpperCase() + ".WPD");
|
|
|
|
|
|
+ } else {
|
|
|
|
+ for (int i = 0; i < shouldFileName.size(); i++) {
|
|
|
|
+ ParsingLog parsingLogs = new ParsingLog();
|
|
|
|
+ if ("dq".equals(fileType) || "nwp".equals(fileType)) {
|
|
|
|
+ parsingLogs.setFileName("sign_" + shouldFileName.get(i) + "_0000_" + fileType.toUpperCase() + ".WPD");
|
|
|
|
+ }
|
|
|
|
+ if ("cdq".equals(fileType) || "status".equals(fileType) || "nbq".equals(fileType) || "qxz".equals(fileType) || "rp".equals(fileType) || "fj".equals(fileType) || "cft".equals(fileType)) {
|
|
|
|
+ parsingLogs.setFileName("sign_" + shouldFileName.get(i) + "_" + fileType.toUpperCase() + ".WPD");
|
|
|
|
+ }
|
|
|
|
+ parsingLogs.setParsingFileStatus("失败");
|
|
|
|
+ parsingLogs.setStationCode(stationCode);
|
|
|
|
+ parsingLogs.setFileType(FileTypeEnum.valueOf(fileType));
|
|
|
|
+ parsingLogs.setDataSources(DataSourcesEnum.E1);
|
|
|
|
+ resultList.add(parsingLogs);
|
|
}
|
|
}
|
|
- parsingLogs.setParsingFileStatus("失败");
|
|
|
|
- parsingLogs.setStationCode(stationCode);
|
|
|
|
- parsingLogs.setFileType(FileTypeEnum.valueOf(fileType));
|
|
|
|
- parsingLogs.setDataSources(DataSourcesEnum.E1);
|
|
|
|
- resultList.add(parsingLogs);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ // 定义比较器
|
|
Comparator<ParsingLog> timestampComparator = new Comparator<ParsingLog>() {
|
|
Comparator<ParsingLog> timestampComparator = new Comparator<ParsingLog>() {
|
|
@Override
|
|
@Override
|
|
public int compare(ParsingLog o1, ParsingLog o2) {
|
|
public int compare(ParsingLog o1, ParsingLog o2) {
|
|
@@ -119,7 +180,13 @@ public class ReportDataController {
|
|
*/
|
|
*/
|
|
private static String extractAndParseTimestamp(String fileName) {
|
|
private static String extractAndParseTimestamp(String fileName) {
|
|
String[] fileNameParts = fileName.split("_");
|
|
String[] fileNameParts = fileName.split("_");
|
|
- String correctTimestampStr = fileNameParts[1] + fileNameParts[2];
|
|
|
|
|
|
+ String correctTimestampStr = "";
|
|
|
|
+ if (fileName.contains("NWP")) {
|
|
|
|
+ correctTimestampStr = fileNameParts[1] + "0000".trim();
|
|
|
|
+ } else {
|
|
|
|
+ correctTimestampStr = fileNameParts[1] + fileNameParts[2];
|
|
|
|
+ }
|
|
|
|
+
|
|
return correctTimestampStr;
|
|
return correctTimestampStr;
|
|
}
|
|
}
|
|
}
|
|
}
|