Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r27620 -r27649 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 27620) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 27649) @@ -4307,26 +4307,35 @@ * 判断是否需要合并申请单. * 1.如果申请科室为二级供应室:科室供应室配置的手术室手工录入申请单是否合并为true则返回true,为false则返回false; * 2.如果申请科室不为二级供应室:则判断科室供应室配置的申请单是否自动合并申请单为true,则返回true,为false则返回false; - * 3.20181116经与罗乐沟通,如果新提交的申请单含有消毒物品时,则不再合并申请单(此为通用的处理) + * 3.如果第一张和第二张申请单都包含了消毒物品,则不进行合并(ASSQFYY-10) * @param recyclingApplication 申请单 * @param supplyRoomConfig 科室供应室配置 * @param autoMerge 是否自动合并申请单 * @return */ private boolean isApplicationFormMerge( RecyclingApplication recyclingApplication, + RecyclingApplication existApplication, SupplyRoomConfig supplyRoomConfig, boolean autoMerge) { //在科室供应室配置配置了不合并的申请单,都不合并 String noMergeApplicationTypes = supplyRoomConfig.getNoMergeApplicationTypes(); if(noMergeApplicationTypes != null && noMergeApplicationTypes.indexOf(recyclingApplication.getType()) != -1){ return false; } List items = recyclingApplication.getApplicationItems(); + List existItems = existApplication.getApplicationItems(); if(CollectionUtils.isNotEmpty(items)){ for (TousseItem tousseItem : items) { if(tousseItem.isDisinfection()){ - //新申请单中含有消毒物品,所以此单都不合并 - return false; + //如果第一张和第二张申请单都包含了消毒物品,则不进行合并 + if(CollectionUtils.isNotEmpty(existItems)){ + for (TousseItem item : existItems) { + if(item.isDisinfection()){ + return false; + } + } + break; + } } } } @@ -4376,29 +4385,33 @@ boolean autoMerge = supplyRoomConfig.getAutoMergeApplication(); boolean isNeedToBeMerged = false; if(autoMerge && !DatabaseUtil.isPoIdValid(recyclingApplication.getId()) && supplyRoomConfigManager.verifDepartCanMergeApplication(recyclingApplication.getDepartCoding(), supplyRoomConfig)){ - //只有待回收状态的器械包申请单、待发货状态的一次性物品申请单才会被合并;通用申请单目前不会被合并 + //只有待回收状态的器械包申请单、待回收状态的通用申请单、待发货状态的一次性物品申请单才会被合并; //1.先从单类型、状态等本身信息字段来判断该申请单是否满足合并的条件,决定是否需要合并(因为这个判断效率高所以放在第一步):消毒物品申请单也都不再合并 // TODO:已打印的单也不能被合并,需要增加这种检查 - if (((InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM.equals(appType)/* || InvoicePlan.TYPE_DISINFECT_GOODS_APPLICATION_FORM.equals(appType)*/) + if ((((InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM.equals(appType) + || InvoicePlan.TYPE_COMBO_FORM.equals(appType))/* || InvoicePlan.TYPE_DISINFECT_GOODS_APPLICATION_FORM.equals(appType)*/) && (StringUtils.isBlank(recyclingStatus) || InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE.equals(recyclingStatus)) && (StringUtils.isBlank(deliverStatus) || InvoicePlan.DELIVERSTATUS_AWAITDELIVER.equals(deliverStatus))) || (InvoicePlan.TYPE_DIPOSABLE_GOODS_APPLICATION_FORM.equals(appType) && InvoicePlan.DELIVERSTATUS_AWAITDELIVER.equals(deliverStatus)) ) { isNeedToBeMerged = true; } - //2.再根据科室供应室的配置进行判断该项目、该申请科室是否启用或符合合并条件来决定该单是否需要合并(因为这个判断需要对比查询科室供应室的数据出来进行比较所以效率高、所以放在第二步) if(isNeedToBeMerged){ - isNeedToBeMerged = isApplicationFormMerge(recyclingApplication,supplyRoomConfig, autoMerge); - } - //如果需要合并,则进行相应的处理 - if (isNeedToBeMerged) { existApplication = getSameStatusRecyclingApplicationForUpdate(recyclingApplication,isCommit); - //3.已打印或者已发货、部分发货的申请单不合并。 + //2.已打印或者已发货、部分发货的申请单不合并。 if (existApplication != null && InvoicePlan.PRINT_STATUS_PRINTED != existApplication.getPrinted() && !InvoicePlan.DELIVERSTATUS_DELIVERED.equals(existApplication.getDeliverStatus()) && !InvoicePlan.DELIVERSTATUS_PARTDELIVERED.equals(existApplication.getDeliverStatus())) { + //3.再根据科室供应室的配置进行判断该项目、该申请科室是否启用或符合合并条件来决定该单是否需要合并(因为这个判断需要对比查询科室供应室的数据出来进行比较所以效率高、所以放在第二步) + isNeedToBeMerged = isApplicationFormMerge(recyclingApplication, existApplication, supplyRoomConfig, autoMerge); + } else { + isNeedToBeMerged = false; + } + } + //如果需要合并,则进行相应的处理 + if (isNeedToBeMerged) { List needToBeAdded = new ArrayList(); Date modifyTime = recyclingApplication @@ -4593,10 +4606,7 @@ existApplication.setUrgency(mergedUrgency); sbf.append("您申请的物品已被合并到单号为【" + existApplication.getSerialNumber() + "】的申请单,提交成功!"); - }else{ - isNeedToBeMerged = false; } - } } if(!isNeedToBeMerged){ existApplication = recyclingApplication; Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplyroomtype/supplyRoomTypeForm.js =================================================================== diff -u -r27495 -r27649 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplyroomtype/supplyRoomTypeForm.js (.../supplyRoomTypeForm.js) (revision 27495) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplyroomtype/supplyRoomTypeForm.js (.../supplyRoomTypeForm.js) (revision 27649) @@ -634,7 +634,7 @@ */ var noMergeApplicationTypesStore = new Ext.data.SimpleStore({ fields : ['value'], - data : [['全部'],['器械包申请单'],['一次性物品申请单']] + data : [['全部'],['器械包申请单'],['一次性物品申请单'],['通用申请单']] }); var expensiveGoodsPaperTypeStore = new Ext.data.JsonStore({