Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java =================================================================== diff -u -r32985 -r32986 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java (.../ProxyDisinfectionManagerImpl.java) (revision 32985) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/proxydisinfection/service/ProxyDisinfectionManagerImpl.java (.../ProxyDisinfectionManagerImpl.java) (revision 32986) @@ -41,6 +41,7 @@ import com.forgon.disinfectsystem.sterilizationmanager.proxydisinfection.vo.TousseInstanceVo; import com.forgon.disinfectsystem.sterilizationmanager.proxydisinfection.vo.TousseItenInfo; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; +import com.forgon.exception.SystemException; import com.forgon.log.model.Log; import com.forgon.log.service.LogManager; import com.forgon.tools.GB2Alpha; @@ -240,6 +241,7 @@ * @param loginUserCode 用户登录名 * @return */ + @SuppressWarnings("unchecked") private Set getTousseInstanceAndReviewedBasketInfo( ProxyDisinfection proxyDisinfection, String[] tousseInstanceIdStrs, JSONArray basketInfos,String loginUserName,String loginUserCode, String loginUserOrgUnitCode) { @@ -254,7 +256,7 @@ Long id = proxyDisinfection.getId(); //代理灭菌单里的包进行增删后,要记录在PC端的备注字段里, - //备注信息显示如:XXX(用户)增加了xxxxxx(条码)器械包,XXX(用户)删除了xxxxxx(条码)器械包 + //备注信息显示如:***(用户)增加了*********(条码)器械包,***(用户)删除了***(条码)器械包 String remark = ""; // 新的代理灭菌器械包列表 Set newProxyTousseInstanceList = new HashSet(); @@ -833,12 +835,13 @@ }else{ // 已经申请代理灭菌,不能重复申请。 message = barcode + tousseInstance.getTousseName() + "已经申请代理灭菌,不能重复申请。";; - success = false; + throw new SystemException(message); } }else{ - // 核对器械包实例(一级供应室用户登录,打开待接收的代理灭菌,扫描了单上不存在的物品时,提示“012454097缝合包未生成代理灭菌单,请联系XX科室!”) //message = barcode + tousseInstance.getTousseName() + "未生成代理灭菌单,请联系" + tousseInstance.getOrgUnitName() + "!"; //success = false; + //判断该器械包是否可以录入代理灭菌单 + canApplicantTousseInstance(tousseInstance, handleDepartCoding, proxyDisinfection); Long id = tousseInstance.getId(); String name = tousseInstance.getTousseDefinition() .getName(); @@ -855,20 +858,20 @@ && (StringUtils.isBlank(handleDepartCoding) || StringUtils.equals(tousseInstance.getOrgUnitCoding(), handleDepartCoding))) { // 本科室装配的器械包,无需录入代理灭菌记录;代理灭菌单的申请科室和处理科室不能一样 message = "此器械包为本科室装配,无需录入代理灭菌记录"; - success = false; + throw new SystemException(message); }else if(!tousseInstance.isPacked() && !tousseInstance.isReviewed()){ // 验证器械包状态(已装配或已审核) message = "只能录入已装配或者已审核的器械包"; - success = false; + throw new SystemException(message); }else if(proxyDisinfection != null && StringUtils.equals(proxyDisinfection.getIsConvertPackingRecord(), Constants.STR_YES) && StringUtils.equals(proxyDisinfection.getDeliverStatus(), InvoicePlan.DELIVERSTATUS_AWAITDELIVER)){ // “装配记录生成”的代理灭菌单,状态为待发货时,二级供应室不可以对单据进行修改GDSZYY-102 message = "代理灭菌单的状态为待发货,不可以对单据进行修改"; - success = false; + throw new SystemException(message); }else{ if(isProxyed){ - success = false; - message = "该器械包已经申请代理灭菌,不能重复申请。"; + message = "该器械包已经申请代理灭菌,不能重复申请。"; + throw new SystemException(message); }else{ Long id = tousseInstance.getId(); String name = tousseInstance.getTousseDefinition() @@ -888,7 +891,7 @@ .getReviewedBasketForSterilizeRecord(barcode); if(container != null && Container.CONTAINER_STATUS_STERILIZING.equals(container.getStatus())){ message = "该篮筐正在进行灭菌,不能使用该篮筐"; - success = false; + throw new SystemException(message); }else{ Long basketId = null; if(basket != null){ @@ -907,19 +910,48 @@ } }else{ message = "请扫描器械包或者篮筐条码!"; - success = false; + throw new SystemException(message); } } else if(StringUtils.isNotBlank(packingRecordIds)){ json = loadTousseInstanceByPackingRecord(packingRecordIds); }else{ message = "请扫描器械包或者篮筐条码!"; - success = false; + throw new SystemException(message); } JSONUtil.addSuccess(json, success); JSONUtil.addMessage(json, message); return json; } + /** + * 判断代理灭菌单是否可以录入该器械包 + * @param tousseInstance + * @param handleDepartCoding + * @param proxyDisinfection + */ + private void canApplicantTousseInstance(TousseInstance tousseInstance, String handleDepartCoding, ProxyDisinfection proxyDisinfection) { + if (StringUtils.isNotEmpty(tousseInstance.getOrgUnitCoding()) + && (StringUtils.isBlank(handleDepartCoding) || StringUtils.equals(tousseInstance.getOrgUnitCoding(), handleDepartCoding))) { + // 本科室装配的器械包,无需录入代理灭菌记录;代理灭菌单的申请科室和处理科室不能一样 + String message = "此器械包为本科室装配,无需录入代理灭菌记录"; + throw new SystemException(message); + }else if(!tousseInstance.isPacked() && !tousseInstance.isReviewed()){ + // 验证器械包状态(已装配或已审核) + String message = "只能录入已装配或者已审核的器械包"; + throw new SystemException(message); + }else if(proxyDisinfection != null && StringUtils.equals(proxyDisinfection.getIsConvertPackingRecord(), Constants.STR_YES) + && StringUtils.equals(proxyDisinfection.getDeliverStatus(), InvoicePlan.DELIVERSTATUS_AWAITDELIVER) + && StringUtils.equals(proxyDisinfection.getDepartCoding(), tousseInstance.getOrgUnitCoding())){ + // “装配记录生成”的代理灭菌单,状态为待发货时,二级供应室不可以对单据进行修改GDSZYY-102 + String message = "代理灭菌单的状态为待发货,不可以对单据进行修改"; + throw new SystemException(message); + }else if(tousseInstance.getProxyDisinfection_id() != null){ + String message = "该器械包已经申请代理灭菌,不能重复申请。"; + throw new SystemException(message); + } + } + + @SuppressWarnings("unchecked") @Override public JSONObject loadTousseInstanceByPackingRecord(String packingRecordIds) { String checkResult = ""; @@ -949,13 +981,7 @@ // 已经生成代理灭菌单的物品,不能再次添加 continue; } - - TousseInstanceVo vo = new TousseInstanceVo(); - vo.setId(tousseInstance.getId()); - vo.setBarcode(tousseInstance.getBarcode()); - vo.setName(tousseInstance.getTousseDefinition().getName()); - vo.setStatus(tousseInstance.getStatus()); - tousses.add(vo); + addTousseInstance(tousses,tousseInstance); } } result.put("checkResult", checkResult);