From 24681c81c09022f584a57006f2534b5f74723414 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 30 六月 2026 09:27:31 +0800
Subject: [PATCH] 初始化项目
---
yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImplTest.java | 40 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 40 insertions(+), 0 deletions(-)
diff --git a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImplTest.java b/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImplTest.java
index 22b4ca1..3585c6e 100644
--- a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImplTest.java
+++ b/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/inventory/WmsInventoryServiceImplTest.java
@@ -241,6 +241,46 @@
}
@Test
+ public void testChangeInventory_multipleExistingInventoryKeys() {
+ // mock 鏁版嵁
+ WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
+ WmsItemSkuDO sku = createSku(item.getId(), "SKU-001", "10kg 绠辫");
+ inventoryMapper.insert(createInventory(sku.getId(), 200L, "7.00"));
+ inventoryMapper.insert(createInventory(sku.getId(), 100L, "5.00"));
+ WmsInventoryChangeReqDTO reqDTO = createChangeReq(sku.getId(), 100L, "2.00");
+ List<WmsInventoryChangeReqDTO.Item> items = new ArrayList<>(reqDTO.getItems());
+ items.add(new WmsInventoryChangeReqDTO.Item()
+ .setSkuId(sku.getId())
+ .setWarehouseId(200L)
+ .setQuantity(new BigDecimal("3.00"))
+ .setPrice(new BigDecimal("100.00"))
+ .setTotalPrice(new BigDecimal("300.00"))
+ .setRemark("娴嬭瘯鍏ュ簱 2"));
+ reqDTO.setItems(items);
+
+ // 璋冪敤
+ inventoryService.changeInventory(reqDTO);
+
+ // 鏂█锛氬鏉″凡瀛樺湪搴撳瓨浣欓鍒嗗埆鏇存柊
+ WmsInventoryDO inventory1 = inventoryMapper.selectBySkuIdAndWarehouseId(sku.getId(), 100L);
+ assertNotNull(inventory1);
+ assertEquals(0, new BigDecimal("7.00").compareTo(inventory1.getQuantity()));
+ WmsInventoryDO inventory2 = inventoryMapper.selectBySkuIdAndWarehouseId(sku.getId(), 200L);
+ assertNotNull(inventory2);
+ assertEquals(0, new BigDecimal("10.00").compareTo(inventory2.getQuantity()));
+ // 鏂█锛氬簱瀛樻祦姘翠繚鎸佸叆鍙傛槑缁嗛『搴�
+ List<WmsInventoryHistoryDO> histories = inventoryHistoryMapper.selectList();
+ histories.sort(Comparator.comparing(WmsInventoryHistoryDO::getId));
+ assertEquals(2, histories.size());
+ assertEquals(100L, histories.get(0).getWarehouseId());
+ assertEquals(0, new BigDecimal("5.00").compareTo(histories.get(0).getBeforeQuantity()));
+ assertEquals(0, new BigDecimal("7.00").compareTo(histories.get(0).getAfterQuantity()));
+ assertEquals(200L, histories.get(1).getWarehouseId());
+ assertEquals(0, new BigDecimal("7.00").compareTo(histories.get(1).getBeforeQuantity()));
+ assertEquals(0, new BigDecimal("10.00").compareTo(histories.get(1).getAfterQuantity()));
+ }
+
+ @Test
public void testChangeInventory_concurrentCreateSameInventoryOnlyOneBalance() throws Exception {
// mock 鏁版嵁
WmsItemDO item = createItem("ITEM-001", "绾㈠瘜澹嫻鏋�");
--
Gitblit v1.9.3