Index: ssts-toussereturndisinfect/src/main/java/com/forgon/disinfectsystem/tousseReturnDisinfectRecord/action/TousseReturnDisinfectRecordAction.java =================================================================== diff -u -r15489 -r16658 --- ssts-toussereturndisinfect/src/main/java/com/forgon/disinfectsystem/tousseReturnDisinfectRecord/action/TousseReturnDisinfectRecordAction.java (.../TousseReturnDisinfectRecordAction.java) (revision 15489) +++ ssts-toussereturndisinfect/src/main/java/com/forgon/disinfectsystem/tousseReturnDisinfectRecord/action/TousseReturnDisinfectRecordAction.java (.../TousseReturnDisinfectRecordAction.java) (revision 16658) @@ -25,6 +25,7 @@ import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.directory.model.BarcodeDevice; import com.forgon.disinfectsystem.barcode.service.BarcodeManager; +import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.basedatamanager.toussereturndisinfect.TousseReturnDisinfectItem; @@ -198,33 +199,52 @@ if (StringUtils.isNotBlank(barcode)) { BarcodeDevice bd = barcodeManager.getBarcodeByBarcode(barcode); if (bd != null) { + //获取项目的config.js的配置:不符合返消条件的器械包实例能否被返消 + boolean allowReturnDisinfectForNotMatchConditionTousse = CssdUtils.getSystemSetConfigByNameBool("allowReturnDisinfectForNotMatchConditionTousse"); String currentOrgUnitCode = AcegiHelper.getCurrentOrgUnitCode(); if (bd instanceof TousseInstance || bd instanceof IDCardInstance) { TousseInstance ti = null; if (bd instanceof TousseInstance){ ti = (TousseInstance) bd; + obj.put("id", ti.getId()); + obj.put("barcode", ti.getBarcode()); + obj.put("tousseName", ti.getTousseName()); + obj.put("status", ti.getStatus()); }else if (bd instanceof IDCardInstance){ IDCardInstance ii = (IDCardInstance) bd; ti = tousseInstanceManager.getTousseInstanceById(String.valueOf(ii.getLastTousseInstanceId())); + obj.put("id", ti.getId()); + obj.put("barcode", ti.getBarcode()); + obj.put("tousseName", ti.getTousseName()); + obj.put("status", ti.getStatus()); } - if(ti.getUnTraceableTousse() && ti.getUnTraceableTousse()){ + if(ti.getTousseFixedBarcode() && ti.getUnTraceableTousse()){ obj.put("msg", "该条码为不追溯的固定条码,只能对包外唯一条码或标识牌条码的器械包进行返消."); }else if(!TousseInstance.STATUS_SHIPPED.equals(ti.getStatus()) && !TousseInstance.STATUS_SIGNED.equals(ti.getStatus()) && !TousseInstance.STATUS_DISCARD.equals(ti.getStatus())){ - obj.put("msg", "该器械包状态为" + ti.getStatus() + ",不能进行器械返消!"); + //如果配置允许不符合返消条件的器械包实例能被返消时,则进行提示 + if(!allowReturnDisinfectForNotMatchConditionTousse){ + obj.put("msg", "该器械包状态为" + ti.getStatus() + ",不能进行器械返消!"); + } } else { if(!TousseDefinition.PACKAGE_TYPE_INSIDE.equals(ti.getTousseDefinition().getTousseType())){ obj.put("msg", "该条码的物品类型为" + ti.getTousseDefinition().getTousseType() + ",只能对器械包进行返消."); //判断包实例所在位置与当前用户所在科室是否一致 }else { if(ti.getInvoice_id() == null){ - obj.put("msg", "未找到该器械包的发货记录,不能返消."); + //如果配置允许不符合返消条件的器械包实例能被返消时,则进行提示 + if(!allowReturnDisinfectForNotMatchConditionTousse){ + obj.put("msg", "未找到该器械包的发货记录,不能返消."); + } }else{ Invoice invoice = invoiceManager.getInvoiceById(ti.getInvoice_id()); if(invoice == null){ - obj.put("msg", "未找到该器械包的发货记录,不能返消."); + //如果配置允许不符合返消条件的器械包实例能被返消时,则进行提示 + if(!allowReturnDisinfectForNotMatchConditionTousse){ + obj.put("msg", "未找到该器械包的发货记录,不能返消."); + } }else if(StringUtils.equals(currentOrgUnitCode, invoice.getDepartCoding())){ - //判断有无返消过,如果返消则不能重复返消 + //判断该器械包实例有无返消过,如果返消则不能重复返消 TousseReturnDisinfectRecord tousseReturnDisinfectRecord = tousseReturnDisinfectRecordManager.getTousseReturnDisinfectRecordByTousseInstanceId(String.valueOf(ti.getId())); if(tousseReturnDisinfectRecord != null){ @@ -236,7 +256,10 @@ obj.put("status", ti.getStatus()); } }else{ - obj.put("msg", "该器械包所属科室为" + invoice.getDepart() + ",不能进行器械返消!"); + //如果配置允许不符合返消条件的器械包实例能被返消时,则进行提示 + if(!allowReturnDisinfectForNotMatchConditionTousse){ + obj.put("msg", "该器械包所属科室为" + invoice.getDepart() + ",不能进行器械返消!"); + } } } } Index: ssts-toussereturndisinfect/src/main/java/com/forgon/disinfectsystem/tousseReturnDisinfectRecord/service/TousseReturnDisinfectRecordManagerImpl.java =================================================================== diff -u -r16039 -r16658 --- ssts-toussereturndisinfect/src/main/java/com/forgon/disinfectsystem/tousseReturnDisinfectRecord/service/TousseReturnDisinfectRecordManagerImpl.java (.../TousseReturnDisinfectRecordManagerImpl.java) (revision 16039) +++ ssts-toussereturndisinfect/src/main/java/com/forgon/disinfectsystem/tousseReturnDisinfectRecord/service/TousseReturnDisinfectRecordManagerImpl.java (.../TousseReturnDisinfectRecordManagerImpl.java) (revision 16658) @@ -19,6 +19,7 @@ import com.forgon.directory.model.BarcodeDevice; import com.forgon.disinfectsystem.barcode.service.BarcodeManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; +import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.basedatamanager.toussereturndisinfect.TousseReturnDisinfectItem; @@ -177,6 +178,8 @@ tousseBarcodeMap.put(item.getScanBarcode(),item.getTousseDefinitionId()); BarcodeDevice barcodeDevice = barcodeManager.getBarcodeByBarcode(item.getScanBarcode()); if(barcodeDevice != null){ + //获取项目的config.js的配置:不符合返消条件的器械包实例能否被返消 + boolean allowReturnDisinfectForNotMatchConditionTousse = CssdUtils.getSystemSetConfigByNameBool("allowReturnDisinfectForNotMatchConditionTousse"); if(!(barcodeDevice instanceof TousseInstance) && !(barcodeDevice instanceof IDCardInstance)){ throw new RuntimeException("条码" + item.getScanBarcode() + "不为器械包或标识牌,请重新检查."); }else{ @@ -190,25 +193,26 @@ } if(!TousseDefinition.PACKAGE_TYPE_INSIDE.equals(ti.getTousseDefinition().getTousseType())){ throw new RuntimeException("只能对器械包进行返消."); - }else if(ti.getUnTraceableTousse() && ti.getUnTraceableTousse()){ + }else if(ti.getTousseFixedBarcode() && ti.getUnTraceableTousse()){ throw new RuntimeException("该条码为不追溯的固定条码,只能对包外唯一条码或标识牌条码的器械包进行返消."); }else if(!TousseInstance.STATUS_SHIPPED.equals(ti.getStatus()) && !TousseInstance.STATUS_SIGNED.equals(ti.getStatus()) && !TousseInstance.STATUS_DISCARD.equals(ti.getStatus())){ - throw new RuntimeException("该器械包状态为" + ti.getStatus() + ",不能进行器械返消!"); + if(!allowReturnDisinfectForNotMatchConditionTousse){ + throw new RuntimeException("该器械包状态为" + ti.getStatus() + ",不能进行器械返消!"); + } } else { - if(!TousseDefinition.PACKAGE_TYPE_INSIDE.equals(ti.getTousseDefinition().getTousseType())){ - throw new RuntimeException("该条码的物品类型为" + ti.getTousseDefinition().getTousseType() + ",只能对器械包进行返消."); - }else if(ti.getUnTraceableTousse() && ti.getUnTraceableTousse()){ - throw new RuntimeException("该条码为不追溯的固定条码,只能对包外唯一条码或标识牌条码的器械包进行返消."); - //判断包实例所在位置与当前用户所在科室是否一致 - }else{ - if(ti.getInvoice_id() == null){ + if(ti.getInvoice_id() == null){ + if(!allowReturnDisinfectForNotMatchConditionTousse){ throw new RuntimeException("未找到该器械包的发货记录,不能返消."); - }else{ - Invoice invoice = invoiceManager.getInvoiceById(ti.getInvoice_id()); - if(invoice == null){ + } + }else{ + Invoice invoice = invoiceManager.getInvoiceById(ti.getInvoice_id()); + if(invoice == null){ + if(!allowReturnDisinfectForNotMatchConditionTousse){ throw new RuntimeException("未找到该器械包的发货记录,不能返消."); - }else if(!StringUtils.equals(currentOrgUnitCode, invoice.getDepartCoding())){ + } + }else if(!StringUtils.equals(currentOrgUnitCode, invoice.getDepartCoding())){ + if(!allowReturnDisinfectForNotMatchConditionTousse){ throw new RuntimeException("该器械包所属科室为" + invoice.getDepart() + ",不能进行器械返消!"); } } @@ -254,7 +258,8 @@ if("2".equals(applicationFormType)){ formType = InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM; } - + //获取项目的config.js的配置:不符合返消条件的器械包实例能否被返消 + boolean allowReturnDisinfectForNotMatchConditionTousse = CssdUtils.getSystemSetConfigByNameBool("allowReturnDisinfectForNotMatchConditionTousse"); //待废弃的器械包(只对非已废弃的器械包进行废弃) List needWasteTousseInstanceList = new ArrayList(); //器械包的map @@ -266,9 +271,11 @@ tousseMap.put(ti.getTousseName(), 1); } - //当位置不为空且状态不为已废弃时才加入到待废弃集合中 - if(StringUtils.isNotBlank(ti.getLocation()) && !ti.isDiscarded()){ + if(allowReturnDisinfectForNotMatchConditionTousse){ needWasteTousseInstanceList.add(ti); + }else if(StringUtils.isNotBlank(ti.getLocation()) && !ti.isDiscarded()){ + //当位置不为空且状态不为已废弃时才加入到待废弃集合中 + needWasteTousseInstanceList.add(ti); } } Index: ssts-web/src/main/webapp/disinfectsystem/config/gzspyqzyy/config.js =================================================================== diff -u -r16263 -r16658 --- ssts-web/src/main/webapp/disinfectsystem/config/gzspyqzyy/config.js (.../config.js) (revision 16263) +++ ssts-web/src/main/webapp/disinfectsystem/config/gzspyqzyy/config.js (.../config.js) (revision 16658) @@ -72,6 +72,7 @@ // 消毒供应中心物品领用显示物品明细 showGoodDetail: true, // 责任环节进去录之间监测是否限制监测项的范围 - responsibilityPartNotLimitInspect : true - + responsibilityPartNotLimitInspect : true, + //不符合返消规则的器械包是否允许返消(默认为false) + allowReturnDisinfectForNotMatchConditionTousse : true }; \ No newline at end of file