Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/GetingeDataManagerImpl.java =================================================================== diff -u -r37617 -r38873 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/GetingeDataManagerImpl.java (.../GetingeDataManagerImpl.java) (revision 37617) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/GetingeDataManagerImpl.java (.../GetingeDataManagerImpl.java) (revision 38873) @@ -1044,13 +1044,20 @@ } if(line.contains("DATE")){//日期 skipCycle = false; + sbd.setLength(0); sbd.append(line.substring(line.indexOf(":") + 1).trim()).append(" "); }else if(line.contains("PROCESS START")){//时间 sbd.append(line.substring(line.indexOf(":") + 1).trim()); thisStartDate = sdf.parse(sbd.toString()); sbd.setLength(0); }else if(line.contains("MACHINE NAME")){//机器号 + if(thisStartDate == null){ + continue; + } String machineNumbe = line.substring(line.indexOf(":") + 1).trim(); + if(StringUtils.isBlank(machineNumbe)){ + continue; + } if(isExistDataForHsOne(machineNumbe, thisStartDate)){ skipCycle = true; oneOfGetingeSterilizerRecord = null; @@ -1060,6 +1067,9 @@ oneOfGetingeSterilizerRecord.setStartDate(thisStartDate); oneOfGetingeSterilizerRecord.setMachineNumber(machineNumbe); }else if(line.contains("CYCLE COUNTER")){ + if(oneOfGetingeSterilizerRecord == null){ + continue; + } Long cycleCounter = Long.valueOf(line.substring(line.indexOf(":") + 1).trim()); if(oneOfGetingeSterilizerRecord.getCycleCounter() != null){ message.setLength(0); @@ -1074,24 +1084,48 @@ } oneOfGetingeSterilizerRecord.setCycleCounter(cycleCounter); }else if(line.contains("NEG. PULSE")){//负脉冲次数 + if(oneOfGetingeSterilizerRecord == null){ + continue; + } oneOfGetingeSterilizerRecord.setNegPulse(Integer.valueOf(line.substring(line.indexOf("SE") + 3).trim())); }else if(line.contains("POS. PULSE")){//正脉冲次数 + if(oneOfGetingeSterilizerRecord == null){ + continue; + } oneOfGetingeSterilizerRecord.setPosPulse(Integer.valueOf(line.substring(line.indexOf("SE") + 3).trim())); }else if(line.contains("DRYING TIME")){ + if(oneOfGetingeSterilizerRecord == null){ + continue; + } oneOfGetingeSterilizerRecord.setDryingTime(line.substring(line.indexOf("E") + 1).trim()); }else if(line.contains("DRYING AIRPULS") && line.contains(":")){ + if(oneOfGetingeSterilizerRecord == null){ + continue; + } oneOfGetingeSterilizerRecord.setDryingAirpuls(line.substring(line.indexOf("S") + 1).trim()); }else if(line.contains("DRYING STEAMPULS")){ + if(oneOfGetingeSterilizerRecord == null){ + continue; + } oneOfGetingeSterilizerRecord.setDryingSteampuls(line.substring(line.indexOf("LS") + 2).trim()); }else if(line.contains("STERILIZING TEMP")){ + if(oneOfGetingeSterilizerRecord == null){ + continue; + } line = line.trim(); oneOfGetingeSterilizerRecord.setSterilizingTemp(Double.valueOf(line.substring(line.indexOf("P") + 1,line.length() - 1).trim())); }else if(line.contains("STERILIZING TIME")){ + if(oneOfGetingeSterilizerRecord == null){ + continue; + } oneOfGetingeSterilizerRecord.setSterilizingTime(line.substring(line.indexOf("ME") + 2).trim()); }else if(line.contains("PROGRAM")){//程序 + if(oneOfGetingeSterilizerRecord == null){ + continue; + } oneOfGetingeSterilizerRecord.setProgramName(line.substring(line.indexOf(":") + 1).trim()); startStageDetails = true; - }else if(startStageDetails){//阶段详情 + }else if(startStageDetails && oneOfGetingeSterilizerRecord != null){//阶段详情 if(line.contains("START")){//程序的下一个START是阶段详情开始 sbd.append("开始"); continue; Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/Getinge86SeriesDataManagerImpl.java =================================================================== diff -u -r35645 -r38873 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/Getinge86SeriesDataManagerImpl.java (.../Getinge86SeriesDataManagerImpl.java) (revision 35645) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/Getinge86SeriesDataManagerImpl.java (.../Getinge86SeriesDataManagerImpl.java) (revision 38873) @@ -396,10 +396,7 @@ inputStream = commonFileManager.getInputStream(remoteType, ftp, fileName, remoteFile, fos); String cycleCounter = null; // 读取直到最后一行 - WashDataOfGeting record = new WashDataOfGeting(); - record.setDeviceInterfaceID(devInterface.getId().toString()); - List washDataOfGetingItems = new ArrayList(); - WashDataItemOfGeting item = new WashDataItemOfGeting(); + WashDataOfGeting record = null; String startTime = ""; boolean isParameters = false; boolean isTemp = false; @@ -408,12 +405,14 @@ isr = new InputStreamReader(inputStream,"utf-8"); br = new BufferedReader(isr); String line = null; + String program = null; + Date startDate = null; while((line = br.readLine()) != null){ if(StringUtils.isBlank(line) || line.contains("-----------------------")){ continue; } if(line.contains("PROGRAM:")){ - record.setProgram(line.replace("PROGRAM:", "").trim()); + program = line.replace("PROGRAM:", "").trim(); }else if(line.contains("DATE")){ if(line.contains("PROCESS START:")){ startTime = line.substring(line.lastIndexOf("DATE"), line.lastIndexOf("PROCESS START:")).replaceAll("DATE", "").replace(":", "").trim(); @@ -422,29 +421,50 @@ } if(line.contains("PROCESS START:")){ startTime += " " + line.substring(line.lastIndexOf("PROCESS START:"), line.lastIndexOf("MACHINE NAME")).replaceAll("PROCESS START:", " ").trim(); - record.setStartTime(DateTools.coverStrToDate(startTime, "yyyy/MM/dd HH:mm:ss")); + startDate = DateTools.coverStrToDate(startTime, "yyyy/MM/dd HH:mm:ss"); startTime = ""; } if(line.contains("MACHINE NAME")){ String machineName = line.substring(line.lastIndexOf("MACHINE NAME"), line.lastIndexOf("MACHINE ID")).replaceAll("MACHINE NAME", " ").replace("-", "").replace(":", "").trim(); + record = new WashDataOfGeting(); record.setMachineNo(machineName); + record.setProgram(program); + record.setDeviceInterfaceID(devInterface.getId().toString()); + List washDataOfGetingItems = new ArrayList(); + record.setWashDataItems(washDataOfGetingItems); + record.setStartTime(startDate); } + if(record == null){ + continue; + } if(line.contains("MACHINE ID")){ String machineID = line.substring(line.lastIndexOf("MACHINE ID")).replaceAll("MACHINE ID", "").replace(":", "").trim(); record.setMachineID(machineID); } }else if(line.contains("PROCESS START:")){ startTime += line.replace("PROCESS START:", " "); - record.setStartTime(DateTools.coverStrToDate(startTime, "dd/MM/yyyy HH:mm:ss")); + startDate = DateTools.coverStrToDate(startTime, "dd/MM/yyyy HH:mm:ss"); startTime = ""; }else if(line.contains("MACHINE NAME")){ String machineName = line.replace("MACHINE NAME", "").replace(":", "").trim(); + record = new WashDataOfGeting(); record.setMachineNo(machineName); + record.setProgram(program); + record.setDeviceInterfaceID(devInterface.getId().toString()); + List washDataOfGetingItems = new ArrayList(); + record.setWashDataItems(washDataOfGetingItems); + record.setStartTime(startDate); }else if(line.contains("MACHINE ID")){ String machineID = line.replace("MACHINE ID", "").replace(":", "").trim(); + if(record == null){ + continue; + } record.setMachineID(machineID); }else if(line.contains("CYCLE COUNTER")){ cycleCounter = line.replace("CYCLE COUNTER", "").replace(":", "").trim(); + if(record == null){ + continue; + } Long cycleCounter1 = Long.valueOf(cycleCounter); record.setCycleCounter(cycleCounter1); }else if(line.contains("PARAMETERS")){ @@ -456,17 +476,23 @@ String value = line.substring(16).trim(); String key = line.replace(value, "").trim(); key = translateWashDataPrams(key); + if(record == null){ + continue; + } String orgParameters = record.getParameters() == null ? "" : record.getParameters(); record.setParameters(StringTools.uniteTwoStringBySemicolon(orgParameters, key+">>"+value, ";")); }else if(line.contains("AI07")){ isTemp = true; }else if(line.contains("SIGNATURE:")){ + if(record == null){ + continue; + } if(record.getStartTime() == null){ continue; } isTemp = false; isParameters = false; - String endTimeStr = washDataOfGetingItems.get(washDataOfGetingItems.size()-1).getProcessTime(); + String endTimeStr = record.getWashDataItems().get(record.getWashDataItems().size()-1).getProcessTime(); String[] timeArr = endTimeStr.split(":"); long hour = Long.parseLong(timeArr[0]); long minute = Long.parseLong(timeArr[1]); @@ -475,29 +501,25 @@ Date endTime = new Date(); endTime.setTime(record.getStartTime().getTime() + time); record.setEndTime(endTime); - if(!isSaved(record)){ - objectDao.saveOrUpdate(record); - objectDao.batchSaveOrUpdate(washDataOfGetingItems); - record.setWashDataItems(washDataOfGetingItems); - washDataOfGetingList.add(record); - } - record = new WashDataOfGeting(); - record.setDeviceInterfaceID(devInterface.getId().toString()); - washDataOfGetingItems = new ArrayList(); + washDataOfGetingList.add(record); }else if(isTemp){ + if(record == null){ + continue; + } if(line.length() >= 8){ String timeStr = line.substring(0,8).trim(); + WashDataItemOfGeting item = new WashDataItemOfGeting(); if(timeStr.matches(regex)){ - if(StringUtils.isBlank(processOfTemp) && CollectionUtils.isNotEmpty(washDataOfGetingItems)){ - processOfTemp = washDataOfGetingItems.get(washDataOfGetingItems.size()-1).getProcess(); + if(StringUtils.isBlank(processOfTemp) && CollectionUtils.isNotEmpty(record.getWashDataItems())){ + processOfTemp = record.getWashDataItems().get(record.getWashDataItems().size()-1).getProcess(); } if(!StringUtils.isBlank(processOfTemp)){ item.setProcessTime(timeStr); item.setTemp(line.replace(timeStr, "").trim()); item.setProcess(processOfTemp); processOfTemp = null; item.setWashDataOfGeting(record); - washDataOfGetingItems.add(item); + record.getWashDataItems().add(item); item = new WashDataItemOfGeting(); } }else if(line.length() >= 32 && line.substring(24,32).trim().matches(regex)){ @@ -509,7 +531,7 @@ item.setProcess(processOfTemp); processOfTemp = null; item.setWashDataOfGeting(record); - washDataOfGetingItems.add(item); + record.getWashDataItems().add(item); item = new WashDataItemOfGeting(); } }else{ @@ -528,6 +550,11 @@ // 没有读到循环次数,是无效数据 return null; } + for (WashDataOfGeting washDataOfGeting : washDataOfGetingList) { + if(!isSaved(washDataOfGeting)){ + objectDao.save(washDataOfGeting); + } + } return washDataOfGetingList; } catch (Exception e) { e.printStackTrace();