diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/service/JoPickOrderService.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/service/JoPickOrderService.kt index 38fee20..815dcf4 100644 --- a/src/main/java/com/ffii/fpsms/modules/jobOrder/service/JoPickOrderService.kt +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/service/JoPickOrderService.kt @@ -1380,6 +1380,7 @@ open fun getJobOrderListForPrintQrCode(date: LocalDate): List> { println("=== getCompletedJobOrderPickOrderLotDetails ===") println("pickOrderId: $pickOrderId") @@ -1773,6 +1774,7 @@ open fun getCompletedJobOrderPickOrders(completedDate: LocalDate?): List>() val params = mutableMapOf() + val normalizedFloor = request.floor?.trim()?.uppercase() + val selectedFloor = normalizedFloor?.takeIf { it in setOf("2F", "3F", "4F") } + val floorLabel = when (normalizedFloor) { + "2F", "3F", "4F" -> normalizedFloor.replace("F", "/F") + "ALL" -> "2/F+3/F+4/F+N/A" + else -> "" + } - val sortedPickRecordInfo = pickRecordInfo.sortedBy { info -> + val sortedPickRecordInfo = pickRecordInfo + .filter { info -> + val route = (info["routerRoute"] as? String)?.trim().orEmpty() + if (selectedFloor == null) { + true + } else { + route.isBlank() || route.equals("N/A", ignoreCase = true) || route.startsWith(selectedFloor, ignoreCase = true) + } + } + .sortedBy { info -> (info["routerIndex"] as? Int) ?: Int.MAX_VALUE } @@ -770,6 +786,7 @@ open class JobOrderService( params["RequiredQuantity"] = reqQty?.toString() ?: "N/A" params["FGCode"] = pickRecordInfo.firstOrNull()?.get("fgCode") as? String ?: "N/A" params["FGName"] = pickRecordInfo.firstOrNull()?.get("fgName") as? String ?: "N/A" + params["Floor"] = floorLabel /* Debug UOM information val bomItemUomIdRaw = pickRecordInfo.firstOrNull()?.get("bomItemUomId") @@ -803,7 +820,8 @@ open class JobOrderService( val pdf = exportPickRecord( ExportPickRecordRequest( - pickOrderIds = request.pickOrderId + pickOrderIds = request.pickOrderId, + floor = request.floor, ) ) diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/web/JobOrderController.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/web/JobOrderController.kt index 4c3d199..0e8b010 100644 --- a/src/main/java/com/ffii/fpsms/modules/jobOrder/web/JobOrderController.kt +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/web/JobOrderController.kt @@ -20,8 +20,8 @@ import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController import com.ffii.fpsms.modules.jobOrder.service.JoPickOrderService -import com.ffii.fpsms.modules.jobOrder.service.JoWorkbenchMainService -import com.ffii.fpsms.modules.jobOrder.service.JoWorkbenchReleaseService +//import com.ffii.fpsms.modules.jobOrder.service.JoWorkbenchMainService +//import com.ffii.fpsms.modules.jobOrder.service.JoWorkbenchReleaseService import com.ffii.fpsms.modules.pickOrder.enums.PickOrderStatus import org.springframework.format.annotation.DateTimeFormat @@ -55,8 +55,8 @@ class JobOrderController( private val jobOrderBomMaterialService: JobOrderBomMaterialService, private val jobOrderProcessService: JobOrderProcessService, private val joPickOrderService: JoPickOrderService, - private val joWorkbenchMainService: JoWorkbenchMainService, - private val joWorkbenchReleaseService: JoWorkbenchReleaseService, + //private val joWorkbenchMainService: JoWorkbenchMainService, + //private val joWorkbenchReleaseService: JoWorkbenchReleaseService, private val productProcessService: ProductProcessService, private val jobOrderCreationService: com.ffii.fpsms.modules.jobOrder.service.JobOrderCreationService ) { @@ -96,11 +96,12 @@ class JobOrderController( } /** Workbench: release without stock out / SPL / SOL until first pick-order assign. */ + /* @PostMapping("/workbench/release") fun releaseJobOrderForWorkbench(@Valid @RequestBody request: JobOrderCommonActionRequest): MessageResponse { return joWorkbenchReleaseService.releaseJobOrderForWorkbench(request) } - + */ @PostMapping("/set-hidden") fun setJobOrderHidden(@Valid @RequestBody request: SetJobOrderHiddenRequest): MessageResponse { return jobOrderService.setJobOrderHidden(request) @@ -149,6 +150,7 @@ class JobOrderController( } /** Workbench: assign + prime SPL/SOL when release was deferred (see [JoWorkbenchMainService]). */ + /* @PostMapping("/workbench/assign-job-order-pick-order/{pickOrderId}/{userId}") fun assignJobOrderPickOrderToUserForWorkbench( @PathVariable pickOrderId: Long, @@ -156,6 +158,7 @@ class JobOrderController( ): MessageResponse { return joWorkbenchMainService.assignJobOrderPickOrderToUserForWorkbench(pickOrderId, userId) } + */ @PostMapping("/unassign-job-order-pick-order/{pickOrderId}") fun unAssignJobOrderPickOrderToUser( @PathVariable pickOrderId: Long @@ -312,10 +315,12 @@ fun getJobOrderPickOrderLotDetails( } /** Workbench: available qty uses in−out (matches scan-pick); stockouts include suggested SPL qty when matched. */ + /* @GetMapping("/all-lots-hierarchical-by-pick-order-workbench/{pickOrderId}") fun getJobOrderLotsHierarchicalByPickOrderIdWorkbench(@PathVariable pickOrderId: Long): JobOrderLotsHierarchicalResponse { return joWorkbenchMainService.getJobOrderLotsHierarchicalByPickOrderIdWorkbench(pickOrderId) } + */ @PostMapping("/update-jo-pick-order-handled-by") fun updateJoPickOrderHandledBy(@Valid @RequestBody request: UpdateJoPickOrderHandledByRequest): MessageResponse { try { diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/web/model/ExportPickRecordRequest.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/web/model/ExportPickRecordRequest.kt index a1d1f4c..738525f 100644 --- a/src/main/java/com/ffii/fpsms/modules/jobOrder/web/model/ExportPickRecordRequest.kt +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/web/model/ExportPickRecordRequest.kt @@ -2,4 +2,5 @@ package com.ffii.fpsms.modules.jobOrder.web.model data class ExportPickRecordRequest ( val pickOrderIds: Long, + val floor: String? = null, ) \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/web/model/PrintPickRecordRequest.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/web/model/PrintPickRecordRequest.kt index a018106..416d3f9 100644 --- a/src/main/java/com/ffii/fpsms/modules/jobOrder/web/model/PrintPickRecordRequest.kt +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/web/model/PrintPickRecordRequest.kt @@ -3,5 +3,6 @@ package com.ffii.fpsms.modules.jobOrder.web.model data class PrintPickRecordRequest( val pickOrderId: Long, val printerId: Long, - val printQty: Int? + val printQty: Int?, + val floor: String? = null, ) \ No newline at end of file diff --git a/src/main/resources/PickRecord/PickRecordPDF.jrxml b/src/main/resources/PickRecord/PickRecordPDF.jrxml index 7b9869c..cbe9ac6 100644 --- a/src/main/resources/PickRecord/PickRecordPDF.jrxml +++ b/src/main/resources/PickRecord/PickRecordPDF.jrxml @@ -1,326 +1,327 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +