소스 검색

Delivery Note PDF Gen

master
kelvin.yau 2 달 전
부모
커밋
8cd4ac2efe
9개의 변경된 파일516개의 추가작업 그리고 4개의 파일을 삭제
  1. +1
    -2
      src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/DeliveryOrderRepository.kt
  2. +3
    -0
      src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/models/DeliveryOrderInfo.kt
  3. +3
    -0
      src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/models/DeliveryOrderLineInfo.kt
  4. +95
    -2
      src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DeliveryOrderService.kt
  5. +28
    -0
      src/main/java/com/ffii/fpsms/modules/deliveryOrder/web/DeliveryOrderController.kt
  6. +5
    -0
      src/main/java/com/ffii/fpsms/modules/deliveryOrder/web/models/ExportDeliveryNoteRequest.kt
  7. +7
    -0
      src/main/java/com/ffii/fpsms/modules/deliveryOrder/web/models/PrintDeliveryNoteRequest.kt
  8. +1
    -0
      src/main/java/com/ffii/fpsms/modules/pickOrder/entity/RouterRepository.kt
  9. +373
    -0
      src/main/resources/DeliveryNote/DeliveryNotePDF.jrxml

+ 1
- 2
src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/DeliveryOrderRepository.kt 파일 보기

@@ -3,8 +3,6 @@ package com.ffii.fpsms.modules.deliveryOrder.entity
import com.ffii.core.support.AbstractRepository
import com.ffii.fpsms.modules.deliveryOrder.entity.models.DeliveryOrderInfo
import com.ffii.fpsms.modules.deliveryOrder.enums.DeliveryOrderStatus
import com.ffii.fpsms.modules.master.entity.projections.SearchId
import org.springframework.data.jpa.repository.Query
import org.springframework.stereotype.Repository
import java.io.Serializable
import java.time.LocalDateTime
@@ -25,6 +23,7 @@ interface DeliveryOrderRepository : AbstractRepository<DeliveryOrder, Long> {

fun findByOrderDateBetweenAndDeletedIsFalse(startDate: LocalDateTime?, endDate: LocalDateTime?) : List<DeliveryOrderInfo>

fun findDeliveryOrderInfoById(id: Long): List<DeliveryOrderInfo>

//GET FULL LIST
fun findAllBy() : List<DeliveryOrderInfo>;


+ 3
- 0
src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/models/DeliveryOrderInfo.kt 파일 보기

@@ -23,6 +23,9 @@ interface DeliveryOrderInfo{
@get:Value("#{target.supplier?.name}")
val supplierName: String?

@get:Value("#{target.shop?.addr3}")
val shopAddress: String?

val deliveryOrderLines: List<DeliveryOrderLineInfo>




+ 3
- 0
src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/models/DeliveryOrderLineInfo.kt 파일 보기

@@ -10,6 +10,9 @@ interface DeliveryOrderLineInfo {
val qty: BigDecimal
@get:Value("#{target.uom?.udfudesc}")
val uom: String?
@get:Value("#{target.uom?.udfShortDesc}")
val uomShortDesc: String?
val price: BigDecimal?
val status: String?

}

+ 95
- 2
src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DeliveryOrderService.kt 파일 보기

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.deliveryOrder.service

import com.ffii.core.utils.PdfUtils
import com.ffii.core.utils.ZebraPrinterUtil
import com.ffii.fpsms.m18.entity.M18DataLogRepository
import com.ffii.fpsms.m18.service.M18DataLogService
import com.ffii.fpsms.modules.deliveryOrder.entity.DeliveryOrder
@@ -29,9 +31,11 @@ import java.time.LocalDate
import java.math.BigDecimal
import com.ffii.fpsms.modules.master.web.models.MessageResponse
import java.time.LocalDateTime
import com.ffii.fpsms.modules.deliveryOrder.service.DoPickOrderService
import com.ffii.fpsms.modules.deliveryOrder.entity.DoPickOrder
import com.ffii.fpsms.modules.deliveryOrder.enums.DoPickOrderStatus
import com.ffii.fpsms.modules.deliveryOrder.web.models.ExportDeliveryNoteRequest
import com.ffii.fpsms.modules.deliveryOrder.web.models.PrintDeliveryNoteRequest
import com.ffii.fpsms.modules.master.service.PrinterService
import java.time.format.DateTimeFormatter
import com.ffii.fpsms.modules.pickOrder.entity.TruckRepository
import java.time.LocalTime
@@ -46,6 +50,12 @@ import com.ffii.fpsms.modules.stock.web.model.StockOutLineStatus
import com.ffii.fpsms.modules.stock.web.model.SuggestedPickLotForPolRequest
import com.ffii.fpsms.modules.pickOrder.entity.PickOrderRepository
import com.ffii.fpsms.modules.pickOrder.entity.PickOrderLineRepository
import net.sf.jasperreports.engine.JasperCompileManager
import net.sf.jasperreports.engine.JasperExportManager
import net.sf.jasperreports.engine.JasperPrint
import org.springframework.core.io.ClassPathResource
import java.io.File
import java.io.FileNotFoundException

@Service
open class DeliveryOrderService(
@@ -64,7 +74,8 @@ open class DeliveryOrderService(
private val inventoryLotLineRepository: InventoryLotLineRepository,
private val stockOutRepository: StockOutRepository,
private val stockOutLineRepository: StockOutLIneRepository,
private val pickOrderLineRepository: PickOrderLineRepository
private val pickOrderLineRepository: PickOrderLineRepository,
private val printerService: PrinterService
) {

open fun findByM18DataLogId(m18DataLogId: Long): DeliveryOrder? {
@@ -495,4 +506,86 @@ open class DeliveryOrderService(
)
}

private fun buildShopAddress(shop: com.ffii.fpsms.modules.master.entity.Shop?): String {
if (shop == null) return ""

val addressParts = mutableListOf<String>()

shop.addr3?.let { if (it.isNotBlank()) addressParts.add(it) }

return addressParts.joinToString(", ")
}

@Throws(IOException::class)
@Transactional
open fun exportDeliveryNote(request: ExportDeliveryNoteRequest): Map<String, Any> {
val DELIVERYNOTE_PDF = "DeliveryNote/DeliveryNotePDF.jrxml"
val resource = ClassPathResource(DELIVERYNOTE_PDF)
if(!resource.exists()){
throw FileNotFoundException("Report file not fount: $DELIVERYNOTE_PDF")
}
val inputStream = resource.inputStream
val deliveryNote = JasperCompileManager.compileReport(inputStream)
val deliveryNoteInfo = deliveryOrderRepository.findDeliveryOrderInfoById(request.deliveryOrderIds).toMutableList()
val fields = mutableListOf<MutableMap<String, Any>>()
val params = mutableMapOf<String, Any>()

for (info in deliveryNoteInfo) {
info.deliveryOrderLines.forEachIndexed { index, line ->
val field = mutableMapOf<String, Any>()
field["sequenceNumber"] = (index + 1).toString()
field["itemNo"] = line.itemNo
field["itemName"] = line.itemName ?:""
field["uom"] = line.uom ?:""
field["qty"] = line.qty.toString()
field["shortName"] = line.uomShortDesc ?:""


fields.add(field)
}
}

params["deliveryOrderCode"] = deliveryNoteInfo[0].code
params["shopName"] = deliveryNoteInfo[0].shopName ?: ""
params["shopAddress"] = deliveryNoteInfo[0].shopAddress ?: ""
params["deliveryDate"] = deliveryNoteInfo[0].estimatedArrivalDate?.format(DateTimeFormatter.ISO_LOCAL_DATE) ?: ""
//numOfCarton
//truckNo

//FGPickOrderNo
//ShopPurchaseOrderNo

return mapOf(
"report" to PdfUtils.fillReport(deliveryNote, fields, params),
"filename" to deliveryNoteInfo[0].code
)
}

@Transactional
open fun printDeliveryNote(request: PrintDeliveryNoteRequest){
val printer = printerService.findById(request.printerId) ?: throw java.util.NoSuchElementException("No such printer")

val pdf = exportDeliveryNote(
ExportDeliveryNoteRequest(
deliveryOrderIds = request.deliveryOrderId
)
)

val jasperPrint = pdf["report"] as JasperPrint

val tempPdfFile = File.createTempFile("print_job_",".pdf")

try{
JasperExportManager.exportReportToPdfFile(jasperPrint,tempPdfFile.absolutePath)

val printQty = if (request.printQty == null || request.printQty <= 0) 1 else request.printQty
printer.ip?.let { ip -> printer.port?.let { port ->
ZebraPrinterUtil.printPdfToZebra(tempPdfFile, ip, port, printQty, ZebraPrinterUtil.PrintDirection.ROTATED)
}}
} finally {
tempPdfFile.delete()
}

}

}

+ 28
- 0
src/main/java/com/ffii/fpsms/modules/deliveryOrder/web/DeliveryOrderController.kt 파일 보기

@@ -15,9 +15,20 @@ import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController
import com.ffii.fpsms.modules.deliveryOrder.web.models.DoDetailResponse
import com.ffii.fpsms.modules.deliveryOrder.web.models.ExportDeliveryNoteRequest
import com.ffii.fpsms.modules.deliveryOrder.web.models.PrintDeliveryNoteRequest
import com.ffii.fpsms.modules.deliveryOrder.web.models.ReleaseDoRequest
import com.ffii.fpsms.modules.master.web.models.MessageResponse
import jakarta.servlet.http.HttpServletResponse
import jakarta.validation.Valid
import net.sf.jasperreports.engine.JasperExportManager
import net.sf.jasperreports.engine.JasperPrint
import org.hibernate.result.Output
import org.springframework.context.NoSuchMessageException
import org.springframework.web.bind.annotation.ModelAttribute
import java.io.OutputStream
import java.io.UnsupportedEncodingException
import java.text.ParseException
import java.time.LocalDateTime

@RequestMapping("/do")
@@ -169,4 +180,21 @@ class DeliveryOrderController(
// ✅ Simply pass the request directly - userId comes from frontend session
return deliveryOrderService.releaseDeliveryOrder(request)
}

@PostMapping("/DN")
@Throws(UnsupportedEncodingException::class, NoSuchMessageException::class, ParseException::class, Exception::class)
fun printDN(@Valid @RequestBody request: ExportDeliveryNoteRequest, response: HttpServletResponse){
response.characterEncoding = "utf-8"
response.contentType = "application/pdf"
val out: OutputStream = response.outputStream
val pdf = deliveryOrderService.exportDeliveryNote(request)
val jasperPrint = pdf["report"] as JasperPrint
response.addHeader("filename", "${pdf["filename"]}.pdf")
out.write(JasperExportManager.exportReportToPdf(jasperPrint))
}

@GetMapping("print-DN")
fun printDN(@RequestBody request: PrintDeliveryNoteRequest) {
deliveryOrderService.printDeliveryNote(request)
}
}

+ 5
- 0
src/main/java/com/ffii/fpsms/modules/deliveryOrder/web/models/ExportDeliveryNoteRequest.kt 파일 보기

@@ -0,0 +1,5 @@
package com.ffii.fpsms.modules.deliveryOrder.web.models

data class ExportDeliveryNoteRequest (
val deliveryOrderIds: Long
)

+ 7
- 0
src/main/java/com/ffii/fpsms/modules/deliveryOrder/web/models/PrintDeliveryNoteRequest.kt 파일 보기

@@ -0,0 +1,7 @@
package com.ffii.fpsms.modules.deliveryOrder.web.models

data class PrintDeliveryNoteRequest(
val deliveryOrderId: Long,
val printerId: Long,
val printQty: Int?,
)

+ 1
- 0
src/main/java/com/ffii/fpsms/modules/pickOrder/entity/RouterRepository.kt 파일 보기

@@ -22,4 +22,5 @@ interface RouterRepository : AbstractRepository<Router, Long> {
@Query("SELECT r FROM Router r WHERE r.route = :route AND r.deleted = false")
fun findByRouteAndDeletedFalse(@Param("route") route: String): List<Router>
}

+ 373
- 0
src/main/resources/DeliveryNote/DeliveryNotePDF.jrxml 파일 보기

@@ -0,0 +1,373 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.17.0.final using JasperReports Library version 6.17.0-6d93193241dd8cc42629e188b94f9e0bc5722efd -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="DeliveryNotePDF" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isIgnorePagination="true" uuid="36f9d415-527f-4152-b7b0-eea81fe06f73">
<property name="com.jaspersoft.studio.unit." value="pixel"/>
<property name="com.jaspersoft.studio.unit.pageHeight" value="pixel"/>
<property name="com.jaspersoft.studio.unit.pageWidth" value="pixel"/>
<property name="com.jaspersoft.studio.unit.topMargin" value="pixel"/>
<property name="com.jaspersoft.studio.unit.bottomMargin" value="pixel"/>
<property name="com.jaspersoft.studio.unit.leftMargin" value="pixel"/>
<property name="com.jaspersoft.studio.unit.rightMargin" value="pixel"/>
<property name="com.jaspersoft.studio.unit.columnWidth" value="pixel"/>
<property name="com.jaspersoft.studio.unit.columnSpacing" value="pixel"/>
<parameter name="deliveryOrderCode" class="java.lang.String">
<parameterDescription><![CDATA[DeliveryOrderCode]]></parameterDescription>
</parameter>
<parameter name="shopName" class="java.lang.String"/>
<parameter name="shopAddress" class="java.lang.String"/>
<parameter name="deliveryDate" class="java.lang.String"/>
<parameter name="FGPickOrderNo" class="java.lang.String"/>
<parameter name="ShopPurchaseOrderNo" class="java.lang.String"/>
<queryString>
<![CDATA[]]>
</queryString>
<field name="sequenceNumber" class="java.lang.String"/>
<field name="itemNo" class="java.lang.String"/>
<field name="itemName" class="java.lang.String"/>
<field name="uom" class="java.lang.String"/>
<field name="qty" class="java.lang.String"/>
<field name="shortName" class="java.lang.String"/>
<field name="route" class="java.lang.String"/>
<background>
<band height="41" splitType="Stretch"/>
</background>
<title>
<band height="28">
<staticText>
<reportElement x="223" y="2" width="108" height="23" uuid="d88b3126-393b-4444-9a75-a73af8ae0797">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Center" verticalAlignment="Bottom">
<font fontName="微軟正黑體" size="16"/>
</textElement>
<text><![CDATA[送貨單]]></text>
</staticText>
<staticText>
<reportElement x="430" y="10" width="40" height="18" uuid="ddea10c9-9e96-484b-b76b-bfff59950a98">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textField>
<reportElement x="470" y="10" width="20" height="18" uuid="f4a20909-91b8-41bd-940f-140adced5b18">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="530" y="10" width="25" height="18" uuid="586df5fc-ea37-4896-b8df-2290890341a8">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[頁]]></text>
</staticText>
<textField evaluationTime="Report">
<reportElement x="510" y="10" width="20" height="18" uuid="8718a2eb-22fd-4bce-ade2-1b5869800c55">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="490" y="10" width="20" height="18" uuid="460a4235-1ce6-47d8-9e34-952e5ac9a660">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Center" verticalAlignment="Justified">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[/]]></text>
</staticText>
</band>
</title>
<pageHeader>
<band height="117">
<staticText>
<reportElement x="0" y="10" width="80" height="18" uuid="7f991bbe-caf4-43c1-b8e1-d85b1f2d3815">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[送貨單編號:]]></text>
</staticText>
<staticText>
<reportElement x="0" y="30" width="80" height="18" uuid="a9753323-1dc5-47d4-92b0-13169585cc35">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[店鋪:]]></text>
</staticText>
<staticText>
<reportElement x="0" y="50" width="80" height="18" uuid="6483cdc2-6b75-4f59-9647-b87a7bf2964e">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[送貨地址:]]></text>
</staticText>
<staticText>
<reportElement x="275" y="50" width="110" height="18" uuid="7bdf9657-d5d2-4fbf-a6c3-a5da5b292dc8">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[送貨日期:]]></text>
</staticText>
<staticText>
<reportElement x="275" y="10" width="110" height="18" uuid="f53e2068-dd24-4151-bd2a-033c6cbda674">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[成品提料編號:]]></text>
</staticText>
<staticText>
<reportElement x="275" y="30" width="110" height="18" uuid="f196de62-5c60-4595-a31c-a7c501e000a5">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[店鋪採購單編號:]]></text>
</staticText>
<staticText>
<reportElement x="0" y="90" width="80" height="18" uuid="3e5f2bc4-03d7-4d7c-9a93-ca4fa8f5ed33">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[總箱數:]]></text>
</staticText>
<staticText>
<reportElement x="275" y="70" width="110" height="18" uuid="6b810312-71e2-4749-bc8b-0b7a705377f8">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
<property name="com.jaspersoft.studio.unit.y" value="px"/>
</reportElement>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[貨車編號:]]></text>
</staticText>
<textField>
<reportElement x="80" y="10" width="150" height="18" uuid="69d21d74-e625-41e9-b4bb-abde259d6620">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement verticalAlignment="Middle">
<font fontName="微軟正黑體"/>
</textElement>
<textFieldExpression><![CDATA[$P{deliveryOrderCode}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="80" y="30" width="150" height="18" uuid="c1836549-f941-4558-ae12-25064f243df4">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement verticalAlignment="Middle">
<font fontName="微軟正黑體"/>
</textElement>
<textFieldExpression><![CDATA[$P{shopName}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="80" y="50" width="150" height="36" uuid="010cf625-64e8-4d5e-b923-6cc959546e52">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement verticalAlignment="Middle">
<font fontName="微軟正黑體"/>
</textElement>
<textFieldExpression><![CDATA[$P{shopAddress}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="385" y="70" width="150" height="18" uuid="c403c5e2-7803-4ea2-962d-2a900092db65">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
<property name="com.jaspersoft.studio.unit.y" value="px"/>
</reportElement>
<textElement verticalAlignment="Middle">
<font fontName="微軟正黑體"/>
</textElement>
<textFieldExpression><![CDATA["Text Field"]]></textFieldExpression>
</textField>
<textField>
<reportElement x="385" y="30" width="150" height="18" uuid="24a1331c-e50f-4a72-9a41-3e05b85f4c21">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement verticalAlignment="Middle">
<font fontName="微軟正黑體"/>
</textElement>
<textFieldExpression><![CDATA[$P{ShopPurchaseOrderNo}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="385" y="10" width="150" height="18" uuid="78f29b7d-c311-4c53-9c66-fda8752c9797">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement verticalAlignment="Middle">
<font fontName="微軟正黑體"/>
</textElement>
<textFieldExpression><![CDATA[$P{FGPickOrderNo}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="385" y="50" width="150" height="18" uuid="e67b4047-642b-46f5-8ec7-785ead88b97e">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement verticalAlignment="Middle">
<font fontName="微軟正黑體"/>
</textElement>
<textFieldExpression><![CDATA[$P{deliveryDate}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="80" y="90" width="150" height="18" uuid="8062f7b6-8917-432a-a02c-e5a5766c14e5">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement verticalAlignment="Middle">
<font fontName="微軟正黑體"/>
</textElement>
<textFieldExpression><![CDATA["Text Field"]]></textFieldExpression>
</textField>
</band>
</pageHeader>
<columnHeader>
<band height="33">
<staticText>
<reportElement x="0" y="5" width="50" height="18" uuid="d0d76c93-d260-4b03-b116-6e7ba1fdbdd8">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
</reportElement>
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[序號]]></text>
</staticText>
<staticText>
<reportElement x="50" y="5" width="50" height="18" uuid="58a5c922-fd98-4997-9b17-16bdf9f78519">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
</reportElement>
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[路綫]]></text>
</staticText>
<staticText>
<reportElement x="100" y="5" width="140" height="18" uuid="65c27cc0-f806-4930-930c-6b3fd632a52f">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[貨品編號]]></text>
</staticText>
<staticText>
<reportElement x="240" y="5" width="230" height="18" uuid="fa7ba1d5-003a-4c99-8a2f-4162756ee515">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[貨品名稱]]></text>
</staticText>
<staticText>
<reportElement x="470" y="5" width="84" height="18" uuid="c0485433-8212-4b0a-90ed-c69885ad6d74">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[數量]]></text>
</staticText>
<line>
<reportElement x="0" y="28" width="554" height="1" uuid="76648c53-0490-4e52-b737-a8075d9c654f">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
</line>
<line>
<reportElement x="0" y="23" width="554" height="1" uuid="113fc71d-cfb1-4a3a-8ab7-8fea54843197">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
</line>
</band>
</columnHeader>
<detail>
<band height="25">
<textField>
<reportElement x="0" y="1" width="50" height="18" uuid="ae87b739-dadf-452a-bc35-8c2da1a6a9a8">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement verticalAlignment="Top">
<font fontName="微軟正黑體"/>
</textElement>
<textFieldExpression><![CDATA[$F{sequenceNumber}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="50" y="1" width="50" height="18" uuid="b4bcfa6c-5d2e-4fba-815a-cc2fccd39213">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement verticalAlignment="Top">
<font fontName="微軟正黑體"/>
</textElement>
<textFieldExpression><![CDATA[$F{route}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="1" width="140" height="18" uuid="3e4a71e7-d6e1-4da8-ae58-ef752c289a6d">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement verticalAlignment="Top">
<font fontName="微軟正黑體"/>
</textElement>
<textFieldExpression><![CDATA[$F{itemNo}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="470" y="0" width="84" height="18" uuid="e60b7a29-273a-4a9f-a443-f4977292c429">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement verticalAlignment="Top">
<font fontName="微軟正黑體"/>
</textElement>
<textFieldExpression><![CDATA[$F{qty} + $F{shortName}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="240" y="1" width="230" height="18" uuid="c2b4da75-fdca-4e99-8103-5769dea75841">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement verticalAlignment="Top">
<font fontName="微軟正黑體"/>
</textElement>
<textFieldExpression><![CDATA[$F{itemName} + "(" + $F{uom} + ")"]]></textFieldExpression>
</textField>
<line>
<reportElement x="0" y="21" width="554" height="1" uuid="00d1c4c2-fcb0-4282-90c6-5443b260007c">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
</line>
</band>
</detail>
<pageFooter>
<band height="39"/>
</pageFooter>
</jasperReport>

불러오는 중...
취소
저장