Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r12775 -r12801 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 12775) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 12801) @@ -40,8 +40,11 @@ import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.model.BarcodeDevice; import com.forgon.disinfectsystem.barcode.service.BarcodeManager; +import com.forgon.disinfectsystem.basedatamanager.goodsstock.service.GoodsStockManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.basedatamanager.toussedefinition.service.TousseDefinitionUtils; +import com.forgon.disinfectsystem.basedatamanager.toussedefinition.service.TousseInstanceUtils; +import com.forgon.disinfectsystem.basedatamanager.warehouse.service.WareHouseManager; import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodBatchStockManager; import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodsManager; @@ -60,6 +63,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; import com.forgon.disinfectsystem.entity.departmentstock.DepartmentStock; import com.forgon.disinfectsystem.entity.foreigntousseapplication.ForeignTousseApplication; +import com.forgon.disinfectsystem.entity.goodsstock.GoodsStock; import com.forgon.disinfectsystem.entity.invoicemanager.DiposableGoodsItem; import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; import com.forgon.disinfectsystem.entity.invoicemanager.InvoiceGoodsVo; @@ -148,6 +152,10 @@ private InitDbConnection dbConnection; + private WareHouseManager wareHouseManager; + + private GoodsStockManager goodsStockManager; + public void setDbConnection(InitDbConnection dbConnection) { this.dbConnection = dbConnection; } @@ -211,13 +219,21 @@ this.tousseStockManager = tousseStockManager; } + public void setGoodsStockManager(GoodsStockManager goodsStockManager) { + this.goodsStockManager = goodsStockManager; + } + @Override public void saveInvoice(Invoice invoice) { invoice.setSpelling(GB2Alpha.string2Alpha(invoice.getDepart())); invoice.setWbCode(GB2WB.getWBCode(invoice.getDepart())); objectDao.saveOrUpdate(invoice); } + public void setWareHouseManager(WareHouseManager wareHouseManager) { + this.wareHouseManager = wareHouseManager; + } + public void setInvoicePlanManager(InvoicePlanManager invoicePlanManager) { this.invoicePlanManager = invoicePlanManager; } @@ -1594,6 +1610,8 @@ } // 更新器械包库存 updateGoodsStock(updateStockInfo); + // 更新仓库的库存 + updateTousseInstanceStockInwareHouse(updateStockInfo, warehouseID); // 更新一次性物品库存 for (IdentificationOfDisposableGoods identificationOfDiposableGoods : toUpdateIdentificationOfDiposableGoods) { objectDao.update(identificationOfDiposableGoods); @@ -1980,6 +1998,35 @@ // 更新各科室库存 updateDepartmentStock(filteredUpdateStockInfo,tdMap); } + private void updateTousseInstanceStockInwareHouse(Map> updateStockInfo,String sendWareHouseId){ + if(updateStockInfo != null){ + WareHouse wareHouse = wareHouseManager.getWareHouseById(sendWareHouseId); + if(wareHouse == null){ + throw new RuntimeException("未找到发货仓库!"); + } + //发货仓库减库存列表 + List allSourceStocks = new LinkedList(); + //收货仓库加库存列表 + List allTargetStocks = new LinkedList(); + for (Map.Entry> entry : updateStockInfo.entrySet()) { + WareHouse targetWareHouse = wareHouseManager.getDefaultWareHouseByUnitCode( + entry.getKey().getInvoicePlan().getDepartCoding()); + List sourcestocks = TousseInstanceUtils.newGoodsStockList(entry.getValue(), wareHouse); + List targetstocks = TousseInstanceUtils.newGoodsStockList(entry.getValue(), targetWareHouse); + + allSourceStocks.addAll(sourcestocks); + allTargetStocks.addAll(targetstocks); + } + try { + goodsStockManager.saveOrUpdateGoodsStock(allSourceStocks, GoodsStockManager.MODE_OUTSTOCK); + goodsStockManager.saveOrUpdateGoodsStock(allTargetStocks, GoodsStockManager.MODE_INSTOCK); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + throw new RuntimeException(e.getMessage()); + } + } + } // 更新每个器械包总库存 private void updateTousseStock(Map> updateStockInfo){ Set tousseInstancesToUpdate = new HashSet();