Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/XinHuaDataManagerImpl.java =================================================================== diff -u -r30340 -r30343 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/XinHuaDataManagerImpl.java (.../XinHuaDataManagerImpl.java) (revision 30340) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/XinHuaDataManagerImpl.java (.../XinHuaDataManagerImpl.java) (revision 30343) @@ -190,13 +190,16 @@ logger.debug(String.format("开始处理清洗机数据:品牌【%s】,机器号【%s】,循环次数【%s】", brand,machineNumber,cycleCounter)); JSONObject jsObject = washDataReadAndSave(cacheFile,devInterface,null,null, enableDetailedDeviceInformation, loginUserData); if( jsObject != null){ - machineNumber = jsObject.getString("machineNumber");//机器号 - cycleCounter = jsObject.getString("cycleCounter");//循环次数 + boolean onlyRemoveReadedFile = jsObject.getBoolean("onlyRemoveReadedFile"); boolean isEnd = jsObject.getBoolean("isEnd");//清洗是否为已结束 - //更新清洗记录的温度压力数据条数 - refreshWashRecordAmounts(devInterface.getId().toString(),Long.parseLong(cycleCounter),machineNumber); + if(!onlyRemoveReadedFile){ + machineNumber = jsObject.getString("machineNumber");//机器号 + cycleCounter = jsObject.getString("cycleCounter");//循环次数 + //更新清洗记录的温度压力数据条数 + refreshWashRecordAmounts(devInterface.getId().toString(),Long.parseLong(cycleCounter),machineNumber); + } //若清洗机的清洗阶段为:已结束,则把该文件放进backUp文件夹中 - if(isEnd){ + if(isEnd || onlyRemoveReadedFile){ SmbFile desFile = session.createSmbFileObject(backUpDirURL + fileName); SmbFile readedFile = session.createSmbFileObject(readedFileDirURL + fileName); try{ @@ -403,13 +406,16 @@ throw new RuntimeException("切换目录[" + directory + "]失败"); } if( jsObject != null){ - machineNumber = jsObject.getString("machineNumber");//机器号 - cycleCounter = jsObject.getString("cycleCounter");//循环次数 - boolean isEnd = jsObject.getBoolean("isEnd");//清洗是否为已结束 - //更新清洗记录的温度压力数据条数 - refreshWashRecordAmounts(devInterface.getId().toString(),Long.parseLong(cycleCounter),machineNumber); + boolean onlyRemoveReadedFile = jsObject.optBoolean("onlyRemoveReadedFile"); + boolean isEnd = jsObject.optBoolean("isEnd");//清洗是否为已结束 + if(!onlyRemoveReadedFile){ + machineNumber = jsObject.getString("machineNumber");//机器号 + cycleCounter = jsObject.getString("cycleCounter");//循环次数 + //更新清洗记录的温度压力数据条数 + refreshWashRecordAmounts(devInterface.getId().toString(),Long.parseLong(cycleCounter),machineNumber); + } //若清洗机的灭菌阶段为:已结束,则把该文件放进backUp文件夹中 - if(isEnd){ + if(isEnd || onlyRemoveReadedFile){ try{ ftpFileManager.copyFile(fileName, ftp, ftpFileManager.getCurrentPath(ftp), backUpAbsolutePath, false); ftpFileManager.moveFile(fileName, ftp, ftpFileManager.getCurrentPath(ftp), readedAbsolutePath); @@ -863,7 +869,12 @@ //上次访问文件时读取到的最后位置 skip = sterilizerFileName.getSkip(); //若最后一次读取文件大小==当前文件大小:还没有修改 - if(MathTools.equals(lengthOfLastAccess, remoteFileLength)){ + if(MathTools.equals(lengthOfLastAccess, remoteFileLength)){ + if(StringUtils.equals(sterilizerFileName.getIsEnd(), Constants.STR_YES)){ + JSONObject reusltJson = new JSONObject(); + reusltJson.put("onlyRemoveReadedFile", true); + return reusltJson; + } return null; }//若最后一次读取文件大小>当前文件大小:有可能是文件被删除重建。从头开始读,不要跳转 else if(lengthOfLastAccess > remoteFileLength){ @@ -965,7 +976,10 @@ // 保存本次读取的文件大小,用于下次判断,在此期间,文件是否有被修改过 sterilizerFileName.setLengthOfLastAccess(remoteFileLength); sterilizerFileName.setSkip(MathTools.add(skip,fileReader.getFileTempSkip()).longValue()); - objectDao.saveOrUpdate(sterilizerFileName); + if(isEnd){ + sterilizerFileName.setIsEnd(Constants.STR_YES); + } + objectDao.saveOrUpdate(sterilizerFileName); //返回数据 JSONObject reusltJson = new JSONObject(); reusltJson.put("machineNumber", machineNumber); Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/sterilizationmanager/sterilizerrecord/SterilizerFileName.java =================================================================== diff -u -r26048 -r30343 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/sterilizationmanager/sterilizerrecord/SterilizerFileName.java (.../SterilizerFileName.java) (revision 26048) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/sterilizationmanager/sterilizerrecord/SterilizerFileName.java (.../SterilizerFileName.java) (revision 30343) @@ -12,6 +12,8 @@ import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicUpdate; +import com.forgon.Constants; + @Entity @DynamicInsert(false) @DynamicUpdate(true) @@ -34,6 +36,11 @@ * 上次访问文件时文件的大小 */ private Long lengthOfLastAccess = 0L; + + /** + * 文件是否完整 + */ + private String isEnd = Constants.STR_NO; @Id @GeneratedValue(strategy = GenerationType.AUTO) @@ -61,5 +68,10 @@ public void setLengthOfLastAccess(Long lengthOfLastAccess) { this.lengthOfLastAccess = lengthOfLastAccess; } - + public String getIsEnd() { + return isEnd; + } + public void setIsEnd(String isEnd) { + this.isEnd = isEnd; + } }