Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/JiangHanDataManagerImpl.java =================================================================== diff -u -r23336 -r25161 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/JiangHanDataManagerImpl.java (.../JiangHanDataManagerImpl.java) (revision 23336) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/JiangHanDataManagerImpl.java (.../JiangHanDataManagerImpl.java) (revision 25161) @@ -142,15 +142,18 @@ FileOfDatReader fileReader = new FileOfDatReader(); fileReader.setBeginMark("开始时间:"); fileReader.setEndMark("结束时间:"); + //集合中的每一个元素代码一组开始时间:到结束时间:的段 List> records = fileReader.getRecords(inputStream); lengthOfLastAccess = remoteFile.length(); - for (List record : records) { + for (List record : records) { //遍历每一组开始时间至结束时间,即每一炉灭菌记录 String phase = "";//当前灭菌阶段 String sterilizationDate = "";//灭菌时间 long cycleCounter = 0L;//运行次数 String dateStr = ""; SterilizerRecord sterilizerRecord=null; - for (String re : record) { + //是否终止本炉灭菌接口的匹配 + boolean needEndCurrentRecord = false; + for (String re : record) { //遍历每一炉灭菌记录的每一行 String[] split = re.split(" "); int len = split.length; switch(len){ @@ -168,6 +171,14 @@ break; } case 4 :{//压力值为正数的时候 + if(split[1].startsWith("程序模式:")){ + String programeModeValue = split[1].replace("程序模式:", ""); + if(StringUtils.equals(programeModeValue, "检漏")){ + //终止本次的record记录(即该炉灭菌记录) + needEndCurrentRecord = true; + break; + } + } if("运行次数:".equals(split[2])){ cycleCounter = Long.parseLong(split[3]); } @@ -184,22 +195,28 @@ } break; } - case 5 :{//压力值为负数的时候 - if(ForgonDateUtils.isDate(dateStr+" "+split[0])){//判断第一条是否为时间,如果是,则表示为数据行 - sterilizerRecord = new SterilizerRecord(); - sterilizerRecord.setTime(dateStr+" "+split[0]); - sterilizerRecord.setT1Temp(split[1]);//温度 - sterilizerRecord.setP1Mbar(split[2]+split[3]+split[4]);//压力 - sterilizerRecord.setCycleCounter(cycleCounter); - sterilizerRecord.setDeviceInterfaceID(devInterface.getId().toString()); - sterilizerRecord.setMachineNo(machineNo); - sterilizerRecord.setPhase(phase); - objectDao.saveOrUpdate(sterilizerRecord); - } - break; - } - } - } + case 5 :{//压力值为负数的时候 + if(ForgonDateUtils.isDate(dateStr+" "+split[0])){//判断第一条是否为时间,如果是,则表示为数据行 + sterilizerRecord = new SterilizerRecord(); + sterilizerRecord.setTime(dateStr+" "+split[0]); + sterilizerRecord.setT1Temp(split[1]);//温度 + sterilizerRecord.setP1Mbar(split[2]+split[3]+split[4]);//压力 + sterilizerRecord.setCycleCounter(cycleCounter); + sterilizerRecord.setDeviceInterfaceID(devInterface.getId().toString()); + sterilizerRecord.setMachineNo(machineNo); + sterilizerRecord.setPhase(phase); + objectDao.saveOrUpdate(sterilizerRecord); + } + break; + } + } + if(needEndCurrentRecord){ + break; + } + } + if(needEndCurrentRecord){ + break; + } refreshSterilizaerRecordAmounts(devInterface.getId().toString(),cycleCounter,machineNo); } // 保存上次读取的文件大小,用于下次判断,在此期间,文件是否有被修改过 Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/FileOfDatReader.java =================================================================== diff -u -r23067 -r25161 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/FileOfDatReader.java (.../FileOfDatReader.java) (revision 23067) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/FileOfDatReader.java (.../FileOfDatReader.java) (revision 25161) @@ -7,13 +7,16 @@ import java.util.List; import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; /** * * @author niutouren 2018-04-16 * 从一个input Stream中读取记录(清洗或者灭菌) */ public class FileOfDatReader { + + private Logger logger = Logger.getLogger(getClass()); private long fileTempSkip = 0L; private long readLength = 0L; @@ -89,7 +92,7 @@ String readLine = null; while(true){ readLine = readLine(inputStream); -// System.out.println(readLine+" : "+lineNum++); + logger.debug(readLine+" : " + (lineNum++)); if(readLine != null){ switch(getLineStatus(readLine)){ case RECORD_START: @@ -148,6 +151,7 @@ while(true){ try { if(inputStream.read(readBuffer) != -1){ + logger.debug("读取行数readCount=" + readCount); readCount++; ByteStatus status = filterByte(readBuffer); switch(status){