Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java =================================================================== diff -u -r27424 -r27429 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 27424) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 27429) @@ -2879,6 +2879,7 @@ String patientNames = ""; SupplyRoomConfig config = supplyRoomConfigManager.getSystemParamsObj(); boolean departCanMerge = supplyRoomConfigManager.verifDepartCanMergeApplication(departCoding, config); + boolean allowUseReordToApplicationMergeWhenOperationRoomIsBlank = CssdUtils.getSystemSetConfigByNameBool("allowUseReordToApplicationMergeWhenOperationRoomIsBlank",false); //通常只有一条使用记录(也支持多条) List useRecordList = (List) useRecordsMap .get("useRecordList"); @@ -2994,8 +2995,15 @@ //只有当使用记录的数量为1且使用记录的手术间不为空时才按手术间进行合并 if(UseRecord.CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_OPERATIONROOM.equals(useRecordConvertRecyclingApplicationMergeRegular) && useRecordList.size() == 1 - && StringUtils.isNotBlank(operationRoom)){ - + && ((StringUtils.isNotBlank(operationRoom) && !allowUseReordToApplicationMergeWhenOperationRoomIsBlank) + || (StringUtils.isBlank(operationRoom) && allowUseReordToApplicationMergeWhenOperationRoomIsBlank) + )){ + String operationRoomSql = null; + if(StringUtils.isNotBlank(operationRoom)){ + operationRoomSql = "and operationRoom='"+ operationRoom +"' "; + }else{ + operationRoomSql = ""; + } //如果条件1为不需要发货或条件2中没有要发货的物品,则只查询发货状态为null的物品;否则查询待发货的单 String deliverStatusCondition = needInvoiceForUseRecordOfDepart && includeNeedInvoiceItemsForUseRecord ? " and deliverStatus='" + InvoicePlan.DELIVERSTATUS_AWAITDELIVER + "' " @@ -3004,7 +3012,7 @@ //查询该科室的手术间与当前使用记录的手术单相同的申请单(且未终止、待回收、未发货),也是使用记录转换的申请单 RecyclingApplication recyclingApplication = (RecyclingApplication)objectDao.getBySql_ForUpdate(RecyclingApplication.class.getSimpleName(), "where 1=1 and useRecord is not null and departCoding='"+ departCoding + "'" - + "and operationRoom='"+ operationRoom +"' " + + operationRoomSql + "and type in ('"+ InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM +"') " + "and (endStatus is null) " + deliverStatusCondition + "and (recyclingStatus='" + InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE + "') order by po.id desc"); @@ -3026,7 +3034,7 @@ willMergeConvertApplication = true; } } - if(!willMergeConvertApplication){ + if(!willMergeConvertApplication || !departCanMerge){ //创建器械包申请单 List recyclingApplicationList = recyclingApplicationManager.createRecyclingApplicationByTousse( applyTousseMap,new HashMap(), applicant, depart, departCoding, hospitalNumbers, remark, @@ -3322,7 +3330,15 @@ //只有当使用记录的数量为1且使用记录的手术间不为空时才按手术间进行合并 if(UseRecord.CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_OPERATIONROOM.equals(useRecordConvertRecyclingApplicationMergeRegular) && useRecordList.size() == 1 - && StringUtils.isNotBlank(operationRoom)){ + && ((StringUtils.isNotBlank(operationRoom) && !allowUseReordToApplicationMergeWhenOperationRoomIsBlank) + || (StringUtils.isBlank(operationRoom) && allowUseReordToApplicationMergeWhenOperationRoomIsBlank) + )){ + String operationRoomSql = null; + if(StringUtils.isNotBlank(operationRoom)){ + operationRoomSql = "and operationRoom='"+ operationRoom +"' "; + }else{ + operationRoomSql = ""; + } //查询该科室的手术间与当前使用记录的手术单相同的申请单 //如果条件1为不需要发货或条件2中没有要发货的物品,则只查询发货状态为null的物品;否则查询待发货的单 String deliverStatusCondition = needInvoiceForUseRecordOfDepart && includeNeedInvoiceItemsForUseRecord @@ -3332,7 +3348,7 @@ //查询该科室的手术间与当前使用记录的手术单相同的申请单(且未终止、待回收、未发货),也是使用记录转换的申请单 RecyclingApplication recyclingApplication = (RecyclingApplication)objectDao.getBySql_ForUpdate(RecyclingApplication.class.getSimpleName(), "where 1=1 and useRecord is not null and departCoding='"+ departCoding + "'" - + "and operationRoom='"+ operationRoom +"' " + + operationRoomSql + "and type in ('"+ InvoicePlan.TYPE_COMBO_FORM +"') " + "and (endStatus is null) " + deliverStatusCondition + "and (recyclingStatus='" + InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE + "') order by po.id desc"); @@ -3354,7 +3370,7 @@ willMergeConvertApplication = true; } } - if(!willMergeConvertApplication){ + if(!willMergeConvertApplication || !departCanMerge){ //创建器械包申请单 List recyclingApplicationList = recyclingApplicationManager.createRecyclingApplicationByTousse( applyTousseMap,new HashMap(), applicant, depart, departCoding, hospitalNumbers, remark, @@ -3646,7 +3662,15 @@ //只有当使用记录的数量为1且使用记录的手术间不为空时才按手术间进行合并 if(UseRecord.CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_OPERATIONROOM.equals(useRecordConvertRecyclingApplicationMergeRegular) && useRecordList.size() == 1 - && StringUtils.isNotBlank(operationRoom)){ + && ((StringUtils.isNotBlank(operationRoom) && !allowUseReordToApplicationMergeWhenOperationRoomIsBlank) + || (StringUtils.isBlank(operationRoom) && allowUseReordToApplicationMergeWhenOperationRoomIsBlank) + )){ + String operationRoomSql = null; + if(StringUtils.isNotBlank(operationRoom)){ + operationRoomSql = "and operationRoom='"+ operationRoom +"' "; + }else{ + operationRoomSql = ""; + } //查询该科室的手术间与当前使用记录的手术单相同的申请单(且还未回收) //如果条件1为不需要发货或条件2中没有要发货的物品,则只查询发货状态为null的物品;否则查询待发货的单 String deliverStatusCondition = needInvoiceForUseRecordOfDepart && includeNeedInvoiceItemsForUseRecord @@ -3656,7 +3680,7 @@ //查询该科室的手术间与当前使用记录的手术单相同的申请单(且未终止、待回收、未发货),也是使用记录转换的申请单 RecyclingApplication recyclingApplication = (RecyclingApplication)objectDao.getBySql_ForUpdate(RecyclingApplication.class.getSimpleName(), "where 1=1 and useRecord is not null and departCoding='"+ departCoding + "'" - + "and operationRoom='"+ operationRoom +"' " + + operationRoomSql + "and type in ('"+ InvoicePlan.TYPE_COMBO_FORM +"') " + "and (endStatus is null) " + deliverStatusCondition + "and (recyclingStatus='" + InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE + "') order by po.id desc"); @@ -3678,7 +3702,7 @@ willMergeConvertApplication = true; } } - if(!willMergeConvertApplication){ + if(!willMergeConvertApplication || !departCanMerge){ //创建器械包申请单 List recyclingApplicationList = recyclingApplicationManager.createRecyclingApplicationByTousse( applyTousseMap,new HashMap(), applicant, depart, departCoding, hospitalNumbers, remark, Index: ssts-web/src/main/webapp/disinfectsystem/config/gdsrmyyzhyy/config.js =================================================================== diff -u -r27264 -r27429 --- ssts-web/src/main/webapp/disinfectsystem/config/gdsrmyyzhyy/config.js (.../config.js) (revision 27264) +++ ssts-web/src/main/webapp/disinfectsystem/config/gdsrmyyzhyy/config.js (.../config.js) (revision 27429) @@ -134,5 +134,7 @@ //允许部分回收 enablePartRecycle : true, //PDA的签收模式(包括科室签收模块和签收模块) - signModeOfPDASignModule:2 + signModeOfPDASignModule:2, + //手术间为空的使用记录单转换时是否合并 + allowUseReordToApplicationMergeWhenOperationRoomIsBlank:true } \ No newline at end of file