Index: build.gradle =================================================================== diff -u -r25367 -r25399 --- build.gradle (.../build.gradle) (revision 25367) +++ build.gradle (.../build.gradle) (revision 25399) @@ -420,12 +420,17 @@ compile group: 'dom4j', name: 'dom4j', version:'1.6.1' compile group: 'jaxen', name: 'jaxen', version:'1.1.6' - + //-----------smb协议远程操作文件包:解决连接数不足----------------------------- + compile group: 'org.springframework.integration', name: 'spring-integration-smb', version: '1.0.0.RELEASE' + compile group: 'org.springframework.integration', name: 'spring-integration-file', version: '5.0.4.RELEASE' + compile group: 'org.springframework.integration', name: 'spring-integration-stream', version: '5.0.4.RELEASE' + compile group: 'org.codelibs', name: 'jcifs', version: '1.3.18.3' + //-----------smb协议远程操作文件包:解决连接数不足----------------------------- compile group: 'jcifs', name: 'jcifs', version:'1.3.17' compile group: 'org.jmesa', name: 'jmesa', version:'2.5.2' compile group: 'forgon', name: 'jmesatable', version:'1.0.10' - + compile group: 'org.jsoup', name: 'jsoup', version: '1.11.3' compile group: 'com.belerweb', name: 'pinyin4j', version:'2.5.0' compile group: 'com.alibaba', name: 'fastjson', version:'1.1.41' Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/JiangHanDataManagerImpl.java =================================================================== diff -u -r25161 -r25399 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/JiangHanDataManagerImpl.java (.../JiangHanDataManagerImpl.java) (revision 25161) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/JiangHanDataManagerImpl.java (.../JiangHanDataManagerImpl.java) (revision 25399) @@ -5,14 +5,11 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.net.MalformedURLException; import java.text.DateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; -import jcifs.smb.NtlmPasswordAuthentication; -import jcifs.smb.SmbException; import jcifs.smb.SmbFile; import jcifs.smb.SmbFileInputStream; import net.sf.json.JSONArray; @@ -22,28 +19,24 @@ import org.apache.log4j.Logger; import org.hibernate.Query; import org.hibernate.Session; +import org.springframework.integration.smb.session.SmbSession; +import org.springframework.integration.smb.session.SmbShare; import com.forgon.directory.acegi.tools.AcegiHelper; -import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.action.SupplyRoomConfigAction; import com.forgon.disinfectsystem.entity.basedatamanager.deviceinterface.DeviceInterface; import com.forgon.disinfectsystem.entity.basedatamanager.deviceinterface.JiangHanDatFileDetail; import com.forgon.disinfectsystem.entity.basedatamanager.rinser.Rinser; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizerrecord.SterilizerRecord; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.WashData; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord; -import com.forgon.disinfectsystem.maintain.device.service.DeviceDataManager; import com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.service.SterilizationRecordManager; import com.forgon.disinfectsystem.washanddisinfectmanager.washanddisinfectrecord.service.WashAndDisinfectRecordManager; import com.forgon.log.model.Log; import com.forgon.log.service.LogManager; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.util.ForgonDateUtils; -import com.forgon.util.StringUtil; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - /** * * @author niutouren 2018-04-16 @@ -92,18 +85,20 @@ { return ; } - - NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication( - devInterface.getIP(), devInterface.getUserName(), devInterface.getPassword()); - + SmbSession session = null; + String ip = devInterface.getIP(); + String directory = devInterface.getFolderPath(); + String userName = devInterface.getUserName(); + String pwd = devInterface.getPassword(); // "smb://192.168.2.18/Share/1234556.dat" - String shareURL = "smb://" + devInterface.getIP() + "/" + - devInterface.getFolderPath() + "/"+devInterface.getDeviceId()+".dat"; + String shareURL = "//" + devInterface.getIP() + "/" + + devInterface.getFolderPath() + "/" + devInterface.getDeviceId() + ".dat"; try { - SmbFile file = new SmbFile(shareURL, auth); - - if(file.exists()){ - String fileName = devInterface.getDeviceId(); + SmbShare share = new SmbShare("smb://" + userName + ":" + pwd + "@" + ip + "/" + directory +"/"); + session = new SmbSession(share); + SmbFile file = session.createSmbFileObject(shareURL); + if(session.exists(shareURL)){ + String fileName = devInterface.getDeviceId(); JiangHanDatFileDetail datFileDetail = getJiangHanDatFileDetail(fileName); if( datFileDetail == null){ return ; @@ -115,11 +110,13 @@ }else if( JiangHanDatFileDetail.MACHINE_TYPE_STERILIZER.equals(type)){ sterilizationDataReadAndSave(file,devInterface,datFileDetail,machineNo); } - } + } }catch (IOException e) { e.printStackTrace(); logger.warn(e.getMessage()); appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_DEVICE_INTERFACE, Log.TYPE_ADD, "设备接口连接异常," + e.getMessage()); + }finally{ + session.close(); } } Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/DeviceDataManager.java =================================================================== diff -u -r13821 -r25399 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/DeviceDataManager.java (.../DeviceDataManager.java) (revision 13821) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/DeviceDataManager.java (.../DeviceDataManager.java) (revision 25399) @@ -7,6 +7,12 @@ * */ public interface DeviceDataManager { + /** + * 从接口读取数据和存入数据库 + */ public void readAndSaveRecord(DeviceInterface devInteface,String machineNo,String brand,String isAutoCompleteSterilization); + /** + * 数据处理结束之后的工作,移动文件夹等等 + */ public void end(); } Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/XinHuaDataManagerImpl.java =================================================================== diff -u -r24875 -r25399 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/XinHuaDataManagerImpl.java (.../XinHuaDataManagerImpl.java) (revision 24875) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/XinHuaDataManagerImpl.java (.../XinHuaDataManagerImpl.java) (revision 25399) @@ -9,7 +9,6 @@ import java.util.Date; import java.util.List; -import jcifs.smb.NtlmPasswordAuthentication; import jcifs.smb.SmbFile; import jcifs.smb.SmbFileInputStream; import net.sf.json.JSONArray; @@ -20,11 +19,12 @@ import org.apache.log4j.Logger; import org.hibernate.Query; import org.hibernate.Session; +import org.springframework.integration.smb.session.SmbSession; +import org.springframework.integration.smb.session.SmbShare; import com.forgon.Constants; import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.acegi.tools.AcegiHelper; -import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.entity.basedatamanager.deviceinterface.DeviceInterface; import com.forgon.disinfectsystem.entity.basedatamanager.rinser.Rinser; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; @@ -89,41 +89,42 @@ @Override public void readAndSaveRecord(DeviceInterface devInterface,String machineNo,String brand,String isAutoCompleteSterilization) { - if(devInterface == null){ - logger.debug(".......devInterface是空的"); + if(devInterface == null || StringUtils.isBlank(machineNo)){ + logger.debug(".......devInterface或机器号是空的"); return ; } + SmbSession session = null; + String ip = devInterface.getIP(); + String directory = devInterface.getFolderPath(); + String userName = devInterface.getUserName(); + String pwd = devInterface.getPassword(); + String rootURL = "//" +ip +"/" + directory + "/"; try { - NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication( - devInterface.getIP(), devInterface.getUserName(), devInterface.getPassword()); - logger.debug("设备IP===="+devInterface.getIP()); - logger.debug("用户名===="+devInterface.getUserName()); - logger.debug("密码===="+devInterface.getPassword()); + logger.debug("设备IP===="+ip); + logger.debug("用户名===="+userName); + logger.debug("密码===="+pwd); // smbFileName格式 "smb://192.168.2.18/Share/c.csv" // 获取到名字,判断是清洗机还是灭菌炉,再调用相关的函数处理 //"smb://192.168.2.18/Share/" - String shareURL = "smb://" + devInterface.getIP() + "/" + devInterface.getFolderPath() + "/"; - logger.debug("shareURL====="+shareURL); - String backUpDirURL = shareURL + "backUp" + "/"; - SmbFile backUpDir = new SmbFile(backUpDirURL,auth); - if( !backUpDir.exists() ) - { - logger.debug("创建文件夹..."); - backUpDir.mkdirs(); + logger.debug("shareURL====="+"smb://" + userName +":"+ pwd +"@"+ ip +"/"+ directory +"/"); + SmbShare share = new SmbShare("smb://" + userName + ":" + pwd + "@" + ip + "/"+ directory + "/"); + session = new SmbSession(share); + String backUpDirURL = rootURL + "backUp/"; + if(!session.exists(backUpDirURL)){ + logger.debug("创建文件夹..."); + session.mkdir(backUpDirURL); } - SmbFile remoteFile = new SmbFile(shareURL, auth); - for(SmbFile file : remoteFile.listFiles()){ - String fileName = file.getName(); - if( objectDao.getByProperty(SterilizerFileName.class.getSimpleName(), "fileName", fileName)!=null){ - logger.debug(fileName+"该文件已经解析过"); - continue; - } - // 只处理.txt文件 + for (String fileName : share.list()){ + // 只处理.txt文件 if ( !(fileName.endsWith("txt") || fileName.endsWith("TXT"))){ logger.debug("只处理.txt文件->continue"); continue; } - JSONObject machineData = getMachineNo(fileName); + if( objectDao.getByProperty(SterilizerFileName.class.getSimpleName(), "fileName", fileName)!=null){ + logger.debug(fileName+"该文件已经解析过"); + continue; + } + JSONObject machineData = getMachineNo(fileName); if(machineData == null){ appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_DEVICE_INTERFACE, Log.TYPE_QUERY, fileName + "文件名格式有误"); continue; @@ -138,11 +139,15 @@ logger.debug("机器号不对->continue="+machineNo); continue ; } + SmbFile file = session.createSmbFileObject(rootURL + fileName); + if(file.isDirectory()){ + continue; + } + String cycleCounter = null; // 灭菌炉数据处理 JSONArray jsArray = sterilizerDataReadAndSave(file,devInterface); - if( jsArray != null) - { + if( jsArray != null){ machineNumber = (String)jsArray.get(0); cycleCounter = (String)jsArray.get(1); @@ -152,7 +157,7 @@ } refreshSterilizaerRecordAmounts(devInterface.getId().toString(),Long.parseLong(cycleCounter),machineNumber); } - SmbFile desFile = new SmbFile(backUpDirURL + fileName,auth); + SmbFile desFile = session.createSmbFileObject(backUpDirURL + fileName); try{ file.copyTo(desFile); file.delete(); @@ -163,12 +168,15 @@ objectDao.save(sf); logger.debug(fileName+"文件在移动和删除过程中发生错误"); } - } + } + } catch (IOException e) { // 捕获BufferedReader对象关闭时的异常 logger.warn(e.getMessage()); e.printStackTrace(); appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_DEVICE_INTERFACE, Log.TYPE_ADD, "设备接口连接异常," + e.getMessage()); + } finally{ + session.close(); } } Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/ChangLongDataManagerImpl.java =================================================================== diff -u -r23559 -r25399 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/ChangLongDataManagerImpl.java (.../ChangLongDataManagerImpl.java) (revision 23559) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/ChangLongDataManagerImpl.java (.../ChangLongDataManagerImpl.java) (revision 25399) @@ -1,34 +1,30 @@ package com.forgon.disinfectsystem.maintain.device.service; import java.io.BufferedReader; -import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; -import jcifs.smb.NtlmPasswordAuthentication; import jcifs.smb.SmbFile; import jcifs.smb.SmbFileInputStream; -import net.sf.json.JSONArray; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.hibernate.Query; import org.hibernate.Session; +import org.springframework.integration.smb.session.SmbSession; +import org.springframework.integration.smb.session.SmbShare; import org.springframework.stereotype.Service; import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.disinfectsystem.entity.basedatamanager.deviceinterface.DeviceInterface; import com.forgon.disinfectsystem.entity.basedatamanager.rinser.Rinser; -import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.WashData; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.WashDataItemOfChangLong; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.WashDataOfChangLong; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord; @@ -171,48 +167,54 @@ @Override public void readAndSaveRecord(DeviceInterface devInterface,String machineNo,String brand,String isAutoCompleteSterilization) { - if(devInterface == null) + if(devInterface == null || StringUtils.isBlank(machineNo)) { return ; } + SmbSession session=null; + String ip = devInterface.getIP(); + String directory = devInterface.getFolderPath(); + String userName=devInterface.getUserName(); + String pwd = devInterface.getPassword(); + String rootURL = "//"+ip+"/" + directory + "/"; try { - NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication( - devInterface.getIP(), devInterface.getUserName(), devInterface.getPassword()); - // smbFileName格式 "smb://192.168.2.18/Share/*************_machineNumber.txt" - String shareURL = "smb://" + devInterface.getIP() + "/" + devInterface.getFolderPath() + "/"; - String backUpDirURL = shareURL + "backUp" + "/"; - SmbFile backUpDir = new SmbFile(backUpDirURL,auth); - if( !backUpDir.exists() ) - { - backUpDir.mkdirs(); - } - - SmbFile remoteFile = new SmbFile(shareURL, auth); - for(SmbFile file : remoteFile.listFiles()){ - String name = file.getName(); - if ( !(name.endsWith("txt") || name.endsWith("TXT")) ){ - continue; - } - String machineNumber = getMachineNo(name); - // 机器号和品牌都要匹配,才处理 + SmbShare share=new SmbShare("smb://" + userName +":"+ pwd +"@"+ ip +"/"+ directory +"/"); + session=new SmbSession(share); + String backUp=rootURL + "backUp/"; + if(!session.exists(backUp)){ + session.mkdir(backUp); + } + for (String name : share.list()){ + SmbFile smbForm=session.createSmbFileObject(rootURL + name); + if(smbForm.isDirectory()){ + continue; + } + if ( !(name.endsWith("txt") || name.endsWith("TXT")) ){ + continue; + } + String machineNumber = getMachineNo(name); + // 机器号和品牌都要匹配,才处理 if(!(machineNumber.equals(machineNo) && DeviceInterface.CHANGLONG.equals(brand))){ continue ; } - String cycleCounter = washDataReadAndSave(file,devInterface.getId()); - if( cycleCounter != null){ + String cycleCounter = washDataReadAndSave(smbForm,devInterface.getId()); + if( cycleCounter != null){ refreshWashRecordAmounts(devInterface.getId().toString(),Long.parseLong(cycleCounter),machineNumber); } else{ logger.warn(name); } - SmbFile desFile = new SmbFile(backUpDirURL + name,auth); - file.copyTo(desFile); - file.delete(); - } + SmbFile desFile = session.createSmbFileObject(backUp+name); + smbForm.copyTo(desFile); + smbForm.delete(); + } + } catch (IOException e){ // 捕获BufferedReader对象关闭时的异常 logger.warn(e.getMessage()); appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_DEVICE_INTERFACE, Log.TYPE_ADD, "设备接口连接异常," + e.getMessage()); + }finally{ + session.close(); } } Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/SterisDataManagerImpl.java =================================================================== diff -u -r24875 -r25399 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/SterisDataManagerImpl.java (.../SterisDataManagerImpl.java) (revision 24875) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/SterisDataManagerImpl.java (.../SterisDataManagerImpl.java) (revision 25399) @@ -8,7 +8,6 @@ import java.util.Date; import java.util.List; -import jcifs.smb.NtlmPasswordAuthentication; import jcifs.smb.SmbFile; import jcifs.smb.SmbFileInputStream; import net.sf.json.JSONArray; @@ -18,9 +17,10 @@ import org.apache.log4j.Logger; import org.hibernate.Query; import org.hibernate.Session; +import org.springframework.integration.smb.session.SmbSession; +import org.springframework.integration.smb.session.SmbShare; import com.forgon.directory.acegi.tools.AcegiHelper; -import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.action.SupplyRoomConfigAction; import com.forgon.disinfectsystem.entity.basedatamanager.deviceinterface.DeviceInterface; import com.forgon.disinfectsystem.entity.basedatamanager.rinser.Rinser; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; @@ -66,28 +66,27 @@ @Override public void readAndSaveRecord(DeviceInterface devInterface,String machineNo,String brand,String isAutoCompleteSterilization) { - if(devInterface == null) + if(devInterface == null || StringUtils.isBlank(machineNo)) { return ; } + SmbSession session = null; + String ip = devInterface.getIP(); + String directory = devInterface.getFolderPath(); + String userName = devInterface.getUserName(); + String pwd = devInterface.getPassword(); + String rootURL = "//"+ ip +"/" + directory + "/"; try { - NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication( - devInterface.getIP(), devInterface.getUserName(), devInterface.getPassword()); - // smbFileName格式 "smb://192.168.2.18/Share/c.csv" - // TODO 获取到名字,判断是清洗机还是灭菌炉,再调用相关的函数处理 - //"smb://192.168.2.18/Share/" - String shareURL = "smb://" + devInterface.getIP() + "/" + devInterface.getFolderPath() + "/"; - String backUpDirURL = shareURL + "backUp" + "/"; - SmbFile backUpDir = new SmbFile(backUpDirURL,auth); - if( !backUpDir.exists() ) - { - backUpDir.mkdirs(); + SmbShare share=new SmbShare("smb://" + userName + ":" + pwd + "@" + ip + "/" + directory + "/"); + session = new SmbSession(share); + String backUpDirURL = rootURL + "backUp/"; + if(!session.exists(backUpDirURL)){ + session.mkdir(backUpDirURL); } - - SmbFile remoteFile = new SmbFile(shareURL, auth); - for(SmbFile file : remoteFile.listFiles()){ - String name = file.getName(); - // 只处理.csv文件 + // smbFileName格式 "smb://192.168.2.18/Share/c.csv" + // TODO 获取到名字,判断是清洗机还是灭菌炉,再调用相关的函数处理 + for (String name : share.list()){ + // 只处理.csv文件 if ( !name.endsWith("txt") ) { continue; @@ -101,6 +100,10 @@ continue ; } String cycleCounter = null; + SmbFile file = session.createSmbFileObject(rootURL + name); + if(file.isDirectory()){ + continue; + } if( isWashingMachine(name)) { // 清洗机数据的处理 @@ -126,14 +129,16 @@ refreshSterilizaerRecordAmounts(devInterface.getId().toString(),Long.parseLong(cycleCounter),machineNumber); } } - SmbFile desFile = new SmbFile(backUpDirURL + name,auth); + SmbFile desFile = session.createSmbFileObject(backUpDirURL + name); file.copyTo(desFile); file.delete(); - } + } } catch (IOException e) { // 捕获BufferedReader对象关闭时的异常 logger.warn(e.getMessage()); appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_DEVICE_INTERFACE, Log.TYPE_ADD, "设备接口连接异常," + e.getMessage()); + }finally{ + session.close(); } } Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/GetingeDataManagerImpl.java =================================================================== diff -u -r23707 -r25399 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/GetingeDataManagerImpl.java (.../GetingeDataManagerImpl.java) (revision 23707) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/GetingeDataManagerImpl.java (.../GetingeDataManagerImpl.java) (revision 25399) @@ -5,27 +5,24 @@ import java.io.IOException; import java.io.InputStreamReader; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; -import java.util.Map; -import jcifs.smb.NtlmPasswordAuthentication; import jcifs.smb.SmbFile; import jcifs.smb.SmbFileInputStream; import net.sf.json.JSONArray; import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.map.HashedMap; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.hibernate.Query; import org.hibernate.Session; +import org.springframework.integration.smb.session.SmbSession; +import org.springframework.integration.smb.session.SmbShare; import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.acegi.tools.AcegiHelper; -import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.action.SupplyRoomConfigAction; import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.entity.basedatamanager.deviceinterface.DeviceInterface; import com.forgon.disinfectsystem.entity.basedatamanager.rinser.Rinser; @@ -91,70 +88,68 @@ @Override public void readAndSaveRecord(DeviceInterface devInterface,String machineNo,String brand,String isAutoCompleteSterilization) { - if(devInterface == null) + if(devInterface == null || StringUtils.isBlank(machineNo)) { - logger.debug(".......devInterface是空的"); + logger.debug(".......devInterface或机器号是空的"); return ; } + SmbSession session=null; + String ip = devInterface.getIP(); + String directory = devInterface.getFolderPath(); + String userName=devInterface.getUserName(); + String pwd = devInterface.getPassword(); + String rootURL = "//"+ ip + "/" + directory + "/"; + logger.debug("设备IP===="+ip); + logger.debug("用户名===="+userName); + logger.debug("密码===="+pwd); + // smbFileName格式 "smb://192.168.2.18/Share/c.csv" + // 获取到名字,判断是清洗机还是灭菌炉,再调用相关的函数处理 + //"smb://192.168.2.18/Share/" try { - NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication( - devInterface.getIP(), devInterface.getUserName(), devInterface.getPassword()); - logger.debug("设备IP===="+devInterface.getIP()); - logger.debug("用户名===="+devInterface.getUserName()); - logger.debug("密码===="+devInterface.getPassword()); - // smbFileName格式 "smb://192.168.2.18/Share/c.csv" - // 获取到名字,判断是清洗机还是灭菌炉,再调用相关的函数处理 - //"smb://192.168.2.18/Share/" - String shareURL = "smb://" + devInterface.getIP() + "/" + devInterface.getFolderPath() + "/"; - logger.debug("shareURL====="+shareURL); - String backUpDirURL = shareURL + "backUp" + "/"; - SmbFile backUpDir = new SmbFile(backUpDirURL,auth); - if( !backUpDir.exists() ) - { - logger.debug("创建文件夹..."); - backUpDir.mkdirs(); + SmbShare share = new SmbShare("smb://" + userName +":"+ pwd +"@"+ ip +"/"+ directory +"/"); + session = new SmbSession(share); + String backUp = rootURL +"backUp/"; + if(!session.exists(backUp)){ + logger.debug("创建文件夹..."); + session.mkdir(backUp); } - SmbFile remoteFile = new SmbFile(shareURL, auth); - for(SmbFile file : remoteFile.listFiles()){ - String name = file.getName(); - if( objectDao.getByProperty(SterilizerFileName.class.getSimpleName(), "fileName", name)!=null){ - logger.debug(name+"该文件已经解析过"); - continue; - } - // 只处理.XML文件 - if ( !(name.endsWith("XML") || name.endsWith("xml")) ) - { + for (String name : share.list()){ + SmbFile smbForm=session.createSmbFileObject(rootURL + name); + if(smbForm.isDirectory()){ + continue; + } + if( objectDao.getByProperty(SterilizerFileName.class.getSimpleName(), "fileName", name)!=null){ + logger.debug(name+"该文件已经解析过"); + continue; + } + // 只处理.XML文件 + if ( !(name.endsWith("XML") || name.endsWith("xml")) ){ logger.debug("只处理.XML文件->continue"); continue; } - String machineNumber = getMachineNo(file); // 机器号和品牌都要匹配,才处理 if( brand != devInterface.GETINGE ){ logger.debug("品牌不对->continue="+brand); continue; } - if( !machineNumber.equals(machineNo) ) - { + String machineNumber = getMachineNo(smbForm); + if( !machineNo.equals(machineNumber) ){ logger.debug("机器号不对->continue="+machineNo); continue ; } String cycleCounter = null; - if( isWashingMachine(file)) - { + if( isWashingMachine(smbForm)){ // 清洗机数据的处理 - JSONArray jsArray = washDataReadAndSave(file,devInterface); - if( jsArray != null) - { + JSONArray jsArray = washDataReadAndSave(smbForm,devInterface); + if( jsArray != null){ machineNumber = (String)jsArray.get(0); cycleCounter = (String)jsArray.get(1); refreshWashRecordAmounts(devInterface.getId().toString(),Long.parseLong(cycleCounter),machineNumber); } - }else - { + }else{ // 灭菌炉数据处理 - JSONArray jsArray = sterilizerDataReadAndSave(file,devInterface); - if( jsArray != null) - { + JSONArray jsArray = sterilizerDataReadAndSave(smbForm,devInterface); + if( jsArray != null){ machineNumber = (String)jsArray.get(0); cycleCounter = (String)jsArray.get(1); String procStartTimeStr = (String)jsArray.get(2); @@ -176,25 +171,28 @@ } } - } - SmbFile desFile = new SmbFile(backUpDirURL + name,auth); + } + SmbFile desFile = session.createSmbFileObject(backUp + name); try{ - file.copyTo(desFile); - file.delete(); + smbForm.copyTo(desFile); + smbForm.delete(); }catch(Exception e){ e.printStackTrace(); SterilizerFileName sf = new SterilizerFileName(); sf.setFileName(name); objectDao.save(sf); logger.debug(name+"文件在移动和删除过程中发生错误"); - } - } + } + } } catch (IOException e) { // 捕获BufferedReader对象关闭时的异常 logger.warn(e.getMessage()); e.printStackTrace(); appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_DEVICE_INTERFACE, Log.TYPE_ADD, "设备接口连接异常," + e.getMessage()); + }finally{ + session.close(); } + } /** Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/BelimedDataManagerImpl.java =================================================================== diff -u -r23336 -r25399 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/BelimedDataManagerImpl.java (.../BelimedDataManagerImpl.java) (revision 23336) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/BelimedDataManagerImpl.java (.../BelimedDataManagerImpl.java) (revision 25399) @@ -11,7 +11,6 @@ import java.util.Date; import java.util.List; -import jcifs.smb.NtlmPasswordAuthentication; import jcifs.smb.SmbFile; import jcifs.smb.SmbFileInputStream; import net.sf.json.JSONArray; @@ -21,9 +20,10 @@ import org.apache.log4j.Logger; import org.hibernate.Query; import org.hibernate.Session; +import org.springframework.integration.smb.session.SmbSession; +import org.springframework.integration.smb.session.SmbShare; import com.forgon.directory.acegi.tools.AcegiHelper; -import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.action.SupplyRoomConfigAction; import com.forgon.disinfectsystem.entity.basedatamanager.deviceinterface.DeviceInterface; import com.forgon.disinfectsystem.entity.basedatamanager.rinser.Rinser; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; @@ -36,318 +36,301 @@ import com.forgon.log.service.LogManager; import com.forgon.tools.hibernate.ObjectDao; - /** - * @author JC 2016-2-3 倍力曼读取和保存数据的实现 目前包括灭菌炉和清洗机 + * @author JC 2016-2-3 倍力曼读取和保存数据的实现 目前包括灭菌炉和清洗机 * */ -public class BelimedDataManagerImpl implements DeviceDataManager{ - +public class BelimedDataManagerImpl implements DeviceDataManager { + private ObjectDao objectDao; private LogManager appLogManager; private SterilizationRecordManager sterilizationRecordManager; private WashAndDisinfectRecordManager washAndDisinfectRecordManager; - + private static final Logger logger = Logger .getLogger(BelimedDataManagerImpl.class); - + public void setSterilizationRecordManager( SterilizationRecordManager sterilizationRecordManager) { this.sterilizationRecordManager = sterilizationRecordManager; } - public void setWashAndDisinfectRecordManager( WashAndDisinfectRecordManager washAndDisinfectRecordManager) { this.washAndDisinfectRecordManager = washAndDisinfectRecordManager; } - public void setObjectDao(ObjectDao objectDao) { this.objectDao = objectDao; } - + public void setAppLogManager(LogManager appLogManager) { this.appLogManager = appLogManager; } - /** - * 从接口读取数据和存入数据库 + * 从接口读取数据和存入数据库 */ @Override - public void readAndSaveRecord(DeviceInterface devInterface,String machineNo,String brand,String isAutoCompleteSterilization) - { - if(devInterface == null) - { - return ; + public void readAndSaveRecord(DeviceInterface devInterface, + String machineNo, String brand, String isAutoCompleteSterilization) { + if (devInterface == null || StringUtils.isBlank(machineNo)) { + return; } + SmbSession session = null; + String ip = devInterface.getIP(); + String directory = devInterface.getFolderPath(); + String userName = devInterface.getUserName(); + String pwd = devInterface.getPassword(); + String rootURL = "//" + ip + "/" + directory + "/"; try { -// SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss"); -// -// String tt = formatter.format(new Date()); - - -// sterilizationRecordManager.getSterilerRecordsCount("6", "18", 268); - NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication( - devInterface.getIP(), devInterface.getUserName(), devInterface.getPassword()); - String smbFileName = getSmbFileName(); - // smbFileName格式 "smb://192.168.2.18/Share/c.csv" - // TODO 获取到名字,判断是清洗机还是灭菌炉,再调用相关的函数处理 -// "smb://192.168.2.18/Share/" - String shareURL = "smb://" + devInterface.getIP() + "/" + devInterface.getFolderPath() + "/"; - String backUpDirURL = shareURL + "backUp" + "/"; - SmbFile backUpDir = new SmbFile(backUpDirURL,auth); - if( !backUpDir.exists() ) - { - backUpDir.mkdirs(); + SmbShare share = new SmbShare("smb://" + userName + ":" + pwd + "@" + + ip + "/" + directory + "/"); + session = new SmbSession(share); + String backUp = rootURL + "backUp/"; + if (!session.exists(backUp)) { + session.mkdir(backUp); } - - SmbFile remoteFile = new SmbFile(shareURL, auth); - - for(SmbFile file : remoteFile.listFiles()){ - String name = file.getName(); - SmbFile processedFile = new SmbFile(backUpDirURL + name,auth); - // 只处理.csv文件 - if ( !name.endsWith("csv") ) - { - continue; - } - // C_开头的才是有效数据 - if( !name.startsWith("C_")) - { - file.copyTo(processedFile); - file.delete(); - continue; - } - String machineNumber = getMachineNoByFileName(name); - // 机器号和品牌都要匹配,才处理 - if( brand != devInterface.BELIMED ) - continue; - if( !machineNumber.equals(machineNo) ) - { - continue ; - } - String cycleCounter = null; - if( isWashingMachine(file) ) - { - // 清洗机数据的处理 - JSONArray jsArray = washDataReadAndSave(file,devInterface); - if( jsArray != null) - { - machineNumber = (String)jsArray.get(0); - cycleCounter = (String)jsArray.get(1); - refreshWashRecordAmounts(devInterface.getId().toString(),Long.parseLong(cycleCounter),machineNumber); - } - }else - { - // 灭菌炉数据处理 - JSONArray jsArray = sterilizerDataReadAndSave(file,devInterface); - if( jsArray != null) - { - machineNumber = (String)jsArray.get(0); - cycleCounter = (String)jsArray.get(1); - // 灭菌炉自动完成灭菌 - if( !StringUtils.isNotBlank(isAutoCompleteSterilization) || isAutoCompleteSterilization.equals("是")){ - autoFinishSterilizerRecord(devInterface.getId().toString(),Long.parseLong(cycleCounter),machineNumber); - } - refreshSterilizaerRecordAmounts(devInterface.getId().toString(),Long.parseLong(cycleCounter),machineNumber); - } - } - file.copyTo(processedFile); - file.delete(); - } + for (String name : share.list()) { + SmbFile smbForm = session.createSmbFileObject(rootURL + name); + if (smbForm.isDirectory()) { + continue; + } + // 只处理.csv文件 + /* + * if(!name.endsWith("csv")){ continue; } // C_开头的才是有效数据 if( + * !name.startsWith("C_")){ continue; } // 机器号和品牌都要匹配,才处理 if( + * brand != devInterface.BELIMED ){ continue; } String + * machineNumber = getMachineNoByFileName(name); if( + * !machineNo.equals(machineNumber) ){ continue ; } String + * cycleCounter = null; if( isWashingMachine(smbForm) ){ // + * 清洗机数据的处理 JSONArray jsArray = + * washDataReadAndSave(smbForm,devInterface); if( jsArray != + * null){ machineNumber = (String)jsArray.get(0); cycleCounter = + * (String)jsArray.get(1); + * refreshWashRecordAmounts(devInterface. + * getId().toString(),Long. + * parseLong(cycleCounter),machineNumber); } }else{ // 灭菌炉数据处理 + * JSONArray jsArray = + * sterilizerDataReadAndSave(smbForm,devInterface); if( jsArray + * != null){ machineNumber = (String)jsArray.get(0); + * cycleCounter = (String)jsArray.get(1); // 灭菌炉自动完成灭菌 if( + * !StringUtils.isNotBlank(isAutoCompleteSterilization) || + * isAutoCompleteSterilization.equals("是")){ + * autoFinishSterilizerRecord + * (devInterface.getId().toString(),Long + * .parseLong(cycleCounter),machineNumber); } + * refreshSterilizaerRecordAmounts + * (devInterface.getId().toString( + * ),Long.parseLong(cycleCounter),machineNumber); } } + */ + SmbFile smbBackUp = session.createSmbFileObject(backUp + name); + smbForm.copyTo(smbBackUp); + smbForm.delete(); + } } catch (IOException e) { - // 捕获BufferedReader对象关闭时的异常 -// e.printStackTrace(); logger.warn(e.getMessage()); - appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_DEVICE_INTERFACE, Log.TYPE_ADD, "设备接口连接异常," + e.getMessage()); + appLogManager.saveLog(AcegiHelper.getLoginUser(), + Log.MODEL_DEVICE_INTERFACE, Log.TYPE_ADD, + "设备接口连接异常," + e.getMessage()); + } finally { + session.close(); } + } - + /** * 灭菌炉数据处理 */ - public JSONArray sterilizerDataReadAndSave(SmbFile remoteFile,DeviceInterface devInterface) - { - try{ - long dateTime = remoteFile.getDate(); - Date da = new Date(); - da.setTime(dateTime); - DateFormat df1 = DateFormat.getDateInstance();//日期格式,精确到日 - String yymmdd = df1.format(da).replace("-", "/") + " "; - BufferedReader br = new BufferedReader(new InputStreamReader( - new SmbFileInputStream(remoteFile))); + public JSONArray sterilizerDataReadAndSave(SmbFile remoteFile, + DeviceInterface devInterface) { + try { + long dateTime = remoteFile.getDate(); + Date da = new Date(); + da.setTime(dateTime); + DateFormat df1 = DateFormat.getDateInstance();// 日期格式,精确到日 + String yymmdd = df1.format(da).replace("-", "/") + " "; + BufferedReader br = new BufferedReader(new InputStreamReader( + new SmbFileInputStream(remoteFile))); - String machineNumber = null; - String cycleCounter = null; - // 读取直到最后一行 - String line = ""; - int lineNo = 0; -// List records = new ArrayList(); - while ((line = br.readLine()) != null) { - lineNo++; - String[] split = line.split(";"); - if (split.length == 15 && lineNo != 1) { - SterilizerRecord record = new SterilizerRecord(); - record.setMachineNo(split[0].replaceAll("\"", "")); - record.setCycleCounter(Long.parseLong(split[1])); - String time = split[2]; - time = time.replaceAll("\"", ""); - time = yymmdd + time; - record.setTime(time); - record.setStep(split[3]); - record.setPhase(split[4]); - record.setMessageNo(split[5]); - record.setMessage(split[6]); - record.setT1Temp(split[7]); - record.setT2Temp(split[8]); - record.setT3Temp(split[9]); - record.setP1Mbar(split[10]); - record.setP2Mbar(split[11]); - record.setP3Mbar(split[12]); - record.setP4Mbar(split[13]); - record.setF01Min(split[14]); - record.setDeviceInterfaceID(devInterface.getId().toString()); - objectDao.saveOrUpdate(record); - machineNumber = record.getMachineNo(); - cycleCounter = record.getCycleCounter().toString(); - }else if (split.length == 14 && lineNo != 1) { - SterilizerRecord record = new SterilizerRecord(); - record.setMachineNo(split[0].replaceAll("\"", "")); - record.setCycleCounter(Long.parseLong(split[1])); - String time = split[2]; - time = time.replaceAll("\"", ""); - String hmsTime = getTime(time); - if(StringUtils.isBlank(hmsTime)){ - hmsTime = getTime1(time); + String machineNumber = null; + String cycleCounter = null; + // 读取直到最后一行 + String line = ""; + int lineNo = 0; + // List records = new + // ArrayList(); + while ((line = br.readLine()) != null) { + lineNo++; + String[] split = line.split(";"); + if (split.length == 15 && lineNo != 1) { + SterilizerRecord record = new SterilizerRecord(); + record.setMachineNo(split[0].replaceAll("\"", "")); + record.setCycleCounter(Long.parseLong(split[1])); + String time = split[2]; + time = time.replaceAll("\"", ""); + time = yymmdd + time; + record.setTime(time); + record.setStep(split[3]); + record.setPhase(split[4]); + record.setMessageNo(split[5]); + record.setMessage(split[6]); + record.setT1Temp(split[7]); + record.setT2Temp(split[8]); + record.setT3Temp(split[9]); + record.setP1Mbar(split[10]); + record.setP2Mbar(split[11]); + record.setP3Mbar(split[12]); + record.setP4Mbar(split[13]); + record.setF01Min(split[14]); + record.setDeviceInterfaceID(devInterface.getId().toString()); + objectDao.saveOrUpdate(record); + machineNumber = record.getMachineNo(); + cycleCounter = record.getCycleCounter().toString(); + } else if (split.length == 14 && lineNo != 1) { + SterilizerRecord record = new SterilizerRecord(); + record.setMachineNo(split[0].replaceAll("\"", "")); + record.setCycleCounter(Long.parseLong(split[1])); + String time = split[2]; + time = time.replaceAll("\"", ""); + String hmsTime = getTime(time); + if (StringUtils.isBlank(hmsTime)) { + hmsTime = getTime1(time); + } + time = yymmdd + hmsTime; + record.setTime(time); + record.setStep(split[3]); + record.setPhase(split[4]); + record.setMessageNo(split[5]); + record.setMessage(split[6]); + record.setT1Temp(split[7]); + record.setT2Temp(split[8]); + record.setP1Mbar(split[9]); + record.setP2Mbar(split[10]); + record.setP3Mbar(split[11]); + record.setP4Mbar(split[12]); + record.setF01Min(split[13]); + record.setDeviceInterfaceID(devInterface.getId().toString()); + objectDao.saveOrUpdate(record); + // records.add(record); + machineNumber = record.getMachineNo(); + cycleCounter = record.getCycleCounter().toString(); } - time = yymmdd + hmsTime; - record.setTime(time); - record.setStep(split[3]); - record.setPhase(split[4]); - record.setMessageNo(split[5]); - record.setMessage(split[6]); - record.setT1Temp(split[7]); - record.setT2Temp(split[8]); - record.setP1Mbar(split[9]); - record.setP2Mbar(split[10]); - record.setP3Mbar(split[11]); - record.setP4Mbar(split[12]); - record.setF01Min(split[13]); - record.setDeviceInterfaceID(devInterface.getId().toString()); - objectDao.saveOrUpdate(record); -// records.add(record); - machineNumber = record.getMachineNo(); - cycleCounter = record.getCycleCounter().toString(); } - } - br.close(); - JSONArray jsonArray = new JSONArray(); - jsonArray.add(0, machineNumber); - jsonArray.add(1, cycleCounter); - return jsonArray; - }catch (FileNotFoundException e) { + br.close(); + JSONArray jsonArray = new JSONArray(); + jsonArray.add(0, machineNumber); + jsonArray.add(1, cycleCounter); + return jsonArray; + } catch (FileNotFoundException e) { // 捕获File对象生成时的异常 logger.warn(e.getMessage()); return null; } catch (IOException e) { // 捕获BufferedReader对象关闭时的异常 logger.warn(e.getMessage()); - appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_DEVICE_INTERFACE, Log.TYPE_ADD, "设备接口连接异常," + e.getMessage()); + appLogManager.saveLog(AcegiHelper.getLoginUser(), + Log.MODEL_DEVICE_INTERFACE, Log.TYPE_ADD, + "设备接口连接异常," + e.getMessage()); return null; } } + /** * 自动完成灭菌 */ - public void autoFinishSterilizerRecord(String devInterfaceId,Long cycleCounter,String machineNo) - { + public void autoFinishSterilizerRecord(String devInterfaceId, + Long cycleCounter, String machineNo) { String queryString = "select sr.id from SterilizationRecord sr" + " where sr.sterilizer.deviceInterface.id = :devInterfaceId" + " and sr.sterilizer.machineNumber = :machineNumber" + " and sr.cycleCounter = :cycleCounter" + " and sr.status = :status"; - -// String queryString = "select sr.id from SterilizationRecord sr"; - + + // String queryString = "select sr.id from SterilizationRecord sr"; + Session session = objectDao.getHibernateSession(); Query query = session.createQuery(queryString); query.setParameter("devInterfaceId", Long.valueOf(devInterfaceId)); query.setParameter("machineNumber", machineNo); query.setParameter("cycleCounter", cycleCounter); - query.setParameter("status", SterilizationRecord.STERILIZATION_STATUS_BEGIN); + query.setParameter("status", + SterilizationRecord.STERILIZATION_STATUS_BEGIN); List ids = query.list(); - - if(CollectionUtils.isNotEmpty(ids)) - { + + if (CollectionUtils.isNotEmpty(ids)) { queryString = "select s.orgUnitCoding from Sterilizer s" + " where s.deviceInterface.id = :devInterfaceId" + " and s.machineNumber = :machineNumber"; query = session.createQuery(queryString); query.setParameter("devInterfaceId", Long.valueOf(devInterfaceId)); query.setParameter("machineNumber", machineNo); List orgUnitCodes = query.list(); - if(CollectionUtils.isNotEmpty(orgUnitCodes)) - { - sterilizationRecordManager.completeSterilization(ids, orgUnitCodes.get(0),"自动完成"); - -// // 刷新灭菌记录列表页面 -// Util util = ScriptSessionUtil.getDWRUtil("/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordView.jsp"); -// if (util != null) { -// util.addFunctionCall("alert","abc"); -// util.addFunctionCall("grid.dwrReload()"); -// } - -// queryString = "updata SterilizationRecord set finishOperater = '自动完成' where id = :sterilizationId"; -// query = session.createQuery(queryString); -// query.setParameter("sterilizationId", ids.get(0)); -// query.executeUpdate(); + if (CollectionUtils.isNotEmpty(orgUnitCodes)) { + sterilizationRecordManager.completeSterilization(ids, + orgUnitCodes.get(0), "自动完成"); + + // // 刷新灭菌记录列表页面 + // Util util = + // ScriptSessionUtil.getDWRUtil("/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordView.jsp"); + // if (util != null) { + // util.addFunctionCall("alert","abc"); + // util.addFunctionCall("grid.dwrReload()"); + // } + + // queryString = + // "updata SterilizationRecord set finishOperater = '自动完成' where id = :sterilizationId"; + // query = session.createQuery(queryString); + // query.setParameter("sterilizationId", ids.get(0)); + // query.executeUpdate(); } } } - + /** * 更新灭菌记录的温度压力数据 */ - public void refreshSterilizaerRecordAmounts(String devInterfaceId,Long cycleCounter,String machineNo) - { + public void refreshSterilizaerRecordAmounts(String devInterfaceId, + Long cycleCounter, String machineNo) { String queryString = "select sr.id from SterilizationRecord sr" + " where sr.sterilizer.deviceInterface.id = :devInterfaceId" + " and sr.sterilizer.machineNumber = :machineNumber" + " and sr.cycleCounter = :cycleCounter" + " and sr.status = :status"; -// String queryString = "select sr.id from SterilizationRecord sr"; - + // String queryString = "select sr.id from SterilizationRecord sr"; + Session session = objectDao.getHibernateSession(); Query query = session.createQuery(queryString); query.setParameter("devInterfaceId", Long.valueOf(devInterfaceId)); query.setParameter("machineNumber", machineNo); query.setParameter("cycleCounter", cycleCounter); - query.setParameter("status", SterilizationRecord.STERILIZATION_STATUS_END); - Long id = (Long)query.uniqueResult(); -// List srs = sterilizationRecordManager.getSterilizaerRecordsById(Long.valueOf(30)); - if(id != null && id > 0) - { - SterilizationRecord record = sterilizationRecordManager.getSterilizationRecordById(id); + query.setParameter("status", + SterilizationRecord.STERILIZATION_STATUS_END); + Long id = (Long) query.uniqueResult(); + // List srs = + // sterilizationRecordManager.getSterilizaerRecordsById(Long.valueOf(30)); + if (id != null && id > 0) { + SterilizationRecord record = sterilizationRecordManager + .getSterilizationRecordById(id); // 灭菌记录的的温度压力数据条数 - Long count = (long)sterilizationRecordManager.getSterilerRecordsCount(record.getSterilizer().getDeviceInterfaceId(),record.getSterilizer().getMachineNumber(),record.getCycleCounter()); + Long count = (long) sterilizationRecordManager + .getSterilerRecordsCount(record.getSterilizer() + .getDeviceInterfaceId(), record.getSterilizer() + .getMachineNumber(), record.getCycleCounter()); record.setSterilizerRecordAmount(count); sterilizationRecordManager.saveOrUpdate(record); } } - + /** * 数据处理结束之后的工作,移动文件夹等等 */ @Override - public void end() - { - + public void end() { + } - - public boolean isWashingMachine(SmbFile file) - { + + public boolean isWashingMachine(SmbFile file) { try { // 根据文件的第一行判断是清洗机还是灭菌炉数据 BufferedReader br = new BufferedReader(new InputStreamReader( @@ -363,108 +346,108 @@ return true; } catch (Exception e) { logger.warn(e.getMessage()); - appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_DEVICE_INTERFACE, Log.TYPE_ADD, "设备接口连接异常," + e.getMessage()); + appLogManager.saveLog(AcegiHelper.getLoginUser(), + Log.MODEL_DEVICE_INTERFACE, Log.TYPE_ADD, + "设备接口连接异常," + e.getMessage()); return false; } } + /** * * 遍历共享目录文件夹,获取smb的url */ - public String getSmbFileName() - { + public String getSmbFileName() { return null; } + /** - * 12小时制转24小时 以AM或者PM结尾 + * 12小时制转24小时 以AM或者PM结尾 + * * @time time12h 格式如 12:22:51 PM 12:22:51 AM * @return 12:22:51 */ - public String getTime(String time) - { - if(StringUtils.isNotBlank(time)) - { + public String getTime(String time) { + if (StringUtils.isNotBlank(time)) { time = time.trim(); String[] timeSplit; - if(time.endsWith("AM")) - { + if (time.endsWith("AM")) { time = time.replace("AM", ""); timeSplit = time.trim().split(":"); - if( timeSplit[0].equals("12")) - { + if (timeSplit[0].equals("12")) { return "00" + ":" + timeSplit[1] + ":" + timeSplit[2]; - }else - { + } else { return time; } - }else if(time.endsWith("PM")) - { + } else if (time.endsWith("PM")) { time = time.replace("PM", ""); timeSplit = time.split(":"); int hour = Integer.valueOf(timeSplit[0]); - if( hour != 12) - { + if (hour != 12) { hour = 12 + hour; } - return String.valueOf(hour) + ":" + timeSplit[1] + ":" + timeSplit[2]; -// time.replace(timeSplit[0], String.valueOf(hour)); - }else{ - return time; //新接口文件时间格式 + return String.valueOf(hour) + ":" + timeSplit[1] + ":" + + timeSplit[2]; + // time.replace(timeSplit[0], String.valueOf(hour)); + } else { + return time; // 新接口文件时间格式 } } return null; } - // Monday 14:36:54 + + // Monday 14:36:54 /** * - * @param time 格式如 Monday 14:36:54 - * @return 格式 14:36:54 + * @param time + * 格式如 Monday 14:36:54 + * @return 格式 14:36:54 */ - private String getTime1(String time){ + private String getTime1(String time) { String retTime = ""; - if(StringUtils.isNotBlank(time)) - { + if (StringUtils.isNotBlank(time)) { retTime = time.trim(); - if(retTime.startsWith("Monday")){ + if (retTime.startsWith("Monday")) { retTime = retTime.replace("Monday", ""); retTime = retTime.trim(); - }else if(retTime.startsWith("Tuesday")){ + } else if (retTime.startsWith("Tuesday")) { retTime = retTime.replace("Tuesday", ""); retTime = retTime.trim(); - }else if(retTime.startsWith("Wednesday")){ + } else if (retTime.startsWith("Wednesday")) { retTime = retTime.replace("Wednesday", ""); retTime = retTime.trim(); - }else if(retTime.startsWith("Thursday")){ + } else if (retTime.startsWith("Thursday")) { retTime = retTime.replace("Thursday", ""); retTime = retTime.trim(); - }else if(retTime.startsWith("Friday")){ + } else if (retTime.startsWith("Friday")) { retTime = retTime.replace("Friday", ""); retTime = retTime.trim(); - }else if(retTime.startsWith("Saturday")){ + } else if (retTime.startsWith("Saturday")) { retTime = retTime.replace("Saturday", ""); retTime = retTime.trim(); - }else if(retTime.startsWith("Sunday")){ + } else if (retTime.startsWith("Sunday")) { retTime = retTime.replace("Sunday", ""); retTime = retTime.trim(); - }else{ + } else { retTime = ""; } } return retTime; } + /** * 倍力曼清洗机数据处理 */ - public JSONArray washDataReadAndSave(SmbFile remoteFile,DeviceInterface devInterface) - { - try{ + public JSONArray washDataReadAndSave(SmbFile remoteFile, + DeviceInterface devInterface) { + try { long dateTime = remoteFile.getDate(); - Date da = new Date(); + Date da = new Date(); da.setTime(dateTime); - DateFormat df1 = DateFormat.getDateInstance();//日期格式,精确到日 + DateFormat df1 = DateFormat.getDateInstance();// 日期格式,精确到日 String yymmdd = df1.format(da).replace("-", "/") + " "; BufferedReader br = new BufferedReader(new InputStreamReader( - new SmbFileInputStream(remoteFile),"GBK")); + new SmbFileInputStream(remoteFile), "GBK")); String machineNumber = null; String cycleCounter = null; // 读取直到最后一行 @@ -480,7 +463,7 @@ String time = split[2]; time = time.replaceAll("\"", ""); String hmsTime = getTime1(time); - if(StringUtils.isBlank(hmsTime)){ + if (StringUtils.isBlank(hmsTime)) { hmsTime = getTime(time); } time = yymmdd + hmsTime; @@ -506,21 +489,23 @@ jsonArray.add(0, machineNumber); jsonArray.add(1, cycleCounter); return jsonArray; - }catch (FileNotFoundException e) { - logger.warn(e.getMessage()); - return null; + } catch (FileNotFoundException e) { + logger.warn(e.getMessage()); + return null; } catch (IOException e) { - logger.warn(e.getMessage()); - appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_DEVICE_INTERFACE, Log.TYPE_ADD, "设备接口连接异常," + e.getMessage()); - return null; + logger.warn(e.getMessage()); + appLogManager.saveLog(AcegiHelper.getLoginUser(), + Log.MODEL_DEVICE_INTERFACE, Log.TYPE_ADD, + "设备接口连接异常," + e.getMessage()); + return null; } } /** * 更新清洗机的温度压力数据 */ - public void refreshWashRecordAmounts(String devInterfaceId,Long cycleCounter,String machineNo) - { + public void refreshWashRecordAmounts(String devInterfaceId, + Long cycleCounter, String machineNo) { // 根据接口和机器号找到清洗机 Session session = objectDao.getHibernateSession(); String queryString = "select r from Rinser r" @@ -530,42 +515,41 @@ query.setParameter("deviceInterfaceId", Long.valueOf(devInterfaceId)); query.setParameter("machineNo", machineNo); List rinsers = query.list(); - - for(Rinser rs : rinsers) - { + + for (Rinser rs : rinsers) { queryString = "select wd from WashAndDisinfectRecord wd" + " where wd.disinfectIdentification = :rinserName" + " and wd.cycleCounter = :cycleCounter"; - query = session.createQuery(queryString); + query = session.createQuery(queryString); query.setParameter("rinserName", rs.getName()); query.setParameter("cycleCounter", cycleCounter); - WashAndDisinfectRecord wd = (WashAndDisinfectRecord)query.uniqueResult(); - if(wd != null) - { - int amounts = washAndDisinfectRecordManager.getWashAndDisinfectRecordsCount(devInterfaceId,machineNo,cycleCounter); + WashAndDisinfectRecord wd = (WashAndDisinfectRecord) query + .uniqueResult(); + if (wd != null) { + int amounts = washAndDisinfectRecordManager + .getWashAndDisinfectRecordsCount(devInterfaceId, + machineNo, cycleCounter); wd.setWashDataAmount(Long.valueOf(amounts)); washAndDisinfectRecordManager.save(wd); } } } + /** * 通过文件名获取机器号 */ - public String getMachineNoByFileName(String fileName) - { - if(fileName.startsWith("C_")) - { + public String getMachineNoByFileName(String fileName) { + if (fileName.startsWith("C_")) { String str = fileName.substring(2); int index = str.indexOf("_"); - if( index != -1) - { - return str.substring(0,index); + if (index != -1) { + return str.substring(0, index); } } return ""; } - - public long getDistanceDays(Date date1, Date date2){ + + public long getDistanceDays(Date date1, Date date2) { long days = 0; try { long time1 = date1.getTime(); Index: forgon-tools/src/main/java/com/forgon/tools/date/DateTools.java =================================================================== diff -u -r25331 -r25399 --- forgon-tools/src/main/java/com/forgon/tools/date/DateTools.java (.../DateTools.java) (revision 25331) +++ forgon-tools/src/main/java/com/forgon/tools/date/DateTools.java (.../DateTools.java) (revision 25399) @@ -913,5 +913,16 @@ time+=day; // 相加得到新的毫秒数 return new Date(time); // 将毫秒数转换成日期 } - + /** + * 日期增加小时数 + * @param date 要增加的日期 + * @param day 要增加的小时数 + * @return 增加后日期 + */ + public static Date addHours(Date date,long hours){ + long time = date.getTime(); // 得到指定日期的毫秒数 + hours = hours*60*60*1000; // 要加上的天数转换成毫秒数 + time+=hours; // 相加得到新的毫秒数 + return new Date(time); // 将毫秒数转换成日期 + } }