Просмотр исходного кода

DN PDF 單號顯示問題

production
tommy 11 часов назад
Родитель
Сommit
7ac98d950b
1 измененных файлов: 54 добавлений и 3 удалений
  1. +54
    -3
      src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DoWorkbenchMainService.kt

+ 54
- 3
src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DoWorkbenchMainService.kt Просмотреть файл

@@ -7,6 +7,7 @@ import com.ffii.fpsms.modules.bag.service.BagService
import com.ffii.fpsms.modules.bag.web.model.CreateBagLotLineRequest
import com.ffii.fpsms.modules.common.CodeGenerator
import com.ffii.fpsms.modules.deliveryOrder.entity.DeliveryOrderRepository
import com.ffii.fpsms.modules.deliveryOrder.entity.DoReplenishment
import com.ffii.fpsms.modules.deliveryOrder.entity.DoPickOrderLineRecord
import com.ffii.fpsms.modules.deliveryOrder.entity.DoPickOrderLineRecordRepository
import com.ffii.fpsms.modules.deliveryOrder.entity.DoPickOrderLineRepository
@@ -130,6 +131,7 @@ open class DoWorkbenchMainService(
private val printerService: PrinterService,
private val itemsRepository: ItemsRepository,
private val transactionManager: PlatformTransactionManager,
private val doReplenishmentService: DoReplenishmentService,
) {
@PersistenceContext
private lateinit var entityManager: EntityManager
@@ -2681,6 +2683,21 @@ return MessageResponse(
)
}

private fun buildDeliveryOrderCodeAll(deliveryNoteCode: String): String {
val sql = """
SELECT DISTINCT do.code AS code
FROM delivery_order_pick_order dop
JOIN pick_order po ON po.deliveryOrderPickOrderId = dop.id AND po.deleted = 0
JOIN delivery_order do ON do.id = po.doId
WHERE dop.deliveryNoteCode = :deliveryNoteCode
AND dop.deleted = 0
ORDER BY do.code
""".trimIndent()
val codes = jdbcDao.queryForList(sql, mapOf("deliveryNoteCode" to deliveryNoteCode))
.mapNotNull { row -> row["code"]?.toString() }
return deliveryOrderService.formatDoCodesPlain(codes)
}

open fun exportDeliveryNoteWorkbench(request: ExportDeliveryNoteRequest): Map<String, Any> {
val DELIVERYNOTE_PDF = "DeliveryNote/DeliveryNotePDF.jrxml"
val resource = ClassPathResource(DELIVERYNOTE_PDF)
@@ -2746,6 +2763,13 @@ return MessageResponse(
emptyMap()
}

val deliveryOrders = deliveryOrderRepository.findAllById(ctx.deliveryOrderIds)
val deliveryOrderCodeById = deliveryOrders.associate { it.id!! to (it.code ?: "") }
val isExtraByDoId = deliveryOrders.associate { it.id!! to it.isExtra }
val headerIsMerge = ctx.header.ticketNo?.startsWith("TI-M-") == true
val headerTicketNo = ctx.header.ticketNo
val replenishPdfIndex = doReplenishmentService.buildReplenishPdfIndex(ctx.deliveryOrderIds)

sortedLines.forEach { row ->
fields.add(
deliveryOrderService.buildDeliveryNotePdfLineField(
@@ -2757,24 +2781,51 @@ return MessageResponse(
stockOutLinesByPickOrderLineId = stockOutLinesByPickOrderLineId,
illById = illById,
itemsById = itemsById,
deliveryOrderCodeById = deliveryOrderCodeById,
isExtraByDoId = isExtraByDoId,
headerTicketNo = headerTicketNo,
headerIsMerge = headerIsMerge,
replenishPdfIndex = replenishPdfIndex,
),
)
}

doReplenishmentService.replenishmentsWithoutDeliveryOrderLine(ctx.deliveryOrderIds, exportLines)
.sortedWith(compareBy<DoReplenishment>({ it.targetDoId }, { it.itemNo }, { it.code }))
.forEach { replenishment ->
fields.add(
deliveryOrderService.buildDeliveryNotePdfLineFieldForReplenishment(
replenishment = replenishment,
sequenceNumber = fields.size + 1,
pickOrderLines = pickOrderLines,
stockOutLinesByPickOrderLineId = stockOutLinesByPickOrderLineId,
illById = illById,
itemsById = itemsById,
deliveryOrderCodeById = deliveryOrderCodeById,
isExtraByDoId = isExtraByDoId,
headerTicketNo = headerTicketNo,
headerIsMerge = headerIsMerge,
),
)
}

params["dnTitle"] = "送貨單"
params["colQty"] = "已提數量"
params["totalCartonTitle"] = "總箱數:"
params["deliveryNoteCodeTitle"] = "送貨單編號:"
params["deliveryNoteCode"] = ctx.header.deliveryNoteCode ?: ""
params["numOfCarton"] = request.numOfCarton.toString().takeUnless { it == "0" } ?: ""
params["shopName"] = ctx.header.shopName ?: deliveryNoteInfo[0].shopName ?: ""
params["shopName"] = deliveryOrderService.formatShopNameForDeliveryNote(
ctx.header.shopName ?: deliveryNoteInfo[0].shopName ?: "",
)
params["shopAddress"] = deliveryNoteInfo[0].shopAddress ?: ""
params["deliveryDate"] = ctx.header.requiredDeliveryDate?.format(DateTimeFormatter.ISO_LOCAL_DATE)
?: deliveryNoteInfo[0].estimatedArrivalDate?.format(DateTimeFormatter.ISO_LOCAL_DATE)
?: ""
params["truckNo"] = ctx.header.truckLanceCode ?: ""
params["ShopPurchaseOrderNo"] = deliveryNoteInfo.joinToString(", ") { it.code }
params["FGPickOrderNo"] = ctx.pickOrderCodes.joinToString(", ")
params["deliveryOrderCodeAll"] = ctx.header.deliveryNoteCode?.let(::buildDeliveryOrderCodeAll)
?.takeIf { it.isNotBlank() }
?: deliveryOrderService.formatDoCodesPlain(deliveryNoteInfo.map { it.code })
params["loadingSequence"] = ""

return mapOf(


Загрузка…
Отмена
Сохранить