Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java =================================================================== diff -u -r32986 -r32988 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java (.../ProxyDisinfectionManagerImpl.java) (revision 32986) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java (.../ProxyDisinfectionManagerImpl.java) (revision 32988) @@ -765,6 +765,7 @@ vo.setName(tousseInstance.getTousseDefinition().getName()); vo.setStatus(tousseInstance.getStatus()); vo.setHasReceived(tousseInstance.hasReceived()); + vo.setSterilizationMode(tousseInstance.getSterilingMode()); coll.add(vo); } @@ -790,11 +791,13 @@ @Override - public JSONObject loadBasketOrTousseInstance(String barcode, String proxyDisinfectionId, String packingRecordIds, String handleDepartCoding) { + public JSONObject loadBasketOrTousseInstance(String barcode, String proxyDisinfectionId, String packingRecordIds, String handleDepartCoding, String sterilizationMode) { JSONObject json = new JSONObject(); boolean success = true; String message = null; + //一级供应室核对时,不需要检查灭菌方式是否一致GDSZYY-125 + boolean receiveTousseNotCheckSterilizationMode = false; ProxyDisinfection proxyDisinfection = this.get(proxyDisinfectionId); // 代理灭菌单是否待接收 @@ -850,6 +853,7 @@ json.put("produceDeptCode", tousseInstance.getOrgUnitCoding()); json.put("produceDeptName", tousseInstance.getOrgUnitName()); json.put("status", tousseInstance.getStatus()); + json.put("sterilizationMode", tousseInstance.getSterilingMode()); json.put("type", BarcodeDevice.BARCODE_TYPE_PACKAGE); json.put("receiveTousse", true); success = true; @@ -881,6 +885,7 @@ json.put("produceDeptCode", tousseInstance.getOrgUnitCoding()); json.put("produceDeptName", tousseInstance.getOrgUnitName()); json.put("status", tousseInstance.getStatus()); + json.put("sterilizationMode", tousseInstance.getSterilingMode()); json.put("type", BarcodeDevice.BARCODE_TYPE_PACKAGE); } } @@ -918,6 +923,13 @@ message = "请扫描器械包或者篮筐条码!"; throw new SystemException(message); } + + if(success && !receiveTousseNotCheckSterilizationMode){ + //不允许将不同灭菌方式的物品录入到同一代理灭菌单GDSZYY-125 + boolean isNew = (proxyDisinfection == null); + checkSterilizationMode(isNew, sterilizationMode, json); + } + JSONUtil.addSuccess(json, success); JSONUtil.addMessage(json, message); return json; @@ -951,7 +963,83 @@ } } + /** + * 检查扫描的物品和单上保存的物品的,灭菌方式是否一致 + * @param isNew + * @param sterilizationMode + * @param json + */ @SuppressWarnings("unchecked") + private void checkSterilizationMode(boolean isNew, String sterilizationMode, JSONObject json) { + String type = json.optString("type"); + if(StringUtils.equals(type, BarcodeDevice.BARCODE_TYPE_PACKAGE)){ + if(isNew && sterilizationMode == null){ + return; + } + Long tousseInstanceID = json.optLong("id", 0L); + TousseInstance ti = (TousseInstance) objectDao.getById(TousseInstance.class.getSimpleName(), tousseInstanceID); + isSameSterilizationMode(ti, sterilizationMode); + return; + } + + if(StringUtils.equals(type, "容器") || StringUtils.equals(type, "装配记录")){ + JSONArray instances = json.optJSONArray("instances"); + if(instances == null || instances.size() == 0){ + return; + } + List tousseInstanceIDList = new ArrayList(); + for(int i=0;i tousseInstanceList = objectDao.findByIds(TousseInstance.class.getSimpleName(), tousseInstanceIDList); + if(CollectionUtils.isEmpty(tousseInstanceList)){ + return; + } + + //判断篮筐或者装配记录上面,灭菌方式是否相同 + Set sterilizationModeSet = new HashSet(); + for (TousseInstance ti : tousseInstanceList) { + sterilizationModeSet.add(ti.getSterilingMode()); + if(sterilizationModeSet.size() > 1){ + if(StringUtils.equals(type, "容器")){ + throw new SystemException("该篮筐有多种不同灭菌方式的物品,不能装载物品,请先将筐内灭菌方式不同的物品移除"); + }else if(StringUtils.equals(type, "装配记录")){ + throw new SystemException("装配记录有多种不同灭菌方式的物品,不能生成代理灭菌单,请不要勾选包含不同灭菌方式的物品的装配记录"); + } + } + } + + //新建代理灭菌单时,只需要判断篮筐或者装配记录上面的器械包,灭菌方式是否一致 + if(isNew){ + return; + } + for (TousseInstance ti : tousseInstanceList) { + isSameSterilizationMode(ti, sterilizationMode); + } + } + } + + /** + * 包实例灭菌方式和指定灭菌方式不一致,就需要抛出异常提示信息 + * @param ti + * @param sterilizationMode + */ + private void isSameSterilizationMode(TousseInstance ti, String sterilizationMode) { + if(ti != null && !StringUtils.equals(ti.getSterilingMode(), sterilizationMode)){ + if(StringUtils.isBlank(sterilizationMode)){ + throw new SystemException("【" + ti.getTousseName() + "】属于【" + ti.getSterilingMode() + "】物品与原有【" + sterilizationMode + "】物品的灭菌方式不一致,不能录入。"); + }else{ + throw new SystemException("【" + ti.getTousseName() + "】属于【" + ti.getSterilingMode() + "】物品与原有物品的灭菌方式不一致,不能录入。"); + } + } + } + + @SuppressWarnings("unchecked") @Override public JSONObject loadTousseInstanceByPackingRecord(String packingRecordIds) { String checkResult = ""; Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/vo/TousseInstanceVo.java =================================================================== diff -u -r32468 -r32988 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/vo/TousseInstanceVo.java (.../TousseInstanceVo.java) (revision 32468) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/vo/TousseInstanceVo.java (.../TousseInstanceVo.java) (revision 32988) @@ -21,6 +21,11 @@ * 代理灭菌接收核对状态 */ private String hasReceived; + + /** + * 灭菌方式 + */ + private String sterilizationMode; public Long getId() { return id; @@ -63,5 +68,14 @@ } + public String getSterilizationMode() { + return sterilizationMode; + } + + + public void setSterilizationMode(String sterilizationMode) { + this.sterilizationMode = sterilizationMode; + } + } Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManager.java =================================================================== diff -u -r32985 -r32988 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManager.java (.../ProxyDisinfectionManager.java) (revision 32985) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManager.java (.../ProxyDisinfectionManager.java) (revision 32988) @@ -94,9 +94,12 @@ * 加载器械包或者篮筐信息 * @param barcode * @param proxyDisinfectionId + * @param packingRecordIds 装配记录的ID + * @param handleDepartCoding 代理灭菌单处理科室编码 + * @param sterilizationMode 单上物品的灭菌方式(不允许将不同灭菌方式的物品录入到同一代理灭菌单) * @return */ - public JSONObject loadBasketOrTousseInstance(String barcode, String proxyDisinfectionId, String packingRecordIds, String handleDepartCoding); + public JSONObject loadBasketOrTousseInstance(String barcode, String proxyDisinfectionId, String packingRecordIds, String handleDepartCoding, String sterilizationMode); /** * 根据装配记录获取器械包实例 Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/action/ProxyDisinfectionAction.java =================================================================== diff -u -r32843 -r32988 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/action/ProxyDisinfectionAction.java (.../ProxyDisinfectionAction.java) (revision 32843) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/action/ProxyDisinfectionAction.java (.../ProxyDisinfectionAction.java) (revision 32988) @@ -27,13 +27,9 @@ import com.forgon.Constants; import com.forgon.directory.acegi.tools.AcegiHelper; -import com.forgon.directory.model.BarcodeDevice; import com.forgon.directory.model.OrgUnit; import com.forgon.directory.service.OrgUnitManager; -import com.forgon.disinfectsystem.barcode.service.BarcodeManager; -import com.forgon.disinfectsystem.basedatamanager.container.service.ReviewedBasketManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; -import com.forgon.disinfectsystem.entity.basedatamanager.container.Container; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.disinfectsystem.entity.packing.ReviewedBasket; @@ -69,13 +65,9 @@ private ProxyDisinfectionManager proxyDisinfectionManager; - private BarcodeManager barcodeManager; - private SerialNumManager serialNumManager; private OrgUnitManager orgUnitManager; - - private ReviewedBasketManager reviewedBasketManager; private ObjectDao objectDao; @@ -89,10 +81,6 @@ public void setObjectDao(ObjectDao objectDao) { this.objectDao = objectDao; } - - public void setReviewedBasketManager(ReviewedBasketManager reviewedBasketManager) { - this.reviewedBasketManager = reviewedBasketManager; - } public void setOrgUnitManager(OrgUnitManager orgUnitManager) { this.orgUnitManager = orgUnitManager; @@ -106,10 +94,6 @@ TousseInstanceManager tousseInstanceManager) { } - public void setBarcodeManager(BarcodeManager barcodeManager) { - this.barcodeManager = barcodeManager; - } - public ProxyDisinfection getProxyDisinfection() { return proxyDisinfection; } @@ -417,11 +401,12 @@ String proxyDisinfectionId = StrutsParamUtils.getPraramValue("id", ""); String packingRecordIds = StrutsParamUtils.getPraramValue("packingRecordIds", null); String handleDepartCoding = StrutsParamUtils.getPraramValue("handleDepartCoding", null); + String sterilizationMode = StrutsParamUtils.getPraramValue("sterilizationMode", null); JSONObject json = JSONUtil.buildJsonObject(true); try { - json = proxyDisinfectionManager.loadBasketOrTousseInstance(barcode, proxyDisinfectionId, packingRecordIds, handleDepartCoding); + json = proxyDisinfectionManager.loadBasketOrTousseInstance(barcode, proxyDisinfectionId, packingRecordIds, handleDepartCoding, sterilizationMode); } catch (SystemException e) { String message = e.getMessage(); json = JSONUtil.buildJsonObject(false, message);