diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/warehouse/WmsWarehouseServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/warehouse/WmsWarehouseServiceImpl.java index 48f727c..cdcb69e 100644 --- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/warehouse/WmsWarehouseServiceImpl.java +++ b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/warehouse/WmsWarehouseServiceImpl.java @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.wms.service.md.warehouse; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjUtil; -import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.wms.controller.admin.md.warehouse.vo.WmsWarehousePageReqVO; @@ -94,9 +93,6 @@ public class WmsWarehouseServiceImpl implements WmsWarehouseService { } private void validateWarehouseCodeUnique(Long id, String code) { - if (StrUtil.isBlank(code)) { - return; - } WmsWarehouseDO warehouse = warehouseMapper.selectByCode(code); if (warehouse == null) { return; diff --git a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/md/warehouse/WmsWarehouseServiceImplTest.java b/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/md/warehouse/WmsWarehouseServiceImplTest.java index 42f28e2..ff4ea70 100644 --- a/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/md/warehouse/WmsWarehouseServiceImplTest.java +++ b/yudao-module-wms/src/test/java/cn/iocoder/yudao/module/wms/service/md/warehouse/WmsWarehouseServiceImplTest.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.wms.service.md.warehouse; import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; +import cn.iocoder.yudao.module.wms.controller.admin.md.warehouse.vo.WmsWarehouseSaveReqVO; import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO; import cn.iocoder.yudao.module.wms.dal.mysql.md.warehouse.WmsWarehouseMapper; import cn.iocoder.yudao.module.wms.service.inventory.WmsInventoryService; @@ -14,6 +15,7 @@ import org.springframework.context.annotation.Import; import org.springframework.test.context.bean.override.mockito.MockitoBean; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; +import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.WAREHOUSE_CODE_DUPLICATE; import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.WAREHOUSE_HAS_INVENTORY; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.Mockito.when; @@ -39,6 +41,31 @@ public class WmsWarehouseServiceImplTest extends BaseDbUnitTest { private WmsCheckOrderService checkOrderService; @Test + public void testCreateWarehouse_codeDuplicate() { + // mock 数据 + WmsWarehouseDO warehouse = createWarehouse("WH001", "成品仓"); + warehouseMapper.insert(warehouse); + + // 调用,并断言 + WmsWarehouseSaveReqVO reqVO = createWarehouseSaveReqVO(); + assertServiceException(() -> warehouseService.createWarehouse(reqVO), WAREHOUSE_CODE_DUPLICATE); + } + + @Test + public void testUpdateWarehouse_codeDuplicate() { + // mock 数据 + WmsWarehouseDO warehouse = createWarehouse("WH001", "成品仓"); + warehouseMapper.insert(warehouse); + WmsWarehouseDO updateWarehouse = createWarehouse("WH002", "原料仓"); + warehouseMapper.insert(updateWarehouse); + + // 调用,并断言 + WmsWarehouseSaveReqVO reqVO = createWarehouseSaveReqVO(); + reqVO.setId(updateWarehouse.getId()); + assertServiceException(() -> warehouseService.updateWarehouse(reqVO), WAREHOUSE_CODE_DUPLICATE); + } + + @Test public void testDeleteWarehouse_hasInventory() { // mock 数据 WmsWarehouseDO warehouse = createWarehouse(); @@ -51,11 +78,23 @@ public class WmsWarehouseServiceImplTest extends BaseDbUnitTest { } private static WmsWarehouseDO createWarehouse() { + return createWarehouse("WH001", "成品仓"); + } + + private static WmsWarehouseDO createWarehouse(String code, String name) { return WmsWarehouseDO.builder() - .code("WH001") - .name("成品仓") + .code(code) + .name(name) .sort(1) .build(); } + private static WmsWarehouseSaveReqVO createWarehouseSaveReqVO() { + WmsWarehouseSaveReqVO reqVO = new WmsWarehouseSaveReqVO(); + reqVO.setCode("WH001"); + reqVO.setName("半成品仓"); + reqVO.setSort(1); + return reqVO; + } + } diff --git a/yudao-module-wms/src/test/resources/sql/create_tables.sql b/yudao-module-wms/src/test/resources/sql/create_tables.sql index fa08fe5..4d8f414 100644 --- a/yudao-module-wms/src/test/resources/sql/create_tables.sql +++ b/yudao-module-wms/src/test/resources/sql/create_tables.sql @@ -88,13 +88,13 @@ CREATE TABLE IF NOT EXISTS "wms_item_sku" ( "item_id" bigint NOT NULL, "bar_code" varchar(64) DEFAULT NULL, "code" varchar(64) DEFAULT NULL, - "length" decimal(24, 6) DEFAULT NULL, - "width" decimal(24, 6) DEFAULT NULL, - "height" decimal(24, 6) DEFAULT NULL, - "gross_weight" decimal(24, 6) DEFAULT NULL, - "net_weight" decimal(24, 6) DEFAULT NULL, - "cost_price" decimal(24, 6) DEFAULT NULL, - "selling_price" decimal(24, 6) DEFAULT NULL, + "length" decimal(10, 1) DEFAULT NULL, + "width" decimal(10, 1) DEFAULT NULL, + "height" decimal(10, 1) DEFAULT NULL, + "gross_weight" decimal(10, 3) DEFAULT NULL, + "net_weight" decimal(10, 3) DEFAULT NULL, + "cost_price" decimal(16, 2) DEFAULT NULL, + "selling_price" decimal(16, 2) DEFAULT NULL, "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', @@ -108,7 +108,7 @@ CREATE TABLE IF NOT EXISTS "wms_inventory" ( "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, "sku_id" bigint NOT NULL, "warehouse_id" bigint NOT NULL, - "quantity" decimal(24, 6) NOT NULL DEFAULT '0', + "quantity" decimal(20, 2) NOT NULL DEFAULT '0', "remark" varchar(255) DEFAULT NULL, "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, @@ -124,11 +124,11 @@ CREATE TABLE IF NOT EXISTS "wms_inventory_history" ( "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, "warehouse_id" bigint NOT NULL, "sku_id" bigint NOT NULL, - "quantity" decimal(24, 6) NOT NULL DEFAULT '0', - "before_quantity" decimal(24, 6) DEFAULT NULL, - "after_quantity" decimal(24, 6) DEFAULT NULL, - "price" decimal(24, 6) DEFAULT NULL, - "total_price" decimal(24, 6) DEFAULT NULL, + "quantity" decimal(20, 2) NOT NULL DEFAULT '0', + "before_quantity" decimal(20, 2) DEFAULT NULL, + "after_quantity" decimal(20, 2) DEFAULT NULL, + "price" decimal(16, 2) DEFAULT NULL, + "total_price" decimal(16, 2) DEFAULT NULL, "remark" varchar(255) DEFAULT NULL, "order_id" bigint DEFAULT NULL, "order_no" varchar(64) DEFAULT NULL, @@ -153,7 +153,7 @@ CREATE TABLE IF NOT EXISTS "wms_receipt_order" ( "remark" varchar(255) DEFAULT NULL, "warehouse_id" bigint NOT NULL, "total_quantity" decimal(20, 2) NOT NULL DEFAULT '0', - "total_price" decimal(10, 2) DEFAULT NULL, + "total_price" decimal(16, 2) DEFAULT NULL, "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', @@ -169,8 +169,8 @@ CREATE TABLE IF NOT EXISTS "wms_receipt_order_detail" ( "sku_id" bigint NOT NULL, "warehouse_id" bigint NOT NULL, "quantity" decimal(20, 2) NOT NULL DEFAULT '0', - "price" decimal(10, 2) DEFAULT NULL, - "total_price" decimal(10, 2) DEFAULT NULL, + "price" decimal(16, 2) DEFAULT NULL, + "total_price" decimal(16, 2) DEFAULT NULL, "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', @@ -191,7 +191,7 @@ CREATE TABLE IF NOT EXISTS "wms_shipment_order" ( "remark" varchar(255) DEFAULT NULL, "warehouse_id" bigint NOT NULL, "total_quantity" decimal(20, 2) NOT NULL DEFAULT '0', - "total_price" decimal(10, 2) DEFAULT NULL, + "total_price" decimal(16, 2) DEFAULT NULL, "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', @@ -207,8 +207,8 @@ CREATE TABLE IF NOT EXISTS "wms_shipment_order_detail" ( "sku_id" bigint NOT NULL, "warehouse_id" bigint NOT NULL, "quantity" decimal(20, 2) NOT NULL DEFAULT '0', - "price" decimal(10, 2) DEFAULT NULL, - "total_price" decimal(10, 2) DEFAULT NULL, + "price" decimal(16, 2) DEFAULT NULL, + "total_price" decimal(16, 2) DEFAULT NULL, "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', @@ -227,7 +227,7 @@ CREATE TABLE IF NOT EXISTS "wms_movement_order" ( "source_warehouse_id" bigint NOT NULL, "target_warehouse_id" bigint NOT NULL, "total_quantity" decimal(20, 2) NOT NULL DEFAULT '0', - "total_price" decimal(10, 2) DEFAULT NULL, + "total_price" decimal(16, 2) DEFAULT NULL, "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', @@ -244,8 +244,8 @@ CREATE TABLE IF NOT EXISTS "wms_movement_order_detail" ( "source_warehouse_id" bigint NOT NULL, "target_warehouse_id" bigint NOT NULL, "quantity" decimal(20, 2) NOT NULL DEFAULT '0', - "price" decimal(10, 2) DEFAULT NULL, - "total_price" decimal(10, 2) DEFAULT NULL, + "price" decimal(16, 2) DEFAULT NULL, + "total_price" decimal(16, 2) DEFAULT NULL, "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', @@ -263,8 +263,8 @@ CREATE TABLE IF NOT EXISTS "wms_check_order" ( "remark" varchar(255) DEFAULT NULL, "warehouse_id" bigint NOT NULL, "total_quantity" decimal(20, 2) NOT NULL DEFAULT '0', - "total_price" decimal(10, 2) DEFAULT NULL, - "actual_price" decimal(10, 2) DEFAULT NULL, + "total_price" decimal(16, 2) DEFAULT NULL, + "actual_price" decimal(16, 2) DEFAULT NULL, "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', @@ -283,7 +283,7 @@ CREATE TABLE IF NOT EXISTS "wms_check_order_detail" ( "receipt_time" timestamp DEFAULT NULL, "quantity" decimal(20, 2) NOT NULL DEFAULT '0', "check_quantity" decimal(20, 2) NOT NULL DEFAULT '0', - "price" decimal(10, 2) DEFAULT NULL, + "price" decimal(16, 2) DEFAULT NULL, "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml index 77d916b..12da35c 100644 --- a/yudao-server/src/main/resources/application-local.yaml +++ b/yudao-server/src/main/resources/application-local.yaml @@ -189,6 +189,7 @@ logging: cn.iocoder.yudao.module.crm.dal.mysql: debug cn.iocoder.yudao.module.erp.dal.mysql: debug cn.iocoder.yudao.module.mes.dal.mysql: debug + cn.iocoder.yudao.module.wms.dal.mysql: debug cn.iocoder.yudao.module.iot.dal.mysql: debug cn.iocoder.yudao.module.iot.dal.tdengine: DEBUG cn.iocoder.yudao.module.iot.service.rule: debug