Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java =================================================================== diff -u -r32993 -r32996 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java (.../ProxyDisinfectionManagerImpl.java) (revision 32993) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java (.../ProxyDisinfectionManagerImpl.java) (revision 32996) @@ -16,6 +16,7 @@ import net.sf.json.JSONObject; import net.sf.json.JsonConfig; +import org.apache.commons.collections.MapUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; @@ -858,6 +859,7 @@ json.put("receiveTousse", true); success = true; } + receiveTousseNotCheckSterilizationMode = true; }else if (StringUtils.isNotEmpty(tousseInstance.getOrgUnitCoding()) && (StringUtils.isBlank(handleDepartCoding) || StringUtils.equals(tousseInstance.getOrgUnitCoding(), handleDepartCoding))) { // 本科室装配的器械包,无需录入代理灭菌记录;代理灭菌单的申请科室和处理科室不能一样 @@ -927,7 +929,11 @@ if(success && !receiveTousseNotCheckSterilizationMode){ //不允许将不同灭菌方式的物品录入到同一代理灭菌单GDSZYY-125 boolean isNew = (proxyDisinfection == null); - checkSterilizationMode(isNew, sterilizationMode, json); + Map> typeTousseInstanceMap = getTousseInstanceList(json); + if(MapUtils.isNotEmpty(typeTousseInstanceMap)){ + String type = (String) typeTousseInstanceMap.keySet().toArray()[0]; + checkSterilizationMode(isNew, sterilizationMode, type, typeTousseInstanceMap.get(type)); + } } JSONUtil.addSuccess(json, success); @@ -936,6 +942,35 @@ } /** + * 获取需要添加到代理灭菌单的器械包实例及添加器械包的操作类型(类型包括:"容器"、"装配记录"、"器械包") + * @param json + * @return + */ + @SuppressWarnings("unchecked") + private Map> getTousseInstanceList(JSONObject json) { + String type = json.optString("type"); + Map> typeTousseInstanceMap = new HashMap>(); + List tousseInstanceList = new ArrayList(); + if(StringUtils.equals(type, BarcodeDevice.BARCODE_TYPE_PACKAGE)){ + Long tousseInstanceID = json.optLong("id", 0L); + TousseInstance ti = (TousseInstance) objectDao.getById(TousseInstance.class.getSimpleName(), tousseInstanceID); + tousseInstanceList.add(ti); + typeTousseInstanceMap.put(type, tousseInstanceList); + }else if(StringUtils.equals(type, "容器") || StringUtils.equals(type, "装配记录")){ + JSONArray instances = json.optJSONArray("instances"); + List tousseInstanceIDList = new ArrayList(); + for(int i=0;i tousseInstanceList) { + + if(CollectionUtils.isEmpty(tousseInstanceList)){ + return; + } + 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); + TousseInstance ti = tousseInstanceList.get(0); 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(); @@ -1019,13 +1039,13 @@ } } - //新建代理灭菌单时,只需要判断篮筐或者装配记录上面的器械包,灭菌方式是否一致 - if(isNew){ - return; + //新建代理灭菌单时,只需要判断篮筐或者装配记录上面的器械包,灭菌方式是否一致; + //修改代理灭菌单时,需要拿新增加的物品和已经保存的物品比较灭菌方式是否一致 + if(!isNew){ + for (TousseInstance ti : tousseInstanceList) { + isSameSterilizationMode(ti, sterilizationMode); + } } - for (TousseInstance ti : tousseInstanceList) { - isSameSterilizationMode(ti, sterilizationMode); - } } } @@ -1036,7 +1056,7 @@ */ private void isSameSterilizationMode(TousseInstance ti, String sterilizationMode) { if(ti != null && !StringUtils.equals(ti.getSterilingMode(), sterilizationMode)){ - if(StringUtils.isBlank(sterilizationMode)){ + if(StringUtils.isNotBlank(sterilizationMode)){ throw new SystemException("【" + ti.getTousseName() + "】属于【" + ti.getSterilingMode() + "】物品与原有【" + sterilizationMode + "】物品的灭菌方式不一致,不能录入。"); }else{ throw new SystemException("【" + ti.getTousseName() + "】属于【" + ti.getSterilingMode() + "】物品与原有物品的灭菌方式不一致,不能录入。");