diff --git a/src/main/java/com/ffii/fpsms/modules/productProcess/service/ProductProcessService.kt b/src/main/java/com/ffii/fpsms/modules/productProcess/service/ProductProcessService.kt index ebd8e76..145cf8d 100644 --- a/src/main/java/com/ffii/fpsms/modules/productProcess/service/ProductProcessService.kt +++ b/src/main/java/com/ffii/fpsms/modules/productProcess/service/ProductProcessService.kt @@ -1463,6 +1463,7 @@ open class ProductProcessService( pickOrderStatus = pickOrder?.status?.value, jobOrderId = productProcesses.jobOrder?.id, stockInLineId = stockInLineId, + stockInLineStatus = stockInLine?.status, jobOrderCode = jobOrder?.code, productProcessLineCount = productProcessLines.size, FinishedProductProcessLineCount = FinishedProductProcessLineCount, @@ -1507,6 +1508,7 @@ open class ProductProcessService( qcReady: Boolean?, bomType: String?, includePutaway: Boolean?, + putawayStatus: String?, page: Int, size: Int ): JobOrderProductProcessPageResponse { @@ -1612,9 +1614,18 @@ open class ProductProcessService( stockStatus != "rejected" && // completed 只有在不允許 putaway 時才排除 (allowPutaway || stockStatus != "completed") + + val putawayFilter = putawayStatus?.trim()?.lowercase() + val includedByPutawayStatus = + when (putawayFilter) { + null, "", "all" -> true + "completed" -> stockStatus?.lowercase() == "completed" + "notcompleted", "not_completed", "not-completed", "waiting" -> stockStatus?.lowercase() != "completed" + else -> true + } val ready = includedInList && allLinesDone && stockInLine != null - if (!includedInList) { + if (!includedInList || !includedByPutawayStatus) { return@mapNotNull null } @@ -1741,6 +1752,7 @@ open class ProductProcessService( pickOrderStatus = pickOrder?.status?.value, jobOrderId = productProcess.jobOrder?.id, stockInLineId = stockInLine?.id, + stockInLineStatus = stockInLine?.status, jobOrderCode = jobOrder?.code, productProcessLineCount = productProcessLines.size, FinishedProductProcessLineCount = finishedCount, diff --git a/src/main/java/com/ffii/fpsms/modules/productProcess/web/ProductProcessController.kt b/src/main/java/com/ffii/fpsms/modules/productProcess/web/ProductProcessController.kt index 32cb2ec..9f0b14d 100644 --- a/src/main/java/com/ffii/fpsms/modules/productProcess/web/ProductProcessController.kt +++ b/src/main/java/com/ffii/fpsms/modules/productProcess/web/ProductProcessController.kt @@ -207,6 +207,8 @@ class ProductProcessController( @RequestParam(required = false) bomIds: String?, @RequestParam(required = false) qcReady: Boolean?, @RequestParam(required = false) includePutaway: Boolean?, + /** all | completed | notCompleted */ + @RequestParam(required = false) putawayStatus: String?, @RequestParam(name = "type", required = false) bomType: String?, @RequestParam(defaultValue = "0") page: Int, @RequestParam(defaultValue = "50") size: Int @@ -227,6 +229,7 @@ class ProductProcessController( bomIds = parsedBomIds, qcReady = qcReady, includePutaway = includePutaway, + putawayStatus = putawayStatus, bomType = bomType, page = page, size = size diff --git a/src/main/java/com/ffii/fpsms/modules/productProcess/web/model/SaveProductProcessRequest.kt b/src/main/java/com/ffii/fpsms/modules/productProcess/web/model/SaveProductProcessRequest.kt index 1c2b146..7ad8fd8 100644 --- a/src/main/java/com/ffii/fpsms/modules/productProcess/web/model/SaveProductProcessRequest.kt +++ b/src/main/java/com/ffii/fpsms/modules/productProcess/web/model/SaveProductProcessRequest.kt @@ -181,6 +181,8 @@ data class AllJoborderProductProcessInfoResponse( val productProcessLineCount: Int, val FinishedProductProcessLineCount: Int, val stockInLineId: Long?, + /** Stock-in-line current status (e.g. receiving/received/partially_completed/completed/rejected). */ + val stockInLineStatus: String?, val TimeNeedToComplete: Int?, val isDrink: Boolean?, val lines: List