From 131e747ff31196f2c2faa4fc6aa34e1f4011cdbb Mon Sep 17 00:00:00 2001 From: "CANCERYS\\kw093" Date: Wed, 14 Oct 2026 13:39:03 +0800 Subject: [PATCH] exprot sql fix --- .../ledgerfix/StockLedgerFixExportService.kt | 62 ++++++++++--------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/ffii/fpsms/modules/master/service/ledgerfix/StockLedgerFixExportService.kt b/src/main/java/com/ffii/fpsms/modules/master/service/ledgerfix/StockLedgerFixExportService.kt index 370b4776..59c939b7 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/service/ledgerfix/StockLedgerFixExportService.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/service/ledgerfix/StockLedgerFixExportService.kt @@ -113,7 +113,7 @@ open class StockLedgerFixExportService( writer.write("-- stock-ledger-fix patch\n") writer.write("-- from $from inclusive to ${toExclusive.minusDays(1)} inclusive (date < $toExclusive)\n") writer.write("-- parts=${parts.joinToString(",")}\n") - writer.write("-- apply order: 1.0 lot outQty NULL→0 then inventory → 2.1 delete ledger + stock_out lot → ledger(+2.3) UPDATE → 2.7a lot inQty + SIL/SOL/adjustment record then ADJ INSERT → 2.6 stock_lot_day\n") + writer.write("-- apply order: 1.0 inventory (stockUomId) then lot outQty NULL→0 → 2.1 delete ledger + stock_out lot → ledger(+2.3) UPDATE → 2.7a lot inQty + SIL/SOL/adjustment record then ADJ INSERT → 2.6 stock_lot_day\n") writer.write("-- INNER JOIN id: target rows without matching id are skipped on UPDATE\n") if (want23 && !want10) { writer.write("-- WARN: 2.3 without 1.0 — new inventory ids may be missing on target; prefer include 1.0\n") @@ -153,10 +153,41 @@ open class StockLedgerFixExportService( } private fun writeExportInventory10(writer: BufferedWriter, jdbc: NamedParameterJdbcTemplate) { - writer.write("-- === 1.0 lot line outQty NULL → 0 (before inventory; trigger may run, next block overwrites buckets) ===\n") + writer.write("-- === 1.0 inventory (stockUomId first, so the later outQty trigger updates this row) ===\n") + writeInventoryUpsert(writer, jdbc) + writeTempUpdate( + writer, + jdbc, + emptyMap(), + title = "-- === 1.0 soft-delete orphan inventory (stockUomId still null) ===\n", + selectSql = """ + SELECT id, modified, modifiedBy + FROM inventory + WHERE deleted = 1 + AND modifiedBy IN ('DNP', 'stock-ledger-fix') + ORDER BY id + """.trimIndent(), + tempName = "tmp_sl_fix_inv_del", + columnDefs = "modified DATETIME NULL, modifiedBy VARCHAR(255) NULL", + columns = listOf("id", "modified", "modifiedBy"), + updateSql = """ + UPDATE inventory i + INNER JOIN tmp_sl_fix_inv_del t ON t.id = i.id + SET + i.deleted = 1, + i.modified = t.modified, + i.modifiedBy = t.modifiedBy; + """.trimIndent(), + emptyComment = "-- (no stock-ledger-fix deleted inventory rows)", + ) + writer.write("-- === 1.0 lot line outQty NULL → 0 (after stockUomId; trigger updates the existing bucket) ===\n") writer.write(StockLedgerFixInventorySql.ZERO_NULL_OUT_QTY_SQL.trim()) writer.write(";\n\n") - writer.write("-- === 1.0 inventory (INSERT with fixed id + UPDATE qty/status) ===\n") + writer.write("-- === 1.0 inventory qty again (trigger above replaced onHandQty) ===\n") + writeInventoryUpsert(writer, jdbc) + } + + private fun writeInventoryUpsert(writer: BufferedWriter, jdbc: NamedParameterJdbcTemplate) { var batch = 0 jdbc.query( """ @@ -218,31 +249,6 @@ open class StockLedgerFixExportService( } else { writer.write("-- (no inventory rows)\n\n") } - writeTempUpdate( - writer, - jdbc, - emptyMap(), - title = "-- === 1.0 soft-delete orphan inventory (stockUomId still null) ===\n", - selectSql = """ - SELECT id, modified, modifiedBy - FROM inventory - WHERE deleted = 1 - AND modifiedBy IN ('DNP', 'stock-ledger-fix') - ORDER BY id - """.trimIndent(), - tempName = "tmp_sl_fix_inv_del", - columnDefs = "modified DATETIME NULL, modifiedBy VARCHAR(255) NULL", - columns = listOf("id", "modified", "modifiedBy"), - updateSql = """ - UPDATE inventory i - INNER JOIN tmp_sl_fix_inv_del t ON t.id = i.id - SET - i.deleted = 1, - i.modified = t.modified, - i.modifiedBy = t.modifiedBy; - """.trimIndent(), - emptyComment = "-- (no stock-ledger-fix deleted inventory rows)", - ) } /**