Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/GetingeDataManagerImpl.java =================================================================== diff -u -r41159 -r41265 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/GetingeDataManagerImpl.java (.../GetingeDataManagerImpl.java) (revision 41159) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/GetingeDataManagerImpl.java (.../GetingeDataManagerImpl.java) (revision 41265) @@ -6,6 +6,8 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.file.Files; +import java.nio.file.Path; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; @@ -19,7 +21,7 @@ import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.CommonWashDataDetails; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.CommonWashDataRecord; -import com.forgon.exception.SystemException; + import jcifs.smb.SmbFile; import jcifs.smb.SmbFileInputStream; import net.sf.json.JSONArray; @@ -596,13 +598,10 @@ ByteArrayOutputStream out = null; InputStreamReader isr = null; - BufferedReader br = null; + Path tempFile = null; try{ //决定灭菌炉数据,采用哪种匹配模式 ,默认为循环次数,针对中六增加了开始时间 boolean sterilizaMatchPatternForDate = CssdUtils.getSystemSetConfigByNameBool("sterilizaMatchPatternForDate", false); - inputStream = commonFileManager.getInputStream(remoteType, ftp, fileName, remoteFile, out); - isr = new InputStreamReader(inputStream,"GBK"); - br = new BufferedReader(isr); String cycleCounter = null; String phase = null; String spaceTime = null; @@ -615,58 +614,65 @@ Long sterilizationRecordId = null; GtCommonSterilizerRecord gtRecord = new GtCommonSterilizerRecord(); gtRecord.setMachineNumber(machineNumber); - + tempFile = commonFileManager.getTempFile(remoteType, ftp, fileName, remoteFile); + // 获取文件编码 + String detectedEncoding = commonFileManager.getDetectedEncoding(tempFile); List details = new ArrayList(); String line = null; - while((line = br.readLine()) != null){ - if(StringUtils.isBlank(line)){ - continue; - } - // PROCCYCLE 循环次数 - if( line.contains("") && line.contains("")) - { - cycleCounter = getValueByKey(line,"PROCCYCLE"); - gtRecord.setCycles(Long.valueOf(cycleCounter)); - }else if(line.contains("") && line.contains("")){ - phase = getValueByKey(line,"PHASE"); - }else if( line.contains("") && line.contains("")) - { - String timeStr = getValueByKey(line,"PROCSTARTTIME"); - startDate = gedDate(timeStr); - if(isExistDataForGetingeCommon(startDate, machineNumber)){ - break; + try (InputStream finalStream = Files.newInputStream(tempFile); + InputStreamReader reader = new InputStreamReader(finalStream, detectedEncoding); + BufferedReader br = new BufferedReader(reader)) { + while((line = br.readLine()) != null){ + if(StringUtils.isBlank(line)){ + continue; } - String beginStartTimeStr = null; - String endStartTimeStr = null; - if(sterilizaMatchPatternForDate || !DeviceInterface.PARAMATCHINGMETHOD_CYCLECOUNTER.equals(devInterface.getParaMatchingMethod())){ - Date beginStartTime = new Date(startDate.getTime() - 10*60*1000); - Date endStartTime = new Date(startDate.getTime() + 10*60*1000); - beginStartTimeStr = ForgonDateUtils.safelyFormatDate(beginStartTime,ForgonDateUtils.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS,""); - endStartTimeStr = ForgonDateUtils.safelyFormatDate(endStartTime,ForgonDateUtils.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS,""); + // PROCCYCLE 循环次数 + if( line.contains("") && line.contains("")) + { + cycleCounter = getValueByKey(line,"PROCCYCLE"); + gtRecord.setCycles(Long.valueOf(cycleCounter)); + }else if(line.contains("") && line.contains("")){ + phase = getValueByKey(line,"PHASE"); + System.out.println(phase); + }else if( line.contains("") && line.contains("")) + { + String timeStr = getValueByKey(line,"PROCSTARTTIME"); + startDate = gedDate(timeStr); + if(isExistDataForGetingeCommon(startDate, machineNumber)){ + break; + } + String beginStartTimeStr = null; + String endStartTimeStr = null; + if(sterilizaMatchPatternForDate || !DeviceInterface.PARAMATCHINGMETHOD_CYCLECOUNTER.equals(devInterface.getParaMatchingMethod())){ + Date beginStartTime = new Date(startDate.getTime() - 10*60*1000); + Date endStartTime = new Date(startDate.getTime() + 10*60*1000); + beginStartTimeStr = ForgonDateUtils.safelyFormatDate(beginStartTime,ForgonDateUtils.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS,""); + endStartTimeStr = ForgonDateUtils.safelyFormatDate(endStartTime,ForgonDateUtils.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS,""); + } + sterilizationRecordId = sterilizationRecordManager.findMatchingSterilizationRecordId(beginStartTimeStr, endStartTimeStr, devInterface.getId(), cycleCounter, machineNumber); + if(enableDetailedDeviceInformation){ + appLogManager.saveLog(loginUserData, Log.MODEL_DEVICE_INTERFACE, Log.TYPE_QUERY, String.format("开始时间[%s],机器号[%s],循环次数 [%s],需要更新温度压力数据的灭菌记录id[%s]",beginStartTimeStr,machineNumber,cycleCounter,sterilizationRecordId)); + } + if(!DatabaseUtil.isPoIdValid(sterilizationRecordId)){ + return; + } + gtRecord.setStartDate(startDate); + }else if( line.contains("") && line.contains("") ) + { + tTemperature = Double.valueOf(getValueByKey(line,"CT")); + }else if(line.contains("") && line.contains("")){ + Double p1Bar = Double.valueOf(getValueByKey(line,"CP")); + GtCommonStageDetails detail = new GtCommonStageDetails(); + detail.setStageNo(phase); + endDate = commonFileManager.getTimeAfterAddingTime(startDate, spaceTime, calendar); + detail.setTime(endDate); + detail.setT1Temp(tTemperature); + detail.setP1Mbar(p1Bar); + detail.setGtCommonSterilizerRecord(gtRecord); + details.add(detail); + }else if(line.contains("")){ + spaceTime = getValueByKey(line,"TIME"); } - sterilizationRecordId = sterilizationRecordManager.findMatchingSterilizationRecordId(beginStartTimeStr, endStartTimeStr, devInterface.getId(), cycleCounter, machineNumber); - if(enableDetailedDeviceInformation){ - appLogManager.saveLog(loginUserData, Log.MODEL_DEVICE_INTERFACE, Log.TYPE_QUERY, String.format("开始时间[%s],机器号[%s],循环次数 [%s],需要更新温度压力数据的灭菌记录id[%s]",beginStartTimeStr,machineNumber,cycleCounter,sterilizationRecordId)); - } - if(!DatabaseUtil.isPoIdValid(sterilizationRecordId)){ - return; - } - gtRecord.setStartDate(startDate); - }else if( line.contains("") && line.contains("") ) - { - tTemperature = Double.valueOf(getValueByKey(line,"CT")); - }else if(line.contains("") && line.contains("")){ - Double p1Bar = Double.valueOf(getValueByKey(line,"CP")); - GtCommonStageDetails detail = new GtCommonStageDetails(); - detail.setStageNo(phase); - endDate = commonFileManager.getTimeAfterAddingTime(startDate, spaceTime, calendar); - detail.setTime(endDate); - detail.setT1Temp(tTemperature); - detail.setP1Mbar(p1Bar); - detail.setGtCommonSterilizerRecord(gtRecord); - details.add(detail); - }else if(line.contains("")){ - spaceTime = getValueByKey(line,"TIME"); } } if(StringUtils.isBlank(cycleCounter) || details.size() == 0 || !DatabaseUtil.isPoIdValid(sterilizationRecordId)) @@ -691,7 +697,8 @@ appLogManager.saveLog(loginUserData, Log.MODEL_DEVICE_INTERFACE, Log.TYPE_ADD, devInterface.getName() + "设备接口连接异常," + e.getMessage()); } }finally{ - FileSystemHelper.closeInputStream(inputStream, br, isr, out); + commonFileManager.deleteTempFile(tempFile); + FileSystemHelper.closeInputStream(inputStream, null, isr, out); } }