From c3c1e2e894774300b3659261d19956ad933b281d Mon Sep 17 00:00:00 2001 From: "CANCERYS\\kw093" Date: Wed, 25 Mar 2026 22:41:34 +0800 Subject: [PATCH] update --- .../modules/stock/entity/StockTakeRecord.kt | 3 +++ .../stock/service/StockTakeRecordService.kt | 18 ++++++++++++++++++ .../stock/web/model/StockTakeRecordReponse.kt | 2 ++ .../02_alter_stocktakerecord.sql | 8 ++++++++ .../03_fill_stocktakerecord_lastSelect.sql | 14 ++++++++++++++ 5 files changed, 45 insertions(+) create mode 100644 src/main/resources/db/changelog/changes/20260325_01_Enson/02_alter_stocktakerecord.sql create mode 100644 src/main/resources/db/changelog/changes/20260325_01_Enson/03_fill_stocktakerecord_lastSelect.sql diff --git a/src/main/java/com/ffii/fpsms/modules/stock/entity/StockTakeRecord.kt b/src/main/java/com/ffii/fpsms/modules/stock/entity/StockTakeRecord.kt index 0ac40a2..72a03b0 100644 --- a/src/main/java/com/ffii/fpsms/modules/stock/entity/StockTakeRecord.kt +++ b/src/main/java/com/ffii/fpsms/modules/stock/entity/StockTakeRecord.kt @@ -78,6 +78,9 @@ open class StockTakeRecord : BaseEntity() { @Column(name = "stockTakeEndTime") open var stockTakeEndTime: LocalDateTime? = null + @Column(name = "lastSelect") + open var lastSelect: Int? = null + @Column(name = "approverTime") open var approverTime: LocalDateTime? = null @Column(name = "date", nullable = false) diff --git a/src/main/java/com/ffii/fpsms/modules/stock/service/StockTakeRecordService.kt b/src/main/java/com/ffii/fpsms/modules/stock/service/StockTakeRecordService.kt index b583270..0b3d296 100644 --- a/src/main/java/com/ffii/fpsms/modules/stock/service/StockTakeRecordService.kt +++ b/src/main/java/com/ffii/fpsms/modules/stock/service/StockTakeRecordService.kt @@ -368,6 +368,7 @@ class StockTakeRecordService( stockTakerName = stockTakeRecord?.stockTakerName, stockTakeEndTime = stockTakeRecord?.stockTakeEndTime, approverTime = stockTakeRecord?.approverTime, + lastSelect = stockTakeRecord?.lastSelect, ) } @@ -1105,6 +1106,19 @@ return RecordsRes(paginatedResult, filteredResults.size) this.varianceQty = varianceQty this.status = "completed" this.approverTime = java.time.LocalDateTime.now() + this.lastSelect = request.lastSelect ?: run { + // 兼容:旧客户端未传 lastSelect 时,尝试根据请求类型推断 + if (request.approverQty != null && request.approverBadQty != null) { + 3 + } else if ( + this.pickerSecondStockTakeQty != null && + this.pickerSecondStockTakeQty!!.compareTo(request.qty) == 0 + ) { + 2 + } else { + 1 + } + } // stockTakeEndTime 目前只在 saveStockTakeRecord「第二次盤點」時寫入;只做第一次盤點時會一直是 null。 // 審核通過時若仍為空,補上時間,讓列表「審核/完成時間」有值(不覆寫已有第二次盤點結束時間)。 if (this.stockTakeEndTime == null) { @@ -1217,6 +1231,10 @@ open fun batchSaveApproverStockTakeRecords( this.approverStockTakeQty = qty this.approverBadQty = badQty this.varianceQty = varianceQty + this.lastSelect = if ( + record.pickerSecondStockTakeQty != null && + record.pickerSecondStockTakeQty!! > BigDecimal.ZERO + ) 2 else 1 this.status = "completed" this.approverTime = java.time.LocalDateTime.now() if (this.stockTakeEndTime == null) { diff --git a/src/main/java/com/ffii/fpsms/modules/stock/web/model/StockTakeRecordReponse.kt b/src/main/java/com/ffii/fpsms/modules/stock/web/model/StockTakeRecordReponse.kt index 49c4664..8bae859 100644 --- a/src/main/java/com/ffii/fpsms/modules/stock/web/model/StockTakeRecordReponse.kt +++ b/src/main/java/com/ffii/fpsms/modules/stock/web/model/StockTakeRecordReponse.kt @@ -68,6 +68,7 @@ data class InventoryLotDetailResponse( val stockTakeEndTime: LocalDateTime? = null, @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss") val approverTime: LocalDateTime? = null, + val lastSelect: Int? = null, ) data class InventoryLotLineListRequest( val warehouseCode: String @@ -87,6 +88,7 @@ data class SaveApproverStockTakeRecordRequest( val approverId: Long? = null, val approverQty: BigDecimal? = null, val approverBadQty: BigDecimal? = null, + val lastSelect: Int? = null, //val remark: String? = null ) data class BatchSaveStockTakeRecordRequest( diff --git a/src/main/resources/db/changelog/changes/20260325_01_Enson/02_alter_stocktakerecord.sql b/src/main/resources/db/changelog/changes/20260325_01_Enson/02_alter_stocktakerecord.sql new file mode 100644 index 0000000..cf2a001 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20260325_01_Enson/02_alter_stocktakerecord.sql @@ -0,0 +1,8 @@ +-- liquibase formatted sql +-- changeset Enson:alter_stocktakerecord_lastSelect + +ALTER TABLE `fpsmsdb`.`stocktakerecord` +ADD COLUMN `lastSelect` INT NULL AFTER `stockTakeEndTime`; + + + diff --git a/src/main/resources/db/changelog/changes/20260325_01_Enson/03_fill_stocktakerecord_lastSelect.sql b/src/main/resources/db/changelog/changes/20260325_01_Enson/03_fill_stocktakerecord_lastSelect.sql new file mode 100644 index 0000000..9fcd562 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20260325_01_Enson/03_fill_stocktakerecord_lastSelect.sql @@ -0,0 +1,14 @@ +-- liquibase formatted sql +-- changeset Enson:fill_stocktakerecord_lastSelect + +UPDATE `fpsmsdb`.`stocktakerecord` +SET lastSelect = CASE + WHEN approverStockTakeQty = pickerSecondStockTakeQty + AND COALESCE(approverBadQty, 0) = COALESCE(pickerSecondBadQty, 0) THEN 2 + WHEN approverStockTakeQty = pickerFirstStockTakeQty + AND COALESCE(approverBadQty, 0) = COALESCE(pickerFirstBadQty, 0) THEN 1 + WHEN approverStockTakeQty IS NOT NULL THEN 3 + ELSE lastSelect +END +WHERE lastSelect IS NULL; +