Index: ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/service/InventoryRecordManagerImpl.java =================================================================== diff -u -r13301 -r13385 --- ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/service/InventoryRecordManagerImpl.java (.../InventoryRecordManagerImpl.java) (revision 13301) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/service/InventoryRecordManagerImpl.java (.../InventoryRecordManagerImpl.java) (revision 13385) @@ -5,6 +5,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -26,6 +27,7 @@ import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsStock; import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntry; import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntryItem; +import com.forgon.disinfectsystem.entity.assestmanagement.IdentificationOfDisposableGoods; import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; import com.forgon.disinfectsystem.entity.materialmanager.MaterialEntry; import com.forgon.disinfectsystem.entity.stocktakemanager.InventoryItem; @@ -338,29 +340,53 @@ objectDao.saveOrUpdate(record); List items = new ArrayList(); for (DisposableGoodsStock disposableGoods : goodsStockList) { - for (DisposableGoodsBatchStock goodsBatch : disposableGoods.getGoodsBatchs()) { - if(goodsBatch.getStorage() <= 0){ + for (DisposableGoodsBatchStock disposableGoodsBatchStock : disposableGoods.getGoodsBatchs()) { + if(disposableGoodsBatchStock.getStorage() <= 0){ continue; } - InventoryItem item = new InventoryItem(); - item.setBatchID(goodsBatch.getDisposableGoodsBatchID()); - item.setBatchNumber(goodsBatch.getBatchNumber()); - item.setDiposableGoodsID(goodsBatch.getDisposableGoodsID()); - item.setDisposableGoodsBatchId(goodsBatch.getDisposableGoodsBatchID()); - item.setDisposableGoodsBatchStockId(goodsBatch.getDisposableGoodsBatchStockID()); - item.setDisposableGoodsId(goodsBatch.getDisposableGoodsID()); - item.setDisposableGoodsStockId(goodsBatch.getDisposableGoodsStockID()); - item.setMaterialName(goodsBatch.getDiposableGoods().getName()); - item.setPrice(goodsBatch.getCost()); - item.setSpecification(goodsBatch.getDiposableGoods().getSpecification()); - item.setInventoryRecordId(record.getId()); - item.setStorage(Integer.valueOf(""+goodsBatch.getStorage())); - item.setSupplierName(goodsBatch.getSupplierName()); - item.setWareHouseId(wareHouseId); - item.setWareHouseName(warehouse.getName()); - item.setExternalCode(disposableGoods.getExternalCode()); - item.setExpDate(goodsBatch.getExpDate()); - items.add(item); + // 按价格分类 + List identifications = disposableGoodsBatchStock.getIdentifications(); + if(identifications == null){ + continue; + } + Map> itemsGroupedByPriceMap = new HashMap>(); + for (IdentificationOfDisposableGoods identification : identifications) { + Double price = identification.getPrice(); + if(price == null){ + throw new RuntimeException(String.format("批次号为[%s]的物品[%s]有价格为空的库存数据!", disposableGoodsBatchStock.getBatchNumber(),disposableGoods.getShowName())); + } + Long amount = identification.getAmount(); + if(amount == null || amount.intValue() == 0){ + continue; + } + List itemsGroupedByPrice = itemsGroupedByPriceMap.get(price); + if(itemsGroupedByPrice == null){ + itemsGroupedByPrice = new LinkedList(); + itemsGroupedByPriceMap.put(price, itemsGroupedByPrice); + } + InventoryItem item = new InventoryItem(); + item.setBatchID(disposableGoodsBatchStock.getDisposableGoodsBatchID()); + item.setBatchNumber(disposableGoodsBatchStock.getBatchNumber()); + item.setDiposableGoodsID(disposableGoodsBatchStock.getDisposableGoodsID()); + item.setDisposableGoodsBatchId(disposableGoodsBatchStock.getDisposableGoodsBatchID()); + item.setDisposableGoodsBatchStockId(disposableGoodsBatchStock.getDisposableGoodsBatchStockID()); + item.setDisposableGoodsId(disposableGoodsBatchStock.getDisposableGoodsID()); + item.setDisposableGoodsStockId(disposableGoodsBatchStock.getDisposableGoodsStockID()); + item.setMaterialName(disposableGoodsBatchStock.getDiposableGoods().getName()); + item.setPrice(price); + item.setSpecification(disposableGoodsBatchStock.getDiposableGoods().getSpecification()); + item.setInventoryRecordId(record.getId()); + item.setStorage(Integer.valueOf(""+identification.getAmount())); + item.setSupplierName(disposableGoodsBatchStock.getSupplierName()); + item.setWareHouseId(wareHouseId); + item.setWareHouseName(warehouse.getName()); + item.setExternalCode(disposableGoods.getExternalCode()); + item.setExpDate(disposableGoodsBatchStock.getExpDate()); + itemsGroupedByPrice.add(item); + } + for (List itemsGroupedByPrice : itemsGroupedByPriceMap.values()) { + items.addAll(itemsGroupedByPrice); + } } } record.setItems(items);