Index: ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washDataChart/washDataChartOfGetingOf86Series.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washDataChart/washDataChartOfGetingOf86Series.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washDataChart/washDataChartOfGetingOf86Series.js (revision 30382) @@ -0,0 +1,181 @@ +$(function () { + loadWashDataAndLineChart(); +}) + +function loadWashDataAndLineChart() { + //创建echart + creatLineChart("温度曲线", "cabinOne"); + //获取清洗机信息和曲线图 + loadWashDataAndLineChartInfo(washAndDisinfectRecordId); +} + +function loadWashDataAndLineChartInfo(washAndDisinfectRecordId) { + // console.log(washAndDisinfectRecordId); + $.ajax({ + type: "get", + url: WWWROOT + "/disinfectSystem/washData/washDataLineChartAction!getWashDataAndLineEchartDate.do?washAndDisinfectRecordId=" + washAndDisinfectRecordId + "&time=" + new Date(), + data: "data", + dataType: "json", + success: function (response) { + if (response.success) { + var data = response.data; + var lineChartInfo = data.washDataItemLineChart; + renderWashData(data); + renderLineChart(lineChartInfo, 'cabinOne'); + } else { + alert("请求数据失败!" + response.message); + } + } + }); +} + +/** + * 加载清洗机信息 + * @param {*} data + */ +function renderWashData(data) { + $('#cycleCounter').text(data['cycleCounter']); + $('#startedTimeStr').text(data['startedTime']); + $('#machineName').text(data['machineName']); + $('#machineID').text(data['machineID']); + $('#cycleCounter').text(data['cycleCounter']); + $('#process').text(data['program']); + $('#endTimeStr').text(data['endTime']); + + var parameters = data['parameters']; + var parameterArr = parameters.split(';'); + var wrappdiv = $('.wash_details_wrapp'); + var parentdiv = ""; + for (var i = 1; i <= parameterArr.length; i++) { + var parameter = parameterArr[i-1]; + var tempArr = parameter.split('>>'); + var key = tempArr[0]; + var value = tempArr[1]; + var childdiv = ''; + if(i%2==0){ + childdiv=$('
'+key+':'+value+'
'); + wrappdiv.append(parentdiv); + }else{ + childdiv=$('
'+key+':'+value+'
'); + parentdiv = $('
'); + } + parentdiv.append(childdiv); + } +} + +/** + * 创建曲线图表 + * @param {*} text + * @param {*} echartsId + */ +function creatLineChart(text, echartsId) { + var myChart = echarts.init(document.getElementById(echartsId)); + var myChartOption = { + title: { + text: text, + left: 'center', + top: 0 + }, + tooltip: { + trigger: 'axis', + extraCssText: 'width:150px;height:50px;' + }, + color: ['#00CD66'], + legend: { + top: 25, + data: ['T1'] + }, + grid: { + left: '6%', + containLabel: true + }, + xAxis: { + type: 'category', + boundaryGap: true, + axisTick: { + alignWithLabel: true, + inside: true //刻度线朝内 + }, + name: "时间", + nameLocation: 'center', + nameGap: 10, //坐标名称与轴线之间的距离 + data: [] + }, + yAxis: { + type: 'value', + name: "温度", + nameLocation: 'center', + nameGap: 35, //坐标名称与轴线之间的距离 + axisTick: { + alignWithLabel: true, + inside: true + } + }, + series: [{ + name: '', + type: 'line', + symbol: "none", //去掉圆点 + itemStyle: { + normal: { + lineStyle: { + color: '#00CD66' //设置线的颜色,如果在这里设置了要再上面的colo数组里面一起修改 + } + } + }, + data: [] + } + ] + }; + myChart.setOption(myChartOption); + //自适应 + window.onresize = function () { + myChart.resize(); + } +} + +/** + * 加载曲线数据 + * @param {*} dataObject + * @param {*} echartsId + */ +function renderLineChart(dataObject, echartsId) { + if (dataObject) { + // console.log(dataObject); + var myChart = echarts.init(document.getElementById(echartsId)); + var timeArray = dataObject['time']; + var t1Array = dataObject['t1Temp']; + myChart.setOption({ + xAxis: { + type: 'category', + boundaryGap: true, + axisTick: { + alignWithLabel: true, + inside: true //刻度线朝内 + }, + name: "时间", + nameLocation: 'center', + nameGap: 30, //坐标名称与轴线之间的距离 + data: timeArray, + axisLabel: { + formatter: function (value, index) { //截取分钟 + + } + } + }, + series: [{ + name: '', + type: 'line', + symbol: "none", //去掉圆点 + itemStyle: { + normal: { + lineStyle: { + color: '#00CD66' //设置线的颜色,如果在这里设置了要再上面的colo数组里面一起修改 + } + } + }, + data: t1Array + } + ] + }); + } +} \ No newline at end of file Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/deviceinterface/DeviceInterface.java =================================================================== diff -u -r30381 -r30382 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/deviceinterface/DeviceInterface.java (.../DeviceInterface.java) (revision 30381) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/deviceinterface/DeviceInterface.java (.../DeviceInterface.java) (revision 30382) @@ -99,6 +99,11 @@ */ public static final String XINHUA_Repaid_A_520 = "Repaid-a-520"; + /** + * 洁定清洗机型号:86-series(KLMYSRMYY-8) + */ + public static final String GETING_86_SERIES = "86-series"; + private Long id; /** Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/deviceInterface/deviceInterfaceView.jsp =================================================================== diff -u -r30339 -r30382 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/deviceInterface/deviceInterfaceView.jsp (.../deviceInterfaceView.jsp) (revision 30339) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/deviceInterface/deviceInterfaceView.jsp (.../deviceInterfaceView.jsp) (revision 30382) @@ -51,6 +51,10 @@ * Repaid-a-520(南方医科大学附属第三医院NYSY-28) */ var XINHUA_Repaid_A_520 = '<%=DeviceInterface.XINHUA_Repaid_A_520%>'; +/** + * 洁定清洗机型号:86-series(KLMYSRMYY-8) + */ +var GETING_86_SERIES = '<%=DeviceInterface.GETING_86_SERIES%>'; /** * 《供应商包添加》权限 Index: ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectView.jsp =================================================================== diff -u -r29513 -r30382 --- ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectView.jsp (.../washAndDisinfectView.jsp) (revision 29513) +++ ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectView.jsp (.../washAndDisinfectView.jsp) (revision 30382) @@ -117,6 +117,8 @@ var changLong = '<%= DeviceInterface.CHANGLONG %>'; var marge = '<%= DeviceInterface.MARGE %>'; var xinHua = '<%= DeviceInterface.XINHUA %>'; +var GETINGE = '<%= DeviceInterface.GETINGE %>'; +var GETING_86_SERIES = '<%= DeviceInterface.GETING_86_SERIES %>'; Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/Getinge86SeriesDataManagerImpl.java =================================================================== diff -u --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/Getinge86SeriesDataManagerImpl.java (revision 0) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/Getinge86SeriesDataManagerImpl.java (revision 30382) @@ -0,0 +1,549 @@ +package com.forgon.disinfectsystem.maintain.device.service; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import jcifs.smb.SmbFile; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import org.apache.commons.collections.CollectionUtils; +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; +import org.apache.commons.net.ftp.FTPFileFilter; +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.directory.vo.LoginUserData; +import com.forgon.disinfectsystem.entity.basedatamanager.deviceinterface.DeviceInterface; +import com.forgon.disinfectsystem.entity.basedatamanager.rinser.Rinser; +import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizerrecord.SterilizerFileName; +import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.WashDataItemOfGeting; +import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.WashDataOfGeting; +import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord; +import com.forgon.disinfectsystem.filemanager.CommonFileManager; +import com.forgon.disinfectsystem.filemanager.FtpFileManager; +import com.forgon.disinfectsystem.filemanager.SmbFileManager; +import com.forgon.disinfectsystem.washanddisinfectmanager.washanddisinfectrecord.service.WashAndDisinfectRecordManager; +import com.forgon.log.model.Log; +import com.forgon.log.service.LogManager; +import com.forgon.tools.FileSystemHelper; +import com.forgon.tools.date.DateTools; +import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.string.StringTools; +/** + * 洁定灭菌炉、清洗机数据处理 + * @author zhouPeiMian 2021-01-22 + * + */ +public class Getinge86SeriesDataManagerImpl implements DeviceDataManager{ + private LogManager appLogManager; + private ObjectDao objectDao; + private WashAndDisinfectRecordManager washAndDisinfectRecordManager; + private SmbFileManager smbFileManager; + private FtpFileManager ftpFileManager; + private CommonFileManager commonFileManager; + public void setCommonFileManager(CommonFileManager commonFileManager) { + this.commonFileManager = commonFileManager; + } + public void setSmbFileManager(SmbFileManager smbFileManager) { + this.smbFileManager = smbFileManager; + } + public void setFtpFileManager(FtpFileManager ftpFileManager) { + this.ftpFileManager = ftpFileManager; + } + + private static final Logger logger = Logger + .getLogger(GetingeDataManagerImpl.class); + + 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, boolean enableDetailedDeviceInformation, LoginUserData loginUserData) { + if(devInterface == null || StringUtils.isBlank(machineNo)) { + logger.debug(".......devInterface或机器号是空的"); + return ; + } + readAndSaveRecordCommon(devInterface, machineNo, brand, isAutoCompleteSterilization, enableDetailedDeviceInformation, loginUserData); + } + + /** + * 数据处理结束之后的工作,移动文件夹等等 + */ + @Override + public void end() { + + } + + /** + * 查找文件的机器号和是否清洗机记录 + * @param remoteType + * @param ftp + * @param ftpFile + * @param smbFile + * @return + */ + public JSONObject getMachineNoAndIsWashingMachine(String remoteType ,FTPClient ftp, String fileName, SmbFile smbFile){ + JSONObject obj = new JSONObject(); + String machineNo = null; + boolean isWashingMachine = true; + BufferedReader br = null; + InputStreamReader isr = null; + InputStream inputStream = null; + ByteArrayOutputStream out = null; + try { + inputStream = commonFileManager.getInputStream(remoteType, ftp, fileName, smbFile, out); + //FTP协议规定文件编码格式为ISO-8859-1 + //读取文件,使用下载文件的方法把文件写入内存,绑定到out流上 + br = commonFileManager.getBufferedReader(isr, inputStream,null); + String line; + boolean readedMachineNo = false; + boolean readedCP = false; + while((line = br.readLine()) != null){ + if(readedMachineNo && readedCP){ + break; + } + if(StringUtils.isBlank(line)){ + continue; + } + if(line.contains("MACHINE NAME")){ + //是设备号的行 + machineNo = line.replace("MACHINE NAME", "").replaceAll(":", "").trim(); + obj.put("machineNo", machineNo); + readedMachineNo = true; + } + } + obj.put("isWashingMachine", isWashingMachine); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("获取机器号和验证是否清洗机异常"); + }finally{ + FileSystemHelper.closeInputStream(inputStream, br, isr, out); + } + return obj; + } + + public void readAndSaveRecordByShareFolder(DeviceInterface devInterface,String machineNo,String brand,String isAutoCompleteSterilization, boolean enableDetailedDeviceInformation, LoginUserData loginUserData){ + 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 { + SmbShare share = new SmbShare("smb://" + userName +":"+ pwd +"@"+ ip +"/"+ directory +"/"); + session = new SmbSession(share); + String backUp = rootURL +"backUp/"; + smbFileManager.makeDirectory(session, backUp); + 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("LOG") || name.endsWith("log")) ){ + logger.debug("只处理.log文件->continue"); + continue; + } + // 机器号和品牌都要匹配,才处理 + if(!StringUtils.equals(brand, DeviceInterface.GETINGE)){ + logger.debug("品牌不对-机器品牌号:"+ brand +",接口品牌:" + DeviceInterface.GETINGE+ ">continue="+brand); + continue; + } + JSONObject machineNumAndIsWashingMachine = getMachineNoAndIsWashingMachine(DeviceInterface.INTERFACETYPE_SHAREFOLDER, null, null, smbForm); + String machineNumber = machineNumAndIsWashingMachine.optString("machineNo"); + if( !machineNo.equals(machineNumber) ){ + logger.debug("机器号不对-机器号:"+machineNo+",文件机器号:"+machineNumber + "->continue="+machineNo); + continue; + } + String cycleCounter = null; + if(machineNumAndIsWashingMachine.optBoolean("isWashingMachine")){ + // 清洗机数据的处理 + JSONArray jsArray = washDataReadAndSave(smbForm, devInterface, DeviceInterface.INTERFACETYPE_SHAREFOLDER, null, null, machineNumber, enableDetailedDeviceInformation, loginUserData); + if( jsArray != null){ + cycleCounter = (String)jsArray.get(0); + refreshWashRecordAmounts(devInterface.getId().toString(),Long.parseLong(cycleCounter),machineNumber); + SmbFile desFile = session.createSmbFileObject(backUp + name); + try{ + smbForm.copyTo(desFile); + smbForm.delete(); + }catch(Exception e){ + e.printStackTrace(); + logger.debug(name+"文件在移动和删除过程中发生错误"); + } + } + } + } + } catch (IOException e) { + // 捕获BufferedReader对象关闭时的异常 + logger.warn(e.getMessage()); + e.printStackTrace(); + if(enableDetailedDeviceInformation){ + appLogManager.saveLog(loginUserData, Log.MODEL_DEVICE_INTERFACE, Log.TYPE_ADD, devInterface.getName() + "设备接口连接异常," + e.getMessage()); + } + }finally{ + session.close(); + } + } + + public void readAndSaveRecordCommon(DeviceInterface devInterface,String machineNo,String brand,String isAutoCompleteSterilization, boolean enableDetailedDeviceInformation, LoginUserData loginUserData){ + FTPClient ftp = null; + SmbSession session = null; + try { + String ip = devInterface.getIP(); + String directory = devInterface.getFolderPath(); + if(!directory.startsWith("/")){ + directory = "/" + directory; + } + String userName=devInterface.getUserName(); + String remoteType = devInterface.getInterfaceType(); + String pwd = devInterface.getPassword(); + String rootPath = null; + FTPFileFilter filterLog = null; + FTPFile[] files = null; + String[] shareList = null; + Integer length = 0; + if(enableDetailedDeviceInformation){ + appLogManager.saveLog(loginUserData, Log.MODEL_DEVICE_INTERFACE, Log.TYPE_CONNECT, "ip:"+ip + ",user:"+userName + ",目录:"+directory); + } + if(DeviceInterface.INTERFACETYPE_FTP.equals(remoteType)){ + ftp = ftpFileManager.getFTPClient(ip, devInterface.getPort(), userName, pwd, enableDetailedDeviceInformation, loginUserData); + rootPath = ftpFileManager.getCurrentPath(ftp) + directory;//根目录 + ftpFileManager.changeWorkingDirectory(ftp, rootPath); + if(enableDetailedDeviceInformation){ + appLogManager.saveLog(loginUserData, Log.MODEL_DEVICE_INTERFACE, Log.TYPE_QUERY, "读取文件位置:"+ ftpFileManager.getCurrentPath(ftp)); + } + filterLog = new FTPFileFilter() {// 只处理.log文件 + @Override + public boolean accept(FTPFile file) { + if(file.isDirectory()){ + return false; + }else if(file.getName().endsWith("LOG") || file.getName().endsWith("log")){ + return true; + } + logger.debug("只处理.log文件->continue"); + return false; + } + }; + files = ftpFileManager.getListFiles(ftp, "", filterLog, enableDetailedDeviceInformation, loginUserData); + length = files.length; + }else{ + rootPath = "//"+ ip + directory; + SmbShare share = new SmbShare("smb://" + userName +":"+ pwd +"@"+ ip +"/"+ directory +"/"); + session = new SmbSession(share); + shareList = share.list(); + length = shareList.length; + } + String backUpPath = rootPath + "/backUp"; + if(enableDetailedDeviceInformation){ + appLogManager.saveLog(loginUserData, Log.MODEL_DEVICE_INTERFACE, Log.TYPE_QUERY, "文件数量:"+ length+",backUp位置:" + backUpPath); + } + commonFileManager.makeDirectory(remoteType, ftp, backUpPath, session, enableDetailedDeviceInformation, loginUserData); + for (int i = 0; i < length; i++) { + FTPFile ftpFile = null; + SmbFile smbForm = null; + String name = null; + if(DeviceInterface.INTERFACETYPE_FTP.equals(remoteType)){ + ftpFile = files[i]; + name = ftpFile.getName(); + }else{ + name = shareList[i]; + // 只处理.LOG文件 + if (!(name.endsWith("LOG") || name.endsWith("log"))){ + logger.debug("只处理.log文件->continue"); + continue; + } + smbForm = session.createSmbFileObject(rootPath + File.separator + name); + if(smbForm == null || smbForm.isDirectory()){ + continue; + } + } + // 机器号和品牌都要匹配,才处理 + if(!StringUtils.equals(brand, DeviceInterface.GETINGE)){ + continue; + } + if(objectDao.getByProperty(SterilizerFileName.class.getSimpleName(), "fileName", name)!=null){ + logger.debug(name+"该文件已经解析过"); + commonFileManager.moveFile(remoteType, name, ftp, ftpFileManager.getCurrentPath(ftp), backUpPath, session, smbForm); + continue; + } + JSONObject machineNumAndIsWashingMachine = getMachineNoAndIsWashingMachine(remoteType, ftp, name, smbForm); + String machineNumber = machineNumAndIsWashingMachine.optString("machineNo"); + if( !machineNo.equals(machineNumber) ){ + if(enableDetailedDeviceInformation){ + appLogManager.saveLog(loginUserData, Log.MODEL_DEVICE_INTERFACE, Log.TYPE_QUERY, String.format("文件机器号[%s]不匹配灭菌炉机器号[%s]", machineNumber,machineNo)); + } + continue ; + } + String cycleCounter = null; + + if(machineNumAndIsWashingMachine.optBoolean("isWashingMachine")){ + // 清洗机数据的处理 + JSONArray jsArray = washDataReadAndSave(smbForm, devInterface, remoteType, ftp, name, machineNumber, enableDetailedDeviceInformation, loginUserData); + if(jsArray != null){ + cycleCounter = (String)jsArray.get(0); + refreshWashRecordAmounts(devInterface.getId().toString(),Long.parseLong(cycleCounter),machineNumber); + } + } + try{ + commonFileManager.moveFile(remoteType, name, ftp, ftpFileManager.getCurrentPath(ftp), backUpPath, session, smbForm); + }catch(Exception e){ + e.printStackTrace(); + logger.debug(name+"文件在移动和删除过程中发生错误"); + } + } + } catch (Exception e) { + e.printStackTrace(); + logger.warn(e.getMessage()); + if(enableDetailedDeviceInformation){ + appLogManager.saveLog(loginUserData, Log.MODEL_DEVICE_INTERFACE, Log.TYPE_ADD, e.getMessage()); + } + throw new RuntimeException(e.getMessage()); + }finally{ + ftpFileManager.closeFTP(ftp); + if(session != null){ + session.close(); + } + } + } + + /** + * 洁定清洗机数据处理 + */ + public JSONArray washDataReadAndSave(SmbFile remoteFile,DeviceInterface devInterface, String remoteType, FTPClient ftp, String fileName, String machineNumber, boolean enableDetailedDeviceInformation, LoginUserData loginUserData){ + InputStream inputStream = null; + ByteArrayOutputStream fos = null; + InputStreamReader isr = null; + BufferedReader br = null; + boolean isSave = false;//是否已经解析保存 + try{ + inputStream = commonFileManager.getInputStream(remoteType, ftp, fileName, remoteFile, fos); + String cycleCounter = null; + // 读取直到最后一行 + WashDataOfGeting record = new WashDataOfGeting(); + record.setDeviceInterfaceID(devInterface.getId().toString()); + List washDataOfGetingItems = new ArrayList(); + WashDataItemOfGeting item = new WashDataItemOfGeting(); + String startTime = ""; + boolean isParameters = false; + boolean isTemp = false; + String processOfTemp = ""; + String regex = "^([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$"; + br = commonFileManager.getBufferedReader(isr, inputStream, "utf-8"); + String line = null; + while((line = br.readLine()) != null){ + if(StringUtils.isBlank(line) || line.contains("-----------------------")){ + continue; + } + if(line.contains("PROGRAM:")){ + record.setProgram(line.replace("PROGRAM:", "").trim()); + }else if(line.contains("DATE")){ + startTime = line.replaceAll("DATE", "").replace(":", "").trim(); + }else if(line.contains("PROCESS START:")){ + startTime += line.replace("PROCESS START:", " "); + record.setStartTime(DateTools.coverStrToDate(startTime, "dd/MM/yyyy HH:mm:ss")); + startTime = ""; + }else if(line.contains("MACHINE NAME")){ + String machineName = line.replace("MACHINE NAME", "").replace(":", "").trim(); + record.setMachineNo(machineName); + }else if(line.contains("MACHINE ID")){ + String machineID = line.replace("MACHINE ID", "").replace(":", "").trim(); + record.setMachineID(machineID); + }else if(line.contains("CYCLE COUNTER")){ + cycleCounter = line.replace("CYCLE COUNTER", "").replace(":", "").trim(); + Long cycleCounter1 = Long.valueOf(cycleCounter); + record.setCycleCounter(cycleCounter1); + }else if(line.contains("PARAMETERS")){ + isParameters = true; + }else if(line.contains("SIGNALS")){ + isParameters = false; + isTemp = true; + }else if(isParameters){ + String value = line.substring(16).trim(); + String key = line.replace(value, "").trim(); + key = translateWashDataPrams(key); + String orgParameters = record.getParameters() == null ? "" : record.getParameters(); + record.setParameters(StringTools.uniteTwoStringBySemicolon(orgParameters, key+">>"+value, ";")); + }else if(line.contains("AI07")){ + isTemp = true; + }else if(line.contains("SIGNATURE:")){ + isTemp = false; + isParameters = false; + String endTimeStr = washDataOfGetingItems.get(washDataOfGetingItems.size()-1).getProcessTime(); + String[] timeArr = endTimeStr.split(":"); + long hour = Long.parseLong(timeArr[0]); + long minute = Long.parseLong(timeArr[1]); + long second = Long.parseLong(timeArr[2]); + long time = (hour*60*60 + minute*60 + second*1) * 1000; + Date endTime = new Date(); + endTime.setTime(record.getStartTime().getTime() + time); + record.setEndTime(endTime); + objectDao.saveOrUpdate(record); + objectDao.batchSaveOrUpdate(washDataOfGetingItems); + record.setWashDataItems(washDataOfGetingItems); + if(!isSave){ + isSave = true; + } + }else if(isTemp){ + if(line.length() >= 8){ + String timeStr = line.substring(0,8).trim(); + if(timeStr.matches(regex)){ + if(StringUtils.isBlank(processOfTemp) && CollectionUtils.isNotEmpty(washDataOfGetingItems)){ + processOfTemp = washDataOfGetingItems.get(washDataOfGetingItems.size()-1).getProcess(); + } + item.setProcessTime(timeStr); + item.setTemp(line.replace(timeStr, "").trim()); + item.setProcess(processOfTemp); + processOfTemp = null; + objectDao.saveOrUpdate(item); + item.setWashDataOfGeting(record); + washDataOfGetingItems.add(item); + item = new WashDataItemOfGeting(); + }else{ + if(StringUtils.isBlank(processOfTemp)){ + processOfTemp = line.trim(); + } + } + }else{ + processOfTemp = line.trim(); + } + }else{ + continue; + } + } + if(StringUtils.isBlank(cycleCounter)){ + // 没有读到循环次数,是无效数据 + return null; + } + JSONArray jsonArray = new JSONArray(); + jsonArray.add(0, cycleCounter); + return jsonArray; + } catch (Exception e) { + e.printStackTrace(); + logger.warn(e.getMessage()); + if(enableDetailedDeviceInformation){ + appLogManager.saveLog(loginUserData, Log.MODEL_DEVICE_INTERFACE, Log.TYPE_ADD, devInterface.getName() + "设备接口连接异常," + e.getMessage()); + } + return null; + }finally{ + if(isSave){ + SterilizerFileName sf = new SterilizerFileName(); + sf.setFileName(fileName); + sf.setIsEnd(Constants.STR_YES); + objectDao.save(sf); + } + FileSystemHelper.closeInputStream(inputStream, null, null, fos); + } + } + + /** + * 中英文对照说明 + * @param key + * @return + */ + private String translateWashDataPrams(String key) { + Map translateMap = new HashMap(); + translateMap.put("PH-900-DRYING", "开始干燥"); + translateMap.put("PH-20-DRAINING LONG", "长排水"); + translateMap.put("PH442-FINAL RINSE A0", "终末漂洗"); + translateMap.put("PH360-RINSE 2", "漂洗2"); + translateMap.put("PH330-RINSE 1", "漂洗1"); + translateMap.put("PH25 WASHING", "主洗"); + translateMap.put("PH220-PRE RINSE CW", "进软水"); + translateMap.put("PH2-DRAINING SHORT", "短排水"); + translateMap.put("PH1-START", "开始"); + + translateMap.put("DRYING TIME", "干燥时间"); + translateMap.put("DRYING TEMP", "干燥温度"); + translateMap.put("A0 VALUE", "AO值"); + translateMap.put("FING R DOS TEM", "终末漂洗温度"); + translateMap.put("FING R DOS2", "终末漂洗"); + translateMap.put("WASH TIME", "主洗时间"); + translateMap.put("WASH TEMP", "主洗温度"); + translateMap.put("WASH DOS TEMP", "主洗油温度"); + translateMap.put("WASH DOS 3", "主洗油量"); + translateMap.put("DISINF TEMP", "消毒温度"); + translateMap.put("PARAMETERS", "参数"); + translateMap.put("CYCLE COUNER", "运行锅次"); + translateMap.put("MACHINE ID", "ID号"); + translateMap.put("MACHINENAME", "设备名称"); + translateMap.put("PROCESS START", "时间"); + translateMap.put("DRTE", "日期"); + translateMap.put("PROGRAM", "程序"); + + if(translateMap.containsKey(key)){ + return translateMap.get(key); + } + return key; + } + + /** + * 更新清洗机的温度压力数据 + */ + @SuppressWarnings("unchecked") + public void refreshWashRecordAmounts(String devInterfaceId,Long cycleCounter,String machineNo){ + // 根据接口和机器号找到清洗机 + Session session = objectDao.getHibernateSession(); + String queryString = "select r from Rinser r" + + " where r.deviceInterface.id = :deviceInterfaceId" + + " and r.machineNumber = :machineNo"; + Query query = session.createQuery(queryString); + query.setParameter("deviceInterfaceId", Long.valueOf(devInterfaceId)); + query.setParameter("machineNo", machineNo); + List rinsers = query.list(); + + for(Rinser rs : rinsers) { + queryString = "select wd from WashAndDisinfectRecord wd" + + " where wd.disinfectIdentification = :rinserName" + + " and wd.cycleCounter = :cycleCounter"; + 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); + wd.setWashDataAmount(Long.valueOf(amounts)+1); + washAndDisinfectRecordManager.save(wd); + } + } + } + +} Index: ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washDataChart/washDataChartOfGeting86Series.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washDataChart/washDataChartOfGeting86Series.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washDataChart/washDataChartOfGeting86Series.jsp (revision 30382) @@ -0,0 +1,136 @@ +<%@page import="com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord"%> +<%@page import="com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.WashDataItemOfChangLong"%> +<%@ page contentType="text/html; charset=UTF-8"%> + + + + + + <%@include file="/common/taglibs.jsp" %> + 清洗机参数 + + + + + + + + + + + + + +

清洗程序参数

+
+
+
+ 程序名称: +
+
+ 开始时间: +
+
+
+
+ 机器名称: +
+
+ 机器ID: +
+
+
+
+ 循环次数: +
+
+ 结束时间: +
+
+
+
+
+
+
+
+ + + \ No newline at end of file Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java =================================================================== diff -u -r30370 -r30382 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java (.../WashAndDisinfectRecordManagerImpl.java) (revision 30370) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java (.../WashAndDisinfectRecordManagerImpl.java) (revision 30382) @@ -77,8 +77,10 @@ import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingRecord; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.WashData; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.WashDataItemOfChangLong; +import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.WashDataItemOfGeting; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.WashDataOfBelimed; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.WashDataOfChangLong; +import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.WashDataOfGeting; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.WashDataOfMarge; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectPic; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord; @@ -3264,12 +3266,74 @@ // 倍力曼清洗机(ZJJSRM-15) reusltJSON = getWashDataAndLineEchartDateOfBelimed(wdr,dif.getId(),rs.getMachineNumber()); return reusltJSON; + } else if(DeviceInterface.GETINGE.equals(deviceBrand)){ + // 倍力曼清洗机(KLMYSRMYY-8) + reusltJSON = getWashDataAndLineEchartDateOfGeting(wdr,dif.getId(),rs.getMachineNumber()); + return reusltJSON; } } return reusltJSON; } - /** + private JSONObject getWashDataAndLineEchartDateOfGeting(WashAndDisinfectRecord wdr, Long deviceInterfaceId, String machineNumber) { + JSONObject resultData = new JSONObject(); + WashDataOfGeting washDataOfGeting = null; + Long cycleCounter = wdr.getCycleCounter(); + //获取新华清洗机的详细参数 + String whereSql = String.format( + " where po.deviceInterfaceID = %s and po.machineNo = '%s' and po.cycleCounter = %s order by po.startTime ", + deviceInterfaceId,machineNumber,cycleCounter); + List washDataOfGetingList = objectDao.findBySql(WashDataOfGeting.class.getSimpleName(), whereSql); + if(CollectionUtils.isEmpty(washDataOfGetingList)){ + return resultData; + } + washDataOfGeting = washDataOfGetingList.get(0); + + if(washDataOfGeting != null && CollectionUtils.isNotEmpty(washDataOfGeting.getWashDataItems())){ + List washDataItemList = washDataOfGeting.getWashDataItems(); + //折线图需要的参数明细 + JSONObject lineChartData = new JSONObject(); + JSONArray timeArray = new JSONArray(); + JSONArray t1TempArray = new JSONArray(); + JSONArray processArray = new JSONArray(); + //程序名称(取值追溯系统) + resultData.put("program", washDataOfGeting.getProgram()); + //周期开始 + String startedDateTimeStr = ""; + if(washDataOfGeting.getStartTime() != null){ + startedDateTimeStr = DateTools.getFormatDateStr(washDataOfGeting.getStartTime(), DateTools.COMMON_DATE_HMS); + } + resultData.put("startedTime", startedDateTimeStr); + //周期结束 + String endDateTimeStr = ""; + if(washDataOfGeting.getEndTime() != null){ + endDateTimeStr = DateTools.getFormatDateStr(washDataOfGeting.getEndTime(), DateTools.COMMON_DATE_HMS); + } + resultData.put("endTime", endDateTimeStr); + + //机器名称(MACHINE NAME 设置为清洗机的机器号) + resultData.put("machineName", washDataOfGeting.getMachineNo() == null ? "" : washDataOfGeting.getMachineNo()); + //MACHINE ID + resultData.put("machineID", washDataOfGeting.getMachineID() == null ? "" : washDataOfGeting.getMachineID()); + //周期数(循环次数)(从K文件读取) + resultData.put("cycleCounter", washDataOfGeting.getCycleCounter() == null ? "" : washDataOfGeting.getCycleCounter()); + //清洗参数 + resultData.put("parameters", washDataOfGeting.getParameters() == null ? "" : washDataOfGeting.getParameters()); + for(WashDataItemOfGeting washDataItem : washDataItemList){ + //鼠标放在曲线图的线条上时,需要显示出对应的时间、步骤、TS1℃、TI1℃、TS2℃、TI2℃、区号 + timeArray.add(washDataItem.getProcessTime() + "/" + washDataItem.getProcess()); + t1TempArray.add(washDataItem.getTemp()); + processArray.add(washDataItem.getProcess()); + } + lineChartData.put("time", timeArray); + lineChartData.put("t1Temp", t1TempArray); + lineChartData.put("process", processArray); + resultData.put("washDataItemLineChart", lineChartData); + } + return resultData; + } + +/** * 获取倍力曼清洗机清洗参数(ZJJSRM-15) * @param wdr * @param deviceInterfaceId Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/DeviceInterfaceDataProcessImpl.java =================================================================== diff -u -r29962 -r30382 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/DeviceInterfaceDataProcessImpl.java (.../DeviceInterfaceDataProcessImpl.java) (revision 29962) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/DeviceInterfaceDataProcessImpl.java (.../DeviceInterfaceDataProcessImpl.java) (revision 30382) @@ -5,6 +5,7 @@ import java.util.List; +import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -153,7 +154,12 @@ dm.readAndSaveRecord(devInterface,rs.getMachineNumber(),DeviceInterface.STERIS,null,enableDetailedDeviceInformation,loginUserData); break; case DeviceInterface.GETINGE: - Object getingeBean = SpringBeanManger.getBean("getingeDataManager"); + Object getingeBean = null; + if(StringUtils.equals(devInterface.getDeviceModel(), DeviceInterface.GETING_86_SERIES)){ + getingeBean = SpringBeanManger.getBean("getingWashDataManager"); + }else{ + getingeBean = SpringBeanManger.getBean("getingeDataManager"); + } dm = (DeviceDataManager) getingeBean; dm.readAndSaveRecord(devInterface,rs.getMachineNumber(),DeviceInterface.GETINGE,null,enableDetailedDeviceInformation,loginUserData); break; Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/washanddisinfectmanager/washData/WashDataOfGeting.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/washanddisinfectmanager/washData/WashDataOfGeting.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/washanddisinfectmanager/washData/WashDataOfGeting.java (revision 30382) @@ -0,0 +1,166 @@ +package com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.persistence.Entity; + +import org.hibernate.annotations.Cascade; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.OrderBy; + +import org.hibernate.annotations.Cache; +import org.hibernate.annotations.CacheConcurrencyStrategy; + +/** + * 洁定清洗机数据 + * @author zhoupeimian + * @since 2021-01-25 + */ +@Entity +@DynamicInsert(false) +@DynamicUpdate(true) +@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) +public class WashDataOfGeting { + + private Long id; + + /** + * 清洗程序 + */ + private String program; + + /** + * 程序开始时间 + */ + private Date startTime; + + /** + * 程序结束时间 + */ + private Date endTime; + + /** + * 机器名称(文件里面的清洗机名称) + */ + private String machineNo; + + /** + * 机器ID + */ + private String machineID; + + /** + * 循环参数 + */ + private Long cycleCounter; + + /** + * 设备接口ID + */ + private String deviceInterfaceID; + + /** + * 参数列表(多个参数用;分割) + */ + private String parameters; + + /** + * 温度曲线数据 + */ + private List washDataItems = new ArrayList(); + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getProgram() { + return program; + } + + public void setProgram(String program) { + this.program = program; + } + + public Date getStartTime() { + return startTime; + } + + public void setStartTime(Date startTime) { + this.startTime = startTime; + } + + public Date getEndTime() { + return endTime; + } + + public void setEndTime(Date endTime) { + this.endTime = endTime; + } + + public String getMachineNo() { + return machineNo; + } + + public void setMachineNo(String machineNo) { + this.machineNo = machineNo; + } + + public String getMachineID() { + return machineID; + } + + public void setMachineID(String machineID) { + this.machineID = machineID; + } + + public Long getCycleCounter() { + return cycleCounter; + } + + public void setCycleCounter(Long cycleCounter) { + this.cycleCounter = cycleCounter; + } + + public String getDeviceInterfaceID() { + return deviceInterfaceID; + } + + public void setDeviceInterfaceID(String deviceInterfaceID) { + this.deviceInterfaceID = deviceInterfaceID; + } + + public String getParameters() { + return parameters; + } + + public void setParameters(String parameters) { + this.parameters = parameters; + } + + @OneToMany(fetch = FetchType.LAZY, mappedBy="washDataOfGeting") + @Cascade(value = { org.hibernate.annotations.CascadeType.SAVE_UPDATE }) + @OrderBy("id asc") + public List getWashDataItems() { + return washDataItems; + } + + public void setWashDataItems(List washDataItems) { + this.washDataItems = washDataItems; + } + +} Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/XinHuaDataManagerImpl.java =================================================================== diff -u -r30346 -r30382 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/XinHuaDataManagerImpl.java (.../XinHuaDataManagerImpl.java) (revision 30346) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/device/service/XinHuaDataManagerImpl.java (.../XinHuaDataManagerImpl.java) (revision 30382) @@ -1,5 +1,6 @@ package com.forgon.disinfectsystem.maintain.device.service; +import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.FileNotFoundException; import java.io.IOException; @@ -851,6 +852,7 @@ long remoteFileLength = 0L; if(remoteFile != null){ inputStream = remoteFile.getInputStream(); + inputStream = new BufferedInputStream(inputStream); remoteFileLength = remoteFile.length(); }else{ out = new ByteArrayOutputStream(); Index: ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectView.js =================================================================== diff -u -r30101 -r30382 --- ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectView.js (.../washAndDisinfectView.js) (revision 30101) +++ ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectView.js (.../washAndDisinfectView.js) (revision 30382) @@ -106,7 +106,14 @@ openModalWindowForExt(WWWROOT+'/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washDataChart/washDataChartOfXinHuaOfZJJSRM.jsp?washAndDisinfectRecordId='+id,'', '清洗参数', '800', '600'); } } - }else{ + }else if(data.deviceBrand == GETINGE){ + if(data.deviceModel == GETING_86_SERIES){ + // KLMY洁定清洗机接口 + openModalWindowForExt(WWWROOT+'/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washDataChart/washDataChartOfGetingOf86Series.jsp?washAndDisinfectRecordId='+id,'', '清洗参数', '800', '600'); + } else { + openModalWindowForExt(WWWROOT+'/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washDataLineChart.jsp?washAndDisinfectRecordId='+id,'', '清洗参数', '800', '600'); + } + }else{ if(sstsConfig.belimedLineChartType == 1){ // ZJJSRM-15倍力曼清洗机接口 openModalWindowForExt(WWWROOT+'/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washDataChart/washDataChartOfBelimed.jsp?washAndDisinfectRecordId='+id,'', '清洗参数', '800', '600'); Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/deviceInterface/deviceInterfaceForm.js =================================================================== diff -u -r30339 -r30382 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/deviceInterface/deviceInterfaceForm.js (.../deviceInterfaceForm.js) (revision 30339) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/deviceInterface/deviceInterfaceForm.js (.../deviceInterfaceForm.js) (revision 30382) @@ -355,6 +355,11 @@ fields : [ 'value' ], data : [[SHAREFOLDER],[FTP]] }) + var getingModelComboStore = new Ext.data.SimpleStore({ + fields : [ 'value' ], + data : [[GETING_86_SERIES]] + }) + showCmt('deviceModelWrap','deviceModel',true,getingModelComboStore); showCmt('interfaceTypeWrap','interfaceType',true,interfaceTypeComboStore); }else if(deviceBrand == JOHNSON){ var johnsonModelComboStore = new Ext.data.SimpleStore({ Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/washanddisinfectmanager/washData/WashDataItemOfGeting.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/washanddisinfectmanager/washData/WashDataItemOfGeting.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/washanddisinfectmanager/washData/WashDataItemOfGeting.java (revision 30382) @@ -0,0 +1,96 @@ +package com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData; + +import javax.persistence.Entity; + +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; + +import org.hibernate.annotations.Cache; +import org.hibernate.annotations.CacheConcurrencyStrategy; + +/** + * 洁定清洗机温度曲线 + * @author zhouPeiMian + * @since 2021-01-25 + */ +@Entity +@DynamicInsert(false) +@DynamicUpdate(true) +@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) +public class WashDataItemOfGeting { + + private Long id; + + /** + * 温度 + */ + private String temp; + + /** + * 阶段 + */ + private String process; + + /** + * 时间 + */ + private String processTime; + + /** + * 关联清洗数据 + */ + private WashDataOfGeting washDataOfGeting; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTemp() { + return temp; + } + + public void setTemp(String temp) { + this.temp = temp; + } + + public String getProcess() { + return process; + } + + public void setProcess(String process) { + this.process = process; + } + + public String getProcessTime() { + return processTime; + } + + public void setProcessTime(String processTime) { + this.processTime = processTime; + } + + + @ManyToOne + @JoinColumn(name = "washDataOfGeting_id") + public WashDataOfGeting getWashDataOfGeting() { + return washDataOfGeting; + } + + + public void setWashDataOfGeting(WashDataOfGeting washDataOfGeting) { + this.washDataOfGeting = washDataOfGeting; + } + +} Index: ssts-web/src/main/webapp/disinfectsystem/config/klmysrmyy/spring/HIS.xml =================================================================== diff -u -r29753 -r30382 --- ssts-web/src/main/webapp/disinfectsystem/config/klmysrmyy/spring/HIS.xml (.../HIS.xml) (revision 29753) +++ ssts-web/src/main/webapp/disinfectsystem/config/klmysrmyy/spring/HIS.xml (.../HIS.xml) (revision 30382) @@ -116,4 +116,17 @@ + + + + + + + + + + + \ No newline at end of file