Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/vo/SterilizationRecordPrintTousseItem.java =================================================================== diff -u --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/vo/SterilizationRecordPrintTousseItem.java (revision 0) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/vo/SterilizationRecordPrintTousseItem.java (revision 22296) @@ -0,0 +1,82 @@ +package com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.vo; + +import java.util.Date; + +/** + * 灭菌记录打印数据 + * @author kzh + * + */ +public class SterilizationRecordPrintTousseItem { + /** + * 器械包名称 + */ + private String tousseName; + /** + * 器械包条码 + */ + private String barcode; + /** + * 装配时间 + */ + private Date operationTime; + /** + * 配包人 + */ + private String operator; + /** + * 灭菌交接时间 + */ + private Date transitionTime; + /** + * 交接人名称 + */ + private String handover; + /** + * 接收人名称 + */ + private String takeover; + public String getTousseName() { + return tousseName; + } + public String getBarcode() { + return barcode; + } + public Date getOperationTime() { + return operationTime; + } + public String getOperator() { + return operator; + } + public Date getTransitionTime() { + return transitionTime; + } + public String getHandover() { + return handover; + } + public String getTakeover() { + return takeover; + } + public void setTousseName(String tousseName) { + this.tousseName = tousseName; + } + public void setBarcode(String barcode) { + this.barcode = barcode; + } + public void setOperationTime(Date operationTime) { + this.operationTime = operationTime; + } + public void setOperator(String operator) { + this.operator = operator; + } + public void setTransitionTime(Date transitionTime) { + this.transitionTime = transitionTime; + } + public void setHandover(String handover) { + this.handover = handover; + } + public void setTakeover(String takeover) { + this.takeover = takeover; + } +} + Index: ssts-web/src/main/webapp/disinfectsystem/config/zsyy/print/printConfig.js =================================================================== diff -u -r22254 -r22296 --- ssts-web/src/main/webapp/disinfectsystem/config/zsyy/print/printConfig.js (.../printConfig.js) (revision 22254) +++ ssts-web/src/main/webapp/disinfectsystem/config/zsyy/print/printConfig.js (.../printConfig.js) (revision 22296) @@ -122,7 +122,43 @@ {header : "发放员", dataIndex : 'invoiceSender', width : 60, align : 'center'} ] } -} +}; +/** + * 灭菌记录明细打印 + */ +var sterilizationRecordDetailConfig = { + fixed:true, + headerFooter : [ + // 页眉名称 + {label : "灭菌物品明细记录", dataIndex : '', fontSize : 15, position : ["0.3cm","37%","99%",5]}, + {label : "灭菌开始时间:", dataIndex : 'startDate', fontSize : 9, position : ["1cm","2%","99%",5]}, + {label : "灭菌结束时间:", dataIndex : 'endDate', fontSize : 9, position : ["1cm","30%","90%",5]}, + {label : "灭菌卸载时间:", dataIndex : 'srSituationComfirmTime', fontSize : 9, position : ["1cm","65%","90%",5]}, + {label : "灭菌炉名称:", dataIndex : 'sterilizerName', fontSize : 9, position : ["1.4cm","2%","90%",5]}, + {label : "炉次:", dataIndex : 'frequency', fontSize : 9, position : ["1.4cm","30%","90%",5]}, + {label : "总数量:", dataIndex : 'amount', fontSize : 9, position : ["1.4cm","65%","90%",5]} + ], + currentPageNumber : {label : "第#页", fontSize : 9, position : ["1.4cm","85%","90%",5]}, + totalPageAmount : {label : "共&页", fontSize : 9, position : ["1.4cm","90%","90%",5]}, + goodsTable :{ + rowHeight : 20, + //position : ["50","1%","96%","6.0cm"], + fontSize:12, + position : ["1.9cm","0.2cm","99%","27cm"], + headRepeat : true, + donotPrintTotal:true,//不打印合计 + columns : [ + {header : "序号", dataIndex : 'serialNumber', width : 60, align : 'center'}, + {header : "物品名称", dataIndex : 'tousseName', width : 200, align : 'center'}, + {header : "条码", dataIndex : 'barcode', width : 60, align : 'center'}, + {header : "装配时间", dataIndex : 'operationTime', width : 120, align : 'center'}, + {header : "装配员", dataIndex : 'operator', width : 60, align : 'center'}, + {header : "灭菌交接时间", dataIndex : 'transitionTime', width : 120, align : 'center'}, + {header : "灭菌交接人", dataIndex : 'handover', width : 60, align : 'center'}, + {header : "灭菌接收人", dataIndex : 'takeover', width : 60, align : 'center'} + ] + } +}; var appropriationListConfig = { headerFooter : [ // 页眉名称 @@ -1970,5 +2006,7 @@ //灭菌交接记录单 sterilizationTransitionRecord:sterilizationTransitionRecordConfig, //签收记录打印。 - signRecordDetail : signRecordDetailConfig + signRecordDetail : signRecordDetailConfig, + //灭菌记录打印 + sterilizationRecordDetail : sterilizationRecordDetailConfig }; Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManager.java =================================================================== diff -u -r22156 -r22296 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManager.java (.../SterilizationRecordManager.java) (revision 22156) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManager.java (.../SterilizationRecordManager.java) (revision 22296) @@ -15,6 +15,7 @@ import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecordPic; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizerrecord.SterilizerRecord; +import com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.vo.SterilizationRecordPrintTousseItem; import com.forgon.disinfectsystem.vo.SimpleInfoVo; import com.forgon.tools.hibernate.BasePoManager; @@ -297,6 +298,12 @@ */ public List getAllTousseInstancesOfSterile(SterilizationRecord sterilizationRecord); /** + * 获取灭菌记录打印器械包详细信息 + * @param sterilizationRecord + * @return + */ + public List getSterilizationRecordPrintItem(SterilizationRecord sterilizationRecord); + /** * 灭菌完成确认 * @param sterilizationRecordId * @param userName Index: ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordView.js =================================================================== diff -u -r22234 -r22296 --- ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordView.js (.../sterilizationRecordView.js) (revision 22234) +++ ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordView.js (.../sterilizationRecordView.js) (revision 22296) @@ -110,6 +110,64 @@ } } +//打印灭菌记录 +function printSterilizationRecord(grid) { + var records = grid.getSelectionModel().getSelections(); + if (records.length == 0) { + showResult("请选择要打印的灭菌记录!", null , sstsConfig.messagePauseTimeOnSterilizationRecordPage); + return false; + } else if (records.length > 1) { + showResult("一次只能打印一条灭菌记录!", null , sstsConfig.messagePauseTimeOnSterilizationRecordPage); + return false; + } else { + var id = records[0].data['id']; + if(records[0].data['printStatus'] == '已打印'){ + top.Ext.MessageBox.confirm("请确认","灭菌记录已经打印,确定重新打印?", + function(button, text) { + if ("yes" == button){ + doPrintRecord(id); + } + }); + }else{ + top.Ext.MessageBox.confirm("请确认","确定要打印灭菌记录?", + function(button, text) { + if ("yes" == button){ + doPrintRecord(id); + } + }); + } + } +} +function doPrintRecord(id){ + Ext.MessageBox.show({ + msg: '正在打印,请稍候...', + width:300, + wait:true, + waitConfig: {interval:300} + }); + Ext.Ajax.request({ + url : WWWROOT + '/disinfectSystem/sterilization/sterilizationRecordAction!loadSterilizationRecordPrintData.do', + params : {id : id}, + success : function(response, options) { + hideMessageBox(false); + var result = Ext.decode(response.responseText); + formTypeOfPrinted = "sterilizationRecordDetail"; + setPrinterByConfig(); + setGoodsInfos(result); + print2(result); + LODOP.PRINT(); + + grid.dwrReload(); + }, + failure : function(response, options) { + hideMessageBox(false); + var result = Ext.decode(response.responseText); + if(result && result.message){ + showResult(result.message, null , sstsConfig.messagePauseTimeOnSterilizationRecordPage); + } + } + }); +} /** * status 传过来的状态:完成灭菌 */ @@ -819,6 +877,13 @@ handler : function() { grid.getStore().reload(); } + },'-',{ + text : '打印', + iconCls : 'icon_print', + hidden : !printConfig.sterilizationRecordDetail, + handler : function() { + printSterilizationRecord(grid); + } },{id:'formSubmitResult',xtype:'hidden',value:'0'},{id:'continueSubmitResult',xtype:'hidden',value:'0'},{id:'qmSubmitResult',xtype:'hidden',value:'0'}]; }else{ tbar = [{ @@ -849,6 +914,13 @@ handler : function() { grid.getStore().reload(); } + },'-',{ + text : '打印', + iconCls : 'icon-print', + hidden : !printConfig.sterilizationRecordDetail, + handler : function() { + printSterilizationRecord(grid); + } },{id:'formSubmitResult',xtype:'hidden',value:'0'},{id:'continueSubmitResult',xtype:'hidden',value:'0'},{id:'qmSubmitResult',xtype:'hidden',value:'0'}]; } Index: forgon-tools/src/main/java/com/forgon/tools/json/JSONUtil.java =================================================================== diff -u -r22254 -r22296 --- forgon-tools/src/main/java/com/forgon/tools/json/JSONUtil.java (.../JSONUtil.java) (revision 22254) +++ forgon-tools/src/main/java/com/forgon/tools/json/JSONUtil.java (.../JSONUtil.java) (revision 22296) @@ -282,6 +282,43 @@ JSONObject jsonObject = JSONObject.fromObject(object, config); return jsonObject; } + /** + * 转换为json对象,同时只包含基本属性及字符串,日期类型的属性 + * @param object + * @return + */ + public static JSONObject toJsonObjectWithSimpleProperty(Object object){ + // JsonConfig不设为全局变量,避免并发访问导致问题,以后可考虑采用ThreadLocal方式 + JsonConfig config = new JsonConfig(); + // 这段代码可以解决Integer、Double类型的被默认转换为0的问题,这样null将替换0成为默认转换值.其它类型的设置类似. + config.registerDefaultValueProcessor(Integer.class, + new DefaultValueProcessor() { + @Override + public Object getDefaultValue(Class type) { + return JSONNull.getInstance(); + } + }); + config.registerDefaultValueProcessor(Double.class, + new DefaultValueProcessor() { + @Override + public Object getDefaultValue(Class type) { + return JSONNull.getInstance(); + } + }); + config.registerDefaultValueProcessor(Long.class, + new DefaultValueProcessor() { + @Override + public Object getDefaultValue(Class arg0) { + return JSONNull.getInstance(); + } + }); + config.registerJsonValueProcessor(Date.class, new DateJsonValueProcessor("yyyy-MM-dd HH:mm:ss")); + PropertyFilter propertyFilter = new SimpleTypeJsonPropertyFilter(); + config.setJsonPropertyFilter(propertyFilter); + config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); + JSONObject jsonObject = JSONObject.fromObject(object, config); + return jsonObject; + } public static JSONArray toJsonArrayWithJsonlib(Collection objs, String[] excludeProperties) { @@ -302,6 +339,13 @@ return JSONNull.getInstance(); } }); + config.registerDefaultValueProcessor(Long.class, + new DefaultValueProcessor() { + @Override + public Object getDefaultValue(Class arg0) { + return JSONNull.getInstance(); + } + }); config.registerJsonValueProcessor(Date.class, new DateJsonValueProcessor("yyyy-MM-dd HH:mm:ss")); PropertyFilter propertyFilter = new JsonPropertyFilter(excludeProperties); config.setJsonPropertyFilter(propertyFilter); @@ -310,6 +354,38 @@ return JSONArray.fromObject(objs, config); } + public static JSONArray toJsonArraytWithSimpleProperty(Collection objs) { + // JsonConfig不设为全局变量,避免并发访问导致问题,以后可考虑采用ThreadLocal方式 + JsonConfig config = new JsonConfig(); + // 这段代码可以解决Integer、Double类型的被默认转换为0的问题,这样null将替换0成为默认转换值.其它类型的设置类似. + config.registerDefaultValueProcessor(Integer.class, + new DefaultValueProcessor() { + @Override + public Object getDefaultValue(Class type) { + return JSONNull.getInstance(); + } + }); + config.registerDefaultValueProcessor(Double.class, + new DefaultValueProcessor() { + @Override + public Object getDefaultValue(Class type) { + return JSONNull.getInstance(); + } + }); + config.registerDefaultValueProcessor(Long.class, + new DefaultValueProcessor() { + @Override + public Object getDefaultValue(Class arg0) { + return JSONNull.getInstance(); + } + }); + config.registerJsonValueProcessor(Date.class, new DateJsonValueProcessor("yyyy-MM-dd HH:mm:ss")); + PropertyFilter propertyFilter = new SimpleTypeJsonPropertyFilter(); + config.setJsonPropertyFilter(propertyFilter); + config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); + return JSONArray.fromObject(objs, config); + } + public Object parseObject(String jsonString, Class clazz){ Object object = null; Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java =================================================================== diff -u -r22205 -r22296 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java (.../SterilizationRecordAction.java) (revision 22205) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java (.../SterilizationRecordAction.java) (revision 22296) @@ -60,9 +60,10 @@ import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecordPic; import com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.service.SterilizationRecordManager; +import com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.vo.SterilizationRecordPrintTousseItem; import com.forgon.disinfectsystem.tousse.imagefilemanager.service.ImageFileManager; -import com.forgon.disinfectsystem.tousse.toussedefinition.action.TousseImageProcessAction; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; +import com.forgon.exception.service.ExceptionHandler; import com.forgon.log.model.Log; import com.forgon.log.service.LogManager; import com.forgon.security.model.User; @@ -78,7 +79,6 @@ import com.forgon.tools.string.StringTools; import com.forgon.tools.util.FileUtils; import com.forgon.tools.util.ForgonDateUtils; -import com.forgon.util.StringUtil; import com.google.common.collect.Maps; import com.opensymphony.xwork2.ModelDriven; import com.opensymphony.xwork2.Preparable; @@ -108,6 +108,8 @@ private LogManager appLogManager; private ObjectDao objectDao; + + private ExceptionHandler exceptionHandler; private String sterilizationGoods;// 灭菌物品 /** @@ -127,6 +129,10 @@ this.objectDao = objectDao; } + public void setExceptionHandler(ExceptionHandler exceptionHandler) { + this.exceptionHandler = exceptionHandler; + } + public void setAppLogManager(LogManager appLogManager) { this.appLogManager = appLogManager; } @@ -336,6 +342,20 @@ StrutsResponseUtils.output(false, e.getMessage()); } } + public void loadSterilizationRecordPrintData(){ + try{ + String recordId = StrutsParamUtils.getPraramValue("id", ""); + SterilizationRecord sr = sterilizationRecordManager.get(recordId); + JSONObject json = JSONUtil.toJsonObjectWithSimpleProperty(sr); + List printTousseItems = sterilizationRecordManager.getSterilizationRecordPrintItem(sr); + JSONArray goods = JSONUtil.toJsonArraytWithSimpleProperty(printTousseItems); + JSONUtil.addSuccess(json, true); + json.put("goods", goods); + StrutsResponseUtils.output(json); + }catch(Exception e){ + exceptionHandler.handleException(StrutsParamUtils.getResponse(), e); + } + } /** * 灭菌完成确认或者灭菌卸载 */ @@ -375,6 +395,7 @@ config.setJsonPropertyFilter(propertyFilter); config.registerDefaultValueProcessor(Integer.class, new DefaultValueProcessor() { + @Override public Object getDefaultValue(Class arg0) { return null; } @@ -851,9 +872,9 @@ //查询该器械包所关联的状态为灭菌中的灭菌记录 @SuppressWarnings("unchecked") List sterilizationRecordList = - (List)objectDao.findByHql("select po from " + SterilizationRecord.class.getSimpleName() + - " po inner join fetch po.tousseInstanceList til where po.status='"+ SterilizationRecord.STERILIZATION_STATUS_BEGIN + - "' and til.id=" + tousseInstance.getId()); + objectDao.findByHql("select po from " + SterilizationRecord.class.getSimpleName() + + " po inner join fetch po.tousseInstanceList til where po.status='"+ SterilizationRecord.STERILIZATION_STATUS_BEGIN + + "' and til.id=" + tousseInstance.getId()); if(CollectionUtils.isNotEmpty(sterilizationRecordList)){ if(sterilizationRecordList.get(0).getId().longValue() == sterilizationRecordId.longValue()){ isSterilingAndTheSameSterilizationRecord = true; @@ -1384,10 +1405,12 @@ this.sterilizationRecord = sterilizationRecord; } + @Override public SterilizationRecord getModel() { return sterilizationRecord; } + @Override public void prepare() throws Exception { iniInfo(); } Index: forgon-tools/src/main/java/com/forgon/tools/json/SimpleTypeJsonPropertyFilter.java =================================================================== diff -u --- forgon-tools/src/main/java/com/forgon/tools/json/SimpleTypeJsonPropertyFilter.java (revision 0) +++ forgon-tools/src/main/java/com/forgon/tools/json/SimpleTypeJsonPropertyFilter.java (revision 22296) @@ -0,0 +1,40 @@ +package com.forgon.tools.json; + +import java.util.Date; + +import net.sf.json.util.PropertyFilter; + +/** + * 只包含基本类型及字符串和日期的属性过滤器 + * @author kzh + * + */ +public class SimpleTypeJsonPropertyFilter implements PropertyFilter { + + @Override + public boolean apply(Object source, String name, Object value) { + if(value == null){ + return false; + } + if(value.getClass().isPrimitive()){ + return false; + } + if(value instanceof Boolean){ + return false; + } + if(value instanceof Character){ + return false; + } + if(value instanceof Number){//Byte,Short,Integer,Long,BigDecimal,Float,Double + return false; + } + if(value instanceof CharSequence){ //String,StringBuffer,StringBuilder + return false; + } + if(value instanceof Date){ //java.sql.Date、java.sql.TimeStamp + return false; + } + return true; + } + +} Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationTransition/service/SterilizationTransitionItemManagerImpl.java =================================================================== diff -u -r22189 -r22296 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationTransition/service/SterilizationTransitionItemManagerImpl.java (.../SterilizationTransitionItemManagerImpl.java) (revision 22189) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationTransition/service/SterilizationTransitionItemManagerImpl.java (.../SterilizationTransitionItemManagerImpl.java) (revision 22296) @@ -9,9 +9,11 @@ import net.sf.json.util.CycleDetectionStrategy; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.Predicate; import com.forgon.Constants; import com.forgon.disinfectsystem.entity.sterilizationTransition.SterilizationTransitionItem; +import com.forgon.tools.MathTools; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.BasePoManagerImpl; import com.forgon.tools.json.DateJsonValueProcessor; @@ -58,4 +60,14 @@ } return sterilizationTransitionItem; } + @Override + public SterilizationTransitionItem find(Collection items,Long tousseInstanceId){ + SterilizationTransitionItem tItem = CollectionUtils.find(items, new Predicate(){ + @Override + public boolean evaluate(SterilizationTransitionItem object) { + return object != null && MathTools.valueEquals(object.getTousseInstanceId(), tousseInstanceId); + }}); + + return tItem; + } } Index: ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordView.jsp =================================================================== diff -u -r19303 -r22296 --- ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordView.jsp (.../sterilizationRecordView.jsp) (revision 19303) +++ ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordView.jsp (.../sterilizationRecordView.jsp) (revision 22296) @@ -100,9 +100,18 @@ <%--灭菌监测 --%> <%--完成查看灭菌记录图片 --%> <%--填写质量监测 --%> + + + + + + + + +
Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationTransition/service/SterilizationTransitionItemManager.java =================================================================== diff -u -r22189 -r22296 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationTransition/service/SterilizationTransitionItemManager.java (.../SterilizationTransitionItemManager.java) (revision 22189) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationTransition/service/SterilizationTransitionItemManager.java (.../SterilizationTransitionItemManager.java) (revision 22296) @@ -29,4 +29,11 @@ * @param tousseInstanceId 器械包实例id */ public SterilizationTransitionItem getSterilizationTransitionItem(Long sterilizationTransitionId, Long tousseInstanceId); + /** + * 在集合中查找指定包实例id的交接项 + * @param items + * @param tousseInstanceId + * @return + */ + public SterilizationTransitionItem find(Collection items,Long tousseInstanceId); } Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r22209 -r22296 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 22209) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 22296) @@ -4,23 +4,25 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.text.Collator; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; import net.sf.json.JSONArray; import net.sf.json.JSONObject; -import net.sf.json.util.JSONUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; @@ -58,10 +60,13 @@ import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.disinfectsystem.entity.packing.ReviewedBasket; import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoring.QualityMonitoringInstance; +import com.forgon.disinfectsystem.entity.sterilizationTransition.SterilizationTransitionItem; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationInterruptRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecordPic; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizerrecord.SterilizerRecord; +import com.forgon.disinfectsystem.sterilizationmanager.sterilizationTransition.service.SterilizationTransitionItemManager; +import com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.vo.SterilizationRecordPrintTousseItem; import com.forgon.disinfectsystem.stockmanage.cssdstock.service.TousseStockManager; import com.forgon.disinfectsystem.stockmanage.departmentstock.service.DepartmentStockManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; @@ -121,8 +126,13 @@ protected RunWithTransNewManager runWithTransNewManager; + private SterilizationTransitionItemManager sterilizationTransitionItemManager; - + public void setSterilizationTransitionItemManager( + SterilizationTransitionItemManager sterilizationTransitionItemManager) { + this.sterilizationTransitionItemManager = sterilizationTransitionItemManager; + } + public BarcodeManager getBarcodeManager() { return barcodeManager; } @@ -736,6 +746,50 @@ public List getAllTousseInstancesOfSterile(SterilizationRecord sterilizationRecord){ return getAllTousseInstancesOfSterile(sterilizationRecord,false); } + @Override + public List getSterilizationRecordPrintItem(SterilizationRecord sterilizationRecord){ + List tis = getAllTousseInstancesOfSterile(sterilizationRecord); + List vos = new ArrayList<>(); + if(CollectionUtils.isNotEmpty(tis)){ + //根据器械包名称排序 + tis.sort(new Comparator(){ + @Override + public int compare(TousseInstance o1, TousseInstance o2) { + if(o1 == null){ + return 1; + } + if(o2 == null){ + return -1; + } + if(o1.getTousseName() == null){ + return 1; + } + if(o2.getTousseName() == null){ + return -1; + } + Collator instance = Collator.getInstance(Locale.CHINA); + return instance.compare(o1.getTousseName(), o2.getTousseName()); + }}); + Set tiIds = tis.stream().map(p->p.getId()).collect(Collectors.toSet()); + List transitionItems = sterilizationTransitionItemManager.getCollection("tousseInstanceId", tiIds); + for(TousseInstance ti : tis){ + SterilizationRecordPrintTousseItem vo = new SterilizationRecordPrintTousseItem(); + vo.setBarcode(ti.getBarcode()); + vo.setOperationTime(ti.getOperationTime()); + vo.setOperator(ti.getOperator()); + vo.setTousseName(ti.getTousseName()); + + SterilizationTransitionItem tItem = sterilizationTransitionItemManager.find(transitionItems, ti.getId()); + if(tItem != null && tItem.getSterilizationTransition() != null){ + vo.setHandover(tItem.getSterilizationTransition().getHandover()); + vo.setTakeover(tItem.getSterilizationTransition().getTakeover()); + vo.setTransitionTime(tItem.getSterilizationTransition().getTransitionTime()); + } + vos.add(vo); + } + } + return vos; + } /** * 将灭菌记录关联的非虚拟篮筐的篮筐,状态重置为空闲 * @param sterilizationRecord @@ -2712,6 +2766,7 @@ if (useTime != null && useTime > 0 && sterilizationRecord != null && DatabaseUtil.isPoIdValid(sterilizationRecord.getId())) { Thread thread = new Thread(){ + @Override public void run() { runWithTransNewManager.runWith_TRANS_NEW(new RunWithTransNewTask() { @Override @@ -2755,6 +2810,7 @@ } } + @Override public JSONObject loadTousseInstanceInfo(Long sterilizationRecordId , String barcodeStr,String finalBarcodes){ String[] barcodeArray = barcodeStr.split(";"); String barcode = barcodeArray[0]; @@ -2795,9 +2851,9 @@ //查询该器械包所关联的状态为灭菌中的灭菌记录 @SuppressWarnings("unchecked") List sterilizationRecordList = - (List)objectDao.findByHql("select po from " + SterilizationRecord.class.getSimpleName() + - " po inner join fetch po.tousseInstanceList til where po.status='"+ SterilizationRecord.STERILIZATION_STATUS_BEGIN + - "' and til.id=" + tousseInstance.getId()); + objectDao.findByHql("select po from " + SterilizationRecord.class.getSimpleName() + + " po inner join fetch po.tousseInstanceList til where po.status='"+ SterilizationRecord.STERILIZATION_STATUS_BEGIN + + "' and til.id=" + tousseInstance.getId()); if(CollectionUtils.isNotEmpty(sterilizationRecordList)){ if(sterilizationRecordList.get(0).getId().longValue() == sterilizationRecordId.longValue()){ isSterilingAndTheSameSterilizationRecord = true; @@ -3243,7 +3299,8 @@ return jsonArray; } - @SuppressWarnings("unchecked") + @Override + @SuppressWarnings("unchecked") public boolean updateTousseInsValidUntilDate(Collection sterilizationRecordIds){ if(CollectionUtils.isEmpty(sterilizationRecordIds)){ return false;