Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/ChangLongDataManagerImpl.java =================================================================== diff -u -r40609 -r40620 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/ChangLongDataManagerImpl.java (.../ChangLongDataManagerImpl.java) (revision 40609) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/ChangLongDataManagerImpl.java (.../ChangLongDataManagerImpl.java) (revision 40620) @@ -3,6 +3,7 @@ import java.io.BufferedReader; import java.io.File; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -14,11 +15,11 @@ import com.forgon.disinfectsystem.filemanager.CommonFileManager; import com.forgon.disinfectsystem.filemanager.FtpFileManager; +import com.forgon.tools.FileSystemHelper; import com.forgon.tools.date.DateTools; import com.forgon.tools.db.DatabaseUtil; import jcifs.smb.SmbFile; -import jcifs.smb.SmbFileInputStream; - +import org.apache.commons.io.output.ByteArrayOutputStream; import org.apache.commons.lang3.StringUtils; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; @@ -256,7 +257,7 @@ )){ continue ; } - String cycleCounter = washDataReadAndSave(smbForm,devInterface, enableDetailedDeviceInformation, loginUserData); + String cycleCounter = washDataReadAndSave(smbForm,devInterface, remoteType, ftp, name, enableDetailedDeviceInformation, loginUserData); if( cycleCounter != null){ readedFileAmount++; } @@ -306,13 +307,21 @@ /** * 长龙清洗机数据处理 */ - public String washDataReadAndSave(SmbFile remoteFile,DeviceInterface deviceInterface, boolean enableDetailedDeviceInformation, LoginUserData loginUserData){ + public String washDataReadAndSave(SmbFile remoteFile, + DeviceInterface devInterface, String remoteType, FTPClient ftp, String fileName, boolean enableDetailedDeviceInformation, LoginUserData loginUserData){ BufferedReader br = null; + InputStream inputStream = null; + ByteArrayOutputStream out = null; + InputStreamReader isr = null; String cycleCounter = ""; try{ - br = new BufferedReader(new InputStreamReader( - new SmbFileInputStream(remoteFile))); - String machineNumber = getMachineNo(remoteFile.getName()); + inputStream = commonFileManager.getInputStream(remoteType, ftp, fileName, remoteFile, out); + isr = new InputStreamReader(inputStream,"GBK"); + br = new BufferedReader(isr); + if(StringUtils.isBlank(fileName) && remoteFile != null){ + fileName = remoteFile.getName(); + } + String machineNumber = getMachineNo(fileName); String line = null; boolean isFirstLine = false; boolean fileError = false; @@ -362,10 +371,10 @@ } if(!fileError && washData != null){ washData.setMachineNo(machineNumber); - washData.setDeviceInterfaceID(deviceInterface.getId()); + washData.setDeviceInterfaceID(devInterface.getId()); cycleCounter = washData.getCycleCounter().toString(); if(DatabaseUtil.isPoIdValid(cycleCounter) && washData.getCompletedDate() != null){ - Long washAndDisinfectRecordId = washAndDisinfectRecordManager.refreshWashRecordAmounts(deviceInterface, washData.getCycleCounter(), machineNumber, washData.getCompletedDate(), (long) washData.getWashDataItems().size(), WashAndDisinfectRecord.WASHDATATYPE_STERIS_CHANGLONG); + Long washAndDisinfectRecordId = washAndDisinfectRecordManager.refreshWashRecordAmounts(devInterface, washData.getCycleCounter(), machineNumber, washData.getCompletedDate(), (long) washData.getWashDataItems().size(), WashAndDisinfectRecord.WASHDATATYPE_STERIS_CHANGLONG); if(DatabaseUtil.isPoIdValid(washAndDisinfectRecordId)){ washData.setWashAndDisinfectRecordId(washAndDisinfectRecordId); } @@ -382,11 +391,7 @@ appLogManager.saveLog(loginUserData, Log.MODEL_DEVICE_INTERFACE, Log.TYPE_ADD, "设备接口文件处理中,解析参数错误," + e.getMessage()); } }finally{ - try { - br.close(); - } catch (IOException e) { - e.printStackTrace(); - } + FileSystemHelper.closeInputStream(inputStream, br, isr, out); } return cycleCounter; }