diff --git a/src/main/java/com/ffii/fpsms/py/PyJobOrderListItem.kt b/src/main/java/com/ffii/fpsms/py/PyJobOrderListItem.kt index 9bec792..710a775 100644 --- a/src/main/java/com/ffii/fpsms/py/PyJobOrderListItem.kt +++ b/src/main/java/com/ffii/fpsms/py/PyJobOrderListItem.kt @@ -8,7 +8,8 @@ import java.time.LocalDateTime * No login required. * stockInLineId and itemId are for QR code: {"itemId": xxx, "stockInLineId": xxx} * lotNo replaces job order no. on the label display. - * [itemName] is BOM/item display name plus stock UOM [udfudesc] in parentheses, e.g. "名稱(單位)". + * [itemName] is BOM/item display name plus stock UOM [udfudesc] in parentheses, e.g. "名稱(單位)"; + * if the name already contains both "(" and ")", the stock unit is not appended. */ data class PyJobOrderListItem( val id: Long, diff --git a/src/main/java/com/ffii/fpsms/py/PyJobOrderListMapper.kt b/src/main/java/com/ffii/fpsms/py/PyJobOrderListMapper.kt index 7fe6d37..5f35652 100644 --- a/src/main/java/com/ffii/fpsms/py/PyJobOrderListMapper.kt +++ b/src/main/java/com/ffii/fpsms/py/PyJobOrderListMapper.kt @@ -1,92 +1,48 @@ -package com.ffii.fpsms.py - - - -import com.ffii.fpsms.modules.jobOrder.entity.JobOrder - -import com.ffii.fpsms.modules.master.service.ItemUomService - -import com.ffii.fpsms.modules.stock.entity.StockInLineRepository - - - -object PyJobOrderListMapper { - - fun toListItem( - - jo: JobOrder, - - printed: PrintedQtyByChannel?, - - stockInLineRepository: StockInLineRepository, - - itemUomService: ItemUomService, - - ): PyJobOrderListItem { - - val itemCode = jo.bom?.item?.code ?: jo.bom?.code - - val baseName = jo.bom?.name ?: jo.bom?.item?.name - - val itemId = jo.bom?.item?.id - - val stockUnitDesc = itemId?.let { id -> - - itemUomService.findStockUnitByItemId(id)?.uom?.udfudesc - - }?.trim().orEmpty() - - val baseTrim = baseName?.trim().orEmpty() - - val itemName = when { - - stockUnitDesc.isEmpty() && baseTrim.isEmpty() -> null - - stockUnitDesc.isEmpty() -> baseTrim - - baseTrim.isEmpty() -> "($stockUnitDesc)" - - else -> "$baseTrim($stockUnitDesc)" - - } - - val stockInLine = jo.id?.let { stockInLineRepository.findFirstByJobOrder_IdAndDeletedFalse(it) } - - val stockInLineId = stockInLine?.id - - val lotNo = stockInLine?.lotNo - - val p = printed ?: PrintedQtyByChannel() - - return PyJobOrderListItem( - - id = jo.id!!, - - code = jo.code, - - planStart = jo.planStart, - - itemCode = itemCode, - - itemName = itemName, - - reqQty = jo.reqQty, - - stockInLineId = stockInLineId, - - itemId = itemId, - - lotNo = lotNo, - - bagPrintedQty = p.bagPrintedQty, - - labelPrintedQty = p.labelPrintedQty, - - laserPrintedQty = p.laserPrintedQty, - - ) - - } - -} - +package com.ffii.fpsms.py + +import com.ffii.fpsms.modules.jobOrder.entity.JobOrder +import com.ffii.fpsms.modules.master.service.ItemUomService +import com.ffii.fpsms.modules.stock.entity.StockInLineRepository + +object PyJobOrderListMapper { + fun toListItem( + jo: JobOrder, + printed: PrintedQtyByChannel?, + stockInLineRepository: StockInLineRepository, + itemUomService: ItemUomService, + ): PyJobOrderListItem { + val itemCode = jo.bom?.item?.code ?: jo.bom?.code + val baseName = jo.bom?.name ?: jo.bom?.item?.name + val itemId = jo.bom?.item?.id + val stockUnitDesc = itemId?.let { id -> + itemUomService.findStockUnitByItemId(id)?.uom?.udfudesc + }?.trim().orEmpty() + val baseTrim = baseName?.trim().orEmpty() + val baseAlreadyHasParens = '(' in baseTrim && ')' in baseTrim + val itemName = when { + stockUnitDesc.isEmpty() && baseTrim.isEmpty() -> null + stockUnitDesc.isEmpty() -> baseTrim + baseTrim.isEmpty() -> "($stockUnitDesc)" + baseAlreadyHasParens -> baseTrim + else -> "$baseTrim($stockUnitDesc)" + } + val stockInLine = jo.id?.let { stockInLineRepository.findFirstByJobOrder_IdAndDeletedFalse(it) } + val stockInLineId = stockInLine?.id + val lotNo = stockInLine?.lotNo + val p = printed ?: PrintedQtyByChannel() + return PyJobOrderListItem( + id = jo.id!!, + code = jo.code, + planStart = jo.planStart, + itemCode = itemCode, + itemName = itemName, + reqQty = jo.reqQty, + stockInLineId = stockInLineId, + itemId = itemId, + lotNo = lotNo, + bagPrintedQty = p.bagPrintedQty, + labelPrintedQty = p.labelPrintedQty, + laserPrintedQty = p.laserPrintedQty, + ) + } +}