Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java =================================================================== diff -u -r28822 -r28933 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java (.../InvoiceOptimizeManagerImpl.java) (revision 28822) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java (.../InvoiceOptimizeManagerImpl.java) (revision 28933) @@ -508,11 +508,12 @@ throw new SystemException(String.format("%s是追溯的包,只能扫描包外唯一条码发货", tousseInstance.getTousseName())); } + String sourceDepartCodingOfTousseInstance = tousseInstance.getDepartCoding(); //祖先包定义id,用于后面的消毒物品逻辑处理 Long ancestorId = td.getAncestorID(); if(!td.traceable()){ - //是否追溯为否,如果为不追溯-即为固定条码 - if(StringUtils.equals(td.getLimitInvoiceDepart(), Constants.STR_YES)){ + //是否追溯为否,如果为不追溯-即为固定条码(HZSRMYY-56 申请科室为空的包,发货时不限制其发货科室) + if(StringUtils.isNotBlank(sourceDepartCodingOfTousseInstance) && StringUtils.equals(td.getLimitInvoiceDepart(), Constants.STR_YES)){ //限制发货科室为是 if(td.isDisinfection()){ //是否消毒物品为是 @@ -539,12 +540,11 @@ }else{ //是否追溯为是 if(StringUtils.equals(td.getLimitInvoiceDepart(), Constants.STR_YES)){ - String sourceDepartCodingOfTousseInstance = tousseInstance.getDepartCoding(); if(InvoiceUtils.isInvoiceGroupBySettleAccountsDepartCoding()){ sourceDepartCodingOfTousseInstance = tousseInstance.getSettleAccountsDepartCoding(); } - //如果器械包实例的来源科室不为当前要发货的科室,则进行提示 - if(!StringUtils.equals(sourceDepartCodingOfTousseInstance, departCoding)){ + //如果器械包实例的来源科室不为当前要发货的科室,则进行提示(HZSRMYY-56 申请科室为空的包,发货时不限制其发货科室) + if(StringUtils.isNotBlank(sourceDepartCodingOfTousseInstance) && !StringUtils.equals(sourceDepartCodingOfTousseInstance, departCoding)){ throw new SystemException(String.format("条码为%s的%s不是本科室的包,不能发货", tousseInstance.getBarcode() , tousseInstance.getTousseName())); } @@ -1251,8 +1251,9 @@ ti.getBarcode(),ti.getTousseName())); } } - //1.5判断所属科室(根据包定义的限制发货科室) - if(StringUtils.equals(td.getLimitInvoiceDepart(), Constants.STR_YES) + String sourceDepartCodingOfTousseInstance = params.optString("departCode"); + //1.5判断所属科室(根据包定义的限制发货科室)(HZSRMYY-56 申请科室为空的包,发货时不限制其发货科室) + if(StringUtils.isNotBlank(sourceDepartCodingOfTousseInstance) && StringUtils.equals(td.getLimitInvoiceDepart(), Constants.STR_YES) && !StringUtils.equals(ti.getDepartCoding(), params.optString("departCode"))){ throw new SystemException( String.format("条码为%s的%s的来源科室为%s,当前发放的科室又是%s,该包定义限制发货科室,所以不能发货!",