| @@ -1011,7 +1011,10 @@ return MessageResponse( | |||||
| sql.append(" AND dop.deliveryNoteCode LIKE :dnPat ") | sql.append(" AND dop.deliveryNoteCode LIKE :dnPat ") | ||||
| params["dnPat"] = "%${request.deliveryNoteCode!!.trim()}%" | params["dnPat"] = "%${request.deliveryNoteCode!!.trim()}%" | ||||
| } | } | ||||
| if (!request.ticketNo.isNullOrBlank()) { | |||||
| sql.append(" AND dop.ticketNo LIKE :ticketNoPat ") | |||||
| params["ticketNoPat"] = "%${request.ticketNo!!.trim()}%" | |||||
| } | |||||
| sql.append(" GROUP BY dop.id ORDER BY dop.modified DESC ") | sql.append(" GROUP BY dop.id ORDER BY dop.modified DESC ") | ||||
| val rows: List<Map<String, Any?>> = try { | val rows: List<Map<String, Any?>> = try { | ||||
| @@ -1158,7 +1161,10 @@ return MessageResponse( | |||||
| sql.append(" AND dop.deliveryNoteCode LIKE :dnPat ") | sql.append(" AND dop.deliveryNoteCode LIKE :dnPat ") | ||||
| params["dnPat"] = "%${request.deliveryNoteCode!!.trim()}%" | params["dnPat"] = "%${request.deliveryNoteCode!!.trim()}%" | ||||
| } | } | ||||
| if (!request.ticketNo.isNullOrBlank()) { | |||||
| sql.append(" AND dop.ticketNo LIKE :ticketNoPat ") | |||||
| params["ticketNoPat"] = "%${request.ticketNo!!.trim()}%" | |||||
| } | |||||
| sql.append(" GROUP BY dop.id ORDER BY dop.modified DESC ") | sql.append(" GROUP BY dop.id ORDER BY dop.modified DESC ") | ||||
| val rows: List<Map<String, Any?>> = try { | val rows: List<Map<String, Any?>> = try { | ||||
| @@ -374,12 +374,14 @@ fun getCompletedDoPickOrdersWorkbench( | |||||
| @RequestParam(required = false) targetDate: String?, | @RequestParam(required = false) targetDate: String?, | ||||
| @RequestParam(required = false) deliveryNoteCode: String?, | @RequestParam(required = false) deliveryNoteCode: String?, | ||||
| @RequestParam(required = false) truckLanceCode: String?, | @RequestParam(required = false) truckLanceCode: String?, | ||||
| @RequestParam(required = false) ticketNo: String?, | |||||
| ): List<CompletedDoPickOrderResponse> { | ): List<CompletedDoPickOrderResponse> { | ||||
| val request = GetCompletedDoPickOrdersRequest( | val request = GetCompletedDoPickOrdersRequest( | ||||
| targetDate = targetDate, | targetDate = targetDate, | ||||
| shopName = shopName, | shopName = shopName, | ||||
| deliveryNoteCode = deliveryNoteCode, | deliveryNoteCode = deliveryNoteCode, | ||||
| truckLanceCode = truckLanceCode, | truckLanceCode = truckLanceCode, | ||||
| ticketNo = ticketNo, | |||||
| ) | ) | ||||
| return doWorkbenchMainService.getCompletedDoPickOrdersWorkbench(userId, request) | return doWorkbenchMainService.getCompletedDoPickOrdersWorkbench(userId, request) | ||||
| } | } | ||||
| @@ -390,12 +392,14 @@ fun getCompletedDoPickOrdersWorkbenchAll( | |||||
| @RequestParam(required = false) targetDate: String?, | @RequestParam(required = false) targetDate: String?, | ||||
| @RequestParam(required = false) deliveryNoteCode: String?, | @RequestParam(required = false) deliveryNoteCode: String?, | ||||
| @RequestParam(required = false) truckLanceCode: String?, | @RequestParam(required = false) truckLanceCode: String?, | ||||
| @RequestParam(required = false) ticketNo: String?, | |||||
| ): List<CompletedDoPickOrderResponse> { | ): List<CompletedDoPickOrderResponse> { | ||||
| val request = GetCompletedDoPickOrdersRequest( | val request = GetCompletedDoPickOrdersRequest( | ||||
| targetDate = targetDate, | targetDate = targetDate, | ||||
| shopName = shopName, | shopName = shopName, | ||||
| deliveryNoteCode = deliveryNoteCode, | deliveryNoteCode = deliveryNoteCode, | ||||
| truckLanceCode = truckLanceCode, | truckLanceCode = truckLanceCode, | ||||
| ticketNo = ticketNo, | |||||
| ) | ) | ||||
| return doWorkbenchMainService.getCompletedDoPickOrdersWorkbenchAll(request) | return doWorkbenchMainService.getCompletedDoPickOrdersWorkbenchAll(request) | ||||
| } | } | ||||
| @@ -23,6 +23,7 @@ data class GetCompletedDoPickOrdersRequest( | |||||
| val deliveryNoteCode: String? = null, | val deliveryNoteCode: String? = null, | ||||
| /** 卡車 / 車道代碼(模糊匹配 truck_lance_code) */ | /** 卡車 / 車道代碼(模糊匹配 truck_lance_code) */ | ||||
| val truckLanceCode: String? = null, | val truckLanceCode: String? = null, | ||||
| val ticketNo: String? = null, | |||||
| ) | ) | ||||
| data class CompletedDoPickOrderResponse( | data class CompletedDoPickOrderResponse( | ||||
| @@ -440,8 +440,14 @@ open fun updateInventoryLotLineQuantities(request: UpdateInventoryLotLineQuantit | |||||
| .filter { !it.deleted && it.inventoryLot?.item != null } | .filter { !it.deleted && it.inventoryLot?.item != null } | ||||
| .toList() | .toList() | ||||
| val item = source.firstOrNull()?.inventoryLot?.item | val item = source.firstOrNull()?.inventoryLot?.item | ||||
| ?: throw IllegalStateException("Item not found for itemId=$itemId") | |||||
| if (item == null) { | |||||
| return WorkbenchItemLotsResponse( | |||||
| itemId = itemId, | |||||
| itemCode = "", | |||||
| itemName = "", | |||||
| sameItemLots = emptyList() | |||||
| ) | |||||
| } | |||||
| val sameItemLots = source | val sameItemLots = source | ||||
| .mapNotNull { lotLine -> | .mapNotNull { lotLine -> | ||||
| val lot = lotLine.inventoryLot ?: return@mapNotNull null | val lot = lotLine.inventoryLot ?: return@mapNotNull null | ||||