| @@ -1,12 +1,20 @@ | |||||
| package com.ffii.fpsms.modules.deliveryOrder.entity | package com.ffii.fpsms.modules.deliveryOrder.entity | ||||
| import org.springframework.data.jpa.repository.JpaRepository | import org.springframework.data.jpa.repository.JpaRepository | ||||
| import org.springframework.data.jpa.repository.Query | |||||
| import org.springframework.data.repository.query.Param | |||||
| import org.springframework.stereotype.Repository | import org.springframework.stereotype.Repository | ||||
| import java.time.LocalDate | |||||
| @Repository | @Repository | ||||
| interface DoPickOrderLineRecordRepository : JpaRepository<DoPickOrderLineRecord, Long> { | interface DoPickOrderLineRecordRepository : JpaRepository<DoPickOrderLineRecord, Long> { | ||||
| fun findByDoPickOrderIdAndDeletedFalse(doPickOrderId: Long): List<DoPickOrderLineRecord> | fun findByDoPickOrderIdAndDeletedFalse(doPickOrderId: Long): List<DoPickOrderLineRecord> | ||||
| fun findByDoOrderIdAndDeletedFalse(doOrderId: Long): List<DoPickOrderLineRecord> | fun findByDoOrderIdAndDeletedFalse(doOrderId: Long): List<DoPickOrderLineRecord> | ||||
| fun findByDoPickOrderIdInAndDeletedFalse(doPickOrderIds: Collection<Long>): List<DoPickOrderLineRecord> | fun findByDoPickOrderIdInAndDeletedFalse(doPickOrderIds: Collection<Long>): List<DoPickOrderLineRecord> | ||||
| fun findByDoPickOrderId(recordId: Long?): List<DoPickOrderLineRecord> | |||||
| @Query("SELECT d FROM DoPickOrderLineRecord d WHERE d.recordId = :recordId AND d.deleted = false") | |||||
| fun findByRecordIdAndDeletedFalse(@Param("recordId") recordId: Long): List<DoPickOrderLineRecord> | |||||
| } | } | ||||
| @@ -7,6 +7,7 @@ import com.ffii.fpsms.modules.deliveryOrder.enums.DoPickOrderStatus | |||||
| import com.ffii.fpsms.modules.master.entity.projections.SearchId | import com.ffii.fpsms.modules.master.entity.projections.SearchId | ||||
| import org.springframework.data.jpa.repository.JpaRepository | import org.springframework.data.jpa.repository.JpaRepository | ||||
| import org.springframework.data.jpa.repository.Query | import org.springframework.data.jpa.repository.Query | ||||
| import org.springframework.data.repository.query.Param | |||||
| import org.springframework.stereotype.Repository | import org.springframework.stereotype.Repository | ||||
| import java.io.Serializable | import java.io.Serializable | ||||
| import java.time.LocalDateTime | import java.time.LocalDateTime | ||||
| @@ -26,4 +27,13 @@ interface DoPickOrderRecordRepository : JpaRepository<DoPickOrderRecord, Long> { | |||||
| fun findByStoreIdAndRequiredDeliveryDateAndTicketStatusIn(storeId: String, requiredDeliveryDate: LocalDate, ticketStatus: List<DoPickOrderStatus>): List<DoPickOrderRecord> | fun findByStoreIdAndRequiredDeliveryDateAndTicketStatusIn(storeId: String, requiredDeliveryDate: LocalDate, ticketStatus: List<DoPickOrderStatus>): List<DoPickOrderRecord> | ||||
| fun findByHandledByAndTicketStatusAndDeletedFalse(handledBy: Long, ticketStatus: DoPickOrderStatus): List<DoPickOrderRecord> | fun findByHandledByAndTicketStatusAndDeletedFalse(handledBy: Long, ticketStatus: DoPickOrderStatus): List<DoPickOrderRecord> | ||||
| @Query("SELECT d FROM DoPickOrderRecord d WHERE d.deleted = false ORDER BY d.ticketReleaseTime DESC NULLS LAST") | |||||
| fun findAllByDeletedFalseOrderByTicketReleaseTimeDesc(): List<DoPickOrderRecord> | |||||
| @Query("SELECT d FROM DoPickOrderRecord d WHERE d.deleted = false AND d.requiredDeliveryDate BETWEEN :startDate AND :endDate ORDER BY d.ticketReleaseTime DESC NULLS LAST") | |||||
| fun findAllByDeletedFalseAndRequiredDeliveryDateBetween( | |||||
| @Param("startDate") startDate: LocalDate, | |||||
| @Param("endDate") endDate: LocalDate | |||||
| ): List<DoPickOrderRecord> | |||||
| } | } | ||||
| @@ -34,21 +34,10 @@ fun findByStoreIdAndRequiredDeliveryDateAndTicketStatusIn( | |||||
| @Query("SELECT d FROM DoPickOrder d WHERE d.deleted = false ORDER BY d.requiredDeliveryDate ASC, d.truckDepartureTime ASC") | @Query("SELECT d FROM DoPickOrder d WHERE d.deleted = false ORDER BY d.requiredDeliveryDate ASC, d.truckDepartureTime ASC") | ||||
| fun findAllByDeletedFalseOrderByTicketReleaseTimeDesc(): List<DoPickOrder> | fun findAllByDeletedFalseOrderByTicketReleaseTimeDesc(): List<DoPickOrder> | ||||
| @Query(""" | |||||
| SELECT COUNT(DISTINCT pol.id) | |||||
| FROM PickOrderLine pol | |||||
| WHERE pol.pickOrder.id IN ( | |||||
| SELECT DISTINCT dpol2.pickOrderId | |||||
| FROM DoPickOrderLine dpol2 | |||||
| WHERE dpol2.doPickOrderId IN ( | |||||
| SELECT DISTINCT dpol1.doPickOrderId | |||||
| FROM DoPickOrderLine dpol1 | |||||
| WHERE dpol1.pickOrderId = :pickOrderId | |||||
| AND dpol1.deleted = false | |||||
| ) | |||||
| AND dpol2.deleted = false | |||||
| ) | |||||
| AND pol.deleted = false | |||||
| """) | |||||
| fun countPickOrderLinesByRelatedPickOrderId(@Param("pickOrderId") pickOrderId: Long): Long | |||||
| @Query("SELECT d FROM DoPickOrder d WHERE d.deleted = false AND d.requiredDeliveryDate BETWEEN :startDate AND :endDate ORDER BY d.ticketReleaseTime DESC NULLS LAST") | |||||
| fun findAllByDeletedFalseAndRequiredDeliveryDateBetween( | |||||
| @Param("startDate") startDate: LocalDate, | |||||
| @Param("endDate") endDate: LocalDate | |||||
| ): List<DoPickOrder> | |||||
| } | } | ||||
| @@ -60,7 +60,6 @@ import java.io.FileNotFoundException | |||||
| import com.ffii.core.support.JdbcDao; | import com.ffii.core.support.JdbcDao; | ||||
| import com.ffii.fpsms.modules.deliveryOrder.entity.DoPickOrderLineRecordRepository | import com.ffii.fpsms.modules.deliveryOrder.entity.DoPickOrderLineRecordRepository | ||||
| import com.ffii.fpsms.modules.deliveryOrder.entity.DoPickOrderLineRepository | import com.ffii.fpsms.modules.deliveryOrder.entity.DoPickOrderLineRepository | ||||
| import com.ffii.fpsms.modules.deliveryOrder.entity.DoPickOrderRecord | |||||
| import com.ffii.fpsms.modules.deliveryOrder.entity.DoPickOrderRecordRepository | import com.ffii.fpsms.modules.deliveryOrder.entity.DoPickOrderRecordRepository | ||||
| import com.ffii.fpsms.modules.deliveryOrder.entity.DoPickOrderRepository | import com.ffii.fpsms.modules.deliveryOrder.entity.DoPickOrderRepository | ||||
| import com.ffii.fpsms.modules.deliveryOrder.web.models.ExportDNLabelsRequest | import com.ffii.fpsms.modules.deliveryOrder.web.models.ExportDNLabelsRequest | ||||
| @@ -68,15 +67,11 @@ import com.ffii.fpsms.modules.deliveryOrder.web.models.PrintDNLabelsRequest | |||||
| import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderRepository | import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderRepository | ||||
| import com.ffii.fpsms.modules.stock.entity.InventoryLotRepository | import com.ffii.fpsms.modules.stock.entity.InventoryLotRepository | ||||
| import com.ffii.fpsms.modules.stock.service.InventoryLotService | import com.ffii.fpsms.modules.stock.service.InventoryLotService | ||||
| import net.sf.jasperreports.engine.JasperPrintManager | |||||
| import net.sf.jasperreports.engine.JRPrintPage | |||||
| import com.ffii.fpsms.modules.stock.entity.SuggestPickLotRepository | import com.ffii.fpsms.modules.stock.entity.SuggestPickLotRepository | ||||
| import com.ffii.fpsms.modules.stock.service.SuggestedPickLotService // 添加这行 | import com.ffii.fpsms.modules.stock.service.SuggestedPickLotService // 添加这行 | ||||
| import com.ffii.fpsms.modules.deliveryOrder.web.models.* | import com.ffii.fpsms.modules.deliveryOrder.web.models.* | ||||
| import com.ffii.fpsms.modules.pickOrder.entity.PickExecutionIssue // 添加 | |||||
| import com.ffii.fpsms.modules.pickOrder.entity.PickExecutionIssueRepository // 添加 | import com.ffii.fpsms.modules.pickOrder.entity.PickExecutionIssueRepository // 添加 | ||||
| import com.ffii.fpsms.modules.pickOrder.entity.IssueCategory // 添加 | |||||
| import com.ffii.fpsms.modules.pickOrder.entity.HandleStatus | |||||
| @Service | @Service | ||||
| open class DeliveryOrderService( | open class DeliveryOrderService( | ||||
| private val deliveryOrderRepository: DeliveryOrderRepository, | private val deliveryOrderRepository: DeliveryOrderRepository, | ||||
| @@ -818,7 +813,7 @@ open class DeliveryOrderService( | |||||
| NoSuchElementException("DoPickOrderRecord not found with ID: ${request.doPickOrderId}") | NoSuchElementException("DoPickOrderRecord not found with ID: ${request.doPickOrderId}") | ||||
| } | } | ||||
| val doPickOrderLineRecords = doPickOrderLineRecordRepository.findByDoPickOrderIdAndDeletedFalse(request.doPickOrderId) | |||||
| val doPickOrderLineRecords = doPickOrderLineRecordRepository.findByDoPickOrderId(doPickOrderRecord.recordId) | |||||
| val pickOrderIds = doPickOrderLineRecords.mapNotNull { it.pickOrderId }.distinct() | val pickOrderIds = doPickOrderLineRecords.mapNotNull { it.pickOrderId }.distinct() | ||||
| if(pickOrderIds.isEmpty()){ | if(pickOrderIds.isEmpty()){ | ||||
| @@ -974,7 +969,8 @@ open class DeliveryOrderService( | |||||
| val doPickOrderRecord = doPickOrderRecordRepository.findById(request.doPickOrderId).orElseThrow { | val doPickOrderRecord = doPickOrderRecordRepository.findById(request.doPickOrderId).orElseThrow { | ||||
| NoSuchElementException("DoPickOrderRecord not found with ID: ${request.doPickOrderId}") | NoSuchElementException("DoPickOrderRecord not found with ID: ${request.doPickOrderId}") | ||||
| } | } | ||||
| val doPickOrderLineRecords = doPickOrderLineRecordRepository.findByDoPickOrderIdAndDeletedFalse(request.doPickOrderId) | |||||
| val doPickOrderLineRecords = doPickOrderLineRecordRepository.findByDoPickOrderId(doPickOrderRecord.recordId) | |||||
| val deliveryOrderIds = doPickOrderLineRecords.mapNotNull { it.doOrderId }.distinct() | val deliveryOrderIds = doPickOrderLineRecords.mapNotNull { it.doOrderId }.distinct() | ||||
| if(deliveryOrderIds.isEmpty()){ | if(deliveryOrderIds.isEmpty()){ | ||||
| @@ -998,7 +994,11 @@ open class DeliveryOrderService( | |||||
| } | } | ||||
| params["shopPurchaseOrderNo"] = doPickOrderRecord.deliveryOrderCode ?: cartonLabelInfo[0].code | |||||
| params["shopPurchaseOrderNo"] = if (deliveryOrderIds.size > 0) { | |||||
| "請查閲送貨單(採購單共${deliveryOrderIds.size}張)" | |||||
| } else { | |||||
| doPickOrderRecord.deliveryOrderCode ?: cartonLabelInfo[0].code | |||||
| } | |||||
| params["deliveryNoteCode"] = doPickOrderRecord.deliveryNoteCode ?: "" | params["deliveryNoteCode"] = doPickOrderRecord.deliveryNoteCode ?: "" | ||||
| params["shopAddress"] = cartonLabelInfo[0].shopAddress ?: "" | params["shopAddress"] = cartonLabelInfo[0].shopAddress ?: "" | ||||
| params["shopName"] = doPickOrderRecord.shopName ?: cartonLabelInfo[0].shopName ?: "" | params["shopName"] = doPickOrderRecord.shopName ?: cartonLabelInfo[0].shopName ?: "" | ||||
| @@ -46,6 +46,9 @@ import com.ffii.fpsms.modules.deliveryOrder.entity.DeliveryOrderRepository | |||||
| import com.ffii.fpsms.modules.deliveryOrder.entity.DoPickOrderLineRecordRepository | import com.ffii.fpsms.modules.deliveryOrder.entity.DoPickOrderLineRecordRepository | ||||
| import com.ffii.fpsms.modules.deliveryOrder.entity.DoPickOrderLineRecord | import com.ffii.fpsms.modules.deliveryOrder.entity.DoPickOrderLineRecord | ||||
| import org.springframework.context.annotation.Lazy | import org.springframework.context.annotation.Lazy | ||||
| import com.ffii.fpsms.modules.pickOrder.entity.PickOrderLineRepository | |||||
| import com.ffii.fpsms.modules.deliveryOrder.web.models.TicketReleaseTableResponse | |||||
| @Service | @Service | ||||
| open class DoPickOrderService( | open class DoPickOrderService( | ||||
| private val doPickOrderRepository: DoPickOrderRepository, | private val doPickOrderRepository: DoPickOrderRepository, | ||||
| @@ -56,8 +59,8 @@ open class DoPickOrderService( | |||||
| private val truckRepository: TruckRepository, | private val truckRepository: TruckRepository, | ||||
| private val doPickOrderLineRepository: DoPickOrderLineRepository, | private val doPickOrderLineRepository: DoPickOrderLineRepository, | ||||
| @Lazy private val deliveryOrderRepository: DeliveryOrderRepository, | @Lazy private val deliveryOrderRepository: DeliveryOrderRepository, | ||||
| private val doPickOrderLineRecordRepository: DoPickOrderLineRecordRepository | |||||
| private val doPickOrderLineRecordRepository: DoPickOrderLineRecordRepository, | |||||
| private val pickOrderLineRepository: PickOrderLineRepository | |||||
| ) { | ) { | ||||
| open fun findReleasedDoPickOrders(): List<DoPickOrder> { | open fun findReleasedDoPickOrders(): List<DoPickOrder> { | ||||
| return doPickOrderRepository.findByTicketStatusIn( | return doPickOrderRepository.findByTicketStatusIn( | ||||
| @@ -598,7 +601,121 @@ open class DoPickOrderService( | |||||
| } | } | ||||
| } | } | ||||
| open fun getTicketReleaseTable(): List<DoPickOrder>{ | |||||
| return doPickOrderRepository.findAllByDeletedFalseOrderByTicketReleaseTimeDesc() | |||||
| open fun getTicketReleaseTable(startDate: LocalDate? = null, endDate: LocalDate? = null): List<TicketReleaseTableResponse> { | |||||
| val doPickOrders = if (startDate != null && endDate != null) { | |||||
| doPickOrderRepository.findAllByDeletedFalseAndRequiredDeliveryDateBetween(startDate, endDate) | |||||
| } else { | |||||
| doPickOrderRepository.findAllByDeletedFalseOrderByTicketReleaseTimeDesc() | |||||
| } | |||||
| val doPickOrderRecords = if (startDate != null && endDate != null) { | |||||
| doPickOrderRecordRepository.findAllByDeletedFalseAndRequiredDeliveryDateBetween(startDate, endDate) | |||||
| } else { | |||||
| doPickOrderRecordRepository.findAllByDeletedFalseOrderByTicketReleaseTimeDesc() | |||||
| } | |||||
| val doPickOrderResponses = doPickOrders.map { doPickOrder -> | |||||
| TicketReleaseTableResponse( | |||||
| id = doPickOrder.id, | |||||
| storeId = doPickOrder.storeId, | |||||
| ticketNo = doPickOrder.ticketNo, | |||||
| pickOrderId = doPickOrder.pickOrderId, | |||||
| doOrderId = doPickOrder.doOrderId, | |||||
| pickOrderCode = doPickOrder.pickOrderCode, | |||||
| deliveryOrderCode = doPickOrder.deliveryOrderCode, | |||||
| loadingSequence = doPickOrder.loadingSequence, | |||||
| ticketStatus = doPickOrder.ticketStatus?.name, | |||||
| truckId = doPickOrder.truckId, | |||||
| truckDepartureTime = doPickOrder.truckDepartureTime, | |||||
| shopId = doPickOrder.shopId, | |||||
| handledBy = doPickOrder.handledBy, | |||||
| ticketReleaseTime = doPickOrder.ticketReleaseTime, | |||||
| ticketCompleteDateTime = doPickOrder.ticketCompleteDateTime, | |||||
| truckLanceCode = doPickOrder.truckLanceCode, | |||||
| shopCode = doPickOrder.shopCode, | |||||
| shopName = doPickOrder.shopName, | |||||
| requiredDeliveryDate = doPickOrder.requiredDeliveryDate, | |||||
| handlerName = doPickOrder.handlerName, | |||||
| numberOfFGItems = countFGItems(doPickOrder) | |||||
| ) | |||||
| } | |||||
| val doPickOrderRecordResponses = doPickOrderRecords.map { record -> | |||||
| TicketReleaseTableResponse( | |||||
| id = record.id, | |||||
| storeId = record.storeId, | |||||
| ticketNo = record.ticketNo, | |||||
| pickOrderId = record.pickOrderId, | |||||
| doOrderId = record.doOrderId, | |||||
| pickOrderCode = record.pickOrderCode, | |||||
| deliveryOrderCode = record.deliveryOrderCode, | |||||
| loadingSequence = record.loadingSequence, | |||||
| ticketStatus = record.ticketStatus?.name, | |||||
| truckId = record.truckId, | |||||
| truckDepartureTime = record.truckDepartureTime, | |||||
| shopId = record.shopId, | |||||
| handledBy = record.handledBy, | |||||
| ticketReleaseTime = record.ticketReleaseTime, | |||||
| ticketCompleteDateTime = record.ticketCompleteDateTime, | |||||
| truckLanceCode = record.truckLanceCode, | |||||
| shopCode = record.shopCode, | |||||
| shopName = record.shopName, | |||||
| requiredDeliveryDate = record.requiredDeliveryDate, | |||||
| handlerName = record.handlerName, | |||||
| numberOfFGItems = countFGItemsFromRecord(record) | |||||
| ) | |||||
| } | |||||
| return (doPickOrderResponses + doPickOrderRecordResponses).sortedByDescending { it.ticketReleaseTime?: LocalDateTime.MIN } | |||||
| } | |||||
| private fun countFGItems(doPickOrder: DoPickOrder): Int { | |||||
| val doPickOrderLines = doPickOrderLineRepository.findByDoPickOrderIdAndDeletedFalse(doPickOrder.id!!) | |||||
| val pickOrderIds = doPickOrderLines.mapNotNull { it.pickOrderId }.distinct() | |||||
| if (pickOrderIds.isEmpty()) { | |||||
| val directPickOrderId = doPickOrder.pickOrderId | |||||
| if (directPickOrderId != null) { | |||||
| val pickOrderLines = pickOrderLineRepository.findAllByPickOrderId(directPickOrderId) | |||||
| return pickOrderLines.size | |||||
| } | |||||
| return 0 | |||||
| } | |||||
| val allPickOrderLines = pickOrderIds.flatMap { pickOrderId -> | |||||
| pickOrderLineRepository.findAllByPickOrderId(pickOrderId) | |||||
| } | |||||
| return allPickOrderLines.size | |||||
| } | |||||
| private fun countFGItemsFromRecord(doPickOrderRecord: DoPickOrderRecord): Int { | |||||
| // RECORD_ID FROM DO_PICK_ORDER_RECORD TABLE | |||||
| val recordId = doPickOrderRecord.recordId | |||||
| if (recordId == null) { | |||||
| return 0 | |||||
| } | |||||
| // DO_PICK_ORDER_ID FROM DO_PICK_ORDER_LINE_RECORD TABLE | |||||
| val doPickOrderLineRecords = doPickOrderLineRecordRepository.findByDoPickOrderIdAndDeletedFalse(recordId) | |||||
| if (doPickOrderLineRecords.isEmpty()) { | |||||
| return 0 | |||||
| } | |||||
| // RECORD_ID FROM DO_PICK_ORDER_LINE_RECORD TABLE | |||||
| // POID FROM PICK_ORDER_LINE TABLE | |||||
| val pickOrderIds = doPickOrderLineRecords.mapNotNull { it.pickOrderId }.distinct() | |||||
| if (pickOrderIds.isEmpty()) { | |||||
| return 0 | |||||
| } | |||||
| val allPickOrderLines = pickOrderIds.flatMap { pickOrderId -> | |||||
| val lines = pickOrderLineRepository.findAllByPickOrderId(pickOrderId) | |||||
| lines | |||||
| } | |||||
| return allPickOrderLines.size | |||||
| } | } | ||||
| }// 类结束 | }// 类结束 | ||||
| @@ -92,7 +92,11 @@ fun getBatchReleaseProgress(@PathVariable jobId: String): MessageResponse { | |||||
| } | } | ||||
| @GetMapping("/ticket-release-table") | @GetMapping("/ticket-release-table") | ||||
| fun getTicketReleaseTable(): List<DoPickOrder> { | |||||
| return doPickOrderService.getTicketReleaseTable() | |||||
| fun getTicketReleaseTable( | |||||
| @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) startDate: LocalDate?, | |||||
| @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) endDate: LocalDate? | |||||
| ): List<TicketReleaseTableResponse> { | |||||
| return doPickOrderService.getTicketReleaseTable(startDate, endDate) | |||||
| } | } | ||||
| } | } | ||||
| @@ -0,0 +1,29 @@ | |||||
| package com.ffii.fpsms.modules.deliveryOrder.web.models | |||||
| import java.time.LocalDateTime | |||||
| import java.time.LocalDate | |||||
| import java.time.LocalTime | |||||
| data class TicketReleaseTableResponse( | |||||
| val id: Long?, | |||||
| val storeId: String?, | |||||
| val ticketNo: String?, | |||||
| val pickOrderId: Long?, | |||||
| val doOrderId: Long?, | |||||
| val pickOrderCode: String?, | |||||
| val deliveryOrderCode: String?, | |||||
| val loadingSequence: Int?, | |||||
| val ticketStatus: String?, | |||||
| val truckId: Long?, | |||||
| val truckDepartureTime: LocalTime?, | |||||
| val shopId: Long?, | |||||
| val handledBy: Long?, | |||||
| val ticketReleaseTime: LocalDateTime?, | |||||
| val ticketCompleteDateTime: LocalDateTime?, | |||||
| val truckLanceCode: String?, | |||||
| val shopCode: String?, | |||||
| val shopName: String?, | |||||
| val requiredDeliveryDate: LocalDate?, | |||||
| val handlerName: String?, | |||||
| val numberOfFGItems: Int = 0 | |||||
| ) | |||||
| @@ -1,7 +1,7 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!-- Created with Jaspersoft Studio version 6.21.3.final using JasperReports Library version 6.21.3-4a3078d20785ebe464f18037d738d12fc98c13cf --> | <!-- Created with Jaspersoft Studio version 6.21.3.final using JasperReports Library version 6.21.3-4a3078d20785ebe464f18037d738d12fc98c13cf --> | ||||
| <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" uuid="36f9d415-527f-4152-b7b0-eea81fe06f73"> | <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" uuid="36f9d415-527f-4152-b7b0-eea81fe06f73"> | ||||
| <parameter name="deliveryOrderCode" class="java.lang.String"> | |||||
| <parameter name="deliveryNoteCode" class="java.lang.String"> | |||||
| <parameterDescription><![CDATA[DeliveryOrderCode]]></parameterDescription> | <parameterDescription><![CDATA[DeliveryOrderCode]]></parameterDescription> | ||||
| </parameter> | </parameter> | ||||
| <parameter name="shopName" class="java.lang.String"/> | <parameter name="shopName" class="java.lang.String"/> | ||||
| @@ -14,7 +14,7 @@ | |||||
| <parameter name="dnTitle" class="java.lang.String"/> | <parameter name="dnTitle" class="java.lang.String"/> | ||||
| <parameter name="colQty" class="java.lang.String"/> | <parameter name="colQty" class="java.lang.String"/> | ||||
| <parameter name="totalCartonTitle" class="java.lang.String"/> | <parameter name="totalCartonTitle" class="java.lang.String"/> | ||||
| <parameter name="deliveryOrderCodeTitle" class="java.lang.String"/> | |||||
| <parameter name="deliveryNoteCodeTitle" class="java.lang.String"/> | |||||
| <queryString> | <queryString> | ||||
| <![CDATA[]]> | <![CDATA[]]> | ||||
| </queryString> | </queryString> | ||||
| @@ -33,7 +33,7 @@ | |||||
| <band/> | <band/> | ||||
| </title> | </title> | ||||
| <pageHeader> | <pageHeader> | ||||
| <band height="186"> | |||||
| <band height="155"> | |||||
| <staticText> | <staticText> | ||||
| <reportElement x="430" y="0" width="40" height="18" uuid="3381622a-7eda-4649-88b8-650da96c2a77"> | <reportElement x="430" y="0" width="40" height="18" uuid="3381622a-7eda-4649-88b8-650da96c2a77"> | ||||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | <property name="com.jaspersoft.studio.unit.y" value="px"/> | ||||
| @@ -119,10 +119,10 @@ | |||||
| </textElement> | </textElement> | ||||
| <text><![CDATA[地址:]]></text> | <text><![CDATA[地址:]]></text> | ||||
| </staticText> | </staticText> | ||||
| <textField> | |||||
| <textField textAdjust="ScaleFont"> | |||||
| <reportElement x="70" y="50" width="465" height="23" uuid="89e79bce-bd39-48e6-b114-c11b4bcc5c9f"/> | <reportElement x="70" y="50" width="465" height="23" uuid="89e79bce-bd39-48e6-b114-c11b4bcc5c9f"/> | ||||
| <textElement verticalAlignment="Middle"> | <textElement verticalAlignment="Middle"> | ||||
| <font fontName="微軟正黑體" size="13" isBold="true"/> | |||||
| <font fontName="微軟正黑體" size="16" isBold="true"/> | |||||
| </textElement> | </textElement> | ||||
| <textFieldExpression><![CDATA[$P{shopAddress}]]></textFieldExpression> | <textFieldExpression><![CDATA[$P{shopAddress}]]></textFieldExpression> | ||||
| </textField> | </textField> | ||||
| @@ -167,7 +167,7 @@ | |||||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | <textElement textAlignment="Left" verticalAlignment="Middle"> | ||||
| <font fontName="微軟正黑體" size="12"/> | <font fontName="微軟正黑體" size="12"/> | ||||
| </textElement> | </textElement> | ||||
| <text><![CDATA[成品提料編號:]]></text> | |||||
| <text><![CDATA[成品提貨單號:]]></text> | |||||
| </staticText> | </staticText> | ||||
| <staticText> | <staticText> | ||||
| <reportElement x="5" y="130" width="110" height="18" uuid="111c5f73-f543-4006-931b-27479ccca816"> | <reportElement x="5" y="130" width="110" height="18" uuid="111c5f73-f543-4006-931b-27479ccca816"> | ||||
| @@ -177,14 +177,14 @@ | |||||
| <textElement textAlignment="Left" verticalAlignment="Top"> | <textElement textAlignment="Left" verticalAlignment="Top"> | ||||
| <font fontName="微軟正黑體" size="12"/> | <font fontName="微軟正黑體" size="12"/> | ||||
| </textElement> | </textElement> | ||||
| <text><![CDATA[店鋪採購單編號:]]></text> | |||||
| <text><![CDATA[店鋪採購單號:]]></text> | |||||
| </staticText> | </staticText> | ||||
| <textField> | |||||
| <reportElement x="115" y="130" width="425" height="54" uuid="7171ba0b-1a78-4ff6-a765-7b2b543ab0bc"> | |||||
| <textField textAdjust="StretchHeight"> | |||||
| <reportElement x="115" y="130" width="425" height="18" uuid="7171ba0b-1a78-4ff6-a765-7b2b543ab0bc"> | |||||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | <property name="com.jaspersoft.studio.unit.height" value="px"/> | ||||
| </reportElement> | </reportElement> | ||||
| <textElement verticalAlignment="Top"> | |||||
| <font fontName="微軟正黑體"/> | |||||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||||
| <font fontName="微軟正黑體" size="12"/> | |||||
| </textElement> | </textElement> | ||||
| <textFieldExpression><![CDATA[$P{ShopPurchaseOrderNo}]]></textFieldExpression> | <textFieldExpression><![CDATA[$P{ShopPurchaseOrderNo}]]></textFieldExpression> | ||||
| </textField> | </textField> | ||||
| @@ -193,7 +193,7 @@ | |||||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | <property name="com.jaspersoft.studio.unit.height" value="px"/> | ||||
| </reportElement> | </reportElement> | ||||
| <textElement verticalAlignment="Middle"> | <textElement verticalAlignment="Middle"> | ||||
| <font fontName="微軟正黑體"/> | |||||
| <font fontName="微軟正黑體" size="12"/> | |||||
| </textElement> | </textElement> | ||||
| <textFieldExpression><![CDATA[$P{FGPickOrderNo}]]></textFieldExpression> | <textFieldExpression><![CDATA[$P{FGPickOrderNo}]]></textFieldExpression> | ||||
| </textField> | </textField> | ||||
| @@ -202,7 +202,7 @@ | |||||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | <property name="com.jaspersoft.studio.unit.height" value="px"/> | ||||
| </reportElement> | </reportElement> | ||||
| <textElement verticalAlignment="Middle"> | <textElement verticalAlignment="Middle"> | ||||
| <font fontName="微軟正黑體"/> | |||||
| <font fontName="微軟正黑體" size="12"/> | |||||
| </textElement> | </textElement> | ||||
| <textFieldExpression><![CDATA[$P{deliveryDate}]]></textFieldExpression> | <textFieldExpression><![CDATA[$P{deliveryDate}]]></textFieldExpression> | ||||
| </textField> | </textField> | ||||
| @@ -211,7 +211,7 @@ | |||||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | <property name="com.jaspersoft.studio.unit.height" value="px"/> | ||||
| </reportElement> | </reportElement> | ||||
| <textElement verticalAlignment="Middle"> | <textElement verticalAlignment="Middle"> | ||||
| <font fontName="微軟正黑體"/> | |||||
| <font fontName="微軟正黑體" size="12"/> | |||||
| </textElement> | </textElement> | ||||
| <textFieldExpression><![CDATA[$P{numOfCarton}]]></textFieldExpression> | <textFieldExpression><![CDATA[$P{numOfCarton}]]></textFieldExpression> | ||||
| </textField> | </textField> | ||||
| @@ -220,7 +220,7 @@ | |||||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | <property name="com.jaspersoft.studio.unit.height" value="px"/> | ||||
| </reportElement> | </reportElement> | ||||
| <textElement verticalAlignment="Middle"> | <textElement verticalAlignment="Middle"> | ||||
| <font fontName="微軟正黑體"/> | |||||
| <font fontName="微軟正黑體" size="12"/> | |||||
| </textElement> | </textElement> | ||||
| <textFieldExpression><![CDATA[$P{totalCartonTitle}]]></textFieldExpression> | <textFieldExpression><![CDATA[$P{totalCartonTitle}]]></textFieldExpression> | ||||
| </textField> | </textField> | ||||
| @@ -229,18 +229,18 @@ | |||||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | <property name="com.jaspersoft.studio.unit.height" value="px"/> | ||||
| </reportElement> | </reportElement> | ||||
| <textElement verticalAlignment="Middle"> | <textElement verticalAlignment="Middle"> | ||||
| <font fontName="微軟正黑體"/> | |||||
| <font fontName="微軟正黑體" size="12"/> | |||||
| </textElement> | </textElement> | ||||
| <textFieldExpression><![CDATA[$P{deliveryOrderCode}]]></textFieldExpression> | |||||
| <textFieldExpression><![CDATA[$P{deliveryNoteCode}]]></textFieldExpression> | |||||
| </textField> | </textField> | ||||
| <textField> | <textField> | ||||
| <reportElement x="280" y="110" width="110" height="18" uuid="f0f2f87f-26cb-4fad-9c78-9d934191fad9"> | <reportElement x="280" y="110" width="110" height="18" uuid="f0f2f87f-26cb-4fad-9c78-9d934191fad9"> | ||||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | <property name="com.jaspersoft.studio.unit.height" value="px"/> | ||||
| </reportElement> | </reportElement> | ||||
| <textElement verticalAlignment="Middle"> | <textElement verticalAlignment="Middle"> | ||||
| <font fontName="微軟正黑體"/> | |||||
| <font fontName="微軟正黑體" size="12"/> | |||||
| </textElement> | </textElement> | ||||
| <textFieldExpression><![CDATA[$P{deliveryOrderCodeTitle}]]></textFieldExpression> | |||||
| <textFieldExpression><![CDATA[$P{deliveryNoteCodeTitle}]]></textFieldExpression> | |||||
| </textField> | </textField> | ||||
| </band> | </band> | ||||
| </pageHeader> | </pageHeader> | ||||
| @@ -269,11 +269,11 @@ | |||||
| <text><![CDATA[路綫]]></text> | <text><![CDATA[路綫]]></text> | ||||
| </staticText> | </staticText> | ||||
| <staticText> | <staticText> | ||||
| <reportElement x="150" y="4" width="80" height="18" uuid="65c27cc0-f806-4930-930c-6b3fd632a52f"> | |||||
| <reportElement x="150" y="5" width="80" height="18" uuid="65c27cc0-f806-4930-930c-6b3fd632a52f"> | |||||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | <property name="com.jaspersoft.studio.unit.y" value="px"/> | ||||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | <property name="com.jaspersoft.studio.unit.height" value="px"/> | ||||
| </reportElement> | </reportElement> | ||||
| <textElement textAlignment="Left"> | |||||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||||
| <font fontName="微軟正黑體" size="12"/> | <font fontName="微軟正黑體" size="12"/> | ||||
| </textElement> | </textElement> | ||||
| <text><![CDATA[貨品編號]]></text> | <text><![CDATA[貨品編號]]></text> | ||||
| @@ -283,7 +283,7 @@ | |||||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | <property name="com.jaspersoft.studio.unit.y" value="px"/> | ||||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | <property name="com.jaspersoft.studio.unit.height" value="px"/> | ||||
| </reportElement> | </reportElement> | ||||
| <textElement textAlignment="Left"> | |||||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||||
| <font fontName="微軟正黑體" size="12"/> | <font fontName="微軟正黑體" size="12"/> | ||||
| </textElement> | </textElement> | ||||
| <text><![CDATA[貨品名稱]]></text> | <text><![CDATA[貨品名稱]]></text> | ||||
| @@ -315,7 +315,7 @@ | |||||
| <detail> | <detail> | ||||
| <band height="42"> | <band height="42"> | ||||
| <textField> | <textField> | ||||
| <reportElement x="0" y="1" width="40" height="18" uuid="ae87b739-dadf-452a-bc35-8c2da1a6a9a8"> | |||||
| <reportElement x="0" y="0" width="40" height="18" uuid="ae87b739-dadf-452a-bc35-8c2da1a6a9a8"> | |||||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | <property name="com.jaspersoft.studio.unit.height" value="px"/> | ||||
| </reportElement> | </reportElement> | ||||
| <textElement verticalAlignment="Middle"> | <textElement verticalAlignment="Middle"> | ||||
| @@ -324,7 +324,7 @@ | |||||
| <textFieldExpression><![CDATA[$F{sequenceNumber}]]></textFieldExpression> | <textFieldExpression><![CDATA[$F{sequenceNumber}]]></textFieldExpression> | ||||
| </textField> | </textField> | ||||
| <textField> | <textField> | ||||
| <reportElement x="40" y="1" width="110" height="18" uuid="b4bcfa6c-5d2e-4fba-815a-cc2fccd39213"> | |||||
| <reportElement x="40" y="0" width="110" height="18" uuid="b4bcfa6c-5d2e-4fba-815a-cc2fccd39213"> | |||||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | <property name="com.jaspersoft.studio.unit.height" value="px"/> | ||||
| </reportElement> | </reportElement> | ||||
| <textElement verticalAlignment="Middle"> | <textElement verticalAlignment="Middle"> | ||||
| @@ -351,10 +351,10 @@ | |||||
| <textFieldExpression><![CDATA[$F{qty} + $F{shortName}]]></textFieldExpression> | <textFieldExpression><![CDATA[$F{qty} + $F{shortName}]]></textFieldExpression> | ||||
| </textField> | </textField> | ||||
| <textField> | <textField> | ||||
| <reportElement x="230" y="1" width="240" height="18" uuid="c2b4da75-fdca-4e99-8103-5769dea75841"> | |||||
| <reportElement x="230" y="0" width="230" height="18" uuid="c2b4da75-fdca-4e99-8103-5769dea75841"> | |||||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | <property name="com.jaspersoft.studio.unit.height" value="px"/> | ||||
| </reportElement> | </reportElement> | ||||
| <textElement verticalAlignment="Top"> | |||||
| <textElement verticalAlignment="Middle"> | |||||
| <font fontName="微軟正黑體"/> | <font fontName="微軟正黑體"/> | ||||
| </textElement> | </textElement> | ||||
| <textFieldExpression><![CDATA[$F{itemName} + "(" + $F{uom} + ")"]]></textFieldExpression> | <textFieldExpression><![CDATA[$F{itemName} + "(" + $F{uom} + ")"]]></textFieldExpression> | ||||
| @@ -365,7 +365,7 @@ | |||||
| </reportElement> | </reportElement> | ||||
| </line> | </line> | ||||
| <textField> | <textField> | ||||
| <reportElement x="230" y="18" width="240" height="18" uuid="af701932-2e78-47d4-a131-b668200dc376"> | |||||
| <reportElement x="230" y="18" width="230" height="18" uuid="af701932-2e78-47d4-a131-b668200dc376"> | |||||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | <property name="com.jaspersoft.studio.unit.height" value="px"/> | ||||
| </reportElement> | </reportElement> | ||||
| <textElement verticalAlignment="Middle"> | <textElement verticalAlignment="Middle"> | ||||