Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r17236 -r17248 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 17236) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 17248) @@ -1518,14 +1518,24 @@ WareHouse sourceWareHouse = submitInvoiceContext.getSourceWarehouse(); Map targetWareHouseMap = submitInvoiceContext.getTargetWareHouseMap(); Collection tousseInstances = submitInvoiceContext.getBarcodeToTousseInstanceMap().values(); + Set tousseDefinitionAncestorId = new HashSet(); if(CollectionUtils.isNotEmpty(tousseInstances)){ List tds = new ArrayList<>(); for(TousseInstance ti : tousseInstances){ if(ti != null){ tds.add(ti.getTousseDefinition()); + if(DatabaseUtil.isPoIdValid(ti.getTousseDefinition().getAncestorID())){ + tousseDefinitionAncestorId.add(ti.getTousseDefinition().getAncestorID()); + } } } submitInvoiceContext.getAllGoodsStocksInDB().addAll(goodsStockManager.lockGoodsStocks(sourceWareHouse, targetWareHouseMap.values(),tds)); + Collection ancestorTds = tousseDefinitionManager.getCollection(tousseDefinitionAncestorId); + if(CollectionUtils.isNotEmpty(ancestorTds)){ + for(TousseDefinition td : ancestorTds){ + submitInvoiceContext.getAncestorTousseDefinitionIdToTousseDefinitionMap().put(td.getId(), td); + } + } } } private void lockDiposableGoods2( @@ -3095,7 +3105,7 @@ try { if(CollectionUtils.isNotEmpty(allSourceStocks)){ goodsStockManager.saveOrUpdateGoodsStockForInvoice(submitInvoiceContext.getAllGoodsStocksInDB(), - submitInvoiceContext.getTousseDefinitionIdToTousseDefinitionMap(),allSourceStocks); + submitInvoiceContext.getAncestorTousseDefinitionIdToTousseDefinitionMap(),allSourceStocks); } // if(CollectionUtils.isNotEmpty(allTargetStocks)){ // goodsStockManager.saveOrUpdateGoodsStock(allTargetStocks, GoodsStockManager.MODE_INSTOCK); Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/invoice/service/SubmitInvoiceContext.java =================================================================== diff -u -r17216 -r17248 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/invoice/service/SubmitInvoiceContext.java (.../SubmitInvoiceContext.java) (revision 17216) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/invoice/service/SubmitInvoiceContext.java (.../SubmitInvoiceContext.java) (revision 17248) @@ -57,6 +57,10 @@ private Set tousseDefinitionIdSet = new HashSet(); private Map tousseDefinitionIdToTousseDefinitionMap = new HashMap(); + /** + * 扫描的包实例对应的包定义的祖先包定义id与祖先包定义的map。扣库存的时候,使用这个信息 + */ + private Map ancestorTousseDefinitionIdToTousseDefinitionMap = new HashMap(); private Set scannedTousseInstances = new HashSet(); private Set comboTousseInstanceIdSet = new HashSet(); private Set comboTousseInstances = new HashSet(); @@ -263,6 +267,12 @@ this.tousseDefinitionIdToTousseDefinitionMap = tousseDefinitionIdToTousseDefinitionMap; } + + + public Map getAncestorTousseDefinitionIdToTousseDefinitionMap() { + return ancestorTousseDefinitionIdToTousseDefinitionMap; + } + public Set getScannedTousseInstances() { return scannedTousseInstances; }