|
@@ -59,6 +59,10 @@ public class AnalysisDataImpl {
|
|
|
@Value("${file.excelBackDir}")
|
|
|
private String excelBackDir;
|
|
|
|
|
|
+ private String eolFilePath = "D:\\program\\systemFile\\";
|
|
|
+
|
|
|
+ private String eolDatafolder = "D:\\EOLdata";
|
|
|
+
|
|
|
|
|
|
private final WindTowerInfoServiceImpl windTowerInfoService;
|
|
|
private final WindTowerDataParentTableServiceImpl windTowerDataParentTableService;
|
|
@@ -66,7 +70,7 @@ public class AnalysisDataImpl {
|
|
|
|
|
|
private final EmailWindTowerInfoServiceImpl emailWindTowerInfoService;
|
|
|
|
|
|
- public AnalysisDataImpl(WindTowerInfoServiceImpl windTowerInfoService,WindTowerDataParentTableServiceImpl windTowerDataParentTableService,EmailWindTowerInfoServiceImpl emailWindTowerInfoService){
|
|
|
+ public AnalysisDataImpl(WindTowerInfoServiceImpl windTowerInfoService, WindTowerDataParentTableServiceImpl windTowerDataParentTableService, EmailWindTowerInfoServiceImpl emailWindTowerInfoService) {
|
|
|
this.emailWindTowerInfoService = emailWindTowerInfoService;
|
|
|
this.windTowerInfoService = windTowerInfoService;
|
|
|
this.windTowerDataParentTableService = windTowerDataParentTableService;
|
|
@@ -215,7 +219,7 @@ public class AnalysisDataImpl {
|
|
|
String[] s = strs_cell[1].split(" ");
|
|
|
String split = s[2].substring(0, 2);
|
|
|
latitude = s[1] + " " + split;
|
|
|
- latitude = CoordinateUtil.changeToDu(latitude);
|
|
|
+ latitude = CoordinateUtil.changeToDu(latitude);
|
|
|
}
|
|
|
if (valueString.contains("Longitude")) {
|
|
|
//经度
|
|
@@ -999,24 +1003,58 @@ public class AnalysisDataImpl {
|
|
|
return str2.toString();
|
|
|
}
|
|
|
|
|
|
+ public void moveEolFileAndParseEol() {
|
|
|
+ File file = new File(eolDatafolder);
|
|
|
+ File[] files = file.listFiles();
|
|
|
+ try {
|
|
|
+ for (File file1 : files) {
|
|
|
+ if (file1.isDirectory()) {
|
|
|
+ File[] files1 = file1.listFiles();
|
|
|
+ //筛选包含.elog后缀的文件
|
|
|
+ List<File> fileNameList = Arrays.asList(files1).stream().filter(f -> f.getName().contains(".elog")).collect(Collectors.toList());
|
|
|
+ //循环文件名
|
|
|
+ for (File fileNameForELog : fileNameList) {
|
|
|
+
|
|
|
+ String fileName = fileNameForELog.getName().substring(0, fileNameForELog.getName().indexOf(".elog"));
|
|
|
+ String eqNo = fileName.substring(fileName.indexOf("ID") + 2, fileName.indexOf("_"));
|
|
|
+ //移动原始文件
|
|
|
+ com.jiayue.biz.util.FileUtil.move(fileNameForELog.getPath(), eolFilePath + File.separator + eqNo);
|
|
|
+ //找出csv文件
|
|
|
+ List<File> csvFile = Arrays.stream(files1).filter(f -> f.getName().contains(".csv") && f.getName().contains(fileName)).collect(Collectors.toList());
|
|
|
+ //找出wnd文件
|
|
|
+ List<File> wndFile = Arrays.stream(files1).filter(f -> f.getName().contains(".wnd") && f.getName().contains(fileName)).collect(Collectors.toList());
|
|
|
+ if (csvFile.size() > 0 && wndFile.size() > 0) {
|
|
|
+ parseEol(csvFile.get(0), wndFile.get(0), eqNo);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
//解析eol文件
|
|
|
- public void parseEol() {
|
|
|
+ public void parseEol(File fileCsv, File wndFile, String eqNo) {
|
|
|
//todo 需要修改
|
|
|
- String s = "C:\\Users\\Administrator\\Desktop\\ID220810_20220919_180304_20230515_063537.log_20230515_063540.csv";
|
|
|
+// String s = "C:\\Users\\Administrator\\Desktop\\ID220810_20220919_180304_20230515_063537.log_20230515_063540.csv";
|
|
|
+// //从文件中读取CSV数据
|
|
|
+// File file = FileUtil.file(s);
|
|
|
|
|
|
CsvReader reader = CsvUtil.getReader();
|
|
|
- //从文件中读取CSV数据
|
|
|
- File file = FileUtil.file(s);
|
|
|
- CsvData data = reader.read(file);
|
|
|
+ CsvData data = reader.read(fileCsv);
|
|
|
List<CsvRow> rows = data.getRows();
|
|
|
//todo 不严谨但是能用
|
|
|
CsvRow row = data.getRow(2);
|
|
|
|
|
|
-
|
|
|
HashSet<String> wsHeight = new HashSet<>();
|
|
|
HashSet<String> wdHeight = new HashSet<>();
|
|
|
|
|
|
-
|
|
|
boolean state = true;
|
|
|
//遍历行
|
|
|
List<Map<String, Object>> dataList = new ArrayList<>();
|
|
@@ -1042,64 +1080,68 @@ public class AnalysisDataImpl {
|
|
|
if (hashMap.size() > 3 && !hashMap.get("time").equals("DateTime")) {
|
|
|
dataList.add(hashMap);
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
- String numberFromString = CalculationUtil.getNumberFromString(file.getName().substring(0, file.getName().indexOf("_")));
|
|
|
-
|
|
|
List<WindTowerInfo> list = windTowerInfoService.list();
|
|
|
- List<WindTowerInfo> collect = list.stream().filter(w -> w.getEquipmentNo().equals(numberFromString)).collect(Collectors.toList());
|
|
|
- if(collect.size() > 0){
|
|
|
- HashMap<String, String> stringStringHashMap = this.dome1();
|
|
|
-
|
|
|
- String wsH = this.heightReverseOrder(wsHeight);
|
|
|
- String wdH = this.heightReverseOrder(wdHeight);
|
|
|
- WindTowerInfo windTowerInfo = new WindTowerInfo();
|
|
|
- windTowerInfo.setEquipmentNo(numberFromString);
|
|
|
- windTowerInfo.setName(numberFromString);
|
|
|
- windTowerInfo.setId(UUID.randomUUID().toString());
|
|
|
- windTowerInfo.setType("email");
|
|
|
- windTowerInfo.setHeights(wsH);
|
|
|
- windTowerInfo.setWdHeights(wdH);
|
|
|
- windTowerInfo.setLatitude(CalculationUtil.getBigDecimal(stringStringHashMap.get("Latitude")));
|
|
|
- windTowerInfo.setLongitude(CalculationUtil.getBigDecimal(stringStringHashMap.get("Longitude")));
|
|
|
- windTowerInfo.setRecorderNo(stringStringHashMap.get("SiteNumber"));
|
|
|
- windTowerInfoService.saveOrUpdate(windTowerInfo);
|
|
|
+ List<WindTowerInfo> collect = list.stream().filter(w -> w.getEquipmentNo().equals(eqNo)).collect(Collectors.toList());
|
|
|
+ if (collect.size() > 0) {
|
|
|
+ if (collect.get(0).getRecorderNo() == null) {
|
|
|
+ HashMap<String, String> stringStringHashMap = this.parseWnd(wndFile);
|
|
|
+ String wsH = this.heightReverseOrder(wsHeight);
|
|
|
+ String wdH = this.heightReverseOrder(wdHeight);
|
|
|
+ WindTowerInfo windTowerInfo = new WindTowerInfo();
|
|
|
+ windTowerInfo.setEquipmentNo(eqNo);
|
|
|
+ windTowerInfo.setName(eqNo);
|
|
|
+ windTowerInfo.setId(collect.get(0).getId());
|
|
|
+ windTowerInfo.setType("email");
|
|
|
+ windTowerInfo.setHeights(wsH);
|
|
|
+ windTowerInfo.setWdHeights(wdH);
|
|
|
+ windTowerInfo.setLatitude(CalculationUtil.getBigDecimal(stringStringHashMap.get("Latitude")));
|
|
|
+ windTowerInfo.setLongitude(CalculationUtil.getBigDecimal(stringStringHashMap.get("Longitude")));
|
|
|
+ windTowerInfo.setRecorderNo(stringStringHashMap.get("SiteNumber"));
|
|
|
+ windTowerInfo.setModelNumber("eol");
|
|
|
+ windTowerInfoService.saveOrUpdate(windTowerInfo);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
- this.emailWindTowerInfoSave(numberFromString);
|
|
|
+ this.emailWindTowerInfoSave(eqNo);
|
|
|
|
|
|
+ try {
|
|
|
+ //移动csv文件
|
|
|
+ com.jiayue.biz.util.FileUtil.move(fileCsv.getPath(), eolFilePath + File.separator + eqNo);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
|
|
|
- windTowerDataParentTableService.packageData(dataList, numberFromString, "", "eol", "");
|
|
|
+ windTowerDataParentTableService.packageData(dataList, eqNo, "", "eol", "");
|
|
|
|
|
|
}
|
|
|
|
|
|
- //解析经纬度 记录仪编号
|
|
|
- public HashMap<String, String> dome1() {
|
|
|
- //todo 需要写文件夹判断wnd文件再将文件转移
|
|
|
- String s = "C:\\Users\\Administrator\\Desktop\\";
|
|
|
- String fileName = "ID220810_20220919_180304_20230424_023957.log_20230424_024000.wnd";
|
|
|
+ //解析经纬度 记录仪编号 解析wnd文件
|
|
|
+ public HashMap<String, String> parseWnd(File wndFile) {
|
|
|
+
|
|
|
+ String fileParent = wndFile.getParent();
|
|
|
+ String fileName = wndFile.getName();
|
|
|
String xls = fileName.replace(".wnd", ".csv");
|
|
|
CsvReader reader = CsvUtil.getReader();
|
|
|
//从文件中读取CSV数据
|
|
|
- File file = FileUtil.file(s + fileName);
|
|
|
- file.renameTo(new File(s + xls));
|
|
|
- CsvData data = reader.read(new File(s + xls));
|
|
|
- List<CsvRow> rows = data.getRows();
|
|
|
+ File file = FileUtil.file(fileParent + File.separator + fileName);
|
|
|
+ file.renameTo(new File(fileParent + File.separator + xls));
|
|
|
+ CsvData data = reader.read(new File(fileParent + File.separator + xls));
|
|
|
CsvRow row = data.getRow(1);
|
|
|
String Longitude = "";
|
|
|
String Latitude = "";
|
|
|
String SiteNumber = "";
|
|
|
HashMap<String, String> hashMap = new HashMap<>();
|
|
|
for (String s1 : row) {
|
|
|
- if(s1.contains("Longitude")){
|
|
|
+ if (s1.contains("Longitude")) {
|
|
|
Longitude = CalculationUtil.getNumberFromStringForDian(s1);
|
|
|
- hashMap.put("Longitude",Longitude);
|
|
|
- }else if (s1.contains("Latitude")){
|
|
|
+ hashMap.put("Longitude", Longitude);
|
|
|
+ } else if (s1.contains("Latitude")) {
|
|
|
Latitude = CalculationUtil.getNumberFromStringForDian(s1);
|
|
|
- hashMap.put("Latitude",Latitude);
|
|
|
- }else if (s1.contains("SiteNumber")){
|
|
|
+ hashMap.put("Latitude", Latitude);
|
|
|
+ } else if (s1.contains("SiteNumber")) {
|
|
|
SiteNumber = CalculationUtil.getNumberFromString(s1);
|
|
|
- hashMap.put("SiteNumber",SiteNumber);
|
|
|
+ hashMap.put("SiteNumber", SiteNumber);
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -1108,10 +1150,10 @@ public class AnalysisDataImpl {
|
|
|
|
|
|
}
|
|
|
|
|
|
- public void emailWindTowerInfoSave(String equipmentNo){
|
|
|
+ public void emailWindTowerInfoSave(String equipmentNo) {
|
|
|
List<EmailWindTowerInfo> emailWindTowerInfoList = emailWindTowerInfoService.list();
|
|
|
List<EmailWindTowerInfo> emailWindTowerInfos = emailWindTowerInfoList.stream().filter(e -> e.getEquipmentNo().equals(equipmentNo)).collect(Collectors.toList());
|
|
|
- if(emailWindTowerInfos.size() == 0){
|
|
|
+ if (emailWindTowerInfos.size() == 0) {
|
|
|
EmailWindTowerInfo emailWindTowerInfo = new EmailWindTowerInfo();
|
|
|
emailWindTowerInfo.setId(UUID.randomUUID().toString());
|
|
|
emailWindTowerInfo.setEquipmentNo(equipmentNo);
|
|
@@ -1119,7 +1161,7 @@ public class AnalysisDataImpl {
|
|
|
|
|
|
}
|
|
|
|
|
|
- public String heightReverseOrder(HashSet<String> Height){
|
|
|
+ public String heightReverseOrder(HashSet<String> Height) {
|
|
|
StringBuilder builder = new StringBuilder();
|
|
|
List<String> wsCollect = Height.stream().map(Integer::parseInt).sorted(Comparator.reverseOrder()).map(String::valueOf).collect(Collectors.toList());
|
|
|
for (String h : wsCollect) {
|