tl пре 4 месеци
родитељ
комит
7c5fd14273

+ 62 - 56
cpp-admin/src/main/java/com/cpp/web/service/datafactory/SftpFileParsing.java

@@ -115,70 +115,76 @@ public class SftpFileParsing {
             ParsingInterface parsingInterface = parsingInterfaceMap.get(parsingType.getFileType().name() + "Parsing");
             parsingInterface.activationParsingConf();//初始化解析配置
             for (ElectricField electricField : channelElectricFields) {
-                String ftpUrl = electricField.getSftpUrl();
-                List<String> fileNames = sftp.ls(ftpUrl).stream().filter(f -> f.contains(parsingType.getFileName())).collect(Collectors.toList());
-                if (fileNames.size() > 0) {
-                    dataStore.activationCommunicationStatus(electricField.getStationCode());
-                    for (String fileName : fileNames) {
-                        try {
-                            String sftpFileNameDir = ftpUrl + "/" + fileName;
-                            if (sftp.getClient().stat(sftpFileNameDir).getSize() > 0) {
-                                String destFileNameDir = PARSING_FILE_TEMP_DIR.getPath() + File.separator + fileName;
-                                //下载文件到临时目录
-                                sftp.get(sftpFileNameDir, destFileNameDir);
-                                File file = FileUtils.getFile(PARSING_FILE_TEMP_DIR, fileName);
-                                ParsingLog parsingLog = new ParsingLog();
-                                Date now = new Date();
-                                parsingLog.setParsingTime(now);
-                                parsingLog.setFileName(fileName);
-                                ParsingResultDto parsingResultDto = parsingInterface.parsing(file, electricField.getStationCode());
-                                parsingLog.setParsingDescribe(parsingResultDto.getMessage());
-                                parsingLog.setFileType(parsingType.getFileType());
-                                parsingLog.setDataSources(DataSourcesEnum.E1);
-                                parsingLog.setStationCode(electricField.getStationCode());
-                                if (parsingResultDto.getStatus().equals("fail")) {
-                                    try {
-                                        File failFileDir = new File(PARSING_FILE_FAIL_DIR.getPath() + File.separator + DateFormatUtils.format(now, "yyyy-MM-dd") + File.separator + electricField.getStationCode() + File.separator + parsingType.getFileType().name());
-                                        File failFile = new File(failFileDir.getPath() + File.separator + fileName);
-                                        if (failFile.exists()) {
-                                            failFile.delete();
-                                            log.error("已有过解析失败文件,错误文件将覆盖!场站编号:{},文件名称:{}", electricField.getStationCode(), fileName);
+                try {
+                    String ftpUrl = electricField.getSftpUrl();
+                    List<String> fileNames = sftp.ls(ftpUrl).stream().filter(f -> f.contains(parsingType.getFileName())).collect(Collectors.toList());
+                    if (fileNames.size() > 0) {
+                        dataStore.activationCommunicationStatus(electricField.getStationCode());
+                        for (String fileName : fileNames) {
+                            try {
+                                String sftpFileNameDir = ftpUrl + "/" + fileName;
+                                if (sftp.getClient().stat(sftpFileNameDir).getSize() > 0) {
+                                    String destFileNameDir = PARSING_FILE_TEMP_DIR.getPath() + File.separator + fileName;
+                                    //下载文件到临时目录
+                                    sftp.get(sftpFileNameDir, destFileNameDir);
+                                    File file = FileUtils.getFile(PARSING_FILE_TEMP_DIR, fileName);
+                                    ParsingLog parsingLog = new ParsingLog();
+                                    Date now = new Date();
+                                    parsingLog.setParsingTime(now);
+                                    parsingLog.setFileName(fileName);
+                                    ParsingResultDto parsingResultDto = parsingInterface.parsing(file, electricField.getStationCode());
+                                    parsingLog.setParsingDescribe(parsingResultDto.getMessage());
+                                    parsingLog.setFileType(parsingType.getFileType());
+                                    parsingLog.setDataSources(DataSourcesEnum.E1);
+                                    parsingLog.setStationCode(electricField.getStationCode());
+                                    if (parsingResultDto.getStatus().equals("fail")) {
+                                        try {
+                                            File failFileDir = new File(PARSING_FILE_FAIL_DIR.getPath() + File.separator + DateFormatUtils.format(now, "yyyy-MM-dd") + File.separator + electricField.getStationCode() + File.separator + parsingType.getFileType().name());
+                                            File failFile = new File(failFileDir.getPath() + File.separator + fileName);
+                                            if (failFile.exists()) {
+                                                failFile.delete();
+                                                log.error("已有过解析失败文件,错误文件将覆盖!场站编号:{},文件名称:{}", electricField.getStationCode(), fileName);
+                                            }
+                                            ParsingFileUtil.move(file.getAbsolutePath(), failFileDir.getAbsolutePath(), true);
+                                        } catch (IOException e) {
+                                            log.error("解析文件失败后文件移动失败!场站编号:{},文件名称:{}", electricField.getStationCode(), fileName, e);
+                                            e.printStackTrace();
                                         }
-                                        ParsingFileUtil.move(file.getAbsolutePath(), failFileDir.getAbsolutePath(), true);
-                                    } catch (IOException e) {
-                                        log.error("解析文件失败后文件移动失败!场站编号:{},文件名称:{}", electricField.getStationCode(), fileName, e);
-                                        e.printStackTrace();
-                                    }
-                                    file.delete();//失败删除本地文件
-                                    sftp.delFile(sftpFileNameDir);//失败删除sftp文件
-                                    parsingLog.setParsingFileStatus("失败");
-                                    LogUtil.info(DataSourcesEnum.E3, AlarmEnum.E4, LogUtil.format("无法解析场站端文件:{}", fileName), electricField.getStationCode());
-                                } else {
-                                    sftp.delFile(ftpUrl + "/" + fileName);//成功删除ftp上的文件
-                                    try {
-                                        File successFileDir = new File(PARSING_FILE_SUCCESS_DIR.getPath() + File.separator + DateFormatUtils.format(now, "yyyy-MM-dd") + File.separator + electricField.getStationCode() + File.separator + parsingType.getFileType().name());
-                                        File successFile = new File(successFileDir.getPath() + File.separator + fileName);
-                                        if (successFile.exists()) {
-                                            successFile.delete();
-                                            log.error("已有过解析成功文件,成功文件将覆盖!场站编号:{},文件名称:{}", electricField.getStationCode(), fileName);
+                                        file.delete();//失败删除本地文件
+                                        sftp.delFile(sftpFileNameDir);//失败删除sftp文件
+                                        parsingLog.setParsingFileStatus("失败");
+                                        LogUtil.info(DataSourcesEnum.E3, AlarmEnum.E4, LogUtil.format("无法解析场站端文件:{}", fileName), electricField.getStationCode());
+                                    } else {
+                                        sftp.delFile(ftpUrl + "/" + fileName);//成功删除ftp上的文件
+                                        try {
+                                            File successFileDir = new File(PARSING_FILE_SUCCESS_DIR.getPath() + File.separator + DateFormatUtils.format(now, "yyyy-MM-dd") + File.separator + electricField.getStationCode() + File.separator + parsingType.getFileType().name());
+                                            File successFile = new File(successFileDir.getPath() + File.separator + fileName);
+                                            if (successFile.exists()) {
+                                                successFile.delete();
+                                                log.error("已有过解析成功文件,成功文件将覆盖!场站编号:{},文件名称:{}", electricField.getStationCode(), fileName);
+                                            }
+                                            ParsingFileUtil.move(file.getAbsolutePath(), successFileDir.getAbsolutePath(), true);
+                                        } catch (IOException e) {
+                                            log.error("解析文件成功后文件移动失败!场站编号:{},文件名称:{}", electricField.getStationCode(), fileName, e);
+                                            e.printStackTrace();
                                         }
-                                        ParsingFileUtil.move(file.getAbsolutePath(), successFileDir.getAbsolutePath(), true);
-                                    } catch (IOException e) {
-                                        log.error("解析文件成功后文件移动失败!场站编号:{},文件名称:{}", electricField.getStationCode(), fileName, e);
-                                        e.printStackTrace();
+                                        file.delete();//失败删除本地文件,等待下次下载
+                                        parsingLog.setParsingFileStatus("成功");
                                     }
-                                    file.delete();//失败删除本地文件,等待下次下载
-                                    parsingLog.setParsingFileStatus("成功");
+                                    parsingLogs.add(parsingLog);
                                 }
-                                parsingLogs.add(parsingLog);
+                            } catch (Exception e) {
+                                LogUtil.info(DataSourcesEnum.E3, AlarmEnum.E4, LogUtil.format("无法解析场站端文件:{}", fileName), electricField.getStationCode());
+                                log.error("下载并解析文件{}时异常", fileName, e);
                             }
-                        } catch (Exception e) {
-                            LogUtil.info(DataSourcesEnum.E3, AlarmEnum.E4, LogUtil.format("无法解析场站端文件:{}", fileName), electricField.getStationCode());
-                            log.error("下载并解析文件{}时异常", fileName, e);
-                        }
 
+                        }
                     }
+                } catch (Exception e) {
+                    LogUtil.info(DataSourcesEnum.E3, AlarmEnum.E4, LogUtil.format("无法下载场站端文件,路径:{}", electricField.getSftpUrl()), electricField.getStationCode());
+                    log.error("下载文件时异常,路径{}", electricField.getSftpUrl(), e);
                 }
+
             }
 //                }
 //            });