From cab1151fef86aec3da03db6e5d512f1828e502d6 Mon Sep 17 00:00:00 2001 From: zgw <13623675548@163.com> Date: Fri, 4 Sep 2026 12:07:03 +0800 Subject: [PATCH] fix: support deployed outbound detail schema --- .../resources/db/sqlserver/install-shadow.sql | 4 +-- .../db/sqlserver/upgrade-shadow-v2-to-v3.sql | 4 +-- .../ShadowSqlServerMigrationScriptTest.java | 29 +++++++++++++++++++ 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/fortucky-algorithm/src/main/resources/db/sqlserver/install-shadow.sql b/fortucky-algorithm/src/main/resources/db/sqlserver/install-shadow.sql index b269df4..ad5ede1 100644 --- a/fortucky-algorithm/src/main/resources/db/sqlserver/install-shadow.sql +++ b/fortucky-algorithm/src/main/resources/db/sqlserver/install-shadow.sql @@ -1065,7 +1065,7 @@ BEGIN warehouse.project_no AS [@project_no], outbound.product_id AS [@product_id], outbound.lot_no AS [@lot_no], outbound.quantity AS [@quantity], outbound.assign_num AS [@assign_num], - outbound.allot_quantity AS [@allot_quantity], outbound.create_time AS [@create_time] + outbound.allot_quantity AS [@allot_quantity] FROM dbo.out_stockout_detail outbound WITH (NOLOCK) JOIN dbo.out_stockout stockout WITH (NOLOCK) ON stockout.stockout_id = outbound.stockout_id LEFT JOIN dbo.bas_warehouse warehouse WITH (NOLOCK) @@ -1279,7 +1279,7 @@ BEGIN warehouse.project_no AS [@project_no], outbound.product_id AS [@product_id], outbound.lot_no AS [@lot_no], outbound.quantity AS [@quantity], outbound.assign_num AS [@assign_num], - outbound.allot_quantity AS [@allot_quantity], outbound.create_time AS [@create_time] + outbound.allot_quantity AS [@allot_quantity] FROM dbo.out_stockout_detail outbound WITH (NOLOCK) JOIN dbo.out_stockout stockout WITH (NOLOCK) ON stockout.stockout_id = outbound.stockout_id LEFT JOIN dbo.bas_warehouse warehouse WITH (NOLOCK) diff --git a/fortucky-algorithm/src/main/resources/db/sqlserver/upgrade-shadow-v2-to-v3.sql b/fortucky-algorithm/src/main/resources/db/sqlserver/upgrade-shadow-v2-to-v3.sql index 07e63c1..f788b38 100644 --- a/fortucky-algorithm/src/main/resources/db/sqlserver/upgrade-shadow-v2-to-v3.sql +++ b/fortucky-algorithm/src/main/resources/db/sqlserver/upgrade-shadow-v2-to-v3.sql @@ -402,7 +402,7 @@ BEGIN warehouse.project_no AS [@project_no], outbound.product_id AS [@product_id], outbound.lot_no AS [@lot_no], outbound.quantity AS [@quantity], outbound.assign_num AS [@assign_num], - outbound.allot_quantity AS [@allot_quantity], outbound.create_time AS [@create_time] + outbound.allot_quantity AS [@allot_quantity] FROM dbo.out_stockout_detail outbound WITH (NOLOCK) JOIN dbo.out_stockout stockout WITH (NOLOCK) ON stockout.stockout_id = outbound.stockout_id LEFT JOIN dbo.bas_warehouse warehouse WITH (NOLOCK) @@ -613,7 +613,7 @@ BEGIN stockout.warehouse_id AS [@source_warehouse_id], warehouse.project_no AS [@project_no], outbound.product_id AS [@product_id], outbound.lot_no AS [@lot_no], outbound.quantity AS [@quantity], - outbound.assign_num AS [@assign_num], outbound.allot_quantity AS [@allot_quantity], outbound.create_time AS [@create_time] + outbound.assign_num AS [@assign_num], outbound.allot_quantity AS [@allot_quantity] FROM dbo.out_stockout_detail outbound WITH (NOLOCK) JOIN dbo.out_stockout stockout WITH (NOLOCK) ON stockout.stockout_id = outbound.stockout_id LEFT JOIN dbo.bas_warehouse warehouse WITH (NOLOCK) diff --git a/fortucky-algorithm/src/test/java/com/ruoyi/algorithm/repository/ShadowSqlServerMigrationScriptTest.java b/fortucky-algorithm/src/test/java/com/ruoyi/algorithm/repository/ShadowSqlServerMigrationScriptTest.java index 4520290..5e38577 100644 --- a/fortucky-algorithm/src/test/java/com/ruoyi/algorithm/repository/ShadowSqlServerMigrationScriptTest.java +++ b/fortucky-algorithm/src/test/java/com/ruoyi/algorithm/repository/ShadowSqlServerMigrationScriptTest.java @@ -64,6 +64,16 @@ class ShadowSqlServerMigrationScriptTest { "procedure alg.usp_rebuild_lane_state", "procedure alg.usp_refresh_dirty_lanes"); + private static final Set PRODUCTION_OUTBOUND_DETAIL_COLUMNS = Set.of( + "stockout_detail_id", + "stockout_id", + "warehouse_id", + "product_id", + "lot_no", + "quantity", + "assign_num", + "allot_quantity"); + @Test void installCreatesOnlyAllowListedShadowObjects() throws IOException { String install = resource("db/sqlserver/install-shadow.sql"); @@ -246,6 +256,25 @@ class ShadowSqlServerMigrationScriptTest { } } + @Test + void refreshSupportsProductionOutboundDetailWithoutCreateTime() throws IOException { + for (String script : new String[]{"db/sqlserver/install-shadow.sql", + "db/sqlserver/upgrade-shadow-v2-to-v3.sql"}) { + String refresh = normalize(resource(script)); + refresh = batchBody(refresh, "create procedure alg.usp_refresh_shadow_snapshot"); + + Set referencedColumns = Pattern.compile("\\boutbound\\.([a-z0-9_]+)") + .matcher(refresh) + .results() + .map(match -> match.group(1)) + .collect(java.util.stream.Collectors.toSet()); + + assertThat(referencedColumns) + .as("%s must support the deployed out_stockout_detail schema", script) + .isSubsetOf(PRODUCTION_OUTBOUND_DETAIL_COLUMNS); + } + } + @Test void decisionReasonStoresBoundedUnicodeDiagnosticsAcrossCleanInstallAndUpgrade() throws IOException { String install = normalize(resource("db/sqlserver/install-shadow.sql"));