From bfcb80b326740de8dea1c3f0f4bd3b533c0fe116 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Sat, 29 Aug 2026 12:44:42 +0800 Subject: [PATCH] fix(firstleg): align coload group eligibility --- deploy/sql/头程数据库统一增量-MySQL8.sql | 4 +- .../PlatformColoadGroupController.java | 2 +- .../coload/model/ColoadGroupModels.java | 10 +--- .../coload/persistence/ColoadGroupMapper.java | 39 ++++--------- .../persistence/ColoadPersistenceRows.java | 13 ----- .../coload/service/ColoadGroupService.java | 53 ++++++----------- .../db/phase3-coload-group-schema.sql | 5 -- .../resources/openapi/coload-groups-v1.yaml | 17 ++---- .../ColoadGroupOpenApiContractTest.java | 10 ++++ .../coload/ColoadGroupServiceTest.java | 58 +++++++++---------- .../coload/ColoadGroupSqlContractTest.java | 26 +++++++-- 11 files changed, 97 insertions(+), 140 deletions(-) diff --git a/deploy/sql/头程数据库统一增量-MySQL8.sql b/deploy/sql/头程数据库统一增量-MySQL8.sql index 6c81dd847..04b8b29cd 100644 --- a/deploy/sql/头程数据库统一增量-MySQL8.sql +++ b/deploy/sql/头程数据库统一增量-MySQL8.sql @@ -16417,8 +16417,7 @@ CREATE TABLE IF NOT EXISTS fl_coload_group ( id BIGINT UNSIGNED NOT NULL COMMENT '同柜不可拆组ID',group_no VARCHAR(40) NOT NULL COMMENT '稳定组号CLG-{id}', group_status VARCHAR(16) NOT NULL COMMENT '组状态:ACTIVE、LOCKED、CONSUMED、CANCELLED', warehouse_id BIGINT UNSIGNED NOT NULL COMMENT '国内收货仓ID快照',channel_code VARCHAR(64) NOT NULL COMMENT '物流渠道编码快照', - destination_type VARCHAR(32) NOT NULL COMMENT '目的类型快照',destination_warehouse_id BIGINT UNSIGNED NULL COMMENT '目的仓ID快照', - destination_code VARCHAR(64) NULL COMMENT '目的仓或目的港编码快照',locked_plan_id BIGINT UNSIGNED NULL COMMENT 'LOCKED/CONSUMED绑定装柜计划ID', + locked_plan_id BIGINT UNSIGNED NULL COMMENT 'LOCKED/CONSUMED绑定装柜计划ID', version INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '乐观版本',created_by BIGINT UNSIGNED NOT NULL COMMENT '创建人ID',created_by_name VARCHAR(64) NULL COMMENT '创建人名称快照', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', locked_by BIGINT UNSIGNED NULL COMMENT '锁定操作人ID',locked_by_name VARCHAR(64) NULL COMMENT '锁定操作人名称快照',locked_at DATETIME(3) NULL COMMENT '锁定时间', @@ -16428,7 +16427,6 @@ CREATE TABLE IF NOT EXISTS fl_coload_group ( KEY idx_coload_group_plan(locked_plan_id,group_status), CONSTRAINT fk_coload_group_plan FOREIGN KEY(locked_plan_id) REFERENCES fl_loading_plan(id), CONSTRAINT chk_coload_group_status CHECK(group_status IN('ACTIVE','LOCKED','CONSUMED','CANCELLED')), - CONSTRAINT chk_coload_group_destination CHECK(destination_warehouse_id IS NOT NULL OR destination_code IS NOT NULL), CONSTRAINT chk_coload_group_lock CHECK((group_status IN('ACTIVE','CANCELLED') AND locked_plan_id IS NULL) OR(group_status IN('LOCKED','CONSUMED') AND locked_plan_id IS NOT NULL)) )ENGINE=InnoDB COMMENT='同柜且不可拆业务组聚合根'; diff --git a/firstleg/src/main/java/com/baiyue/firstleg/loading/coload/controller/PlatformColoadGroupController.java b/firstleg/src/main/java/com/baiyue/firstleg/loading/coload/controller/PlatformColoadGroupController.java index dee304bbc..501793054 100644 --- a/firstleg/src/main/java/com/baiyue/firstleg/loading/coload/controller/PlatformColoadGroupController.java +++ b/firstleg/src/main/java/com/baiyue/firstleg/loading/coload/controller/PlatformColoadGroupController.java @@ -33,7 +33,7 @@ import java.util.List; @Validated @RestController @RequestMapping("/api/platform/v1/first-leg/coload-groups") -@Tag(name = "平台同柜不可拆组", description = "跨客户、同仓同渠道同目的仓港的整组装柜约束") +@Tag(name = "平台同柜不可拆组", description = "跨客户、同国内仓同渠道的整组装柜约束") public class PlatformColoadGroupController { @Resource private ColoadGroupService service; diff --git a/firstleg/src/main/java/com/baiyue/firstleg/loading/coload/model/ColoadGroupModels.java b/firstleg/src/main/java/com/baiyue/firstleg/loading/coload/model/ColoadGroupModels.java index dc8a2b57d..e5754a9e5 100644 --- a/firstleg/src/main/java/com/baiyue/firstleg/loading/coload/model/ColoadGroupModels.java +++ b/firstleg/src/main/java/com/baiyue/firstleg/loading/coload/model/ColoadGroupModels.java @@ -43,9 +43,6 @@ public final class ColoadGroupModels { String status, long warehouseId, String channelCode, - String destinationType, - Long destinationWarehouseId, - String destinationCode, Long lockedPlanId, int version, List members, @@ -60,11 +57,9 @@ public final class ColoadGroupModels { } public GroupSnapshot(long groupId, String groupNo, String status, long warehouseId, - String channelCode, String destinationType, Long destinationWarehouseId, - String destinationCode, Long lockedPlanId, int version, + String channelCode, Long lockedPlanId, int version, List members, LocalDateTime createdAt, LocalDateTime updatedAt) { - this(groupId, groupNo, status, warehouseId, channelCode, destinationType, - destinationWarehouseId, destinationCode, lockedPlanId, version, members, + this(groupId, groupNo, status, warehouseId, channelCode, lockedPlanId, version, members, members == null ? 0 : members.stream().mapToInt(Member::fullPackageCount).sum(), createdAt, updatedAt); } @@ -72,7 +67,6 @@ public final class ColoadGroupModels { public record OrderGroupInfo( long orderId, - long inboundId, GroupSnapshot group ) { } diff --git a/firstleg/src/main/java/com/baiyue/firstleg/loading/coload/persistence/ColoadGroupMapper.java b/firstleg/src/main/java/com/baiyue/firstleg/loading/coload/persistence/ColoadGroupMapper.java index e7a65c56d..74cd842df 100644 --- a/firstleg/src/main/java/com/baiyue/firstleg/loading/coload/persistence/ColoadGroupMapper.java +++ b/firstleg/src/main/java/com/baiyue/firstleg/loading/coload/persistence/ColoadGroupMapper.java @@ -15,21 +15,11 @@ import static com.baiyue.firstleg.loading.coload.persistence.ColoadPersistenceRo public interface ColoadGroupMapper { @Select({"