Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionRecordManagerImpl.java =================================================================== diff -u -r17859 -r17862 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionRecordManagerImpl.java (.../TousseTransitionRecordManagerImpl.java) (revision 17859) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionRecordManagerImpl.java (.../TousseTransitionRecordManagerImpl.java) (revision 17862) @@ -315,7 +315,7 @@ RecyclingApplication ra = recyclingApplicationManager.getRecyclingApplicationById(recyclingApplicationId.toString()); if(!StringTools.equals(ra.getOperationRoom(), app.getOperationRoom())){ throw new RuntimeException(String.format("条码为%s的器械包由病人%s使用,手术 间号%s", - tousseInstance.getBarcode(),app.getUseRecord().getPatientSex(),app.getOperationRoom())); + tousseInstance.getBarcode(),app.getUseRecord().getPatientName(),app.getOperationRoom())); } }else{ if(app.getId().longValue() != recyclingApplicationId.longValue()){ @@ -352,15 +352,40 @@ if(!DatabaseUtil.isPoIdValid(tousseInstance.getUseRecord_id())){ String msg = String.format("条码为%s的标识牌未添加使用记录", instance.getBarcode()); throw new RuntimeException(msg); - }else{ - RecyclingApplication app = recyclingApplicationManager.getRecyclingApplication(tousseInstance.getUseRecord_id()); + }else{ + List rtrs = objectDao.findByProperty( + UseRecordToRecycleApplication.class.getSimpleName(), "useRecordId", tousseInstance.getUseRecord_id().toString()); + UseRecordToRecycleApplication useRecordToRecycleApplication = null; + for(UseRecordToRecycleApplication rtr : rtrs){ + if(recyclingApplicationId.equals(rtr.getInvoicePlanId())){ + useRecordToRecycleApplication = rtr; + break; + } + } + RecyclingApplication app = null; + if(useRecordToRecycleApplication != null){ + //包实例的使用记录,有与当前申请单合并的记录 + app = recyclingApplicationManager.getRecyclingApplicationById(recyclingApplicationId.toString()); + } + if(app == null){ String msg = String.format("未找到条码为%s的标识牌所转换的申请单", instance.getBarcode()); throw new RuntimeException(msg); } - if(app.getId().longValue() != recyclingApplicationId.longValue()){ - String msg = String.format("条码为%s的标识牌由病人%s使用", instance.getBarcode(),app.getUseRecord().getPatientName()); - throw new RuntimeException(msg); + //如果是按手术间合并,那相同手术间的包实例是可以合并回收的,不同的病人也可以 + String mergeRegular = CssdUtils.getSystemSetConfigByName("useRecordConvertRecyclingApplicationMergeRegular"); + if(UseRecord.CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_OPERATIONROOM.equals(mergeRegular)){ + RecyclingApplication ra = recyclingApplicationManager.getRecyclingApplicationById(recyclingApplicationId.toString()); + if(!StringTools.equals(ra.getOperationRoom(), app.getOperationRoom())){ + throw new RuntimeException(String.format("条码为%s的标识牌由病人%s使用,手术 间号%s", + instance.getBarcode(),app.getUseRecord().getPatientName(),app.getOperationRoom())); + } + }else{ + if(app.getId().longValue() != recyclingApplicationId.longValue()){ + String msg = String.format("条码为%s的标识牌由病人%s使用", instance.getBarcode(), + app.getUseRecord().getPatientName()); + throw new RuntimeException(msg); + } } } Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java =================================================================== diff -u -r17849 -r17862 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 17849) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 17862) @@ -3314,14 +3314,18 @@ JSONUtil.addProperty(json, "type", "User"); }else if(barcodeDevice instanceof IDCardInstance){ IDCardInstance instance = (IDCardInstance)barcodeDevice; - long recyclingApplicationFormId = 0; + long toussetransitionPlanId = 0; JSONObject extraParam = params.optJSONObject("extraParam"); if(extraParam == null){ json = JSONUtil.buildJsonObject(false, "缺失参数extraParam"); }else{ - recyclingApplicationFormId = extraParam.optLong("recyclingApplicationFormId"); + toussetransitionPlanId = extraParam.optLong("recyclingApplicationFormId"); } - json = tousseTransitionRecordManager.getIdCardInfo(instance, recyclingApplicationFormId); + TousseTransitionPlan plan = tousseTransitionPlanManager.get(toussetransitionPlanId); + if(plan == null){ + throw new RuntimeException("器械交接单已经被删除"); + } + json = tousseTransitionRecordManager.getIdCardInfo(instance, plan.getInvoicePlanId()); JSONUtil.addProperty(json, "type", "IDCardInstance"); } return json==null?JSONUtil.buildJsonObject(false).toString():json.toString();