Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/goodsstock/service/GoodsStockManager.java =================================================================== diff -u -r18455 -r19598 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/goodsstock/service/GoodsStockManager.java (.../GoodsStockManager.java) (revision 18455) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/goodsstock/service/GoodsStockManager.java (.../GoodsStockManager.java) (revision 19598) @@ -178,4 +178,10 @@ public int decreaseGoodsStockAmount(List outStockInfo, List toUpdateGoodsStock, List list, int needReturnAmount,boolean change,boolean accordingSupplier); + /** + * 根据入库明细Id获取物品供应商 + * @param goodsStock + * @return + */ + public String getGoodsStockSuppliers(GoodsStock goodsStock); } Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/service/InventoryManagerImpl.java =================================================================== diff -u -r19567 -r19598 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/service/InventoryManagerImpl.java (.../InventoryManagerImpl.java) (revision 19567) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/service/InventoryManagerImpl.java (.../InventoryManagerImpl.java) (revision 19598) @@ -564,8 +564,11 @@ //器械材料库存 List goodsstock=goodsStockManager.getMaterialStock(wareHouse.getId(),inventory.getMaterialDefinition().getId()); Long amount=0L; - for(GoodsStock GS:goodsstock){ - amount+=GS.getAmount(); + for(GoodsStock gs:goodsstock){ + String suppliers =goodsStockManager.getGoodsStockSuppliers(gs); + if(gs.getPrice().equals(item.getUnitPrice())&& suppliers.equals(item.getSupplierName())){//材料库存根据同供应商同价格获取 + amount+=gs.getAmount(); + } } // 器械材料退库须有供应商和单价 if (StringUtils.isBlank(item.getSupplierName())) { @@ -577,10 +580,10 @@ throw new DataCheckException(String.format("退库单%s中物品【%s】的价格不能为空或小于0!请联系管理员!", outEntrySerialNumber, inventory.getDisplayName())); } - + // 检查库存 if(amount list = materialDefGoodsStockListInDb.stream().filter( gs->gs.getWareHouseId().equals(goodsStockTemp.getWareHouseId()) && gs.getMaterialDefinitionId().equals(goodsStockTemp.getMaterialDefinitionId()) - && gs.getAmount() > 0).collect(Collectors.toList()); + && gs.getPrice().equals(goodsStockTemp.getPrice()) //价格比较 + && StringTools.equals(getGoodsStockSupplier(gs),goodsStockTemp.getSupplier()) //供应商比较 + && gs.getAmount() > 0).collect(Collectors.toList()); int totalAmount = calculateTotalAmount(list); int needReturnAmount = goodsStockTemp.getAmount(); @@ -874,4 +877,9 @@ } } } + @Override + public String getGoodsStockSuppliers(GoodsStock goodsStock) { + String suppliers = getGoodsStockSupplier(goodsStock); + return suppliers; + } } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialmanager/service/MaterialEntryManagerImpl.java =================================================================== diff -u -r18730 -r19598 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialmanager/service/MaterialEntryManagerImpl.java (.../MaterialEntryManagerImpl.java) (revision 18730) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialmanager/service/MaterialEntryManagerImpl.java (.../MaterialEntryManagerImpl.java) (revision 19598) @@ -444,6 +444,7 @@ stock.setMaterialEntryItemId(materialEntryItem.getId()); stock.setWareHouseId(materialEntry.getWareHouseId()); stock.setWareHouseName(materialEntry.getWareHouseName()); + stock.setSupplier(materialEntryItem.getSupplierName()); //保存供应商 goodsStockList.add(stock); } String type = GoodsStockManager.MODE_INSTOCK;