Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java =================================================================== diff -u -r29475 -r29586 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java (.../InvoiceOptimizeManagerImpl.java) (revision 29475) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java (.../InvoiceOptimizeManagerImpl.java) (revision 29586) @@ -225,14 +225,6 @@ //每个条码对应的发货数量map.key为条码,value为发货数量 Map barcodeToSendAmountMap = new LinkedHashMap(); - //每个条码对应的是否紧急发货map.key为条码,value为是否紧急发货 - Map barcodeToIsRoutineMap = new LinkedHashMap(); - - submitInvoiceItemList.stream().forEach(item -> { - barcodeToSendAmountMap.put(item.getBarcode(), item.getSendAmount()); - barcodeToIsRoutineMap.put(item.getBarcode(), item.getIsRoutine()); - }); - //第一大点校验业务是否符合 //存放一次性物品固定条码的集合 List disposableGoodsBarcodeList = new ArrayList(); @@ -406,9 +398,21 @@ if(barcodeDeviceList == null){ barcodeDeviceList = new ArrayList(); } + //每个条码对应的是否紧急发货map.key为条码,value为是否紧急发货 + Map barcodeToIsRoutineMap = new LinkedHashMap(); + submitInvoiceItemList.stream().forEach(item -> { + barcodeToSendAmountMap.put(item.getBarcode(), item.getSendAmount()); + barcodeToIsRoutineMap.put(item.getBarcode(), item.getIsRoutine()); + }); + //包实例id对应的是否紧急发货的map,key为包实例id,value为是否紧急发货 + Map tousseInstanceIdToIsRoutineMap = new LinkedHashMap(); //遍历所有的待发货条码实例对象(唯一条码包实例、固定条码包实例、高值耗材实例、一次性物品批次定义) barcodeDeviceList.stream().forEach(barcodeDevice -> { if(barcodeDevice instanceof TousseInstance){ + String barcode = barcodeDevice.getBarcode(); + if(barcodeToIsRoutineMap.containsKey(barcode)){ + tousseInstanceIdToIsRoutineMap.put(barcodeDevice.getId(), barcodeToIsRoutineMap.get(barcode)); + } TousseInstance tousseInstance = (TousseInstance)barcodeDevice; //校验扫描及发货提交的包实例条码是否符合是否追溯与固定与唯一条码规则(大原则:追溯->唯一条码、不追溯->固定条码规则) validateTousseInstanceIsTraceableFixedBarcodeForInvoice(tousseInstance); @@ -993,7 +997,7 @@ batchGenerateInvoiceAndRelativeTableData(invoicePlanToTousseItemMapListMap, allForeignTousseAppIdToNotSentForeignTousseInstanceListMap, currentDateTime,params,orgUnit,targetWarehouse, idToDisposableGoodsMap,idToDisposableGoodsBatchMap, - invoiceOrigin,tousseDeliverOccasion, + invoiceOrigin,tousseDeliverOccasion, tousseInstanceIdToIsRoutineMap, disposableGoodsStorageAdjustVoTotalList); /* @@ -4389,7 +4393,7 @@ Map> allForeignTousseAppIdToNotSentForeignTousseInstanceListMap, Date currentDateTime , JSONObject params,OrgUnit orgUnit,WareHouse targetWarehouse, Map idToDisposableGoodsMap,Map idToDisposableGoodsBatchMap, - String invoiceOrigin,String tousseDeliverOccasion, + String invoiceOrigin,String tousseDeliverOccasion,Map tousseInstanceIdToIsRoutineMap, List disposableGoodsStorageAdjustVoTotalList){ List invoiceList = new ArrayList(); //插入表数据的id字段名及值(sqlserver数据库的id列为自增长所以赋空值,即不需要指定id列,oracle数据库需要指定id列,且值为序列的值) @@ -4424,10 +4428,8 @@ allForeignTousseAppIdToNotSentForeignTousseInstanceListMap,invoiceList, idColumnName,idColumnValue,currentDateTime,params,orgUnit,targetWarehouse, invoiceOrigin, tousseDeliverOccasion, - idToDisposableGoodsMap, idToDisposableGoodsBatchMap,idToInvoiceMap, + idToDisposableGoodsMap, idToDisposableGoodsBatchMap,idToInvoiceMap, tousseInstanceIdToIsRoutineMap, disposableGoodsStorageAdjustVoTotalList); - - //聚合包整包发货的Invoice_InvoicePlan /*invoicePlanList.stream().forEach(invoicePlan -> { List> tousseItemMapList = @@ -4625,7 +4627,7 @@ JSONObject params,OrgUnit orgUnit,WareHouse targetWarehouse, String invoiceOrigin,String tousseDeliverOccasion, Map idToDisposableGoodsMap,Map idToDisposableGoodsBatchMap, - Map idToInvoiceMap,List disposableGoodsStorageAdjustVoTotalList){ + Map idToInvoiceMap,Map tousseInstanceIdToIsRoutineMap,List disposableGoodsStorageAdjustVoTotalList){ if(CollectionUtils.isEmpty(invoiceList)){ throw new SystemException("发货失败,未生成发货单."); } @@ -5081,7 +5083,7 @@ //2.更新器械包实例的状态、仓库、位置、所关联的发货单 batchUpdateTousseInstanceTableData(invoiceToInvoiceItemListMap, tousseItemToTdToTiListMapMap, invoicePlanToInvoiceMap,orgUnit,targetWarehouse, params, currentDateTime, - idColumnName, idColumnValue, + idColumnName, idColumnValue, tousseInstanceIdToIsRoutineMap, disposableGoodsStorageAdjustVoTotalList); /* * 器械包库存(根据仓库id与器械包定义id查询库存对象,如果存在则update,否则insert) @@ -5638,7 +5640,7 @@ Map>> tousseItemToTdToTiListMapMap, Map invoicePlanToInvoiceMap, OrgUnit orgUnit,WareHouse targetWarehouse,JSONObject params,Date currentDateTime, - String idColumnName,String idColumnValue, + String idColumnName,String idColumnValue,Map tousseInstanceIdToIsRoutineMap, List disposableGoodsStorageAdjustVoTotalList){ List> tousseInstanceUpdateMapList = new ArrayList>(); //所发的包实例所属的聚合包实例也需要更新状态为已发货及发货时间与发货人等信息 @@ -5713,7 +5715,7 @@ + "settleAccountsDepart2=(case when invoice_id is null then null else ? end), " + "settleAccountsDepartCode2=(case when invoice_id is null then null else ? end)," + "invoiceSender2=(case when invoice_id is null then null else '%s' end)," - + "invoiceSendTime2=(case when invoice_id is null then null else %s end)" + + "invoiceSendTime2=(case when invoice_id is null then null else %s end),isRoutine=?" + "where id=?", TousseInstance.class.getSimpleName(),targetWarehouse.getId(),targetWarehouse.getName(), orgUnit.getOrgUnitCoding(),orgUnit.getName(),sender,dateQueryAdapter.dateAdapter(currentDateTime), @@ -5725,6 +5727,7 @@ Map tousseInstanceUpdateMap = tousseInstanceUpdateMapList.get(i); Long invoice_id = (Long)tousseInstanceUpdateMap.get("invoice_id"); Long id = (Long)tousseInstanceUpdateMap.get("id"); + String isRoutine = tousseInstanceIdToIsRoutineMap.containsKey(id) ? tousseInstanceIdToIsRoutineMap.get(id) : Constants.STR_YES; if(invoice_id == null){ ps.setNull(1, Types.BIGINT); ps.setNull(6, Types.BIGINT); @@ -5739,7 +5742,8 @@ ps.setString(7, (String)tousseInstanceUpdateMap.get("settleAccountsDepart")); ps.setString(8, (String)tousseInstanceUpdateMap.get("settleAccountsDepartCoding")); - ps.setLong(9, id); + ps.setString(9, isRoutine); + ps.setLong(10, id); } @Override