Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r14552 -r14563 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 14552) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 14563) @@ -1160,6 +1160,9 @@ Map fixedBarcodeTousseIdToTousseInstanceMap = submitInvoiceContext.getFixedBarcodeTousseIdToTousseInstanceMap(); Map tousseDefinitionIdToFixedBarcodeTousseInstanceMap = submitInvoiceContext.getTousseDefinitionIdToFixedBarcodeTousseInstanceMap(); List filteredList = submitInvoiceContext.getInvoicePlanList(); + SupplyRoomConfig supplyRoomConfig = submitInvoiceContext.getSupplyRoomConfig(); + Boolean warningTousseWhetherDelivery = supplyRoomConfig + .getWarningTousseWhetherDelivery(); // 统计发货数据 for (SubmitInvoiceItem submitInvoiceItem:submitInvoiceItems) { @@ -1190,6 +1193,26 @@ if(!tousseInstance.canInvoice()){ throw new RuntimeException(String.format("器械包[%s]条码[%s]状态为%s,不能发货!", tousseInstance.getTousseName(),barcode,tousseInstance.getStatus())); } + // 验证是否失效和警告 + Date validUntil = tousseInstance.getValidUntil(); + if (DateTools.isExpire(validUntil, new Date())) { + throw new RuntimeException(String.format("器械包[%s]条码[%s]已过期,不能发货!", tousseInstance.getTousseName(),barcode)); + } + + if (!warningTousseWhetherDelivery) { + Date warningUntil = tousseInstance.getWarningUntil(); + if (DateTools.isDuringWarningPeriod(validUntil, + warningUntil, new Date())) { + if (warningTousseWhetherDelivery) { + } else { + throw new RuntimeException( + String.format( + "器械包[%s]条码[%s]处于预警期,不能发货!", + tousseInstance.getTousseName(), + barcode)); + } + } + } } if(td.isDisinfection() && tousseInstance.getTousseFixedBarcode()){ // 固定条码的消毒物品,在发货前获取所有的包实例。一次取出所有的包实例,对长沙中心医院可能会有问题,包实例太多,但是目前的设计只能这样处理。 @@ -2858,7 +2881,7 @@ } // 不追溯的器械包(除消毒物品外),发货扫描固定条码,返回多个器械包 - if (!tousseDefinition.traceable()) { + if (!tousseDefinition.traceable() && tousseInstance.getTousseFixedBarcode()) { // 非可追溯器械包,返回多个器械包实例 Collection resultTousseInstanceList = getCanInvoiceTousseInstancesByFixedTousseInstance(tousseInstance);