Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java =================================================================== diff -u -r19830 -r19834 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 19830) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 19834) @@ -48,6 +48,7 @@ import com.forgon.disinfectsystem.barcode.service.BarcodeManager; import com.forgon.disinfectsystem.basedata.becleanitem.service.BeCleanItemManager; import com.forgon.disinfectsystem.basedata.becleanitem.service.ClassifyBasketManager; +import com.forgon.disinfectsystem.basedatamanager.container.service.ContainerManager; import com.forgon.disinfectsystem.basedatamanager.departmentgroup.service.DepartmentGroupManager; import com.forgon.disinfectsystem.basedatamanager.reportoption.GoodsOptionManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; @@ -181,7 +182,12 @@ private MaterialDefinitionManager materialDefinitionManager; private SqlFunctionsAdapter sqlFunctionsAdapter; + private ContainerManager containerManager; + public void setContainerManager(ContainerManager containerManager) { + this.containerManager = containerManager; + } + public void setSqlFunctionsAdapter(SqlFunctionsAdapter sqlFunctionsAdapter) { this.sqlFunctionsAdapter = sqlFunctionsAdapter; } @@ -878,7 +884,7 @@ } private ClassifyBasket getClassifyBasket(Container container,String recyclingRecordId){ ClassifyBasket classifyBasket = null; - if (container.isCleanBasket()) { + if (container != null && container.isCleanBasket()) { RecyclingRecord recyclingRecord = recyclingRecordManager.get(recyclingRecordId); if (recyclingRecord != null) { for (ClassifyBasket basket : recyclingRecord.getClassifyBaskets()) { @@ -911,6 +917,7 @@ return classifyBasket; } public String getBarcodeInfo() { + Map map = new HashMap(); String recyclingRecordId = StrutsParamUtils.getPraramValue("recyclingRecordId", null); //单据类型 String formType = StrutsParamUtils.getPraramValue("formType", InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION); @@ -930,8 +937,7 @@ orgUnit = orgUnitManager.getOrgUnitByBarcode(barcode); if (orgUnit != null) { SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager - .getSupplyRoomConfigByOrgUnitCoding(orgUnit - .getOrgUnitCoding()); + .getSupplyRoomConfigByOrgUnitCoding(orgUnit.getOrgUnitCoding()); if (supplyRoomConfig != null && SupplyRoomConfig.SUPPLYROOM_TYPE_FIRST_SUPPLYROOM == supplyRoomConfig .getSupplyRoomType()) { @@ -949,6 +955,9 @@ if(container.isCleanBasket()){ try{ classifyBasket = getClassifyBasket(container, recyclingRecordId); + if(classifyBasket != null){ + classifyBasket.setContainerStatus(container.getStatus()); + } }catch(RuntimeException e){ errorMessage = e.getMessage(); } @@ -991,6 +1000,8 @@ } else if (barcodeDevice instanceof IDCardInstance) { IDCardInstance idCardInstance = (IDCardInstance) barcodeDevice; isIDCardInstance = true; + Long idCardDefinitionId = idCardInstance.getIdCardDefinitionID(); + IDCardDefinition idCardDefinition = idCardDefinitionManager.get(idCardDefinitionId); // 是否已经废弃 try { if (!idCardInstance.isCanUse(objectDao, true)) { @@ -1008,11 +1019,9 @@ idCardInstance); if (tousseInstance == null) { // errorMessage = "没有找到和标识牌绑定的器械包!"; - Long idCardDefinitionId = idCardInstance.getIdCardDefinitionID(); - IDCardDefinition def = idCardDefinitionManager.get(idCardDefinitionId); - if (def != null) { + if (idCardDefinition != null) { tousseInstance = new TousseInstance(); - TousseDefinition td = tousseDefinitionManager.get(def.getTousseDefinitionID()); + TousseDefinition td = tousseDefinitionManager.get(idCardDefinition.getTousseDefinitionID()); tousseInstance.setTousseDefinition(td); tousseInstance.setStatus(TousseInstance.STATUS_SHIPPED); tousseInstance.setBarcode(barcode); @@ -1050,6 +1059,20 @@ { isTousseNeedMaintain = IDCardInstanceUtils.isTousseNeedMaintain(objectDao,idCardInstance); } + boolean enableIdCardBasketBinding = CssdUtils.getSystemSetConfigByNameBool("enableIdCardBasketBinding"); + if(enableIdCardBasketBinding && idCardDefinition != null){ + //标识牌跟篮筐绑定 + Container c = containerManager.get(idCardDefinition.getContainerId()); + try{ + ClassifyBasket basket = getClassifyBasket(c, recyclingRecordId); + if(basket != null){ + basket.setContainerStatus(c.getStatus()); + map.put("idCardClassifyBasket", basket); + } + }catch(Exception e){ + errorMessage = e.getMessage(); + } + } } else { // 代码逻辑有问题 // IDCardInstance idCardInstance = ((IDCardInstance) @@ -1086,7 +1109,6 @@ "orgUnitsUnDirectManagedByUser", "orgUnitsDirectManagedByUser", "idCardDefinitions", "recyclingApplications", "parent" }); config.setJsonPropertyFilter(propertyFilter); - Map map = new HashMap(); map.put("success", true); map.put("orgUnit", orgUnit); map.put("basket", classifyBasket); Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/becleanitem/ClassifyBasket.java =================================================================== diff -u -r19803 -r19834 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/becleanitem/ClassifyBasket.java (.../ClassifyBasket.java) (revision 19803) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/becleanitem/ClassifyBasket.java (.../ClassifyBasket.java) (revision 19834) @@ -85,6 +85,10 @@ * 回收篮筐序号。不持久化 */ private Integer sequence; + /** + * 篮筐当前的状态 + */ + private String containerStatus; @JsonIgnore private Set classfiedItems = new HashSet(); @@ -238,5 +242,12 @@ public void setSequence(Integer sequence) { this.sequence = sequence; } - + @Transient + public String getContainerStatus() { + return containerStatus; + } + + public void setContainerStatus(String containerStatus) { + this.containerStatus = containerStatus; + } } Index: ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js =================================================================== diff -u -r19803 -r19834 --- ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js (.../recycleForTouchScreen.js) (revision 19803) +++ ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js (.../recycleForTouchScreen.js) (revision 19834) @@ -831,10 +831,9 @@ } } } -function addBasketElement(msg){ +function addBasketElement(basketItem){ var currentNode; var isBasketLoaded = false; - var basketItem = msg.basket; $("#basketsUl li").each(function(){ var hide = $(this).find('input'); var item = JSON.parse(hide.val()); @@ -908,7 +907,7 @@ }, buttons: { "是": function() { - addBasketElement(msg); + addBasketElement(msg.basket); $( this ).dialog( "close" ); }, "否": function() { @@ -917,7 +916,7 @@ } }); }else{ - addBasketElement(msg); + addBasketElement(msg.basket); } }else if(msg.tousseInstance != null){ if(!checkSelectDepartBeforeAddTousse()){ @@ -985,11 +984,17 @@ alertDiv(barcode+",已入筐!"); scanned = true; }else{ - var ti = msg.tousseInstance; - var td = ti.tousseDefinition; var orgUnitName = $('#depart').val(); var addSuccess = false; - + var idCardClassifyBasket = msg.idCardClassifyBasket; + if(idCardClassifyBasket){ + if(idCardClassifyBasket.containerStatus == "清洗完成" || idCardClassifyBasket.containerStatus == "清洗中"){ + alertDiv("【"+idCardClassifyBasket.containerName + "】当前状态为【" + idCardClassifyBasket.containerStatus + "】,还有物品未装配"); + return false; + }else{ + addBasketElement(idCardClassifyBasket); + } + } var basketHideStr = $("#basketsUl li:first").find('input').val(); if(basketHideStr == null || basketHideStr == ""){ alertDiv("请扫描篮筐条码!"); Index: ssts-web/src/main/webapp/disinfectsystem/config/zsyy/config.js =================================================================== diff -u -r19799 -r19834 --- ssts-web/src/main/webapp/disinfectsystem/config/zsyy/config.js (.../config.js) (revision 19799) +++ ssts-web/src/main/webapp/disinfectsystem/config/zsyy/config.js (.../config.js) (revision 19834) @@ -95,6 +95,8 @@ operationReservationDepartName:"手术一区", //装配时自动设置标识牌条码(前提是一个包实例只能装一个篮筐而且是整包清洗) autoSetIDCardBarcodeForPacking : true, + //是否启用标识牌跟篮筐绑定。如果启用,在回收的时候,扫描标识牌自动带出跟标识牌绑定的篮筐并将包实例入到篮筐中。 + enableIdCardBasketBinding:true, //PDA上启用器械包签收功能 enablePDATousseSign:true, //自定义装配后是否保留灭菌日期