Pārlūkot izejas kodu

Site-wide English improvement. Reports now download in your selected language

debrand
Harry Groves pirms 5 dienas
vecāks
revīzija
1afee174d3
57 mainītis faili ar 1598 papildinājumiem un 1195 dzēšanām
  1. +9
    -1
      src/main/java/com/ffii/core/utils/PdfUtils.java
  2. +13
    -0
      src/main/java/com/ffii/core/utils/ReportMessages.kt
  3. +17
    -0
      src/main/java/com/ffii/core/utils/UiText.kt
  4. +24
    -0
      src/main/java/com/ffii/fpsms/config/DefaultChineseLocale.java
  5. +17
    -15
      src/main/java/com/ffii/fpsms/modules/jobOrder/service/OnPackTemplateFileService.kt
  6. +27
    -25
      src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt
  7. +17
    -15
      src/main/java/com/ffii/fpsms/modules/jobOrder/service/PsScheduleRuleService.kt
  8. +7
    -5
      src/main/java/com/ffii/fpsms/modules/jobOrder/web/PlasticBagPrinterController.kt
  9. +3
    -1
      src/main/java/com/ffii/fpsms/modules/master/service/ItemDefaultShelfLifeService.kt
  10. +13
    -11
      src/main/java/com/ffii/fpsms/modules/master/service/ProductionScheduleService.kt
  11. +3
    -1
      src/main/java/com/ffii/fpsms/modules/monitoring/service/LabelPrinterMonitorService.kt
  12. +3
    -1
      src/main/java/com/ffii/fpsms/modules/monitoring/service/PrinterMonitorService.kt
  13. +17
    -16
      src/main/java/com/ffii/fpsms/modules/pickOrder/service/TruckLaneScheduleApplier.kt
  14. +9
    -7
      src/main/java/com/ffii/fpsms/modules/pickOrder/service/TruckLaneScheduleExcelSupport.kt
  15. +38
    -36
      src/main/java/com/ffii/fpsms/modules/pickOrder/service/TruckLaneScheduleService.kt
  16. +37
    -35
      src/main/java/com/ffii/fpsms/modules/pickOrder/service/TruckService.kt
  17. +3
    -1
      src/main/java/com/ffii/fpsms/modules/pickOrder/web/TruckLaneScheduleController.kt
  18. +27
    -25
      src/main/java/com/ffii/fpsms/modules/report/service/LotExpiryAlertExcelBuilder.kt
  19. +7
    -3
      src/main/java/com/ffii/fpsms/modules/report/service/LotExpiryAlertReportService.kt
  20. +9
    -2
      src/main/java/com/ffii/fpsms/modules/report/service/ReportService.kt
  21. +17
    -15
      src/main/java/com/ffii/fpsms/modules/report/service/StockLedgerPdf.kt
  22. +9
    -7
      src/main/java/com/ffii/fpsms/modules/report/service/StockLedgerReportService.kt
  23. +9
    -7
      src/main/java/com/ffii/fpsms/modules/report/service/StockLotOnhandReportService.kt
  24. +34
    -16
      src/main/java/com/ffii/fpsms/modules/report/service/StockTakeVarianceReportService.kt
  25. +13
    -11
      src/main/java/com/ffii/fpsms/modules/report/web/DoInventoryUomMismatchReportController.kt
  26. +21
    -19
      src/main/java/com/ffii/fpsms/modules/report/web/DoUserPickAuditReportController.kt
  27. +15
    -13
      src/main/java/com/ffii/fpsms/modules/report/web/FGStockOutTraceabilityReportController.kt
  28. +24
    -22
      src/main/java/com/ffii/fpsms/modules/report/web/ItemQcFailReportController.kt
  29. +15
    -13
      src/main/java/com/ffii/fpsms/modules/report/web/MaterialStockOutTraceabilityReportController.kt
  30. +25
    -23
      src/main/java/com/ffii/fpsms/modules/report/web/ReportController.kt
  31. +38
    -36
      src/main/java/com/ffii/fpsms/modules/report/web/SemiFGProductionAnalysisReportController.kt
  32. +40
    -38
      src/main/java/com/ffii/fpsms/modules/report/web/StockItemConsumptionTrendReportController.kt
  33. +11
    -9
      src/main/java/com/ffii/fpsms/modules/report/web/StockLedgerReportController.kt
  34. +21
    -19
      src/main/java/com/ffii/fpsms/modules/report/web/StockLotOnhandReportController.kt
  35. +22
    -20
      src/main/java/com/ffii/fpsms/modules/report/web/StockTakeVarianceReportController.kt
  36. +3
    -1
      src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt
  37. +15
    -17
      src/main/resources/DeliveryNote/DeliveryNoteCartonLabelsPDF.jrxml
  38. +36
    -36
      src/main/resources/DeliveryNote/DeliveryNotePDF.jrxml
  39. +22
    -22
      src/main/resources/DeliveryNote/TruckRoutingSummaryPDF.jrxml
  40. +15
    -19
      src/main/resources/FGStockInLabel/FGStockInLabel.jrxml
  41. +44
    -44
      src/main/resources/PickRecord/PickRecordPDF.jrxml
  42. +134
    -0
      src/main/resources/i18n/reports.properties
  43. +134
    -0
      src/main/resources/i18n/reports_en.properties
  44. +43
    -43
      src/main/resources/jasper/FGDeliveryReport.jrxml
  45. +46
    -46
      src/main/resources/jasper/FGStockOutTraceabilityReport.jrxml
  46. +43
    -43
      src/main/resources/jasper/ItemQCReport.jrxml
  47. +43
    -43
      src/main/resources/jasper/MaterialStockOutTraceability.jrxml
  48. +67
    -67
      src/main/resources/jasper/SemiFGProductionAnalysisReport.jrxml
  49. +42
    -43
      src/main/resources/jasper/StockBalanceReport.jrxml
  50. +52
    -57
      src/main/resources/jasper/StockInTraceabilityReport.jrxml
  51. +67
    -67
      src/main/resources/jasper/StockItemConsumptionTrendReport.jrxml
  52. +45
    -46
      src/main/resources/jasper/StockLedgarReport.jrxml
  53. +37
    -37
      src/main/resources/jasper/StockTakeVarianceReport.jrxml
  54. +24
    -24
      src/main/resources/qrCodeLabel/poItemPDF.jrxml
  55. +24
    -24
      src/main/resources/qrCodeLabel/poItemPDF_v2.jrxml
  56. +24
    -24
      src/main/resources/qrCodeLabel/poItemPDF_v3.jrxml
  57. +24
    -24
      src/main/resources/qrCodeLabel/poItemPDF_v4.jrxml

+ 9
- 1
src/main/java/com/ffii/core/utils/PdfUtils.java Parādīt failu

@@ -10,10 +10,13 @@ import java.util.List;

import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.data.JRMapCollectionDataSource;

import java.util.HashMap;

public class PdfUtils {

public static JasperReport loadJasperReport(String path) throws Exception {
@@ -34,7 +37,12 @@ public class PdfUtils {
} else {
dataSources = new JRBeanCollectionDataSource(loopList);
}
JasperPrint jasperPrint = JasperFillManager.fillReport(report, params, dataSources);
Map<String, Object> filled = new HashMap<>();
if (params != null) {
filled.putAll(params);
}
filled.put(JRParameter.REPORT_RESOURCE_BUNDLE, ReportMessages.bundle());
JasperPrint jasperPrint = JasperFillManager.fillReport(report, filled, dataSources);
return jasperPrint;
}


+ 13
- 0
src/main/java/com/ffii/core/utils/ReportMessages.kt Parādīt failu

@@ -0,0 +1,13 @@
package com.ffii.core.utils

import java.util.Locale
import java.util.ResourceBundle

/** Jasper label bundle for the current request locale. Root bundle is Chinese. */
object ReportMessages {
@JvmStatic
fun bundle(): ResourceBundle {
val locale = if (UiText.isEnglish()) Locale.ENGLISH else Locale.CHINESE
return ResourceBundle.getBundle("i18n.reports", locale)
}
}

+ 17
- 0
src/main/java/com/ffii/core/utils/UiText.kt Parādīt failu

@@ -0,0 +1,17 @@
package com.ffii.core.utils

import org.springframework.context.i18n.LocaleContextHolder

/**
* User-facing copy for the request locale.
* Chinese is the default. English is used only when the request language is English.
* Do not use this for values stored in the database or compared with stored data.
*/
object UiText {
@JvmStatic
fun isEnglish(): Boolean =
LocaleContextHolder.getLocale().language.equals("en", ignoreCase = true)

@JvmStatic
fun t(zh: String, en: String): String = if (isEnglish()) en else zh
}

+ 24
- 0
src/main/java/com/ffii/fpsms/config/DefaultChineseLocale.java Parādīt failu

@@ -0,0 +1,24 @@
package com.ffii.fpsms.config;

import java.util.Locale;

import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;

/**
* The MVC config already creates {@code localeResolver}. A second bean with that
* name is rejected. This sets the existing resolver's default to Chinese when
* the request has no Accept-Language header.
*/
@Component
public class DefaultChineseLocale implements BeanPostProcessor {

@Override
public Object postProcessAfterInitialization(Object bean, String beanName) {
if (bean instanceof AcceptHeaderLocaleResolver resolver && "localeResolver".equals(beanName)) {
resolver.setDefaultLocale(Locale.CHINESE);
}
return bean;
}
}

+ 17
- 15
src/main/java/com/ffii/fpsms/modules/jobOrder/service/OnPackTemplateFileService.kt Parādīt failu

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

import com.ffii.core.utils.UiText

import com.ffii.core.support.JdbcDao
import com.ffii.fpsms.modules.jobOrder.entity.OnPackTemplateFile
import com.ffii.fpsms.modules.jobOrder.entity.OnPackTemplateFileRepository
@@ -67,15 +69,15 @@ open class OnPackTemplateFileService(
open fun upload(machineRaw: String, itemCodeRaw: String, files: List<MultipartFile>): OnPackTemplateUploadResponse {
val machine = normalizeMachine(machineRaw)
val itemCode = normalizeItemCode(itemCodeRaw)
require(files.isNotEmpty()) { "請選擇要上傳的檔案(.image / .bmp / .job)" }
require(files.isNotEmpty()) { UiText.t("請選擇要上傳的檔案(.image / .bmp / .job)", "Choose a file to upload (.image / .bmp / .job)") }
val saved = mutableListOf<String>()
files.forEach { part ->
if (part.isEmpty) return@forEach
val original = part.originalFilename ?: part.name
val storedName = storedFileName(machine, itemCode, original)
val bytes = part.bytes
require(bytes.isNotEmpty()) { "空檔案:$original" }
require(bytes.size <= MAX_BYTES) { "檔案過大(上限 ${MAX_BYTES / (1024 * 1024)}MB):$original" }
require(bytes.isNotEmpty()) { UiText.t("空檔案:", "Empty file: ") + original }
require(bytes.size <= MAX_BYTES) { UiText.t("檔案過大(上限 ", "File is too large (limit ") + (MAX_BYTES / (1024 * 1024)) + "MB):" + original }
val row = try {
repository.findByMachineAndItemCodeIgnoreCaseAndFileNameIgnoreCase(
machine,
@@ -88,7 +90,7 @@ open class OnPackTemplateFileService(
}
} catch (e: DataAccessException) {
throw IllegalArgumentException(
"無法儲存 OnPack 模板。請重啟後端以執行 Liquibase(建立 onpack_template_file)。",
UiText.t("無法儲存 OnPack 模板。請重啟後端以執行 Liquibase(建立 onpack_template_file)。", "Could not save the OnPack template. Restart the backend so Liquibase can create onpack_template_file."),
e,
)
}
@@ -102,13 +104,13 @@ open class OnPackTemplateFileService(
repository.save(row)
} catch (e: DataAccessException) {
throw IllegalArgumentException(
"無法儲存 OnPack 模板。請重啟後端以執行 Liquibase(建立 onpack_template_file)。",
UiText.t("無法儲存 OnPack 模板。請重啟後端以執行 Liquibase(建立 onpack_template_file)。", "Could not save the OnPack template. Restart the backend so Liquibase can create onpack_template_file."),
e,
)
}
saved.add(storedName)
}
require(saved.isNotEmpty()) { "沒有可儲存的檔案" }
require(saved.isNotEmpty()) { UiText.t("沒有可儲存的檔案", "There is no file to save") }
try {
ensureOnPackQrRow(itemCode, machine, saved)
} catch (e: DataAccessException) {
@@ -120,10 +122,10 @@ open class OnPackTemplateFileService(
@Transactional
open fun softDelete(id: Long) {
val row = try {
repository.findById(id).orElseThrow { IllegalArgumentException("找不到該模板檔") }
repository.findById(id).orElseThrow { IllegalArgumentException(UiText.t("找不到該模板檔", "Template file not found")) }
} catch (e: DataAccessException) {
throw IllegalArgumentException(
"無法刪除 OnPack 模板。請重啟後端以執行 Liquibase(建立 onpack_template_file)。",
UiText.t("無法刪除 OnPack 模板。請重啟後端以執行 Liquibase(建立 onpack_template_file)。", "Could not delete the OnPack template. Restart the backend so Liquibase can create onpack_template_file."),
e,
)
}
@@ -241,7 +243,7 @@ open class OnPackTemplateFileService(
mapOf("machine" to machine, "code" to itemCode),
)
} catch (e: DataAccessException) {
throw IllegalStateException("無法儲存品號。請重啟後端以執行 Liquibase(建立 onpack_expiry_item_code)。", e)
throw IllegalStateException(UiText.t("無法儲存品號。請重啟後端以執行 Liquibase(建立 onpack_expiry_item_code)。", "Could not save the item code. Restart the backend so Liquibase can create onpack_expiry_item_code."), e)
}
if (existing.isPresent) {
val row = existing.get()
@@ -285,10 +287,10 @@ open class OnPackTemplateFileService(
mapOf("machine" to machine, "code" to itemCode, "printName" to stored),
)
if (n == 0) {
throw IllegalArgumentException("清單中沒有 $itemCode")
throw IllegalArgumentException(UiText.t("清單中沒有 ", "Item code is not in the list: ") + itemCode)
}
} catch (e: DataAccessException) {
throw IllegalStateException("無法儲存列印名稱。請重啟後端以執行 Liquibase(printName 欄位)。", e)
throw IllegalStateException(UiText.t("無法儲存列印名稱。請重啟後端以執行 Liquibase(printName 欄位)。", "Could not save the print name. Restart the backend so Liquibase can add the printName column."), e)
}
}
if (body.useMinus18 != null) {
@@ -311,7 +313,7 @@ open class OnPackTemplateFileService(
mapOf("machine" to machine, "code" to itemCode),
)
} catch (e: DataAccessException) {
throw IllegalStateException("無法刪除品號。請重啟後端以執行 Liquibase(建立 onpack_expiry_item_code)。", e)
throw IllegalStateException(UiText.t("無法刪除品號。請重啟後端以執行 Liquibase(建立 onpack_expiry_item_code)。", "Could not delete the item code. Restart the backend so Liquibase can create onpack_expiry_item_code."), e)
}
}

@@ -499,13 +501,13 @@ open class OnPackTemplateFileService(
return when (v) {
MACHINE_JUICE, "bmp", "onpack2030", "汁水機" -> MACHINE_JUICE
MACHINE_LEMON, "text", "onpack2030_2", "檸檬機" -> MACHINE_LEMON
else -> throw IllegalArgumentException("machine 必須是 juice(汁水機)或 lemon(檸檬機)")
else -> throw IllegalArgumentException(UiText.t("machine 必須是 juice(汁水機)或 lemon(檸檬機)", "machine must be juice or lemon"))
}
}

fun normalizeItemCode(raw: String): String {
val code = raw.trim().uppercase()
require(ITEM_CODE.matches(code)) { "品號格式不正確:$raw" }
require(ITEM_CODE.matches(code)) { UiText.t("品號格式不正確:", "Invalid item code: ") + raw }
return code
}

@@ -520,7 +522,7 @@ open class OnPackTemplateFileService(

fun storedFileName(machine: String, itemCode: String, originalName: String): String {
val safe = sanitizeFileName(originalName)
?: throw IllegalArgumentException("不支援的檔名(只接受 .image / .bmp / .job):$originalName")
?: throw IllegalArgumentException(UiText.t("不支援的檔名(只接受 .image / .bmp / .job):", "Unsupported file name (only .image / .bmp / .job): ") + originalName)
return if (safe.endsWith(".image", ignoreCase = true)) {
if (machine == MACHINE_LEMON) "${itemCode.uppercase()}.image"
else "${itemCode.lowercase()}.image"


+ 27
- 25
src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt Parādīt failu

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

import com.ffii.core.utils.UiText

import com.ffii.core.support.JdbcDao
import com.ffii.fpsms.modules.common.SettingNames
import com.ffii.fpsms.modules.jobOrder.entity.JobOrder
@@ -348,7 +350,7 @@ class PlasticBagPrinterService(
logger.error("sendLaserBag2Job unexpected error", e)
LaserBag2SendResponse(
success = false,
message = "送出失敗:${e.message ?: e.javaClass.simpleName}",
message = UiText.t("送出失敗:", "Send failed: ") + (e.message ?: e.javaClass.simpleName),
)
}
}
@@ -501,24 +503,24 @@ class PlasticBagPrinterService(
if (laserAckLooksInvalid(ackRaw)) {
return LaserBag2TcpResult(
false,
"檸檬機回覆 invalid,未接受指令。",
UiText.t("檸檬機回覆 invalid,未接受指令。", "The lemon printer replied invalid and did not accept the command."),
payload,
ackRaw,
false,
)
}
val msg = if (receiveAck) {
"已送出激光機:$payload(已確認)"
UiText.t("已送出激光機:", "Sent to the laser printer: ") + payload + UiText.t("(已確認)", " (confirmed)")
} else {
"已送出激光機:$payload"
UiText.t("已送出激光機:", "Sent to the laser printer: ") + payload
}
return LaserBag2TcpResult(true, msg, payload, ackRaw, receiveAck)
} catch (e: ConnectException) {
return LaserBag2TcpResult(false, "無法連線至 $ip:$port,請確認激光機已開機且 IP 正確。", payload, null, false)
return LaserBag2TcpResult(false, UiText.t("無法連線至 ", "Could not connect to ") + ip + ":" + port + UiText.t(",請確認激光機已開機且 IP 正確。", ". Check that the printer is on and the IP is correct."), payload, null, false)
} catch (e: SocketTimeoutException) {
return LaserBag2TcpResult(false, "連線逾時 ($ip:$port),請檢查網路與連接埠。", payload, null, false)
return LaserBag2TcpResult(false, UiText.t("連線逾時 (", "Connection timed out (") + ip + ":" + port + UiText.t("),請檢查網路與連接埠。", "). Check the network and port."), payload, null, false)
} catch (e: Exception) {
return LaserBag2TcpResult(false, "激光機送出失敗:${e.message}", payload, null, false)
return LaserBag2TcpResult(false, UiText.t("激光機送出失敗:", "Laser printer send failed: ") + (e.message), payload, null, false)
} finally {
try {
Thread.sleep(100)
@@ -590,9 +592,9 @@ class PlasticBagPrinterService(
}
return raw to null
} catch (e: ConnectException) {
return null to "無法連線"
return null to UiText.t("無法連線", "Could not connect")
} catch (e: SocketTimeoutException) {
return null to "讀取逾時"
return null to UiText.t("讀取逾時", "Read timed out")
} catch (e: Exception) {
return null to (e.message ?: e.javaClass.simpleName)
} finally {
@@ -611,9 +613,9 @@ class PlasticBagPrinterService(
}

private fun markStatusToLabel(v: Int?): String? = when (v) {
0 -> "待機"
1 -> "打標中"
2 -> "其他狀態"
0 -> UiText.t("待機", "Idle")
1 -> UiText.t("打標中", "Marking")
2 -> UiText.t("其他狀態", "Other status")
else -> null
}

@@ -770,7 +772,7 @@ class PlasticBagPrinterService(
.mapNotNull { (it["jobOrderId"] as? Number)?.toLong() }
.toSet()
val packagingJobOrders = normalizedJobOrders.filter { it.jobOrderId in allowedJobOrderIds }
require(packagingJobOrders.isNotEmpty()) { "No 包裝 process job orders found for export" }
require(packagingJobOrders.isNotEmpty()) { UiText.t("No 包裝 process job orders found for export", "No packing-process job orders found for export") }

val expiryPrintNames = if (includeExpiry) {
onPackTemplateFileService.expiryPrintNames(OnPackTemplateFileService.MACHINE_JUICE)
@@ -820,7 +822,7 @@ class PlasticBagPrinterService(

require(exportItemsListed.isNotEmpty()) {
if (includeExpiry) {
"當日工單沒有在汁水機到期日 ZIP 品號清單中的項目(OnPack 模板可管理此清單)"
UiText.t("當日工單沒有在汁水機到期日 ZIP 品號清單中的項目(OnPack 模板可管理此清單)", "Today's job orders have no item codes on the juice expiry ZIP list. Manage that list in OnPack templates.")
} else {
"No OnPack QR (bmp) rows in onpack_qr for the selected job orders, or no matching templates"
}
@@ -847,9 +849,9 @@ class PlasticBagPrinterService(

require(exportItems.isNotEmpty()) {
if (includeExpiry && skippedWithoutExpiry.isNotEmpty()) {
"當日汁水機清單品號都沒有預設保質期,無法產生到期日 ZIP。請到設定 → 物品預設保質期新增:${skippedWithoutExpiry.joinToString("、")}"
UiText.t("當日汁水機清單品號都沒有預設保質期,無法產生到期日 ZIP。請到設定 → 物品預設保質期新增:", "None of today's juice-list item codes have a default shelf life, so the expiry ZIP cannot be created. Add them under Settings, item default shelf life: ") + (skippedWithoutExpiry.joinToString("、"))
} else if (includeExpiry) {
"當日工單沒有在汁水機到期日 ZIP 品號清單中的項目(OnPack 模板可管理此清單)"
UiText.t("當日工單沒有在汁水機到期日 ZIP 品號清單中的項目(OnPack 模板可管理此清單)", "Today's job orders have no item codes on the juice expiry ZIP list. Manage that list in OnPack templates.")
} else {
"No OnPack QR (bmp) rows in onpack_qr for the selected job orders, or no matching templates"
}
@@ -858,7 +860,7 @@ class PlasticBagPrinterService(
val expiryMasterImage = if (includeExpiry) loadPp1181ExpiryMasterImage() else null
val expiryMasterJob = if (includeExpiry) loadPp1181MasterJob() else null
if (includeExpiry) {
require(expiryMasterImage != null) { "找不到 PP1181 到期日主模板(onpack2030_exp/pp1181.image)" }
require(expiryMasterImage != null) { UiText.t("找不到 PP1181 到期日主模板(onpack2030_exp/pp1181.image)", "The PP1181 expiry master template was not found (onpack2030_exp/pp1181.image)") }
}

val baos = ByteArrayOutputStream()
@@ -1013,7 +1015,7 @@ class PlasticBagPrinterService(
.mapNotNull { (it["jobOrderId"] as? Number)?.toLong() }
.toSet()
val packagingJobOrders = normalizedJobOrders.filter { it.jobOrderId in allowedJobOrderIds }
require(packagingJobOrders.isNotEmpty()) { "No 包裝 process job orders found for export" }
require(packagingJobOrders.isNotEmpty()) { UiText.t("No 包裝 process job orders found for export", "No packing-process job orders found for export") }

val exportItemsRaw = packagingJobOrders
.groupBy { it.itemCode.trim().lowercase() }
@@ -1053,7 +1055,7 @@ class PlasticBagPrinterService(

require(exportItems.isNotEmpty()) {
if (includeExpiry && skippedWithoutExpiry.isNotEmpty()) {
"當日檸檬機品號都沒有預設保質期,無法產生到期日 ZIP。請到設定 → 物品預設保質期新增:${skippedWithoutExpiry.joinToString("、")}"
UiText.t("當日檸檬機品號都沒有預設保質期,無法產生到期日 ZIP。請到設定 → 物品預設保質期新增:", "None of today's lemon item codes have a default shelf life, so the expiry ZIP cannot be created. Add them under Settings, item default shelf life: ") + (skippedWithoutExpiry.joinToString("、"))
} else {
"No OnPack QR (text) rows in onpack_qr for the selected job orders, or no matching templates"
}
@@ -1484,14 +1486,14 @@ class PlasticBagPrinterService(
return try {
Socket().use { socket ->
socket.connect(InetSocketAddress(ip, port), 3000)
true to "$printerName 已連線($ip:$port)"
true to printerName + UiText.t(" 已連線(", " is connected (") + ip + ":" + port + ")"
}
} catch (e: SocketTimeoutException) {
false to "$printerName 連線逾時($ip:$port)"
false to printerName + UiText.t(" 連線逾時(", " timed out (") + ip + ":" + port + ")"
} catch (e: ConnectException) {
false to "$printerName 無法連線($ip:$port)"
false to printerName + UiText.t(" 無法連線(", " could not connect (") + ip + ":" + port + ")"
} catch (e: Exception) {
false to "$printerName 連線失敗($ip:$port):${e.message}"
false to printerName + UiText.t(" 連線失敗(", " connection failed (") + ip + ":" + port + "):" + (e.message)
}
}

@@ -1719,7 +1721,7 @@ class PlasticBagPrinterService(
var reader: BufferedReader? = null

try {
println("Han's Laser TCP: 正在連接 $ip:$port ...")
println(UiText.t("Han's Laser TCP: 正在連接 ", "Han's Laser TCP: connecting to ") + ip + ":" + port + " ...")
socket = Socket(ip, port).apply {
soTimeout = 8000 // 8秒超時,避免卡死
}
@@ -1734,7 +1736,7 @@ class PlasticBagPrinterService(
Thread.sleep(300) // give device time to process

val resp = reader.readLine()?.trim() ?: ""
println("命令: $cmd → 回應: $resp")
println(UiText.t("命令: ", "Command: ") + cmd + UiText.t(" → 回應: ", " → response: ") + resp)
return resp.startsWith("OK")
}



+ 17
- 15
src/main/java/com/ffii/fpsms/modules/jobOrder/service/PsScheduleRuleService.kt Parādīt failu

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

import com.ffii.core.utils.UiText

import com.ffii.core.support.JdbcDao
import org.springframework.stereotype.Service
import java.time.DayOfWeek
@@ -132,13 +134,13 @@ open class PsScheduleRuleService(
}

fun savePlantRules(request: SavePsPlantRulesRequest) {
requireDays(request.redLineDays, request.safetyStockDays, "一般日")
requireDays(request.prepareMoreRedLineDays, request.prepareMoreSafetyStockDays, "多備日")
val coffee = requireProduceDays(request.coffeeDays, "類別 A")
val tea = requireProduceDays(request.teaDays, "類別 B")
val lemon = requireProduceDays(request.lemonDays, "類別 C")
val prepareMore = parseDaysStrict(request.prepareMoreDays, "多備星期")
val noProduction = parseDaysStrict(request.noProductionDays, "不生產星期")
requireDays(request.redLineDays, request.safetyStockDays, UiText.t("一般日", "Normal days"))
requireDays(request.prepareMoreRedLineDays, request.prepareMoreSafetyStockDays, UiText.t("多備日", "Extra-prep days"))
val coffee = requireProduceDays(request.coffeeDays, UiText.t("類別 A", "Category A"))
val tea = requireProduceDays(request.teaDays, UiText.t("類別 B", "Category B"))
val lemon = requireProduceDays(request.lemonDays, UiText.t("類別 C", "Category C"))
val prepareMore = parseDaysStrict(request.prepareMoreDays, UiText.t("多備星期", "Extra-prep weekdays"))
val noProduction = parseDaysStrict(request.noProductionDays, UiText.t("不生產星期", "Non-production weekdays"))

upsert(RED_LINE, formatNumber(request.redLineDays), "float")
upsert(SAFETY, formatNumber(request.safetyStockDays), "float")
@@ -163,8 +165,8 @@ open class PsScheduleRuleService(
if (red != null && safety != null) {
requireDays(red, safety, itemCode)
} else {
red?.let { requirePositive(it, "$itemCode 觸發日") }
safety?.let { requirePositive(it, "$itemCode 補貨日") }
red?.let { requirePositive(it, itemCode + UiText.t(" 觸發日", " trigger days")) }
safety?.let { requirePositive(it, itemCode + UiText.t(" 補貨日", " replenishment days")) }
}
}
val produceDays = if (request.useCustomProduceDays) {
@@ -257,29 +259,29 @@ open class PsScheduleRuleService(
}

private fun requireDays(redLine: Double, safety: Double, label: String) {
requirePositive(redLine, "$label 觸發日")
requirePositive(safety, "$label 補貨日")
requirePositive(redLine, label + UiText.t(" 觸發日", " trigger days"))
requirePositive(safety, label + UiText.t(" 補貨日", " replenishment days"))
if (redLine > safety) {
throw IllegalArgumentException("$label:觸發日不可大於補貨日")
throw IllegalArgumentException(label + UiText.t(":觸發日不可大於補貨日", ": trigger days cannot be greater than replenishment days"))
}
}

private fun requirePositive(value: Double, label: String) {
if (!value.isFinite() || value <= 0.0) {
throw IllegalArgumentException("$label 必須大於 0")
throw IllegalArgumentException(label + UiText.t(" 必須大於 0", " must be greater than 0"))
}
}

private fun requireProduceDays(tokens: List<String>, label: String): Set<DayOfWeek> {
val days = parseDaysStrict(tokens, label)
if (days.isEmpty()) throw IllegalArgumentException("$label 至少要選一天可生產")
if (days.isEmpty()) throw IllegalArgumentException(label + UiText.t(" 至少要選一天可生產", " must include at least one production day"))
return days
}

private fun parseDaysStrict(tokens: List<String>, label: String): Set<DayOfWeek> {
val unknown = tokens.map { it.trim().uppercase() }.filter { it.isNotEmpty() && it !in DAY_TOKENS }
if (unknown.isNotEmpty()) {
throw IllegalArgumentException("$label 有無法辨識的星期: ${unknown.joinToString(",")}")
throw IllegalArgumentException(label + UiText.t(" 有無法辨識的星期: ", " has an unknown weekday: ") + (unknown.joinToString(",")))
}
return parseDays(tokens.joinToString(","))
}


+ 7
- 5
src/main/java/com/ffii/fpsms/modules/jobOrder/web/PlasticBagPrinterController.kt Parādīt failu

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.jobOrder.web

import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.jobOrder.service.LaserBag2AutoSendService
import com.ffii.fpsms.modules.jobOrder.service.OnPackZipResult
import com.ffii.fpsms.modules.jobOrder.service.PlasticBagPrinterService
@@ -72,7 +74,7 @@ class PlasticBagPrinterController(
logger.error("print-laser-bag2 failed", e)
LaserBag2SendResponse(
success = false,
message = "送出失敗:${e.message ?: e.javaClass.simpleName}",
message = UiText.t("送出失敗:", "Send failed: ") + (e.message ?: e.javaClass.simpleName),
)
}
return if (resp.success) {
@@ -368,18 +370,18 @@ class PlasticBagPrinterController(
ip = request.printerIp,
port = request.printerPort.toInt(),
textChannel3 = request.textChannel3
?: throw IllegalArgumentException("缺少 textChannel3"),
?: throw IllegalArgumentException(UiText.t("缺少 textChannel3", "textChannel3 is missing")),
textChannel4 = request.textChannel4
?: throw IllegalArgumentException("缺少 textChannel4"),
?: throw IllegalArgumentException(UiText.t("缺少 textChannel4", "textChannel4 is missing")),
text3ObjectName = request.text3ObjectName ?: "Text3",
text4ObjectName = request.text4ObjectName ?: "Text4"
)

if (success) {
ResponseEntity.ok("Han's Laser TCP: 更新文字並觸發打標成功")
ResponseEntity.ok(UiText.t("Han's Laser TCP: 更新文字並觸發打標成功", "Han's Laser TCP: text updated and marking started"))
} else {
ResponseEntity.status(500)
.body("Han's Laser TCP: 部分或全部命令失敗,請檢查連接、物件名稱或 EZCAD TCP Server")
.body(UiText.t("Han's Laser TCP: 部分或全部命令失敗,請檢查連接、物件名稱或 EZCAD TCP Server", "Han's Laser TCP: one or more commands failed. Check the connection, object name, or EZCAD TCP server."))
}
} catch (e: Exception) {
ResponseEntity.status(500).body("Laser TCP Error: ${e.message}")


+ 3
- 1
src/main/java/com/ffii/fpsms/modules/master/service/ItemDefaultShelfLifeService.kt Parādīt failu

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

import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.master.entity.ItemDefaultShelfLife
import com.ffii.fpsms.modules.master.entity.ItemDefaultShelfLifeRepository
import com.ffii.fpsms.modules.master.entity.ItemsRepository
@@ -71,7 +73,7 @@ open class ItemDefaultShelfLifeService(
val row = repository.findByDeletedFalseAndItemCodeIgnoreCase(code)
?: throw ResponseStatusException(
HttpStatus.BAD_REQUEST,
"找不到 $code 的預設保質期。請先到設定 → 物品預設保質期新增。",
UiText.t("找不到 ", "No default shelf life for ") + code + UiText.t(" 的預設保質期。請先到設定 → 物品預設保質期新增。", ". Add it under Settings, item default shelf life."),
)
row.useMinus18 = useMinus18
return toRow(repository.save(row))


+ 13
- 11
src/main/java/com/ffii/fpsms/modules/master/service/ProductionScheduleService.kt Parādīt failu

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

import com.ffii.core.utils.UiText

import com.ffii.core.response.RecordsRes
import com.ffii.core.support.AbstractBaseEntityService
import com.ffii.core.support.JdbcDao
@@ -483,9 +485,9 @@ open class ProductionScheduleService(
return MessageResponse(
id = request.id.toLong(),
message = if (jobOrderCount == 0)
"沒有建立新工單(可能因為成品已有生產中的工單)."
UiText.t("沒有建立新工單(可能因為成品已有生產中的工單).", "No job order was created. The finished good may already have a job order in production.")
else
"成功建立 $jobOrderCount 張工單!",
UiText.t("成功建立 ", "Created ") + jobOrderCount + UiText.t(" 張工單!", " job orders."),
name = "",
code = jobOrderCount.toString(),
type = "psJobOrders",
@@ -1494,8 +1496,8 @@ open class ProductionScheduleService(
val sheet = workbook.createSheet(safeSheetName)

val headers = listOf(
"物料編號", "物料名稱", "每日平均出貨量", "出貨前預計存貨量", "可用日",
"每批數量", "生產量(批)", "優先度"
UiText.t("物料編號", "Material code"), UiText.t("物料名稱", "Material name"), UiText.t("每日平均出貨量", "Avg daily shipments"), UiText.t("出貨前預計存貨量", "Expected stock before shipment"), UiText.t("可用日", "Days of cover"),
UiText.t("每批數量", "Qty per batch"), UiText.t("生產量(批)", "Production (batches)"), UiText.t("優先度", "Priority")
)

// Header row
@@ -1559,13 +1561,13 @@ open class ProductionScheduleService(
}

// ── MATERIAL SUMMARY SHEET ──
val matSheet = workbook.createSheet("物料用量總結")
val matSheet = workbook.createSheet(UiText.t("物料用量總結", "Material usage summary"))

val matHeaders = listOf(
"物料編號", "物料名稱", "需求量", "總用量",
"單位", "數量(採購單位)", "採購單位",
"已採購數量", "庫存數", "庫存單位",
"相關成品編號", "相關成品名稱"
UiText.t("物料編號", "Material code"), UiText.t("物料名稱", "Material name"), UiText.t("需求量", "Required qty"), UiText.t("總用量", "Total usage"),
UiText.t("單位", "UOM"), UiText.t("數量(採購單位)", "Qty (purchase UOM)"), UiText.t("採購單位", "Purchase UOM"),
UiText.t("已採購數量", "Purchased qty"), UiText.t("庫存數", "On hand"), UiText.t("庫存單位", "Stock UOM"),
UiText.t("相關成品編號", "Related finished-good code"), UiText.t("相關成品名稱", "Related finished-good name")
)

val matHeaderRow = matSheet.createRow(0)
@@ -1651,7 +1653,7 @@ open class ProductionScheduleService(
matSheet.setMargin(Sheet.BottomMargin, 0.7)

// ── DAILY MATERIAL NEEDS SHEET ──
val dailySheet = workbook.createSheet("每天物料用量")
val dailySheet = workbook.createSheet(UiText.t("每天物料用量", "Daily material usage"))

val dateFormatterDayMonth = DateTimeFormatter.ofPattern("d MMM", Locale.ENGLISH)
val dateFormatterDayName = DateTimeFormatter.ofPattern("EEEE", Locale.ENGLISH)
@@ -1666,7 +1668,7 @@ open class ProductionScheduleService(
val headerRow1 = dailySheet.createRow(0)
val headerRow2 = dailySheet.createRow(1)

val baseHeaders = listOf("物料編號", "物料名稱", "採購單位")
val baseHeaders = listOf(UiText.t("物料編號", "Material code"), UiText.t("物料名稱", "Material name"), UiText.t("採購單位", "Purchase UOM"))

baseHeaders.forEachIndexed { i, title ->
headerRow1.createCell(i).apply { setCellValue(title); cellStyle = headerStyle }


+ 3
- 1
src/main/java/com/ffii/fpsms/modules/monitoring/service/LabelPrinterMonitorService.kt Parādīt failu

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

import com.ffii.core.utils.UiText

import com.ffii.core.support.JdbcDao
import com.ffii.fpsms.modules.master.entity.Printer
import com.ffii.fpsms.modules.master.entity.PrinterRepository
@@ -395,7 +397,7 @@ open class LabelPrinterMonitorService(

private fun probeTcp(ip: String, port: Int): ProbeResult {
if (ip.isBlank()) {
return ProbeResult(reachable = false, latencyMs = null, errorMessage = "未設定 IP")
return ProbeResult(reachable = false, latencyMs = null, errorMessage = UiText.t("未設定 IP", "IP address is not set"))
}
val start = System.currentTimeMillis()
return try {


+ 3
- 1
src/main/java/com/ffii/fpsms/modules/monitoring/service/PrinterMonitorService.kt Parādīt failu

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

import com.ffii.core.utils.UiText

import com.ffii.core.support.JdbcDao
import com.ffii.fpsms.modules.master.entity.Printer
import com.ffii.fpsms.modules.master.entity.PrinterRepository
@@ -208,7 +210,7 @@ open class PrinterMonitorService(
status = "unconfigured",
reachable = null,
latencyMs = null,
errorMessage = "未設定 IP",
errorMessage = UiText.t("未設定 IP", "IP address is not set"),
)
}
val port = printer.port ?: defaultPort


+ 17
- 16
src/main/java/com/ffii/fpsms/modules/pickOrder/service/TruckLaneScheduleApplier.kt Parādīt failu

@@ -1,5 +1,6 @@
package com.ffii.fpsms.modules.pickOrder.service

import com.ffii.core.utils.UiText
import com.ffii.fpsms.modules.pickOrder.entity.*
import com.ffii.fpsms.modules.pickOrder.support.isOptimisticLockFailure
import com.ffii.fpsms.modules.pickOrder.web.models.CreateTruckLaneSnapshotRequest
@@ -75,7 +76,7 @@ open class TruckLaneScheduleApplier(
truckLaneVersionService.createSnapshot(
CreateTruckLaneSnapshotRequest(
truckLanceCode = null,
note = "排程 #${schedule.id} 套用前快照 ${schedule.executeAt}",
note = UiText.t("排程 #", "Schedule #") + (schedule.id) + UiText.t(" 套用前快照 ", " pre-apply snapshot ") + (schedule.executeAt),
createdBy = schedule.createdBy,
),
)
@@ -99,11 +100,11 @@ open class TruckLaneScheduleApplier(
truckLaneVersionService.createSnapshot(
CreateTruckLaneSnapshotRequest(
truckLanceCode = null,
note = "排程 #${schedule.id} 套用 (${
note = UiText.t("排程 #", "Schedule #") + (schedule.id) + UiText.t(" 套用 (", " applied (") + (
lines.count {
it.lineStatus == TruckLaneScheduleLineStatus.APPLIED
}
} 列) ${schedule.executeAt}",
) + UiText.t(" 列) ", " rows) ") + (schedule.executeAt),
createdBy = schedule.createdBy,
),
)
@@ -262,7 +263,7 @@ open class TruckLaneScheduleApplier(

val restoreSuffix =
if (preApplySnapshotId != null) {
";已還原 snapshot #$preApplySnapshotId${restoreNote?.let { " ($it)" } ?: ""}"
UiText.t(";已還原 snapshot #", "; restored snapshot #") + preApplySnapshotId + (restoreNote?.let { " ($it)" } ?: "")
} else {
""
}
@@ -310,7 +311,7 @@ open class TruckLaneScheduleApplier(
private fun applyEnsureLane(line: TruckLaneScheduleLine): String? {
val toKey = truckService.toBucketKey(line)
if (truckService.trucksInLaneBucket(toKey).isNotEmpty()) {
return "車線已存在,跳過建立"
return UiText.t("車線已存在,跳過建立", "Truck lane already exists. Creation was skipped.")
}
ensureTargetLaneIfEmpty(line, fallbackDeparture = null)
return null
@@ -330,7 +331,7 @@ open class TruckLaneScheduleApplier(
line.departureTime
?: fallbackDeparture
?: throw IllegalArgumentException(
"目標車線 ${toKey.truckLanceCode} 不存在或尚無任何列,且排程未提供 departureTime",
UiText.t("目標車線 ", "Target truck lane ") + (toKey.truckLanceCode) + UiText.t(" 不存在或尚無任何列,且排程未提供 departureTime", " does not exist or has no rows, and the schedule has no departure time"),
)
truckService.createTruckWithoutShop(
CreateTruckWithoutShopRequest(
@@ -343,15 +344,15 @@ open class TruckLaneScheduleApplier(
logisticId = line.logisticId,
),
)
return "已自動建立空白車線 ${toKey.truckLanceCode}"
return UiText.t("已自動建立空白車線 ", "Created a blank truck lane ") + (toKey.truckLanceCode)
}

private fun applyCreate(
line: TruckLaneScheduleLine,
createdTruckRowIds: MutableList<Long>,
): String? {
val shopId = line.shopId ?: throw IllegalArgumentException("缺少 shopId")
val departure = line.departureTime ?: throw IllegalArgumentException("缺少 departureTime")
val shopId = line.shopId ?: throw IllegalArgumentException(UiText.t("缺少 shopId", "shopId is required"))
val departure = line.departureTime ?: throw IllegalArgumentException(UiText.t("缺少 departureTime", "A departure time is required"))
val toKey = truckService.toBucketKey(line)
val seq = line.toLoadingSequence ?: 0
val saved =
@@ -370,22 +371,22 @@ open class TruckLaneScheduleApplier(
logisticId = line.logisticId,
),
)
val rowId = saved.id ?: throw IllegalStateException("CREATE 未取得 truck id")
val rowId = saved.id ?: throw IllegalStateException(UiText.t("CREATE 未取得 truck id", "CREATE did not return a truck id"))
line.truckRowId = rowId
createdTruckRowIds.add(rowId)
return null
}

private fun applyMove(line: TruckLaneScheduleLine): String? {
val truckRowId = line.truckRowId ?: throw IllegalArgumentException("缺少 truckRowId")
val truckRowId = line.truckRowId ?: throw IllegalArgumentException(UiText.t("缺少 truckRowId", "truckRowId is required"))
var truck =
truckService.findTruckRowByIdIncludingDeleted(truckRowId)
?: throw IllegalArgumentException("找不到 truck #$truckRowId")
?: throw IllegalArgumentException(UiText.t("找不到 truck #", "Truck not found: #") + truckRowId)

val notes = mutableListOf<String>()
if (truck.deleted == true) {
truck = truckService.restoreTruckRowIfDeleted(truck)
notes.add("店鋪列已從刪除狀態還原")
notes.add(UiText.t("店鋪列已從刪除狀態還原", "Restored the shop row"))
}

val current = truckService.truckLaneBucketKeyOf(truck)
@@ -396,7 +397,7 @@ open class TruckLaneScheduleApplier(
current.storeId != fromStore ||
(current.remark ?: "") != (fromRemark ?: "")
) {
notes.add("店鋪列已不在排程建立時的來源車線,仍依 truck.id 移至目標")
notes.add(UiText.t("店鋪列已不在排程建立時的來源車線,仍依 truck.id 移至目標", "The shop row was no longer on the source lane. It was still moved by truck id."))
logger.info(
"Schedule line {} truck {} moved from {} to target (was scheduled from {} {})",
line.id,
@@ -408,7 +409,7 @@ open class TruckLaneScheduleApplier(
}

val toKey = truckService.toBucketKey(line)
val seq = line.toLoadingSequence ?: throw IllegalArgumentException("缺少 toLoadingSequence")
val seq = line.toLoadingSequence ?: throw IllegalArgumentException(UiText.t("缺少 toLoadingSequence", "A loading sequence is required"))
ensureTargetLaneIfEmpty(line, fallbackDeparture = truck.departureTime)?.let { notes.add(it) }
truckService.applyScheduledTruckMove(
truckRowId,
@@ -421,7 +422,7 @@ open class TruckLaneScheduleApplier(
}

private fun applyDelete(line: TruckLaneScheduleLine): String? {
val truckRowId = line.truckRowId ?: throw IllegalArgumentException("缺少 truckRowId")
val truckRowId = line.truckRowId ?: throw IllegalArgumentException(UiText.t("缺少 truckRowId", "truckRowId is required"))
truckService.deleteById(truckRowId)
return null
}


+ 9
- 7
src/main/java/com/ffii/fpsms/modules/pickOrder/service/TruckLaneScheduleExcelSupport.kt Parādīt failu

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

import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.common.demo.DemoFloors
import com.ffii.fpsms.modules.pickOrder.entity.Truck
import com.ffii.fpsms.modules.pickOrder.entity.TruckRepository
@@ -37,16 +39,16 @@ class TruckLaneScheduleExcelSupport(
): Pair<List<TruckLaneScheduleExcelPreviewRow>, List<TruckLaneScheduleExcelRowError>> {
if (workbook == null || workbook.numberOfSheets == 0) {
return emptyList<TruckLaneScheduleExcelPreviewRow>() to
listOf(TruckLaneScheduleExcelRowError(0, "Excel 無工作表"))
listOf(TruckLaneScheduleExcelRowError(0, UiText.t("Excel 無工作表", "The workbook has no sheets")))
}
val sheet = workbook.getSheetAt(0)
if (sheet.physicalNumberOfRows < 2) {
return emptyList<TruckLaneScheduleExcelPreviewRow>() to
listOf(TruckLaneScheduleExcelRowError(0, "至少需要標題列與一筆資料"))
listOf(TruckLaneScheduleExcelRowError(0, UiText.t("至少需要標題列與一筆資料", "A header row and one data row are required")))
}

val headerRow = sheet.getRow(sheet.firstRowNum) ?: return emptyList<TruckLaneScheduleExcelPreviewRow>() to
listOf(TruckLaneScheduleExcelRowError(0, "缺少標題列"))
listOf(TruckLaneScheduleExcelRowError(0, UiText.t("缺少標題列", "The header row is missing")))

val colIndex = mutableMapOf<String, Int>()
for (c in 0 until headerRow.lastCellNum) {
@@ -64,7 +66,7 @@ class TruckLaneScheduleExcelSupport(
return emptyList<TruckLaneScheduleExcelPreviewRow>() to listOf(
TruckLaneScheduleExcelRowError(
0,
"缺少必要欄位:ShopID/ShopCode 與 TargetLane",
UiText.t("缺少必要欄位:ShopID/ShopCode 與 TargetLane", "Required columns are missing: ShopID/ShopCode and TargetLane"),
),
)
}
@@ -93,17 +95,17 @@ class TruckLaneScheduleExcelSupport(
)

if (shopRaw.isBlank()) {
errors.add(TruckLaneScheduleExcelRowError(rowIndex, "ShopID/ShopCode 不可為空"))
errors.add(TruckLaneScheduleExcelRowError(rowIndex, UiText.t("ShopID/ShopCode 不可為空", "ShopID/ShopCode cannot be empty")))
continue
}
if (laneRaw.isBlank()) {
errors.add(TruckLaneScheduleExcelRowError(rowIndex, "TargetLane 不可為空"))
errors.add(TruckLaneScheduleExcelRowError(rowIndex, UiText.t("TargetLane 不可為空", "TargetLane cannot be empty")))
continue
}

val truck = resolveTruckByShopCode(shopRaw.trim())
if (truck == null) {
errors.add(TruckLaneScheduleExcelRowError(rowIndex, "找不到店鋪:$shopRaw"))
errors.add(TruckLaneScheduleExcelRowError(rowIndex, UiText.t("找不到店鋪:", "Shop not found: ") + shopRaw))
continue
}



+ 38
- 36
src/main/java/com/ffii/fpsms/modules/pickOrder/service/TruckLaneScheduleService.kt Parādīt failu

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

import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.pickOrder.entity.*
import com.ffii.fpsms.modules.pickOrder.web.models.*
import org.springframework.transaction.annotation.Transactional
@@ -25,7 +27,7 @@ open class TruckLaneScheduleService(
validateExecuteAt(request.executeAt)
val requestLines = resolveRequestLines(request)
if (requestLines.isEmpty()) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "lines 不可為空")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("lines 不可為空", "Lines cannot be empty"))
}
val blocking = schedulePlanValidator.validatePlanLines(requestLines)
if (blocking.isNotEmpty()) {
@@ -72,7 +74,7 @@ open class TruckLaneScheduleService(
note: String?,
): List<TruckLaneScheduleResponse> {
if (rows.isEmpty()) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "無有效資料列")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("無有效資料列", "No valid data rows"))
}
val grouped = rows.groupBy { it.executeAt ?: defaultExecuteAt }
return grouped.map { (executeAt, group) ->
@@ -135,7 +137,7 @@ open class TruckLaneScheduleService(

open fun getById(id: Long): TruckLaneScheduleResponse {
val s = scheduleRepository.findByIdAndDeletedFalse(id)
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "排程不存在")
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, UiText.t("排程不存在", "Schedule not found"))
return toResponse(s, includeLines = true)
}

@@ -158,9 +160,9 @@ open class TruckLaneScheduleService(
@Transactional
open fun cancel(id: Long): TruckLaneScheduleResponse {
val s = scheduleRepository.findByIdAndDeletedFalse(id)
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "排程不存在")
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, UiText.t("排程不存在", "Schedule not found"))
if (s.status != TruckLaneScheduleStatus.PENDING) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "僅 PENDING 可取消")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("僅 PENDING 可取消", "Only a pending schedule can be cancelled"))
}
s.status = TruckLaneScheduleStatus.CANCELLED
val lineList = scheduleLineRepository.findAllBySchedule_IdAndDeletedFalseOrderByIdAsc(s.id ?: 0L)
@@ -172,16 +174,16 @@ open class TruckLaneScheduleService(
open fun applyNow(id: Long): TruckLaneScheduleResponse {
return when (scheduleApplier.applyOne(id)) {
ScheduleApplyOutcome.NOT_FOUND ->
throw ResponseStatusException(HttpStatus.NOT_FOUND, "排程不存在")
throw ResponseStatusException(HttpStatus.NOT_FOUND, UiText.t("排程不存在", "Schedule not found"))
ScheduleApplyOutcome.SKIPPED -> {
val current = scheduleRepository.findByIdAndDeletedFalse(id)
val msg =
when (current?.status) {
TruckLaneScheduleStatus.APPLYING ->
"排程正在執行中,請稍後再試"
UiText.t("排程正在執行中,請稍後再試", "The schedule is running. Try again shortly.")
TruckLaneScheduleStatus.PENDING ->
"無法認領排程(可能已被其他程序處理)"
else -> "僅 PENDING 可立即執行"
UiText.t("無法認領排程(可能已被其他程序處理)", "Could not claim the schedule. Another process may have taken it.")
else -> UiText.t("僅 PENDING 可立即執行", "Only a pending schedule can be run now")
}
throw ResponseStatusException(HttpStatus.CONFLICT, msg)
}
@@ -197,15 +199,15 @@ open class TruckLaneScheduleService(
executeAt: LocalDateTime?,
): TruckLaneScheduleResponse {
val s = scheduleRepository.findByIdAndDeletedFalse(id)
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "排程不存在")
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, UiText.t("排程不存在", "Schedule not found"))
if (s.status == TruckLaneScheduleStatus.PARTIAL) {
throw ResponseStatusException(
HttpStatus.BAD_REQUEST,
"PARTIAL 排程不可重試,請先還原看板後重新建立排程",
UiText.t("PARTIAL 排程不可重試,請先還原看板後重新建立排程", "A partial schedule cannot be retried. Restore the board, then create a new schedule."),
)
}
if (s.status != TruckLaneScheduleStatus.FAILED) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "僅 FAILED 可重試失敗列")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("僅 FAILED 可重試失敗列", "Only a failed schedule can retry failed rows"))
}
val lines =
scheduleLineRepository.findAllBySchedule_IdAndDeletedFalseOrderByIdAsc(s.id ?: 0L)
@@ -215,14 +217,14 @@ open class TruckLaneScheduleService(
it.lineStatus == TruckLaneScheduleLineStatus.PENDING
}
if (retryLines.isEmpty()) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "無可重試的失敗列")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("無可重試的失敗列", "There are no failed rows to retry"))
}
val whenAt = executeAt ?: LocalDateTime.now().plusMinutes(1)
validateExecuteAt(whenAt)
val requestLines =
retryLines.mapNotNull { line -> lineToRequest(line) }
if (requestLines.isEmpty()) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "無可重試的失敗列")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("無可重試的失敗列", "There are no failed rows to retry"))
}
val created = createManual(
CreateTruckLaneScheduleRequest(
@@ -234,7 +236,7 @@ open class TruckLaneScheduleService(
// 重試排程已接手追蹤,原 FAILED 單標為 IGNORED 以免失敗徽章長亮。
s.status = TruckLaneScheduleStatus.IGNORED
s.errorMessage =
((s.errorMessage?.let { "$it;" } ?: "") + "已由重試排程 #${created.id} 取代").take(2000)
((s.errorMessage?.let { "$it;" } ?: "") + UiText.t("已由重試排程 #", "Replaced by retry schedule #") + (created.id) + UiText.t(" 取代", "")).take(2000)
scheduleRepository.save(s)
return created
}
@@ -245,22 +247,22 @@ open class TruckLaneScheduleService(
executeAt: LocalDateTime?,
): TruckLaneScheduleResponse {
val s = scheduleRepository.findByIdAndDeletedFalse(id)
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "排程不存在")
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, UiText.t("排程不存在", "Schedule not found"))
if (s.status != TruckLaneScheduleStatus.CANCELLED) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "僅 CANCELLED 可重新排程")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("僅 CANCELLED 可重新排程", "Only a cancelled schedule can be rescheduled"))
}
val lines =
scheduleLineRepository.findAllBySchedule_IdAndDeletedFalseOrderByIdAsc(s.id ?: 0L)
val reactivatable =
lines.filter { it.lineStatus == TruckLaneScheduleLineStatus.SKIPPED }
if (reactivatable.isEmpty()) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "無可重新排程的明細")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("無可重新排程的明細", "There are no rows to reschedule"))
}
val whenAt = executeAt ?: LocalDateTime.now().plusMinutes(1)
validateExecuteAt(whenAt)
val requestLines = reactivatable.mapNotNull { line -> lineToRequest(line) }
if (requestLines.isEmpty()) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "無可重新排程的明細")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("無可重新排程的明細", "There are no rows to reschedule"))
}
val blocking = schedulePlanValidator.validatePlanLines(requestLines)
if (blocking.isNotEmpty()) {
@@ -285,12 +287,12 @@ open class TruckLaneScheduleService(
@Transactional
open fun ignore(id: Long): TruckLaneScheduleResponse {
val s = scheduleRepository.findByIdAndDeletedFalse(id)
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "排程不存在")
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, UiText.t("排程不存在", "Schedule not found"))
if (s.status == TruckLaneScheduleStatus.IGNORED) {
return toResponse(s, includeLines = true)
}
if (s.status == TruckLaneScheduleStatus.CANCELLED) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "已取消的排程無法忽略")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("已取消的排程無法忽略", "A cancelled schedule cannot be ignored"))
}
val lines =
scheduleLineRepository.findAllBySchedule_IdAndDeletedFalseOrderByIdAsc(s.id ?: 0L)
@@ -301,7 +303,7 @@ open class TruckLaneScheduleService(
s.status == TruckLaneScheduleStatus.PARTIAL ||
failedLineCount > 0
if (!canIgnore) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "僅含失敗明細的排程可忽略")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("僅含失敗明細的排程可忽略", "Only a schedule with failed rows can be ignored"))
}
s.status = TruckLaneScheduleStatus.IGNORED
return toResponse(scheduleRepository.save(s), includeLines = true)
@@ -334,7 +336,7 @@ open class TruckLaneScheduleService(
for (schedule in stale) {
schedule.status = TruckLaneScheduleStatus.FAILED
schedule.errorMessage =
"排程執行逾時(>${staleMinutes} 分鐘仍為 APPLYING),請依 runbook 手動還原".take(2000)
UiText.t("排程執行逾時(>", "Schedule timed out (still applying after ") + (staleMinutes) + UiText.t(" 分鐘仍為 APPLYING),請依 runbook 手動還原", " minutes). Restore it manually using the runbook.").take(2000)
scheduleRepository.save(schedule)
}
}
@@ -381,11 +383,11 @@ open class TruckLaneScheduleService(
if (bucket.isNotEmpty()) {
throw ResponseStatusException(
HttpStatus.BAD_REQUEST,
"車線 ${toKey.truckLanceCode} 已存在,無需 ENSURE_LANE",
UiText.t("車線 ", "Truck lane ") + (toKey.truckLanceCode) + UiText.t(" 已存在,無需 ENSURE_LANE", " already exists. ENSURE_LANE is not needed."),
)
}
val departure = req.departureTime
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "ENSURE_LANE 缺少 departureTime")
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("ENSURE_LANE 缺少 departureTime", "ENSURE_LANE is missing a departure time"))
TruckLaneScheduleLine().apply {
lineAction = TruckLaneScheduleLineAction.ENSURE_LANE
toTruckLanceCode = toKey.truckLanceCode
@@ -400,14 +402,14 @@ open class TruckLaneScheduleService(

TruckLaneScheduleLineAction.CREATE -> {
val shopId = req.shopId
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "CREATE 缺少 shopId")
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("CREATE 缺少 shopId", "CREATE is missing shopId"))
val departure = req.departureTime
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "CREATE 缺少 departureTime")
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("CREATE 缺少 departureTime", "CREATE is missing a departure time"))
val bucket = truckService.trucksInLaneBucket(toKey)
if (bucket.isEmpty() && !allowEmptyTarget) {
throw ResponseStatusException(
HttpStatus.BAD_REQUEST,
"目標車線 ${toKey.truckLanceCode} 不存在,需先 ENSURE_LANE",
UiText.t("目標車線 ", "Target truck lane ") + (toKey.truckLanceCode) + UiText.t(" 不存在,需先 ENSURE_LANE", " does not exist. Run ENSURE_LANE first."),
)
}
val seq = req.toLoadingSequence ?: 0
@@ -429,12 +431,12 @@ open class TruckLaneScheduleService(

TruckLaneScheduleLineAction.DELETE -> {
val truckRowId = req.truckRowId
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "DELETE 缺少 truckRowId")
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("DELETE 缺少 truckRowId", "DELETE is missing truckRowId"))
assertNoOpenPending(truckRowId)
val truck = truckService.findTruckById(truckRowId)
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "找不到 truck #$truckRowId")
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("找不到 truck #", "Truck not found: #") + truckRowId)
if (truckService.isPlaceholderTruckRow(truck)) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "無法刪除空白占位列")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("無法刪除空白占位列", "A blank placeholder row cannot be deleted"))
}
val fromKey = truckService.truckLaneBucketKeyOf(truck)
TruckLaneScheduleLine().apply {
@@ -454,17 +456,17 @@ open class TruckLaneScheduleService(

TruckLaneScheduleLineAction.MOVE -> {
val truckRowId = req.truckRowId
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "MOVE 缺少 truckRowId")
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("MOVE 缺少 truckRowId", "MOVE is missing truckRowId"))
assertNoOpenPending(truckRowId)
val truck = truckService.findTruckById(truckRowId)
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "找不到 truck #$truckRowId")
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("找不到 truck #", "Truck not found: #") + truckRowId)
val fromKey = truckService.truckLaneBucketKeyOf(truck)
val err = truckService.validateMoveToLane(truckRowId, toKey, allowEmptyTarget)
if (err != null) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "truck #$truckRowId: $err")
}
val seq = req.toLoadingSequence
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "MOVE 缺少 toLoadingSequence")
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("MOVE 缺少 toLoadingSequence", "MOVE is missing a loading sequence"))
TruckLaneScheduleLine().apply {
lineAction = TruckLaneScheduleLineAction.MOVE
this.truckRowId = truckRowId
@@ -498,7 +500,7 @@ open class TruckLaneScheduleService(
) {
throw ResponseStatusException(
HttpStatus.BAD_REQUEST,
"truck #$truckRowId 已有待執行排程",
"truck #" + truckRowId + UiText.t(" 已有待執行排程", " already has a pending schedule"),
)
}
}
@@ -536,7 +538,7 @@ open class TruckLaneScheduleService(
private fun validateExecuteAt(executeAt: LocalDateTime) {
val min = LocalDateTime.now().minusMinutes(2)
if (executeAt.isBefore(min)) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "執行時間不可早於目前時間")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("執行時間不可早於目前時間", "The run time cannot be earlier than now"))
}
}



+ 37
- 35
src/main/java/com/ffii/fpsms/modules/pickOrder/service/TruckService.kt Parādīt failu

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

import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.common.demo.DemoFloors
import com.ffii.core.support.AbstractBaseEntityService
import com.ffii.core.support.JdbcDao
@@ -546,12 +548,12 @@ open class TruckService(
allowEmptyTarget: Boolean,
): String? {
val truck = truckRepository.findById(truckRowId).orElse(null)
?: return "找不到 truck 列 id=$truckRowId"
if (truck.deleted == true) return "truck 列已刪除"
if (isLanePlaceholderTruck(truck)) return "無法排程移動空白占位列"
?: return UiText.t("找不到 truck 列 id=", "Truck row not found, id=") + truckRowId
if (truck.deleted == true) return UiText.t("truck 列已刪除", "The truck row is deleted")
if (isLanePlaceholderTruck(truck)) return UiText.t("無法排程移動空白占位列", "A blank placeholder row cannot be scheduled for a move")

val toCode = to.truckLanceCode.trim()
if (toCode.isEmpty()) return "目標車線編號不可為空"
if (toCode.isEmpty()) return UiText.t("目標車線編號不可為空", "The target truck lane code cannot be empty")

val fromKey = truckLaneBucketKeyOf(truck)
val sameLane =
@@ -563,11 +565,11 @@ open class TruckService(
val targetBucket = trucksInLaneBucket(to)
if (targetBucket.isEmpty()) {
if (allowEmptyTarget) return null
return "目標車線不存在或尚無任何列:$toCode"
return UiText.t("目標車線不存在或尚無任何列:", "The target truck lane does not exist or has no rows: ") + toCode
}

if (laneHasShopConflict(truck, targetBucket, excludeTruckRowId = truckRowId)) {
return "目標車線已有相同店鋪"
return UiText.t("目標車線已有相同店鋪", "The target truck lane already has this shop")
}
return null
}
@@ -658,7 +660,7 @@ open class TruckService(
): List<Truck> {
assertNotScheduleLocked(truckRowId)
var truck = findTruckRowByIdIncludingDeleted(truckRowId)
?: throw IllegalArgumentException("找不到 truck #$truckRowId")
?: throw IllegalArgumentException(UiText.t("找不到 truck #", "Truck not found: #") + truckRowId)
truck = restoreTruckRowIfDeleted(truck)

val err = validateMoveToLane(truckRowId, to)
@@ -994,12 +996,12 @@ open class TruckService(
rr.createCell(RouteLaneExcelSupport.COL_META_C).setCellValue(remark ?: "")

rr = sheet.createRow(RouteLaneExcelSupport.ROW_STORE)
rr.createCell(RouteLaneExcelSupport.COL_META_A).setCellValue("樓層")
rr.createCell(RouteLaneExcelSupport.COL_META_A).setCellValue(UiText.t("樓層", "Floor"))
rr.createCell(RouteLaneExcelSupport.COL_META_B)
.setCellValue(trucks.first().storeId ?: "")

rr = sheet.createRow(RouteLaneExcelSupport.ROW_DEPARTURE_DEFAULT)
rr.createCell(RouteLaneExcelSupport.COL_META_A).setCellValue("出車時間")
rr.createCell(RouteLaneExcelSupport.COL_META_A).setCellValue(UiText.t("出車時間", "Departure time"))
rr.createCell(RouteLaneExcelSupport.COL_META_B).setCellValue(
formatDepartureForExcel(trucks.first().departureTime),
)
@@ -1046,7 +1048,7 @@ open class TruckService(

fun buildRouteReportFilename(): String {
val d = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))
return "車線Report_${d}.xlsx"
return UiText.t("車線Report_", "TruckLaneReport_") + (d) + ".xlsx"
}

private fun normalizeRemarkForLaneGroup(raw: String?): String {
@@ -1103,7 +1105,7 @@ open class TruckService(
val byCompanyId = trucks.groupBy { t ->
val id = t.logistic?.id
val nameRaw = t.logistic?.logisticName?.trim().orEmpty()
val name = if (nameRaw.isNotEmpty()) nameRaw else "未命名物流"
val name = if (nameRaw.isNotEmpty()) nameRaw else UiText.t("未命名物流", "Unnamed logistics")
CompanyKey(id, name)
}

@@ -1124,8 +1126,8 @@ open class TruckService(
RouteReportExcelSupport.writeTitle(
sheet,
st,
"新車綫($today)更改車線",
"製表: $preparedBy",
UiText.t("新車綫(", "New truck lanes (") + today + UiText.t(")更改車線", ") lane changes"),
UiText.t("製表: ", "Prepared by: ") + preparedBy,
companies.size,
)

@@ -1300,13 +1302,13 @@ open class TruckService(
val summaryRows = buildSummaryRows(fromLines, toLines, diffLines, logisticNameById)

val createdDate = (toV.created?.toString() ?: "").take(10)
val title = "車線報告(${createdDate.ifBlank { "—" }})更改車線"
val title = UiText.t("車線報告(", "Truck lane report (") + (createdDate.ifBlank { "—" }) + UiText.t(")更改車線", ") lane changes")
val editor = (toV.modifiedBy ?: input.preparedBy).trim().ifBlank { input.preparedBy }
val created = toV.created?.toString() ?: "—"

val stats = summarizeSummaryRows(summaryRows)
val statsText =
"新增 ${stats.added} · 移動 ${stats.moved} · 刪除 ${stats.deleted} · 欄位變更 ${stats.fieldChanged}"
UiText.t("新增 ", "Added ") + (stats.added) + UiText.t(" · 移動 ", " · Moved ") + (stats.moved) + UiText.t(" · 刪除 ", " · Deleted ") + (stats.deleted) + UiText.t(" · 欄位變更 ", " · Field changes ") + (stats.fieldChanged)

TruckLaneVersionReportExcelSupport.writeSummarySheet(
wb,
@@ -1420,15 +1422,15 @@ open class TruckService(
}

private val FIELD_LABEL = mapOf(
"departureTime" to "發車時段",
"loadingSequence" to "裝載順序",
"branchName" to "分店名稱",
"districtReference" to "區域",
"shopCode" to "店鋪代碼",
"storeId" to "樓層/店別",
"remark" to "備註",
"truckLanceCode" to "車線代碼",
"logisticId" to "物流公司",
"departureTime" to UiText.t("發車時段", "Departure window"),
"loadingSequence" to UiText.t("裝載順序", "Loading sequence"),
"branchName" to UiText.t("分店名稱", "Shop name"),
"districtReference" to UiText.t("區域", "Area"),
"shopCode" to UiText.t("店鋪代碼", "Shop code"),
"storeId" to UiText.t("樓層/店別", "Floor / shop type"),
"remark" to UiText.t("備註", "Notes"),
"truckLanceCode" to UiText.t("車線代碼", "Truck lane code"),
"logisticId" to UiText.t("物流公司", "Logistics company"),
)

private fun buildSummaryRows(
@@ -1465,11 +1467,11 @@ open class TruckService(
.toSet()
val textBits = ArrayList<String>()
if (type == TruckLaneVersionReportExcelSupport.RowType.ADDED) {
textBits.add("新增到 $toLane")
textBits.add(UiText.t("新增到 ", "Added to ") + toLane)
} else if (type == TruckLaneVersionReportExcelSupport.RowType.DELETED) {
textBits.add("自 $fromLane 移除")
textBits.add(UiText.t("自 ", "Removed from ") + fromLane + UiText.t(" 移除", ""))
} else if (type == TruckLaneVersionReportExcelSupport.RowType.MOVED) {
textBits.add("由 $fromLane → $toLane")
textBits.add(UiText.t("由 ", "Moved ") + fromLane + " → " + toLane)
}
for (c in d.changes) {
if (c.field == "truckLanceCode" || c.field == "remark") continue
@@ -1500,7 +1502,7 @@ open class TruckService(
shopCode = (b?.shopCode ?: a?.shopCode ?: "").trim(),
fromLane = fromLane,
toLane = toLane,
changeText = textBits.joinToString(";").ifEmpty { "欄位變更" },
changeText = textBits.joinToString(";").ifEmpty { UiText.t("欄位變更", "Field changes") },
changedFields = changedFields,
),
)
@@ -1557,11 +1559,11 @@ open class TruckService(
rr.createCell(RouteLaneExcelSupport.COL_META_C).setCellValue(k.remark)

rr = sheet.createRow(RouteLaneExcelSupport.ROW_STORE)
rr.createCell(RouteLaneExcelSupport.COL_META_A).setCellValue("樓層")
rr.createCell(RouteLaneExcelSupport.COL_META_A).setCellValue(UiText.t("樓層", "Floor"))
rr.createCell(RouteLaneExcelSupport.COL_META_B).setCellValue(lines.first().storeId ?: "")

rr = sheet.createRow(RouteLaneExcelSupport.ROW_DEPARTURE_DEFAULT)
rr.createCell(RouteLaneExcelSupport.COL_META_A).setCellValue("出車時間")
rr.createCell(RouteLaneExcelSupport.COL_META_A).setCellValue(UiText.t("出車時間", "Departure time"))
val deptDefault = parseLocalTimeOrNull(lines.firstNotNullOfOrNull { it.departureTime })
rr.createCell(RouteLaneExcelSupport.COL_META_B).setCellValue(formatDepartureForExcel(deptDefault))

@@ -1672,7 +1674,7 @@ open class TruckService(
val byCompany = linesWithLane.groupBy { l ->
val id = l.logisticId
val logi = if (id != null) logisticsById[id] else null
val name = logi?.logisticName?.trim().orEmpty().ifEmpty { "未命名物流" }
val name = logi?.logisticName?.trim().orEmpty().ifEmpty { UiText.t("未命名物流", "Unnamed logistics") }
CompanyKey(id, name)
}.entries.sortedBy { it.key.name }

@@ -1681,8 +1683,8 @@ open class TruckService(
TruckLaneVersionRouteReportExcelSupport.writeTitle(
sheet,
st,
"車線報告($createdDate)更改車線",
"製表: $editor",
UiText.t("車線報告(", "Truck lane report (") + createdDate + UiText.t(")更改車線", ") lane changes"),
UiText.t("製表: ", "Prepared by: ") + editor,
byCompany.size.coerceAtLeast(1),
)

@@ -1728,7 +1730,7 @@ open class TruckService(
val shown = fields
.filterNot { it == "truckLanceCode" || it == "remark" || it == "logisticId" }
.map { FIELD_LABEL[it] ?: it }
if (shown.isNotEmpty()) "變更: ${shown.joinToString(",")}" else null
if (shown.isNotEmpty()) UiText.t("變更: ", "Changes: ") + (shown.joinToString(",")) else null
}
val logisticChange = logisticChangeByRowId[id]?.let { ch ->
val fromName = ch.from?.trim()?.toLongOrNull()
@@ -1743,7 +1745,7 @@ open class TruckService(
.orEmpty()
.ifEmpty { ch.to?.trim().orEmpty() }
.ifEmpty { "—" }
if (fromName != toName) "物流公司:$fromName → $toName" else null
if (fromName != toName) UiText.t("物流公司:", "Logistics company: ") + fromName + " → " + toName else null
}
val linesText = ArrayList<String>(4)
linesText.add(name)


+ 3
- 1
src/main/java/com/ffii/fpsms/modules/pickOrder/web/TruckLaneScheduleController.kt Parādīt failu

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.pickOrder.web

import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.master.web.models.MessageResponse
import com.ffii.fpsms.modules.pickOrder.entity.TruckLaneScheduleStatus
import com.ffii.fpsms.modules.pickOrder.service.TruckLaneScheduleService
@@ -149,7 +151,7 @@ open class TruckLaneScheduleController @Autowired constructor(
name = null,
code = null,
type = "truckLaneSchedule",
message = "無有效列可匯入",
message = UiText.t("無有效列可匯入", "No valid rows to import"),
errorPosition = null,
entity = parsed,
),


+ 27
- 25
src/main/java/com/ffii/fpsms/modules/report/service/LotExpiryAlertExcelBuilder.kt Parādīt failu

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

import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.report.service.LotExpiryAlertReportService.SearchFilters
import org.apache.poi.ss.usermodel.BorderStyle
import org.apache.poi.ss.usermodel.CellStyle
@@ -35,20 +37,20 @@ internal object LotExpiryAlertExcelBuilder {
workbook.setCompressTempFiles(true)
try {
val styles = createStyles(workbook)
val reportTitle = "到期警示報告"
val reportTitle = UiText.t("到期警示報告", "Expiry alert report")
val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle))
val headers = listOf(
"到期警示",
"樓層",
"到期日",
"貨品編號",
"貨品名稱",
"批號",
"倉庫",
"區域",
"儲位",
"剩餘數量",
"單位",
UiText.t("到期警示", "Expiry alert"),
UiText.t("樓層", "Floor"),
UiText.t("到期日", "Expiry date"),
UiText.t("貨品編號", "Item code"),
UiText.t("貨品名稱", "Item name"),
UiText.t("批號", "Lot no."),
UiText.t("倉庫", "Warehouse"),
UiText.t("區域", "Area"),
UiText.t("儲位", "Slot"),
UiText.t("剩餘數量", "Remaining qty"),
UiText.t("單位", "UOM"),
)
val totalColumns = headers.size
var rowIndex = 0
@@ -65,7 +67,7 @@ internal object LotExpiryAlertExcelBuilder {
val dateRow = sheet.createRow(rowIndex++)
dateRow.heightInPoints = 32f
dateRow.createCell(0).apply {
setCellValue("下載日期:$downloadedAt")
setCellValue(UiText.t("下載日期:", "Downloaded: ") + downloadedAt)
cellStyle = styles.subtitle
}
val dateEndCol = 3.coerceAtMost(totalColumns - 2)
@@ -74,14 +76,14 @@ internal object LotExpiryAlertExcelBuilder {
}
val filterStartCol = dateEndCol + 1
val filterText = listOf(
"貨品編號=${displayFilter(filters.itemCode)}",
"貨品=${displayFilter(filters.itemName)}",
"批號=${displayFilter(filters.lotNo)}",
"未來天數=${filters.resolvedDaysAhead()}",
"到期分類=${displayBucket(filters.bucket, filters.resolvedDaysAhead())}",
UiText.t("貨品編號=", "Item code=") + (displayFilter(filters.itemCode)),
UiText.t("貨品=", "Item=") + (displayFilter(filters.itemName)),
UiText.t("批號=", "Lot no.=") + (displayFilter(filters.lotNo)),
UiText.t("未來天數=", "Days ahead=") + (filters.resolvedDaysAhead()),
UiText.t("到期分類=", "Expiry group=") + (displayBucket(filters.bucket, filters.resolvedDaysAhead())),
).joinToString(" ")
dateRow.createCell(filterStartCol).apply {
setCellValue("搜尋條件:$filterText")
setCellValue(UiText.t("搜尋條件:", "Filters: ") + filterText)
cellStyle = styles.subtitle
}
if (filterStartCol < totalColumns - 1) {
@@ -103,7 +105,7 @@ internal object LotExpiryAlertExcelBuilder {
val r = sheet.createRow(rowIndex++)
r.heightInPoints = 22f
r.createCell(0).apply {
setCellValue("查無資料")
setCellValue(UiText.t("查無資料", "No data"))
cellStyle = styles.center
}
for (c in 1 until totalColumns) {
@@ -210,15 +212,15 @@ internal object LotExpiryAlertExcelBuilder {

private fun displayFilter(raw: String?): String {
val v = raw?.trim().orEmpty()
return if (v.isEmpty()) "全部" else v
return if (v.isEmpty()) UiText.t("全部", "All") else v
}

private fun displayBucket(raw: String?, daysAhead: Int): String {
return when (raw?.trim()?.lowercase()) {
"expired" -> "過期尚未處理"
"today" -> "今日到期"
"upcoming" -> "未來 ${daysAhead} 日到期"
else -> "全部"
"expired" -> UiText.t("過期尚未處理", "Expired, not yet handled")
"today" -> UiText.t("今日到期", "Expires today")
"upcoming" -> UiText.t("未來 ", "Within ") + (daysAhead) + UiText.t(" 日到期", " days")
else -> UiText.t("全部", "All")
}
}



+ 7
- 3
src/main/java/com/ffii/fpsms/modules/report/service/LotExpiryAlertReportService.kt Parādīt failu

@@ -1,6 +1,7 @@
package com.ffii.fpsms.modules.report.service

import com.ffii.core.support.JdbcDao
import com.ffii.core.utils.UiText
import org.springframework.stereotype.Service

@Service
@@ -71,6 +72,9 @@ open class LotExpiryAlertReportService(
)
}
}
val expired = UiText.t("已過期", "Expired").replace("'", "''")
val today = UiText.t("今日到期", "Expires today").replace("'", "''")
val upcoming = UiText.t("${daysAhead}日內到期", "Expires within $daysAhead days").replace("'", "''")
return jdbcDao.queryForList(
"""
SELECT
@@ -86,10 +90,10 @@ open class LotExpiryAlertReportService(
COALESCE(uc.udfudesc, uc.code, '') AS unitOfMeasure,
CASE
WHEN il.expiryDate IS NULL THEN ''
WHEN il.expiryDate < CURRENT_DATE THEN '已過期'
WHEN il.expiryDate = CURRENT_DATE THEN '今日到期'
WHEN il.expiryDate < CURRENT_DATE THEN '$expired'
WHEN il.expiryDate = CURRENT_DATE THEN '$today'
WHEN il.expiryDate <= DATE_ADD(CURRENT_DATE, INTERVAL :daysAhead DAY)
THEN '${daysAhead}日內到期'
THEN '$upcoming'
ELSE ''
END AS expiryAlert
FROM inventory_lot_line ill


+ 9
- 2
src/main/java/com/ffii/fpsms/modules/report/service/ReportService.kt Parādīt failu

@@ -1,5 +1,6 @@
package com.ffii.fpsms.modules.report.service

import com.ffii.core.utils.ReportMessages
import com.ffii.fpsms.modules.common.demo.DemoFloors
import org.springframework.stereotype.Service
import net.sf.jasperreports.engine.*
@@ -1734,7 +1735,7 @@ return result
fun createExcelResponse(templatePath: String, params: Map<String, Any>, dataList: List<Map<String, Any>>): ByteArray {
val jasperReport = compiledReport(templatePath)
val dataSource = JRMapCollectionDataSource(dataList)
val jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource)
val jasperPrint = JasperFillManager.fillReport(jasperReport, withReportBundle(params), dataSource)
val out = ByteArrayOutputStream()
val exporter = JRXlsxExporter()
exporter.setExporterInput(SimpleExporterInput(jasperPrint))
@@ -1749,10 +1750,16 @@ return result
fun createPdfResponse(templatePath: String, params: Map<String, Any>, dataList: List<Map<String, Any>>): ByteArray {
val jasperReport = compiledReport(templatePath)
val dataSource = JRMapCollectionDataSource(dataList)
val jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource)
val jasperPrint = JasperFillManager.fillReport(jasperReport, withReportBundle(params), dataSource)
return JasperExportManager.exportReportToPdf(jasperPrint)
}

private fun withReportBundle(params: Map<String, Any>): Map<String, Any> {
val copy = HashMap(params)
copy[JRParameter.REPORT_RESOURCE_BUNDLE] = ReportMessages.bundle()
return copy
}

fun mergePdfBytes(parts: List<ByteArray>): ByteArray {
if (parts.isEmpty()) return ByteArray(0)
if (parts.size == 1) return parts[0]


+ 17
- 15
src/main/java/com/ffii/fpsms/modules/report/service/StockLedgerPdf.kt Parādīt failu

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

import com.ffii.core.utils.UiText

import org.apache.pdfbox.pdmodel.PDDocument
import org.apache.pdfbox.pdmodel.PDPage
import org.apache.pdfbox.pdmodel.PDPageContentStream
@@ -30,16 +32,16 @@ object StockLedgerPdf {
private data class Col(val x: Float, val w: Float, val title: String, val alignRight: Boolean = false)

private val columns = listOf(
Col(11f, 78f, "出入賬日期"),
Col(91f, 58f, "類型"),
Col(151f, 120f, "批號"),
Col(273f, 72f, "到期日"),
Col(347f, 58f, "纍計期初", alignRight = true),
Col(407f, 48f, "入庫", alignRight = true),
Col(457f, 48f, "出庫", alignRight = true),
Col(507f, 62f, "纍計存量", alignRight = true),
Col(571f, 140f, "參考編號"),
Col(713f, 112f, "存貨位置"),
Col(11f, 78f, UiText.t("出入賬日期", "Ledger date")),
Col(91f, 58f, UiText.t("類型", "Type")),
Col(151f, 120f, UiText.t("批號", "Lot no.")),
Col(273f, 72f, UiText.t("到期日", "Expiry date")),
Col(347f, 58f, UiText.t("纍計期初", "Opening"), alignRight = true),
Col(407f, 48f, UiText.t("入庫", "Stock in"), alignRight = true),
Col(457f, 48f, UiText.t("出庫", "Stock out"), alignRight = true),
Col(507f, 62f, UiText.t("纍計存量", "Cumulative balance"), alignRight = true),
Col(571f, 140f, UiText.t("參考編號", "Reference no.")),
Col(713f, 112f, UiText.t("存貨位置", "Stock location")),
)

fun write(
@@ -64,7 +66,7 @@ object StockLedgerPdf {
fun closeGroup() {
if (count > 1) {
canvas.ensureRow()
canvas.text(250f, canvas.y, "貨品總量:", BODY_SIZE, 95f, alignRight = true)
canvas.text(250f, canvas.y, UiText.t("貨品總量:", "Total qty: "), BODY_SIZE, 95f, alignRight = true)
canvas.text(columns[5].x, canvas.y, totalIn, BODY_SIZE, columns[5].w, alignRight = true)
canvas.text(columns[6].x, canvas.y, totalOut, BODY_SIZE, columns[6].w, alignRight = true)
canvas.text(columns[7].x, canvas.y, totalBal, BODY_SIZE, columns[7].w, alignRight = true)
@@ -168,7 +170,7 @@ object StockLedgerPdf {
val total = pages.size
pages.forEachIndexed { index, page ->
PDPageContentStream(doc, page, PDPageContentStream.AppendMode.APPEND, true, true).use { cs ->
val label = "頁數 ${index + 1} / $total"
val label = UiText.t("頁數 ", "Page ") + (index + 1) + " / " + total
cs.beginText()
cs.setFont(font, 9f)
val labelX = PAGE_W - 18f - widthOf(label, 9f)
@@ -187,11 +189,11 @@ object StockLedgerPdf {
stream = PDPageContentStream(doc, page)
y = PAGE_H - 36f
openText()
text(300f, y, "庫存明細報告", 14f)
text(300f, y, UiText.t("庫存明細報告", "Stock ledger report"), 14f)
y -= 18f
text(18f, y, "報告日期:$reportDate 報告時間:$reportTime", 9f)
text(18f, y, UiText.t("報告日期:", "Report date: ") + reportDate + UiText.t(" 報告時間:", " Report time: ") + reportTime, 9f)
val period = if (periodStart.isNotBlank() || periodEnd.isNotBlank()) {
"報告期間:${periodStart.ifBlank { "—" }} 至 ${periodEnd.ifBlank { "—" }}"
UiText.t("報告期間:", "Report period: ") + (periodStart.ifBlank { "—" }) + UiText.t(" 至 ", " to ") + (periodEnd.ifBlank { "—" })
} else {
""
}


+ 9
- 7
src/main/java/com/ffii/fpsms/modules/report/service/StockLedgerReportService.kt Parādīt failu

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

import com.ffii.core.utils.UiText

import com.ffii.core.support.JdbcDao
import org.springframework.stereotype.Service
import java.math.BigDecimal
@@ -409,13 +411,13 @@ ORDER BY ledger.dt DESC, ledger.slId DESC
date > otherDate || (date == otherDate && id > otherId)

private fun ledgerTypeLabel(raw: String): String = when (raw) {
"OPEN" -> "開倉"
"NOR" -> "出入倉"
"TRF" -> "轉倉"
"ADJ" -> "調整"
"MISS" -> "遺失"
"BAD" -> "不良品"
"TKE" -> "盤點"
"OPEN" -> UiText.t("開倉", "Opening")
"NOR" -> UiText.t("出入倉", "In/out")
"TRF" -> UiText.t("轉倉", "Transfer")
"ADJ" -> UiText.t("調整", "Adjustment")
"MISS" -> UiText.t("遺失", "Shortage")
"BAD" -> UiText.t("不良品", "Damaged")
"TKE" -> UiText.t("盤點", "Stock take")
else -> raw
}



+ 9
- 7
src/main/java/com/ffii/fpsms/modules/report/service/StockLotOnhandReportService.kt Parādīt failu

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

import com.ffii.core.utils.UiText

import com.ffii.core.support.JdbcDao
import org.springframework.stereotype.Service
import java.time.LocalDate
@@ -288,7 +290,7 @@ stock_one AS (
mapOf("lotIds" to chunk),
)
n += rows.size
applySilSolHits(rows, hits, "入庫")
applySilSolHits(rows, hits, UiText.t("入庫", "Stock in"))
}
return n
}
@@ -310,7 +312,7 @@ stock_one AS (
mapOf("lotIds" to chunk),
)
n += rows.size
applySilSolHits(rows, hits, "入庫")
applySilSolHits(rows, hits, UiText.t("入庫", "Stock in"))
}
return n
}
@@ -332,7 +334,7 @@ stock_one AS (
mapOf("lotIds" to chunk),
)
n += rows.size
applySilSolHits(rows, hits, "出庫")
applySilSolHits(rows, hits, UiText.t("出庫", "Stock out"))
}
return n
}
@@ -346,16 +348,16 @@ stock_one AS (
val prev = hits[lotId]
val newer = prev == null ||
ts > prev.ts ||
(ts == prev.ts && kind == "出庫" && prev.kind != "出庫")
(ts == prev.ts && kind == UiText.t("出庫", "Stock out") && prev.kind != UiText.t("出庫", "Stock out"))
if (newer) hits[lotId] = SilSolHit(ts, date, kind)
}
}

private fun lastTrnType(inQty: Double, outQty: Double): String =
when {
outQty > 0 && inQty <= 0 -> "出庫"
inQty > 0 && outQty <= 0 -> "入庫"
inQty > 0 && outQty > 0 -> if (outQty >= inQty) "出庫" else "入庫"
outQty > 0 && inQty <= 0 -> UiText.t("出庫", "Stock out")
inQty > 0 && outQty <= 0 -> UiText.t("入庫", "Stock in")
inQty > 0 && outQty > 0 -> if (outQty >= inQty) UiText.t("出庫", "Stock out") else UiText.t("入庫", "Stock in")
else -> ""
}



+ 34
- 16
src/main/java/com/ffii/fpsms/modules/report/service/StockTakeVarianceReportService.kt Parādīt failu

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

import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.common.demo.DemoFloors
import com.ffii.core.support.JdbcDao
import org.springframework.stereotype.Service
@@ -78,21 +80,36 @@ lot_root_origin AS (
ON root_po.id = root_sil.purchaseOrderId AND root_po.deleted = 0
"""

private const val LOT_ROOT_CATEGORY_SQL = """
}

private fun sqlQuote(label: String) = "'" + label.replace("'", "''") + "'"

private fun lotRootCategorySql(): String {
val production = sqlQuote(UiText.t("生產", "Production"))
val opening = sqlQuote(UiText.t("期初存貨", "Opening stock"))
val adjustment = sqlQuote(UiText.t("倉存調整", "Stock adjustment"))
val purchase = sqlQuote(UiText.t("採購", "Purchase"))
val other = sqlQuote(UiText.t("其他", "Other"))
return """
CASE
WHEN root_sil.jobOrderId IS NOT NULL THEN '生產'
WHEN UPPER(TRIM(COALESCE(root_sil.type, ''))) = 'OPEN' THEN '期初存貨'
WHEN UPPER(TRIM(COALESCE(root_sil.type, ''))) = 'ADJ' THEN '倉存調整'
WHEN root_sil.purchaseOrderId IS NOT NULL THEN '採購'
ELSE '其他'
WHEN root_sil.jobOrderId IS NOT NULL THEN $production
WHEN UPPER(TRIM(COALESCE(root_sil.type, ''))) = 'OPEN' THEN $opening
WHEN UPPER(TRIM(COALESCE(root_sil.type, ''))) = 'ADJ' THEN $adjustment
WHEN root_sil.purchaseOrderId IS NOT NULL THEN $purchase
ELSE $other
END"""
}

private const val LOT_TYPE_DISPLAY_SQL = """
private fun lotTypeDisplaySql(): String {
val transfer = sqlQuote(UiText.t("轉倉(原:", "Transfer (from: "))
val close = sqlQuote(UiText.t(")", ")"))
val root = lotRootCategorySql()
return """
CASE
WHEN UPPER(TRIM(COALESCE(origin_sil.type, ''))) = 'TRF'
OR origin_sil.stockTransferId IS NOT NULL
THEN CONCAT('轉倉(原:', $LOT_ROOT_CATEGORY_SQL, ')')
ELSE $LOT_ROOT_CATEGORY_SQL
THEN CONCAT($transfer, $root, $close)
ELSE $root
END"""
}

@@ -299,7 +316,7 @@ data AS (
ls.approverStockTakeQty AS stkApproverQty,
ls.varianceQty AS stkVarianceQty,
ls.date AS stockTakeDateRaw,
$LOT_TYPE_DISPLAY_SQL AS lotTypeRaw
${lotTypeDisplaySql()} AS lotTypeRaw
FROM inventory_lot_line ill
INNER JOIN inventory_lot il
ON ill.inventoryLotId = il.id
@@ -577,7 +594,7 @@ data AS (
ls.strDate AS stockTakeDateRaw,
ls.approverTime AS approvalDateTimeRaw,
ls.stockTakeRecordStatus AS stockTakeRecordStatus,
$LOT_TYPE_DISPLAY_SQL AS lotTypeRaw
${lotTypeDisplaySql()} AS lotTypeRaw
FROM latest_str ls
INNER JOIN inventory_lot il
ON ls.lotId = il.id
@@ -876,7 +893,7 @@ data AS (
lb.strDate AS stockTakeDateRaw,
lb.approverTime AS approvalDateTimeRaw,
lb.stockTakeRecordStatus AS stockTakeRecordStatus,
$LOT_TYPE_DISPLAY_SQL AS lotTypeRaw
${lotTypeDisplaySql()} AS lotTypeRaw
FROM line_bounds lb
INNER JOIN inventory_lot_line ill ON ill.id = lb.inventoryLotLineId
INNER JOIN inventory_lot il ON ill.inventoryLotId = il.id AND il.deleted = 0
@@ -962,23 +979,24 @@ ORDER BY

/** Overall 模式報表副標題(全系統輪次,舊 API 相容) */
fun getStockTakeVarianceOverallCaption(): String =
"全輪次(各批號/倉別最新已完成盤點)"
UiText.t("全輪次(各批號/倉別最新已完成盤點)", "All rounds (latest completed count per lot and location)")

/** 多選輪次 Overall 模式報表副標題 */
fun getStockTakeVarianceMultiRoundCaption(stockTakeRoundIds: List<Long>): String {
if (stockTakeRoundIds.isEmpty()) return getStockTakeVarianceOverallCaption()
val parts = stockTakeRoundIds.map { getStockTakeRoundCaption(it) }
return "已選輪次(各批號/倉別最新已完成盤點):${parts.joinToString(";")}"
return UiText.t("已選輪次(各批號/倉別最新已完成盤點):", "Selected rounds (latest completed count per lot and location): ") + parts.joinToString(UiText.t(";", "; "))
}

/** 報表表頭:盤點輪次說明(與 /report/stock-take-rounds 選項格式一致) */
fun getStockTakeRoundCaption(stockTakeRoundId: Long): String {
val roundLabel = UiText.t("盤點輪次", "Round ").replace("'", "''")
val sql = """
SELECT
CONCAT(
CASE
WHEN NULLIF(TRIM(MAX(st.stockTakeRoundName)), '') IS NULL
THEN CONCAT('盤點輪次', CAST(st.stockTakeRoundId AS CHAR))
THEN CONCAT('$roundLabel', CAST(st.stockTakeRoundId AS CHAR))
ELSE TRIM(MAX(st.stockTakeRoundName))
END,
' — ',
@@ -994,7 +1012,7 @@ ORDER BY
mapOf("stockTakeRoundId" to stockTakeRoundId)
).firstOrNull()
val cap = row?.get("cap") as? String
return if (!cap.isNullOrBlank()) cap else "盤點輪次$stockTakeRoundId"
return if (!cap.isNullOrBlank()) cap else UiText.t("盤點輪次", "Round ") + stockTakeRoundId
}

/**


+ 13
- 11
src/main/java/com/ffii/fpsms/modules/report/web/DoInventoryUomMismatchReportController.kt Parādīt failu

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web

import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.report.service.DoInventoryUomMismatchReportService
import org.apache.poi.ss.usermodel.BorderStyle
import org.apache.poi.ss.usermodel.FillPatternType
@@ -69,17 +71,17 @@ class DoInventoryUomMismatchReportController(
}

val columns = listOf(
"deliveryDate" to "預計送貨日期",
"doCode" to "送貨單號",
"supplierCode" to "供應商編號",
"supplierName" to "供應商名稱",
"itemCode" to "貨品編號",
"itemName" to "貨品名稱",
"doQty" to "送貨單數量",
"doUom" to "送貨單單位",
"mismatchLotNo" to "不符批號",
"mismatchLotQty" to "不符批數量",
"mismatchLotUom" to "不符批單位",
"deliveryDate" to UiText.t("預計送貨日期", "Planned delivery date"),
"doCode" to UiText.t("送貨單號", "Delivery note no."),
"supplierCode" to UiText.t("供應商編號", "Supplier code"),
"supplierName" to UiText.t("供應商名稱", "Supplier name"),
"itemCode" to UiText.t("貨品編號", "Item code"),
"itemName" to UiText.t("貨品名稱", "Item name"),
"doQty" to UiText.t("送貨單數量", "DN qty"),
"doUom" to UiText.t("送貨單單位", "DN UOM"),
"mismatchLotNo" to UiText.t("不符批號", "Mismatched lot"),
"mismatchLotQty" to UiText.t("不符批數量", "Mismatched qty"),
"mismatchLotUom" to UiText.t("不符批單位", "Mismatched UOM"),
)

var r = 0


+ 21
- 19
src/main/java/com/ffii/fpsms/modules/report/web/DoUserPickAuditReportController.kt Parādīt failu

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web

import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.report.service.DoUserPickAuditReportService
import org.apache.poi.ss.usermodel.BorderStyle
import org.apache.poi.ss.usermodel.FillPatternType
@@ -52,15 +54,15 @@ class DoUserPickAuditReportController(
contentType = MediaType.parseMediaType(
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
)
setContentDispositionFormData("attachment", "成品出倉揀貨合規報告.xlsx")
set("filename", "成品出倉揀貨合規報告.xlsx")
setContentDispositionFormData("attachment", UiText.t("成品出倉揀貨合規報告.xlsx", "FG outbound pick compliance.xlsx"))
set("filename", UiText.t("成品出倉揀貨合規報告.xlsx", "FG outbound pick compliance.xlsx"))
}
return ResponseEntity(bytes, headers, HttpStatus.OK)
}

private fun buildExcel(rows: List<Map<String, Any?>>): ByteArray {
val workbook = XSSFWorkbook()
val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName("DO揀貨人員稽核"))
val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(UiText.t("DO揀貨人員稽核", "Delivery pick audit")))
val headerStyle = workbook.createCellStyle().apply {
alignment = HorizontalAlignment.CENTER
verticalAlignment = VerticalAlignment.CENTER
@@ -82,20 +84,20 @@ class DoUserPickAuditReportController(

// key = SQL alias; label = Chinese Excel header
val columns = listOf(
"datetime" to "完成時間",
"ticketNo" to "提票號碼",
"itemCode" to "貨品編號",
"itemName" to "貨品名稱",
"isEgg" to "是否雞蛋類",
"suggestLot" to "建議批號",
"actualLot" to "實際批號",
"qty" to "所需數量",
"actualQty" to "實際提料數量",
"lotBeforeQty" to "提料前庫存",
"lotAfterQty" to "提料後庫存",
"issueJustComplete" to "跳過提料(使用「已完成」)",
"user" to "提料人",
"issueTypes" to "偏離類型",
"datetime" to UiText.t("完成時間", "Completed at"),
"ticketNo" to UiText.t("提票號碼", "Ticket no."),
"itemCode" to UiText.t("貨品編號", "Item code"),
"itemName" to UiText.t("貨品名稱", "Item name"),
"isEgg" to UiText.t("是否雞蛋類", "Egg item"),
"suggestLot" to UiText.t("建議批號", "Suggested lot"),
"actualLot" to UiText.t("實際批號", "Actual lot"),
"qty" to UiText.t("所需數量", "Required qty"),
"actualQty" to UiText.t("實際提料數量", "Actual pick qty"),
"lotBeforeQty" to UiText.t("提料前庫存", "Stock before pick"),
"lotAfterQty" to UiText.t("提料後庫存", "Stock after pick"),
"issueJustComplete" to UiText.t("跳過提料(使用「已完成」)", "Pick skipped (marked completed)"),
"user" to UiText.t("提料人", "Picker"),
"issueTypes" to UiText.t("偏離類型", "Deviation type"),
)

var r = 0
@@ -117,12 +119,12 @@ class DoUserPickAuditReportController(
null -> cell.setCellValue("")
is Number -> {
if (key == "issueJustComplete") {
cell.setCellValue(if (v.toDouble() != 0.0) "是" else "否")
cell.setCellValue(if (v.toDouble() != 0.0) UiText.t("是", "Yes") else UiText.t("否", "No"))
} else {
cell.setCellValue(v.toDouble())
}
}
is Boolean -> cell.setCellValue(if (v) "是" else "否")
is Boolean -> cell.setCellValue(if (v) UiText.t("是", "Yes") else UiText.t("否", "No"))
else -> cell.setCellValue(v.toString())
}
}


+ 15
- 13
src/main/java/com/ffii/fpsms/modules/report/web/FGStockOutTraceabilityReportController.kt Parādīt failu

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web

import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.report.service.FGStockOutTraceabilityReportService
import com.ffii.fpsms.modules.report.service.ReportService
import org.springframework.http.HttpHeaders
@@ -122,7 +124,7 @@ class FGStockOutTraceabilityReportController(

private fun createFGStockOutTraceabilityExcel(dbData: List<Map<String, Any>>): ByteArray {
val workbook = XSSFWorkbook()
val reportTitle = "成品出倉追蹤報告"
val reportTitle = UiText.t("成品出倉追蹤報告", "FG outbound traceability report")
val safeSheetName = WorkbookUtil.createSafeSheetName(reportTitle)
val sheet = workbook.createSheet(safeSheetName)

@@ -172,17 +174,17 @@ class FGStockOutTraceabilityReportController(
}

val headers = listOf(
"貨品編號",
"貨品名稱",
"單位",
"出貨單號",
"提料單號",
"批號",
"到期日",
"出貨數量",
"提料人",
"存貨位置",
"提料備註",
UiText.t("貨品編號", "Item code"),
UiText.t("貨品名稱", "Item name"),
UiText.t("單位", "UOM"),
UiText.t("出貨單號", "Shipment no."),
UiText.t("提料單號", "Pick order no."),
UiText.t("批號", "Lot no."),
UiText.t("到期日", "Expiry date"),
UiText.t("出貨數量", "Shipped qty"),
UiText.t("提料人", "Picker"),
UiText.t("存貨位置", "Stock location"),
UiText.t("提料備註", "Pick notes"),
)

val titleStyle = workbook.createCellStyle().apply {
@@ -276,7 +278,7 @@ class FGStockOutTraceabilityReportController(
}
}
summaryRow.createCell(6).apply {
setCellValue("總出倉量 :")
setCellValue(UiText.t("總出倉量 :", "Total outbound qty: "))
cellStyle = summaryLabelInExpiryColStyle
}
summaryRow.createCell(7).apply {


+ 24
- 22
src/main/java/com/ffii/fpsms/modules/report/web/ItemQcFailReportController.kt Parādīt failu

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web

import com.ffii.core.utils.UiText

import org.springframework.http.*
import org.springframework.web.bind.annotation.*
import com.ffii.fpsms.modules.report.service.ItemQcFailReportService
@@ -49,15 +51,15 @@ class ItemQcFailReportController(

val pdfParts = mutableListOf<ByteArray>()
if (passedRows.isNotEmpty()) {
pdfParts.add(createItemQcPdf(stockCategory, itemCode, lastInDateStart, lastInDateEnd, qcType, passedRows, "合格"))
pdfParts.add(createItemQcPdf(stockCategory, itemCode, lastInDateStart, lastInDateEnd, qcType, passedRows, UiText.t("合格", "Pass")))
}
if (failedRows.isNotEmpty()) {
pdfParts.add(createItemQcPdf(stockCategory, itemCode, lastInDateStart, lastInDateEnd, qcType, failedRows, "不合格"))
pdfParts.add(createItemQcPdf(stockCategory, itemCode, lastInDateStart, lastInDateEnd, qcType, failedRows, UiText.t("不合格", "Fail")))
}

val pdfBytes = when {
pdfParts.isEmpty() -> createItemQcPdf(
stockCategory, itemCode, lastInDateStart, lastInDateEnd, qcType, emptyList(), "合格"
stockCategory, itemCode, lastInDateStart, lastInDateEnd, qcType, emptyList(), UiText.t("合格", "Pass")
)
pdfParts.size == 1 -> pdfParts[0]
else -> reportService.mergePdfBytes(pdfParts)
@@ -154,7 +156,7 @@ class ItemQcFailReportController(
return when (qcType?.trim()?.uppercase()) {
"IQC" -> "IQC"
"EPQC" -> "EPQC"
else -> "全部"
else -> UiText.t("全部", "All")
}
}

@@ -174,8 +176,8 @@ class ItemQcFailReportController(
qcType: String?,
): ByteArray {
val workbook: Workbook = XSSFWorkbook()
writeQcSheet(workbook, "合格", passedRows, lastInDateStart, lastInDateEnd, qcType)
writeQcSheet(workbook, "不合格", failedRows, lastInDateStart, lastInDateEnd, qcType)
writeQcSheet(workbook, UiText.t("合格", "Pass"), passedRows, lastInDateStart, lastInDateEnd, qcType)
writeQcSheet(workbook, UiText.t("不合格", "Fail"), failedRows, lastInDateStart, lastInDateEnd, qcType)
return workbookToByteArray(workbook)
}

@@ -187,7 +189,7 @@ class ItemQcFailReportController(
lastInDateEnd: String?,
qcType: String?,
) {
val reportTitle = "庫存品質檢測報告"
val reportTitle = UiText.t("庫存品質檢測報告", "Stock QC report")
val safeSheetName = WorkbookUtil.createSafeSheetName(sheetLabel)
val sheet = workbook.createSheet(safeSheetName)

@@ -227,7 +229,7 @@ class ItemQcFailReportController(
val startTxt = lastInDateStart ?: ""
val endTxt = lastInDateEnd ?: ""
val qcTypeTxt = resolveQcTypeLabel(qcType)
cell.setCellValue("QC 檢測日期: ${startTxt} - ${endTxt} QC 類型: $qcTypeTxt")
cell.setCellValue(UiText.t("QC 檢測日期: ", "QC date: ") + (startTxt) + " - " + (endTxt) + UiText.t(" QC 類型: ", " QC type: ") + qcTypeTxt)
}

val headerStyle = workbook.createCellStyle().apply {
@@ -286,20 +288,20 @@ class ItemQcFailReportController(
}

val headers = listOf(
"庫存類別",
"物料編號",
"物料名稱",
"單位",
"批號",
"到期日",
"QC 類型",
"QC 範本",
"檢測標準",
"批量",
"不合格數量",
"實測值",
"備註",
"訂單/工單",
UiText.t("庫存類別", "Stock category"),
UiText.t("物料編號", "Material code"),
UiText.t("物料名稱", "Material name"),
UiText.t("單位", "UOM"),
UiText.t("批號", "Lot no."),
UiText.t("到期日", "Expiry date"),
UiText.t("QC 類型", "QC type"),
UiText.t("QC 範本", "QC template"),
UiText.t("檢測標準", "QC standard"),
UiText.t("批量", "Lot qty"),
UiText.t("不合格數量", "Fail qty"),
UiText.t("實測值", "Measured value"),
UiText.t("備註", "Notes"),
UiText.t("訂單/工單", "Order / job order"),
)

run {


+ 15
- 13
src/main/java/com/ffii/fpsms/modules/report/web/MaterialStockOutTraceabilityReportController.kt Parādīt failu

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web

import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.report.service.MaterialStockOutTraceabilityReportService
import com.ffii.fpsms.modules.report.service.ReportService
import org.springframework.http.HttpHeaders
@@ -207,7 +209,7 @@ class MaterialStockOutTraceabilityReportController(
lastOutDateEnd: String?,
): ByteArray {
val workbook = XSSFWorkbook()
val reportTitle = "物料出倉追蹤報告"
val reportTitle = UiText.t("物料出倉追蹤報告", "Material outbound traceability report")
val safeSheetName = WorkbookUtil.createSafeSheetName(reportTitle)
val sheet = workbook.createSheet(safeSheetName)

@@ -257,17 +259,17 @@ class MaterialStockOutTraceabilityReportController(
}

val headers = listOf(
"貨品編號",
"貨品名稱",
"單位",
"工單編號",
"提料單號",
"批號",
"到期日",
"出貨數量",
"提料人",
"存貨位置",
"提料備註",
UiText.t("貨品編號", "Item code"),
UiText.t("貨品名稱", "Item name"),
UiText.t("單位", "UOM"),
UiText.t("工單編號", "Job order no."),
UiText.t("提料單號", "Pick order no."),
UiText.t("批號", "Lot no."),
UiText.t("到期日", "Expiry date"),
UiText.t("出貨數量", "Shipped qty"),
UiText.t("提料人", "Picker"),
UiText.t("存貨位置", "Stock location"),
UiText.t("提料備註", "Pick notes"),
)

// Header row
@@ -328,7 +330,7 @@ class MaterialStockOutTraceabilityReportController(
}
}
summaryRow.createCell(6).apply {
setCellValue("總出倉量 :")
setCellValue(UiText.t("總出倉量 :", "Total outbound qty: "))
cellStyle = summaryLabelInExpiryColStyle
}
summaryRow.createCell(7).apply {


+ 25
- 23
src/main/java/com/ffii/fpsms/modules/report/web/ReportController.kt Parādīt failu

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web

import com.ffii.core.utils.UiText

import net.sf.jasperreports.engine.*
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource
import org.apache.poi.ss.usermodel.BorderStyle
@@ -788,15 +790,15 @@ class ReportController(
): ByteArray {
val workbook = XSSFWorkbook()
val styles = createCommonWorkbookStyles(workbook)
val reportTitle = "入倉追蹤報告"
val reportTitle = UiText.t("入倉追蹤報告", "Stock-in traceability report")
val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle))

val headers = listOf(
"貨品編號", "貨品名稱", "單位",
"送貨單編號", "批號", "到期日",
"上架數量", "入庫檢查樣品數量", "入庫檢查缺陷數量",
"入庫檢查缺陷百分比", "入庫檢查結果", "入庫檢查備註",
"存貨位置", "供應商名稱",
UiText.t("貨品編號", "Item code"), UiText.t("貨品名稱", "Item name"), UiText.t("單位", "UOM"),
UiText.t("送貨單編號", "Delivery note no."), UiText.t("批號", "Lot no."), UiText.t("到期日", "Expiry date"),
UiText.t("上架數量", "Put-away qty"), UiText.t("入庫檢查樣品數量", "Stock-in check sample qty"), UiText.t("入庫檢查缺陷數量", "Stock-in check defect qty"),
UiText.t("入庫檢查缺陷百分比", "Stock-in check defect %"), UiText.t("入庫檢查結果", "Stock-in check result"), UiText.t("入庫檢查備註", "Stock-in check notes"),
UiText.t("存貨位置", "Stock location"), UiText.t("供應商名稱", "Supplier name"),
)
val totalColumns = headers.size
var rowIndex = 0
@@ -815,13 +817,13 @@ class ReportController(
")"
val subtitleRow = sheet.createRow(rowIndex++)
subtitleRow.createCell(0).apply {
setCellValue("報告日期:$reportDateTime")
setCellValue(UiText.t("報告日期:", "Report date: ") + reportDateTime)
cellStyle = styles.subtitle
}
sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 5))
subtitleRow.createCell(6).apply {
val cap = (lastInDateStart.trim().ifBlank { "" }) + " 至 " + (lastInDateEnd.trim().ifBlank { "" })
setCellValue("最後入倉日期:${cap.trim()}")
val cap = (lastInDateStart.trim().ifBlank { "" }) + UiText.t(" 至 ", " to ") + (lastInDateEnd.trim().ifBlank { "" })
setCellValue(UiText.t("最後入倉日期:", "Last stock-in date: ") + (cap.trim()))
cellStyle = styles.subtitle
}
sheet.addMergedRegion(CellRangeAddress(1, 1, 6, totalColumns - 1))
@@ -855,7 +857,7 @@ class ReportController(
// - 上架數量 (col 6)
// - 入庫檢查樣品數量 (col 7)
// - 入庫檢查缺陷數量 (col 8)
r.getCell(5).apply { setCellValue("合計:"); cellStyle = styles.sumLabel }
r.getCell(5).apply { setCellValue(UiText.t("合計:", "Total: ")); cellStyle = styles.sumLabel }
setNumberCellFromFormatted(r, 6, totalStockIn, styles.sumQty, styles.dash, preferInt = false)
setNumberCellFromFormatted(r, 7, _totalSample, styles.sumQty, styles.dash, preferInt = false)
setNumberCellFromFormatted(r, 8, _totalDefect, styles.sumQty, styles.dash, preferInt = false)
@@ -944,12 +946,12 @@ class ReportController(
): ByteArray {
val workbook = XSSFWorkbook()
val styles = createCommonWorkbookStyles(workbook)
val reportTitle = "成品出倉報告"
val reportTitle = UiText.t("成品出倉報告", "Finished goods outbound report")
val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle))

val headers = listOf(
"貨品編號", "貨品名稱", "單位",
"送貨日期", "DN編號", "送貨訂單編號", "門店名稱", "數量", "貨車",
UiText.t("貨品編號", "Item code"), UiText.t("貨品名稱", "Item name"), UiText.t("單位", "UOM"),
UiText.t("送貨日期", "Delivery date"), UiText.t("DN編號", "DN no."), UiText.t("送貨訂單編號", "Delivery order no."), UiText.t("門店名稱", "Shop name"), UiText.t("數量", "Qty"), UiText.t("貨車", "Truck"),
)
val totalColumns = headers.size
var rowIndex = 0
@@ -968,17 +970,17 @@ class ReportController(
")"
val subtitleRow = sheet.createRow(rowIndex++)
subtitleRow.createCell(0).apply {
setCellValue("報告日期:$reportDateTime")
setCellValue(UiText.t("報告日期:", "Report date: ") + reportDateTime)
cellStyle = styles.subtitle
}
sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 2))
subtitleRow.createCell(3).apply {
setCellValue("成品出倉日期:${lastOutDateStart.trim()} 至 ${lastOutDateEnd.trim()}")
setCellValue(UiText.t("成品出倉日期:", "FG outbound date: ") + (lastOutDateStart.trim()) + UiText.t(" 至 ", " to ") + (lastOutDateEnd.trim()))
cellStyle = styles.subtitle
}
sheet.addMergedRegion(CellRangeAddress(1, 1, 3, 6))
subtitleRow.createCell(7).apply {
setCellValue("年份:$year")
setCellValue(UiText.t("年份:", "Year: ") + year)
cellStyle = styles.subtitle
}
sheet.addMergedRegion(CellRangeAddress(1, 1, 7, totalColumns - 1))
@@ -1008,7 +1010,7 @@ class ReportController(
}
}
r.getCell(6).apply {
setCellValue("每單交貨總數:")
setCellValue(UiText.t("每單交貨總數:", "Delivery total: "))
cellStyle = styles.sumLabel
}
r.getCell(7).apply {
@@ -1078,14 +1080,14 @@ class ReportController(
): ByteArray {
val workbook = XSSFWorkbook()
val styles = createCommonWorkbookStyles(workbook)
val reportTitle = "庫存結餘報告"
val reportTitle = UiText.t("庫存結餘報告", "Stock balance report")
val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle))

val headers = listOf(
"貨品編號", "貨品名稱", "單位",
"期初存量", "纍計存入量", "纍計存出量",
"錯誤輸入或遺失", "盤盈虧", "不良品棄置",
"現存存貨", "單位均價", "庫存總價值",
UiText.t("貨品編號", "Item code"), UiText.t("貨品名稱", "Item name"), UiText.t("單位", "UOM"),
UiText.t("期初存量", "Opening qty"), UiText.t("纍計存入量", "Cumulative stock in"), UiText.t("纍計存出量", "Cumulative stock out"),
UiText.t("錯誤輸入或遺失", "Mis-entry or loss"), UiText.t("盤盈虧", "Variance"), UiText.t("不良品棄置", "Damaged disposal"),
UiText.t("現存存貨", "On hand"), UiText.t("單位均價", "Avg unit price"), UiText.t("庫存總價值", "Total stock value"),
)
val totalColumns = headers.size
var rowIndex = 0
@@ -1104,7 +1106,7 @@ class ReportController(
")"
val subtitleRow = sheet.createRow(rowIndex++)
subtitleRow.createCell(0).apply {
setCellValue("報告日期:$reportDateTime")
setCellValue(UiText.t("報告日期:", "Report date: ") + reportDateTime)
cellStyle = styles.subtitle
}
sheet.addMergedRegion(CellRangeAddress(1, 1, 0, totalColumns - 1))


+ 38
- 36
src/main/java/com/ffii/fpsms/modules/report/web/SemiFGProductionAnalysisReportController.kt Parādīt failu

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web

import com.ffii.core.utils.UiText

import net.sf.jasperreports.engine.*
import org.springframework.http.*
import org.springframework.web.bind.annotation.*
@@ -160,7 +162,7 @@ class SemiFGProductionAnalysisReportController(

val excelBytes = createSemiFGProductionAnalysisExcel(
dbData = dbData,
reportTitle = "成品/半成品生產分析報告",
reportTitle = UiText.t("成品/半成品生產分析報告", "Finished / semi-finished production report"),
year = year
)

@@ -249,13 +251,13 @@ class SemiFGProductionAnalysisReportController(

val infoRow = sheet.createRow(rowIndex++)
val reportDateCell = infoRow.createCell(0)
reportDateCell.setCellValue("報告日期:${LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))}")
reportDateCell.setCellValue(UiText.t("報告日期:", "Report date: ") + (LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))))
reportDateCell.cellStyle = infoStyle
val reportTimeCell = infoRow.createCell(6)
reportTimeCell.setCellValue("報告時間:${LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss"))}")
reportTimeCell.setCellValue(UiText.t("報告時間:", "Report time: ") + (LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss"))))
reportTimeCell.cellStyle = infoStyle
val reportYearCell = infoRow.createCell(11)
reportYearCell.setCellValue("年份:${year?.takeIf { it.isNotBlank() && it != "All" } ?: "All"}")
reportYearCell.setCellValue(UiText.t("年份:", "Year: ") + (year?.takeIf { it.isNotBlank() && it != "All" } ?: "All"))
reportYearCell.cellStyle = infoStyle
sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 5))
sheet.addMergedRegion(CellRangeAddress(1, 1, 6, 10))
@@ -264,22 +266,22 @@ class SemiFGProductionAnalysisReportController(
rowIndex++ // spacer row

val headers = listOf(
"貨品編號",
"貨品名稱",
"單位",
"一月",
"二月",
"三月",
"四月",
"五月",
"六月",
"七月",
"八月",
"九月",
"十月",
"十一月",
"十二月",
"上架總計"
UiText.t("貨品編號", "Item code"),
UiText.t("貨品名稱", "Item name"),
UiText.t("單位", "UOM"),
UiText.t("一月", "Jan"),
UiText.t("二月", "Feb"),
UiText.t("三月", "Mar"),
UiText.t("四月", "Apr"),
UiText.t("五月", "May"),
UiText.t("六月", "Jun"),
UiText.t("七月", "Jul"),
UiText.t("八月", "Aug"),
UiText.t("九月", "Sep"),
UiText.t("十月", "Oct"),
UiText.t("十一月", "Nov"),
UiText.t("十二月", "Dec"),
UiText.t("上架總計", "Put-away total")
)

val headerRow = sheet.createRow(rowIndex++)
@@ -341,15 +343,15 @@ class SemiFGProductionAnalysisReportController(
"qtyJul", "qtyAug", "qtySep", "qtyOct", "qtyNov", "qtyDec",
)
val monthLabels = listOf(
"一月", "二月", "三月", "四月", "五月", "六月",
"七月", "八月", "九月", "十月", "十一月", "十二月",
UiText.t("一月", "Jan"), UiText.t("二月", "Feb"), UiText.t("三月", "Mar"), UiText.t("四月", "Apr"), UiText.t("五月", "May"), UiText.t("六月", "Jun"),
UiText.t("七月", "Jul"), UiText.t("八月", "Aug"), UiText.t("九月", "Sep"), UiText.t("十月", "Oct"), UiText.t("十一月", "Nov"), UiText.t("十二月", "Dec"),
)

val dataSheetName = WorkbookUtil.createSafeSheetName("圖表數據")
val dataSheetName = WorkbookUtil.createSafeSheetName(UiText.t("圖表數據", "Chart data"))
val dataSheet = workbook.createSheet(dataSheetName)

val headerRow = dataSheet.createRow(0)
headerRow.createCell(0).setCellValue("貨品編號")
headerRow.createCell(0).setCellValue(UiText.t("貨品編號", "Item code"))
monthLabels.forEachIndexed { i, label ->
headerRow.createCell(1 + i).setCellValue(label)
}
@@ -364,7 +366,7 @@ class SemiFGProductionAnalysisReportController(

val zColIndex = CellReference.convertColStringToIndex("Z")
val zHeader = dataSheet.getRow(0) ?: dataSheet.createRow(0)
zHeader.createCell(zColIndex).setCellValue("全部")
zHeader.createCell(zColIndex).setCellValue(UiText.t("全部", "All"))
dbData.forEachIndexed { idx, row ->
val r = dataSheet.getRow(1 + idx) ?: dataSheet.createRow(1 + idx)
r.createCell(zColIndex).setCellValue(row["itemNo"]?.toString() ?: "")
@@ -373,14 +375,14 @@ class SemiFGProductionAnalysisReportController(
val lastDataRow1Based = 1 + dbData.size
val zListEnd1Based = 1 + dbData.size

val chartSheetName = WorkbookUtil.createSafeSheetName("生產圖表")
val chartSheetName = WorkbookUtil.createSafeSheetName(UiText.t("生產圖表", "Production chart"))
val chartSheet = workbook.createSheet(chartSheetName)

val labelR = chartSheet.createRow(0)
labelR.createCell(0).setCellValue("選擇貨品編號")
labelR.createCell(0).setCellValue(UiText.t("選擇貨品編號", "Select item code"))
val filterCell = labelR.createCell(1)
val defaultItemNo = dbData.firstOrNull()?.get("itemNo")?.toString()?.trim()
filterCell.setCellValue(defaultItemNo?.takeIf { it.isNotBlank() } ?: "全部")
filterCell.setCellValue(defaultItemNo?.takeIf { it.isNotBlank() } ?: UiText.t("全部", "All"))

val dvHelper: DataValidationHelper = chartSheet.dataValidationHelper
val listFormula = "'$dataSheetName'!\$Z\$1:\$Z\$$zListEnd1Based"
@@ -388,9 +390,9 @@ class SemiFGProductionAnalysisReportController(
val regions = CellRangeAddressList(0, 0, 1, 1)
val validation = dvHelper.createValidation(constraint, regions)
validation.showErrorBox = true
validation.createErrorBox("無效選擇", "請從清單中選擇貨品編號或「全部」。")
validation.createErrorBox(UiText.t("無效選擇", "Invalid choice"), UiText.t("請從清單中選擇貨品編號或「全部」。", "Choose an item code from the list, or All."))
validation.showPromptBox = true
validation.createPromptBox("篩選", "選擇貨品編號檢視該品項各月數量;選擇「全部」顯示所有品項加總。")
validation.createPromptBox(UiText.t("篩選", "Filter"), UiText.t("選擇貨品編號檢視該品項各月數量;選擇「全部」顯示所有品項加總。", "Select an item code to see monthly quantities, or All for the total of every item."))
chartSheet.addValidationData(validation)

val catRowIndex = 3
@@ -406,26 +408,26 @@ class SemiFGProductionAnalysisReportController(
val formula = if (lastDataRow1Based < 2) {
"0"
} else {
"IF(TRIM(\$B\$1)=\"全部\",SUM('$dataSheetName'!$colLetter\$2:$colLetter\$$lastDataRow1Based),IFERROR(INDEX('$dataSheetName'!$colLetter\$2:$colLetter\$$lastDataRow1Based,MATCH(TRIM(\$B\$1),'$dataSheetName'!\$A\$2:\$A\$$lastDataRow1Based,0)),0))"
"IF(TRIM(\$B\$1)=\"${UiText.t("全部", "All")}\",SUM('$dataSheetName'!$colLetter\$2:$colLetter\$$lastDataRow1Based),IFERROR(INDEX('$dataSheetName'!$colLetter\$2:$colLetter\$$lastDataRow1Based,MATCH(TRIM(\$B\$1),'$dataSheetName'!\$A\$2:\$A\$$lastDataRow1Based,0)),0))"
}
valRow.createCell(firstMonthCol + i).setCellFormula(formula)
}
catRow.createCell(lastMonthCol + 1).setCellValue("總和")
catRow.createCell(lastMonthCol + 1).setCellValue(UiText.t("總和", "Total"))
valRow.createCell(lastMonthCol + 1).setCellFormula("SUM(B5:M5)")

val drawing = chartSheet.createDrawingPatriarch()
val anchor = XSSFClientAnchor(0, 0, 0, 0, 1, 6, 14, 28)
val chart = drawing.createChart(anchor)
chart.setTitleText("各月生產數量(依選擇之貨品編號)")
chart.setTitleText(UiText.t("各月生產數量(依選擇之貨品編號)", "Monthly production quantity (selected item)"))
chart.setTitleOverlay(false)

val legend = chart.getOrAddLegend()
legend.position = LegendPosition.BOTTOM

val bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM)
bottomAxis.setTitle("月份")
bottomAxis.setTitle(UiText.t("月份", "Month"))
val leftAxis = chart.createValueAxis(AxisPosition.LEFT)
leftAxis.setTitle("生產數量")
leftAxis.setTitle(UiText.t("生產數量", "Production qty"))

val catRangeAddr = CellRangeAddress(catRowIndex, catRowIndex, firstMonthCol, lastMonthCol)
val valRangeAddr = CellRangeAddress(valRowIndex, valRowIndex, firstMonthCol, lastMonthCol)
@@ -435,7 +437,7 @@ class SemiFGProductionAnalysisReportController(
val barData = chart.createData(ChartTypes.BAR, bottomAxis, leftAxis) as XDDFBarChartData
barData.barDirection = BarDirection.COL
val series = barData.addSeries(categories, values)
series.setTitle("生產數量", null)
series.setTitle(UiText.t("生產數量", "Production qty"), null)
chart.plot(barData)

chartSheet.setColumnWidth(0, 18 * 256)


+ 40
- 38
src/main/java/com/ffii/fpsms/modules/report/web/StockItemConsumptionTrendReportController.kt Parādīt failu

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web

import com.ffii.core.utils.UiText

import net.sf.jasperreports.engine.*
import org.springframework.http.*
import org.springframework.web.bind.annotation.*
@@ -155,7 +157,7 @@ class StockItemConsumptionTrendReportController(

val excelBytes = createStockItemConsumptionTrendExcel(
dbData = dbData,
reportTitle = "庫存材料消耗趨勢報告",
reportTitle = UiText.t("庫存材料消耗趨勢報告", "Material consumption trend report"),
year = year,
lastOutDateStart = lastOutDateStart,
lastOutDateEnd = lastOutDateEnd
@@ -261,17 +263,17 @@ class StockItemConsumptionTrendReportController(
val infoRow = sheet.createRow(rowIndex++)
val reportDateCell = infoRow.createCell(0)
reportDateCell.setCellValue(
"報告日期:${LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))}"
UiText.t("報告日期:", "Report date: ") + (LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))
)
reportDateCell.cellStyle = infoStyle

val reportTimeCell = infoRow.createCell(6)
reportTimeCell.setCellValue("報告時間:${LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss"))}")
reportTimeCell.setCellValue(UiText.t("報告時間:", "Report time: ") + (LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss"))))
reportTimeCell.cellStyle = infoStyle

val reportYearCell = infoRow.createCell(11)
reportYearCell.setCellValue(
"年份:${year?.takeIf { it.isNotBlank() && it != "All" } ?: "All"}"
UiText.t("年份:", "Year: ") + (year?.takeIf { it.isNotBlank() && it != "All" } ?: "All")
)
reportYearCell.cellStyle = infoStyle

@@ -285,9 +287,9 @@ class StockItemConsumptionTrendReportController(
rangeRow.heightInPoints = 20f
val rangeCell = rangeRow.createCell(0)
val rangeText = buildString {
append("材料消耗日期:")
append(UiText.t("材料消耗日期:", "Consumption date: "))
append(lastOutDateStart ?: "")
append(" 至 ")
append(UiText.t(" 至 ", " to "))
append(lastOutDateEnd ?: "")
}
rangeCell.setCellValue(rangeText)
@@ -296,22 +298,22 @@ class StockItemConsumptionTrendReportController(

// Column headers
val headers = listOf(
"貨品編號",
"貨品名稱",
"單位",
"一月",
"二月",
"三月",
"四月",
"五月",
"六月",
"七月",
"八月",
"九月",
"十月",
"十一月",
"十二月",
"總和"
UiText.t("貨品編號", "Item code"),
UiText.t("貨品名稱", "Item name"),
UiText.t("單位", "UOM"),
UiText.t("一月", "Jan"),
UiText.t("二月", "Feb"),
UiText.t("三月", "Mar"),
UiText.t("四月", "Apr"),
UiText.t("五月", "May"),
UiText.t("六月", "Jun"),
UiText.t("七月", "Jul"),
UiText.t("八月", "Aug"),
UiText.t("九月", "Sep"),
UiText.t("十月", "Oct"),
UiText.t("十一月", "Nov"),
UiText.t("十二月", "Dec"),
UiText.t("總和", "Total")
)

rowIndex++ // spacer row
@@ -371,15 +373,15 @@ class StockItemConsumptionTrendReportController(
"qtyJul", "qtyAug", "qtySep", "qtyOct", "qtyNov", "qtyDec",
)
val monthLabels = listOf(
"一月", "二月", "三月", "四月", "五月", "六月",
"七月", "八月", "九月", "十月", "十一月", "十二月",
UiText.t("一月", "Jan"), UiText.t("二月", "Feb"), UiText.t("三月", "Mar"), UiText.t("四月", "Apr"), UiText.t("五月", "May"), UiText.t("六月", "Jun"),
UiText.t("七月", "Jul"), UiText.t("八月", "Aug"), UiText.t("九月", "Sep"), UiText.t("十月", "Oct"), UiText.t("十一月", "Nov"), UiText.t("十二月", "Dec"),
)

val dataSheetName = WorkbookUtil.createSafeSheetName("圖表數據")
val dataSheetName = WorkbookUtil.createSafeSheetName(UiText.t("圖表數據", "Chart data"))
val dataSheet = workbook.createSheet(dataSheetName)

val headerRow = dataSheet.createRow(0)
headerRow.createCell(0).setCellValue("貨品編號")
headerRow.createCell(0).setCellValue(UiText.t("貨品編號", "Item code"))
monthLabels.forEachIndexed { i, label ->
headerRow.createCell(1 + i).setCellValue(label)
}
@@ -394,7 +396,7 @@ class StockItemConsumptionTrendReportController(

val zColIndex = CellReference.convertColStringToIndex("Z")
val zHeader = dataSheet.getRow(0) ?: dataSheet.createRow(0)
zHeader.createCell(zColIndex).setCellValue("全部")
zHeader.createCell(zColIndex).setCellValue(UiText.t("全部", "All"))
dbData.forEachIndexed { idx, row ->
val r = dataSheet.getRow(1 + idx) ?: dataSheet.createRow(1 + idx)
r.createCell(zColIndex).setCellValue(row["itemNo"]?.toString() ?: "")
@@ -403,14 +405,14 @@ class StockItemConsumptionTrendReportController(
val lastDataRow1Based = 1 + dbData.size
val zListEnd1Based = 1 + dbData.size

val chartSheetName = WorkbookUtil.createSafeSheetName("消耗圖表")
val chartSheetName = WorkbookUtil.createSafeSheetName(UiText.t("消耗圖表", "Consumption chart"))
val chartSheet = workbook.createSheet(chartSheetName)

val labelR = chartSheet.createRow(0)
labelR.createCell(0).setCellValue("選擇貨品編號")
labelR.createCell(0).setCellValue(UiText.t("選擇貨品編號", "Select item code"))
val filterCell = labelR.createCell(1)
val defaultItemNo = dbData.firstOrNull()?.get("itemNo")?.toString()?.trim()
filterCell.setCellValue(defaultItemNo?.takeIf { it.isNotBlank() } ?: "全部")
filterCell.setCellValue(defaultItemNo?.takeIf { it.isNotBlank() } ?: UiText.t("全部", "All"))

val dvHelper: DataValidationHelper = chartSheet.dataValidationHelper
val listFormula = "'$dataSheetName'!\$Z\$1:\$Z\$$zListEnd1Based"
@@ -418,9 +420,9 @@ class StockItemConsumptionTrendReportController(
val regions = CellRangeAddressList(0, 0, 1, 1)
val validation = dvHelper.createValidation(constraint, regions)
validation.showErrorBox = true
validation.createErrorBox("無效選擇", "請從清單中選擇貨品編號或「全部」。")
validation.createErrorBox(UiText.t("無效選擇", "Invalid choice"), UiText.t("請從清單中選擇貨品編號或「全部」。", "Choose an item code from the list, or All."))
validation.showPromptBox = true
validation.createPromptBox("篩選", "選擇貨品編號檢視該品項各月消耗數量;選擇「全部」顯示所有品項加總。")
validation.createPromptBox(UiText.t("篩選", "Filter"), UiText.t("選擇貨品編號檢視該品項各月消耗數量;選擇「全部」顯示所有品項加總。", "Select an item code to see monthly consumption, or All for the total of every item."))
chartSheet.addValidationData(validation)

val catRowIndex = 3
@@ -437,27 +439,27 @@ class StockItemConsumptionTrendReportController(
val formula = if (lastDataRow1Based < 2) {
"0"
} else {
"IF(TRIM(\$B\$1)=\"全部\",SUM('$dataSheetName'!$colLetter\$2:$colLetter\$$lastDataRow1Based),IFERROR(INDEX('$dataSheetName'!$colLetter\$2:$colLetter\$$lastDataRow1Based,MATCH(TRIM(\$B\$1),'$dataSheetName'!\$A\$2:\$A\$$lastDataRow1Based,0)),0))"
"IF(TRIM(\$B\$1)=\"${UiText.t("全部", "All")}\",SUM('$dataSheetName'!$colLetter\$2:$colLetter\$$lastDataRow1Based),IFERROR(INDEX('$dataSheetName'!$colLetter\$2:$colLetter\$$lastDataRow1Based,MATCH(TRIM(\$B\$1),'$dataSheetName'!\$A\$2:\$A\$$lastDataRow1Based,0)),0))"
}
valRow.createCell(firstMonthCol + i).setCellFormula(formula)
}

catRow.createCell(lastMonthCol + 1).setCellValue("總和")
catRow.createCell(lastMonthCol + 1).setCellValue(UiText.t("總和", "Total"))
valRow.createCell(lastMonthCol + 1).setCellFormula("SUM(B5:M5)")

val drawing = chartSheet.createDrawingPatriarch()
val anchor = XSSFClientAnchor(0, 0, 0, 0, 1, 6, 14, 28)
val chart = drawing.createChart(anchor)
chart.setTitleText("各月消耗數量(依選擇之貨品編號)")
chart.setTitleText(UiText.t("各月消耗數量(依選擇之貨品編號)", "Monthly consumption quantity (selected item)"))
chart.setTitleOverlay(false)

val legend = chart.getOrAddLegend()
legend.position = LegendPosition.BOTTOM

val bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM)
bottomAxis.setTitle("月份")
bottomAxis.setTitle(UiText.t("月份", "Month"))
val leftAxis = chart.createValueAxis(AxisPosition.LEFT)
leftAxis.setTitle("消耗數量")
leftAxis.setTitle(UiText.t("消耗數量", "Consumption qty"))

val catRangeAddr = CellRangeAddress(catRowIndex, catRowIndex, firstMonthCol, lastMonthCol)
val valRangeAddr = CellRangeAddress(valRowIndex, valRowIndex, firstMonthCol, lastMonthCol)
@@ -467,7 +469,7 @@ class StockItemConsumptionTrendReportController(
val barData = chart.createData(ChartTypes.BAR, bottomAxis, leftAxis) as XDDFBarChartData
barData.barDirection = BarDirection.COL
val series = barData.addSeries(categories, values)
series.setTitle("消耗數量", null)
series.setTitle(UiText.t("消耗數量", "Consumption qty"), null)
chart.plot(barData)

chartSheet.setColumnWidth(0, 18 * 256)


+ 11
- 9
src/main/java/com/ffii/fpsms/modules/report/web/StockLedgerReportController.kt Parādīt failu

@@ -1,4 +1,6 @@
package com.ffii.fpsms.modules.report.web

import com.ffii.core.utils.UiText
import org.springframework.web.bind.annotation.*
import org.springframework.http.*
import java.time.LocalDate
@@ -324,14 +326,14 @@ class StockLedgerReportController(
workbook.setCompressTempFiles(true)
try {
val styles = createStyles(workbook)
val reportTitle = "庫存明細報告"
val reportTitle = UiText.t("庫存明細報告", "Stock ledger report")
val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle))

val headers = listOf(
"貨品編號", "貨品名稱", "單位",
"出入賬日期", "類型", "批號", "到期日",
"纍計期初存量", "入庫", "出庫", "纍計存量",
"參考編號", "存貨位置",
UiText.t("貨品編號", "Item code"), UiText.t("貨品名稱", "Item name"), UiText.t("單位", "UOM"),
UiText.t("出入賬日期", "Ledger date"), UiText.t("類型", "Type"), UiText.t("批號", "Lot no."), UiText.t("到期日", "Expiry date"),
UiText.t("纍計期初存量", "Opening balance"), UiText.t("入庫", "Stock in"), UiText.t("出庫", "Stock out"), UiText.t("纍計存量", "Cumulative balance"),
UiText.t("參考編號", "Reference no."), UiText.t("存貨位置", "Stock location"),
)
val totalColumns = headers.size
var rowIndex = 0
@@ -350,12 +352,12 @@ class StockLedgerReportController(
")"
val subtitleRow = sheet.createRow(rowIndex++)
subtitleRow.createCell(0).apply {
setCellValue("報告日期:$reportDateTime")
setCellValue(UiText.t("報告日期:", "Report date: ") + reportDateTime)
cellStyle = styles.subtitle
}
sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 4))
subtitleRow.createCell(5).apply {
setCellValue("報告期間:${reportPeriodStart.trim()} 至 ${reportPeriodEnd.trim()}")
setCellValue(UiText.t("報告期間:", "Report period: ") + (reportPeriodStart.trim()) + UiText.t(" 至 ", " to ") + (reportPeriodEnd.trim()))
cellStyle = styles.subtitle
}
sheet.addMergedRegion(CellRangeAddress(1, 1, 5, totalColumns - 1))
@@ -385,7 +387,7 @@ class StockLedgerReportController(
for (c in 3 until totalColumns) {
r.createCell(c).apply { setCellValue(""); cellStyle = styles.sumEmpty }
}
r.getCell(7).apply { setCellValue("貨品總量:"); cellStyle = styles.sumLabel }
r.getCell(7).apply { setCellValue(UiText.t("貨品總量:", "Total qty: ")); cellStyle = styles.sumLabel }
setIntCellFromFormatted(r, 8, totalIn, styles.sumQty, styles.dash)
setIntCellFromFormatted(r, 9, totalOut, styles.sumQty, styles.dash)
setIntCellFromFormatted(r, 10, totalBal, styles.sumQty, styles.dash)
@@ -425,7 +427,7 @@ class StockLedgerReportController(
setTextCell(r, 2, uom, styles.center)
setTextCell(r, 3, m["trnDate"], styles.center)
val typeText = m["trnRefNo"]?.toString()?.trim().orEmpty().let { t ->
if (t.equals("Expiry", ignoreCase = true)) "過期" else t
if (t.equals("Expiry", ignoreCase = true)) UiText.t("過期", "Expired") else t
}
setTextCell(r, 4, typeText, styles.center)
setTextCell(r, 5, m["lotNo"], styles.text)


+ 21
- 19
src/main/java/com/ffii/fpsms/modules/report/web/StockLotOnhandReportController.kt Parādīt failu

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web

import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.report.service.StockLotOnhandReportService
import org.apache.poi.ss.usermodel.BorderStyle
import org.apache.poi.ss.usermodel.CellStyle
@@ -186,8 +188,8 @@ class StockLotOnhandReportController(

private fun displayFilter(raw: String?): String {
val v = raw?.trim().orEmpty()
if (v.isEmpty() || v.equals("All", ignoreCase = true)) return "全部"
if (v.equals("other", ignoreCase = true)) return "其他"
if (v.isEmpty() || v.equals("All", ignoreCase = true)) return UiText.t("全部", "All")
if (v.equals("other", ignoreCase = true)) return UiText.t("其他", "Other")
return v
}

@@ -208,14 +210,14 @@ class StockLotOnhandReportController(
workbook.setCompressTempFiles(true)
try {
val styles = createStyles(workbook)
val reportTitle = "庫存批次現況報告"
val reportTitle = UiText.t("庫存批次現況報告", "Lot on-hand report")
val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle))
val headers = listOf(
"貨品編號", "貨品名稱", "貨品單位結餘", "單位",
"批號", "到期日",
"樓層", "倉庫", "區域", "儲位",
"最後異動日", "最後異動(入庫/出庫)",
"批號結餘", "單位均價", "庫存總價值",
UiText.t("貨品編號", "Item code"), UiText.t("貨品名稱", "Item name"), UiText.t("貨品單位結餘", "Item balance"), UiText.t("單位", "UOM"),
UiText.t("批號", "Lot no."), UiText.t("到期日", "Expiry date"),
UiText.t("樓層", "Floor"), UiText.t("倉庫", "Warehouse"), UiText.t("區域", "Area"), UiText.t("儲位", "Slot"),
UiText.t("最後異動日", "Last movement date"), UiText.t("最後異動(入庫/出庫)", "Last movement (in/out)"),
UiText.t("批號結餘", "Lot balance"), UiText.t("單位均價", "Avg unit price"), UiText.t("庫存總價值", "Total stock value"),
)
val totalColumns = headers.size
var rowIndex = 0
@@ -236,25 +238,25 @@ class StockLotOnhandReportController(
val dateRow = sheet.createRow(rowIndex++)
dateRow.heightInPoints = 18f
dateRow.createCell(0).apply {
setCellValue("報告日期(現況):$reportDateTime")
setCellValue(UiText.t("報告日期(現況):", "Report date (as of): ") + reportDateTime)
cellStyle = styles.subtitle
}
sheet.addMergedRegion(CellRangeAddress(1, 1, 0, totalColumns - 1))

val criteriaText = listOf(
"貨品編號=${displayFilter(itemCode)}",
"樓層=${displayFilter(storeId)}",
"倉庫=${displayFilter(warehouse)}",
"區域=${displayFilter(area)}",
"儲位=${displayFilter(slot)}",
"盤點區域說明=${displayFilter(stockTakeSectionDescription)}",
"批號=${displayFilter(lotNo)}",
"來源=${displayFilter(lotOrigin)}",
UiText.t("貨品編號=", "Item code=") + (displayFilter(itemCode)),
UiText.t("樓層=", "Floor=") + (displayFilter(storeId)),
UiText.t("倉庫=", "Warehouse=") + (displayFilter(warehouse)),
UiText.t("區域=", "Area=") + (displayFilter(area)),
UiText.t("儲位=", "Slot=") + (displayFilter(slot)),
UiText.t("盤點區域說明=", "Count section=") + (displayFilter(stockTakeSectionDescription)),
UiText.t("批號=", "Lot no.=") + (displayFilter(lotNo)),
UiText.t("來源=", "Origin=") + (displayFilter(lotOrigin)),
).joinToString(" ")
val criteriaRow = sheet.createRow(rowIndex++)
criteriaRow.heightInPoints = 32f
criteriaRow.createCell(0).apply {
setCellValue("搜尋條件:$criteriaText")
setCellValue(UiText.t("搜尋條件:", "Filters: ") + criteriaText)
cellStyle = styles.subtitle
}
sheet.addMergedRegion(CellRangeAddress(2, 2, 0, totalColumns - 1))
@@ -274,7 +276,7 @@ class StockLotOnhandReportController(
val r = sheet.createRow(rowIndex++)
r.heightInPoints = 22f
r.createCell(0).apply {
setCellValue("查無資料")
setCellValue(UiText.t("查無資料", "No data"))
cellStyle = styles.center
}
for (c in 1 until totalColumns) {


+ 22
- 20
src/main/java/com/ffii/fpsms/modules/report/web/StockTakeVarianceReportController.kt Parādīt failu

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web

import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.report.service.ReportService
import com.ffii.fpsms.modules.report.service.StockTakeVarianceReportService
import org.apache.poi.ss.usermodel.BorderStyle
@@ -240,7 +242,7 @@ class StockTakeVarianceReportController(

val s = stockTakeDateStart?.trim().orEmpty()
val e = stockTakeDateEnd?.trim().orEmpty()
return if (s.isEmpty() && e.isEmpty()) "" else "$s 至 $e"
return if (s.isEmpty() && e.isEmpty()) "" else s + UiText.t(" 至 ", " to ") + e
}

private fun createStockTakeVarianceExcel(
@@ -248,23 +250,23 @@ class StockTakeVarianceReportController(
stockTakeCaption: String,
): ByteArray {
val workbook = XSSFWorkbook()
val reportTitle = "庫存盤點報告"
val reportTitle = UiText.t("庫存盤點報告", "Stock take report")
val safeSheetName = WorkbookUtil.createSafeSheetName(reportTitle)
val sheet = workbook.createSheet(safeSheetName)

val headers = listOf(
"貨品編號",
"貨品名稱",
"單位",
"批號",
"到期日",
"存貨位置",
"盤點前存量",
"盤點數",
"盤盈虧",
"盤盈虧百分比",
"類型",
"審核時間",
UiText.t("貨品編號", "Item code"),
UiText.t("貨品名稱", "Item name"),
UiText.t("單位", "UOM"),
UiText.t("批號", "Lot no."),
UiText.t("到期日", "Expiry date"),
UiText.t("存貨位置", "Stock location"),
UiText.t("盤點前存量", "Qty before count"),
UiText.t("盤點數", "Counted qty"),
UiText.t("盤盈虧", "Variance"),
UiText.t("盤盈虧百分比", "Variance %"),
UiText.t("類型", "Type"),
UiText.t("審核時間", "Approved at"),
)
val totalColumns = headers.size
var rowIndex = 0
@@ -400,12 +402,12 @@ class StockTakeVarianceReportController(
")"
val subtitleRow = sheet.createRow(rowIndex++)
subtitleRow.createCell(0).apply {
setCellValue("報告日期:$reportDateTime")
setCellValue(UiText.t("報告日期:", "Report date: ") + reportDateTime)
cellStyle = subtitleStyle
}
sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 2))
subtitleRow.createCell(3).apply {
setCellValue(if (stockTakeCaption.isBlank()) "" else "盤點日期:$stockTakeCaption")
setCellValue(if (stockTakeCaption.isBlank()) "" else UiText.t("盤點日期:", "Count date: ") + stockTakeCaption)
cellStyle = subtitleStyle
}
sheet.addMergedRegion(CellRangeAddress(1, 1, 3, totalColumns - 1))
@@ -450,7 +452,7 @@ class StockTakeVarianceReportController(
val labelCol = 5
val valueCol = 6
r.getCell(labelCol).apply {
setCellValue("貨品總量:")
setCellValue(UiText.t("貨品總量:", "Total qty: "))
cellStyle = summaryLabelThickBottomStyle
}
r.getCell(valueCol).apply {
@@ -616,7 +618,7 @@ class StockTakeVarianceReportController(
if (useLegacyOverall) {
return Rep012ReportData(
caption = stockTakeVarianceReportService.getStockTakeVarianceOverallCaption(),
conditionLabel = "盤點條件:",
conditionLabel = UiText.t("盤點條件:", "Count filter: "),
dbData = stockTakeVarianceReportService.searchStockTakeVarianceReportV2Overall(
itemCode = itemCode,
storeId = storeId,
@@ -629,7 +631,7 @@ class StockTakeVarianceReportController(
val id = roundIds.first()
return Rep012ReportData(
caption = stockTakeVarianceReportService.getStockTakeRoundCaption(id),
conditionLabel = "盤點輪次:",
conditionLabel = UiText.t("盤點輪次:", "Round: "),
dbData = stockTakeVarianceReportService.searchStockTakeVarianceReportV2(
stockTakeRoundId = id,
itemCode = itemCode,
@@ -642,7 +644,7 @@ class StockTakeVarianceReportController(

return Rep012ReportData(
caption = stockTakeVarianceReportService.getStockTakeVarianceMultiRoundCaption(roundIds),
conditionLabel = "盤點條件:",
conditionLabel = UiText.t("盤點條件:", "Count filter: "),
dbData = stockTakeVarianceReportService.searchStockTakeVarianceReportV2Overall(
itemCode = itemCode,
storeId = storeId,


+ 3
- 1
src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt Parādīt failu

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

import com.ffii.core.utils.UiText

import com.ffii.core.exception.BadRequestException
import com.ffii.core.support.AbstractBaseEntityService
import com.ffii.core.support.JdbcDao
@@ -1249,7 +1251,7 @@ open class StockInLineService(
val poLabel = JasperCompileManager.compileReport(inputStream)
val qrCodeInfo = stockInLineRepository.findStockInLineInfoByIdInAndDeletedFalse(request.stockInLineIds).toMutableList()
if (qrCodeInfo.isEmpty()) {
throw IllegalArgumentException("找不到來貨記錄,無法產生二維碼")
throw IllegalArgumentException(UiText.t("找不到來貨記錄,無法產生二維碼", "No receipt record was found, so a QR code cannot be created"))
}
val fields = mutableListOf<MutableMap<String ,Any>>()



+ 15
- 17
src/main/resources/DeliveryNote/DeliveryNoteCartonLabelsPDF.jrxml Parādīt failu

@@ -43,7 +43,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{shopPurchaseOrderNo}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="14" y="211" width="112" height="30" uuid="e03fcb92-259c-4427-a68e-60fe5924d763">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -57,10 +57,9 @@
<textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="14"/>
</textElement>
<text><![CDATA[店鋪採購單編號:
]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r16b426416823}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="14" y="166" width="85" height="45" uuid="f3ffd4ee-0513-41a5-94d7-f1fdb9966a76">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
@@ -70,8 +69,8 @@
<textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="14"/>
</textElement>
<text><![CDATA[送貨單編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r1814ca0dcbea}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="99" y="166" width="191" height="45" uuid="4319059b-9096-4c49-8275-287be93d3e6a">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -114,7 +113,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{shopName}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="14" y="136" width="55" height="30" uuid="0ccaeebc-681b-449e-b547-97fc86c35662">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -129,9 +128,9 @@
<textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16"/>
</textElement>
<text><![CDATA[箱數:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r26101c67a651}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="170" y="136" width="120" height="30" uuid="05bc180b-a58d-4ad8-95f6-bc3090ee2c2d">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -143,8 +142,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16"/>
</textElement>
<text><![CDATA[ 箱(蛋類除外)]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r3b9bf196effe}]]></textFieldExpression>
</textField>
<textField isBlankWhenNull="true">
<reportElement x="69" y="136" width="40" height="30" uuid="dab335a5-e253-498c-a9bf-b9707d8e1099">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -184,7 +183,7 @@
</textElement>
<text><![CDATA[/]]></text>
</staticText>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="290" y="136" width="104" height="19" uuid="c8b9fafb-9e8b-479f-9a9f-dadda7854f95">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -199,9 +198,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="14"/>
</textElement>
<text><![CDATA[車線
]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf9015e9ab095}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont">
<reportElement x="290" y="155" width="104" height="86" uuid="57f8e4fa-cea0-42c5-b9e5-a33f0a2710b8">
<property name="com.jaspersoft.studio.unit.height" value="px"/>


+ 36
- 36
src/main/resources/DeliveryNote/DeliveryNotePDF.jrxml Parādīt failu

@@ -36,7 +36,7 @@
</title>
<pageHeader>
<band height="128">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<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.height" value="px"/>
@@ -44,8 +44,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="470" y="0" width="20" height="18" uuid="33b3d236-1c13-4751-abf5-79871b2535ea">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -53,7 +53,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="530" y="0" width="25" height="18" uuid="11a0dc53-3742-4c56-a9b2-b284bfe8b07e">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -61,8 +61,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[頁]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rd04825997b36}]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement x="510" y="0" width="20" height="18" uuid="428142d2-39f0-43f1-b662-f1ab72f0aa1a">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -93,7 +93,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{dnTitle}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="25" width="70" height="23" uuid="de40ab55-5e3a-4730-b6cc-ddb4272edd6d">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -101,8 +101,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle" markup="styled">
<font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement>
<text><![CDATA[店鋪:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rc54be4c935e7}]]></textFieldExpression>
</textField>
<textField textAdjust="StretchHeight">
<reportElement x="70" y="25" width="300" height="23" uuid="abe02be5-6047-4dd1-9637-f21612d9040a">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -112,15 +112,15 @@
</textElement>
<textFieldExpression><![CDATA[$P{shopName}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement positionType="Float" x="0" y="50" width="80" height="23" uuid="1802947d-3ddb-4c51-99ab-82dda9119e34">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
</reportElement>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="false"/>
</textElement>
<text><![CDATA[地址:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r3d589b9b7f8a}]]></textFieldExpression>
</textField>
<textField textAdjust="StretchHeight">
<reportElement positionType="Float" x="70" y="50" width="465" height="23" uuid="89e79bce-bd39-48e6-b114-c11b4bcc5c9f"/>
<textElement verticalAlignment="Middle">
@@ -128,15 +128,15 @@
</textElement>
<textFieldExpression><![CDATA[$P{shopAddress}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="370" y="25" width="70" height="23" uuid="a8be367e-c33a-4876-bb0e-14c2eea6bca0">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
</reportElement>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement>
<text><![CDATA[貨車:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rd2ec8aa96e7a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont">
<reportElement x="440" y="25" width="95" height="23" uuid="2a73f702-dda6-4abf-90b3-14704f6d3c7b">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
@@ -151,7 +151,7 @@
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
</line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement positionType="Float" x="5" y="90" width="64" height="18" uuid="329c1490-958e-4884-a36f-cdb0867162c3">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -159,9 +159,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[送貨日期:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{raddfcfcdc60e}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement positionType="Float" x="5" y="110" width="110" height="18" uuid="111c5f73-f543-4006-931b-27479ccca816">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -169,8 +169,8 @@
<textElement textAlignment="Left" verticalAlignment="Top">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[店鋪採購單號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r65116ebb128b}]]></textFieldExpression>
</textField>
<textField textAdjust="StretchHeight">
<reportElement positionType="Float" x="115" y="110" width="425" height="18" uuid="7171ba0b-1a78-4ff6-a765-7b2b543ab0bc">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -241,7 +241,7 @@
</pageHeader>
<columnHeader>
<band height="33">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="5" width="40" 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"/>
@@ -250,9 +250,9 @@
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[序號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rab715e1b98f0}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="40" y="5" width="110" 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"/>
@@ -261,9 +261,9 @@
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[路綫]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r95d67f026a0c}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<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.height" value="px"/>
@@ -271,9 +271,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[貨品編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7f693b56a6ce}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="230" y="5" width="240" 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"/>
@@ -281,8 +281,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[貨品名稱]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r17f6b62ed896}]]></textFieldExpression>
</textField>
<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"/>
@@ -386,7 +386,7 @@
</textElement>
<textFieldExpression><![CDATA[$F{signOff}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="18" width="40" height="18" uuid="c47819b4-0cf1-40f6-99bf-798a3afe836b">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -394,8 +394,8 @@
<textElement textAlignment="Left" verticalAlignment="Top">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[單號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r4dc2870c059c}]]></textFieldExpression>
</textField>
</band>
</detail>
<pageFooter>


+ 22
- 22
src/main/resources/DeliveryNote/TruckRoutingSummaryPDF.jrxml Parādīt failu

@@ -24,19 +24,19 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="18" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA["送貨路線摘要(" + $P{TRUCK_ROUTE} + ")"]]></textFieldExpression>
<textFieldExpression><![CDATA[$R{r00c45eb6d637} + $P{TRUCK_ROUTE} + $R{rfa354ca634f3}]]></textFieldExpression>
</textField>
</band>
</title>
<pageHeader>
<band height="27">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="0" width="130" height="22" uuid="9d3f5b73-ceaa-4653-909f-e8534d19c61e"/>
<textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="14" isBold="true"/>
</textElement>
<text><![CDATA[計劃車次出發時間:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rc23e5226dd29}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="130" y="0" width="90" height="22" uuid="92335393-c410-4935-bd28-29a6175a9769"/>
<textElement verticalAlignment="Middle">
@@ -44,13 +44,13 @@
</textElement>
<textFieldExpression><![CDATA[$P{DEPARTURE_TIME}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="430" y="0" width="45" height="22" uuid="8770a6e7-8a03-47ab-aa3c-00f02815d3b4"/>
<textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="14" isBold="true"/>
</textElement>
<text><![CDATA[日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rb2778afe0187}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="475" y="0" width="80" height="22" uuid="1a628742-c50c-47a8-9f3d-df91dbc4b184"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -65,34 +65,34 @@
</pageHeader>
<columnHeader>
<band height="28">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="4" width="60" height="20" uuid="7dbf4192-d9d9-4f3e-95bc-d2700d4e5798"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="14" isBold="true"/>
</textElement>
<text><![CDATA[卸貨順序]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r8d4f15f17db3}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="70" y="4" width="60" height="20" uuid="9c31b1d9-d866-4555-9ee9-57b924ff2540"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="14" isBold="true"/>
</textElement>
<text><![CDATA[店鋪代碼]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r3dd6f613acd0}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="140" y="4" width="380" height="20" uuid="e7d49961-b1c8-40b0-a109-29da1142fc8d"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="14" isBold="true"/>
</textElement>
<text><![CDATA[店鋪名稱 & 地址]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r16d3eb3cba57}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="520" y="4" width="35" height="20" uuid="8473f6ea-a5bd-4739-bc05-618c0afb06d2"/>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="14" isBold="true"/>
</textElement>
<text><![CDATA[箱數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r0eec66363def}]]></textFieldExpression>
</textField>
<line>
<reportElement x="0" y="27" width="555" height="1" uuid="a370b2d2-4853-460a-900a-a15d2e1b8e94"/>
</line>
@@ -127,9 +127,9 @@
<textElement verticalAlignment="Top">
<font fontName="微軟正黑體" size="14"/>
</textElement>
<textFieldExpression><![CDATA[(($F{shopName} == null || $F{shopName}.trim().isEmpty()) ? "" : ("店鋪:" + $F{shopName}.trim()))
<textFieldExpression><![CDATA[(($F{shopName} == null || $F{shopName}.trim().isEmpty()) ? "" : ($R{rc54be4c935e7} + $F{shopName}.trim()))
+ (($F{address} == null || $F{address}.trim().isEmpty()) ? "" : (
(($F{shopName} == null || $F{shopName}.trim().isEmpty()) ? "" : "\n") + "地址:" + $F{address}.trim()
(($F{shopName} == null || $F{shopName}.trim().isEmpty()) ? "" : "\n") + $R{r3d589b9b7f8a} + $F{address}.trim()
))]]></textFieldExpression>
</textField>
<textField isBlankWhenNull="true">
@@ -151,7 +151,7 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="9"/>
</textElement>
<textFieldExpression><![CDATA["第 " + $V{PAGE_NUMBER} + " 頁"]]></textFieldExpression>
<textFieldExpression><![CDATA[$R{rf495347d6acf} + $V{PAGE_NUMBER} + $R{r080fcc65b244}]]></textFieldExpression>
</textField>
</band>
</pageFooter>


+ 15
- 19
src/main/resources/FGStockInLabel/FGStockInLabel.jrxml Parādīt failu

@@ -30,7 +30,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{productionDate}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="172" width="80" height="30" uuid="e03fcb92-259c-4427-a68e-60fe5924d763">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -38,9 +38,8 @@
<textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16"/>
</textElement>
<text><![CDATA[生產日期:
]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{raeb34e99d155}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont">
<reportElement x="80" y="50" width="160" height="30" uuid="9a440925-1bd4-4001-9b4b-7163ac27551e">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -51,7 +50,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{jobOrderCode}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="80" width="80" height="30" uuid="c8b9fafb-9e8b-479f-9a9f-dadda7854f95">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -59,9 +58,8 @@
<textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16"/>
</textElement>
<text><![CDATA[批次編號:
]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rff67331bff3b}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="80" y="110" width="160" height="30" uuid="57f8e4fa-cea0-42c5-b9e5-a33f0a2710b8">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -96,7 +94,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{finishedGoodLotNo}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="202" width="80" height="30" uuid="93d48729-edea-4acf-beca-00c6221c10bb">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -104,9 +102,8 @@
<textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16"/>
</textElement>
<text><![CDATA[到期日期:
]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r5f876eb35fb3}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="80" y="202" width="180" height="30" uuid="802555cd-a78b-49c4-b018-61c55f28070c">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -117,7 +114,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{expiryDate}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="50" width="80" height="30" uuid="145bfb84-c448-4fea-840a-c3ab0bcea7f4">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -125,9 +122,9 @@
<textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16"/>
</textElement>
<text><![CDATA[工單編號:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rf03632dd7521}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="110" width="80" height="30" uuid="397d1a94-709b-4372-96ce-bc1c28a8d997">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -135,9 +132,8 @@
<textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16"/>
</textElement>
<text><![CDATA[數量:
]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{raf1eb6fab37f}]]></textFieldExpression>
</textField>
<image>
<reportElement x="265" y="38" width="115" height="115" uuid="f61ca1c1-333b-42e1-9a00-85f5ef1e3492">
<property name="com.jaspersoft.studio.unit.x" value="px"/>


+ 44
- 44
src/main/resources/PickRecord/PickRecordPDF.jrxml Parādīt failu

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 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="PickRecordv2" language="javascript" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isTitleNewPage="true" uuid="a037339e-92cf-44fd-9360-64465f285f3c">
<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="PickRecordv2" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isTitleNewPage="true" uuid="a037339e-92cf-44fd-9360-64465f285f3c">
<parameter name="JobOrderCode" class="java.lang.String"/>
<parameter name="FGCode" class="java.lang.String"/>
<parameter name="unit" class="java.lang.String"/>
@@ -25,7 +25,7 @@
</background>
<pageHeader>
<band height="103" splitType="Stretch">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="5" y="5" width="70" height="18" uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -33,8 +33,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[膠茜數目:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r6850973fd787}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="75" y="5" width="80" height="18" uuid="b2c3d4e5-f6a7-8901-bcde-f12345678901">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -52,9 +52,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16"/>
</textElement>
<textFieldExpression><![CDATA["板頭紙(" + ($P{Floor} == null ? "" : $P{Floor}) + ")"]]></textFieldExpression>
<textFieldExpression><![CDATA[$R{rd62378893466} + ($P{Floor} == null ? "" : $P{Floor}) + $R{rfa354ca634f3}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="535" y="5" width="25" height="18" uuid="178c50a8-90e2-4c80-95f8-7c27dcc5ce02">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -62,8 +62,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[頁]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rd04825997b36}]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement x="515" y="5" width="20" height="18" uuid="9d782ac8-6fd4-4336-abfe-436435476462">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -89,7 +89,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="435" y="5" width="40" height="18" uuid="e9a7bc86-91db-4ea2-ae67-89f596f356de">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -97,9 +97,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="5" y="35" width="80" height="18" uuid="11b7324d-086a-427b-bd9b-78ca6789f1fa">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -107,8 +107,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[工單編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf03632dd7521}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="85" y="35" width="150" height="18" uuid="abfe6fd4-11e3-463b-b075-ed6b335e4a97">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -118,7 +118,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{JobOrderCode}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="5" y="55" width="80" height="18" uuid="17445159-6cfb-46a0-835d-8cdc1585b793">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -126,8 +126,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[成品編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r1620c7944cce}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="85" y="55" width="150" height="18" uuid="c9a7aaad-ef1a-4e42-9c32-794dcf5d8ca9">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -137,7 +137,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{FGCode}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="285" y="55" width="80" height="18" uuid="12a14105-c207-4550-a9bd-30a74a25a5c4">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -145,8 +145,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[成品名稱:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r86216baadfe7}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="365" y="55" width="150" height="18" uuid="62720d55-e8e1-49c8-a420-8318685e9e58">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -156,7 +156,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{FGName}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="285" y="75" width="80" height="18" uuid="3ec46348-493e-403f-aefb-5f4aef992877">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -164,8 +164,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[需求數量:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rd3d752f0f2e4}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="365" y="75" width="150" height="18" uuid="367706ae-196f-4b5d-b9b2-5fbc4d70ce9b">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -175,7 +175,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{RequiredQuantity}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="285" y="35" width="80" height="18" uuid="411116fd-f273-4eed-bd6c-1db269cd9adb">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -183,8 +183,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[生產日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r9c35fe458ba5}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="365" y="35" width="150" height="18" uuid="f044c78b-cdcb-4a90-81c5-a6fc81b73efc">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -194,7 +194,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{ProductionDate}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="5" y="75" width="80" height="18" uuid="e280f805-b423-4ac7-a429-2d5d81edf3bc">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -202,8 +202,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[銷售單位:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r9b7133939fe4}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="85" y="75" width="150" height="18" uuid="ee5b0bcd-5a86-43e1-a003-ea5c7b9dd147">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -217,7 +217,7 @@
</pageHeader>
<columnHeader>
<band height="42" splitType="Stretch">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="10" width="50" height="18" uuid="c4baf479-7a41-49cb-a2cf-be798e11b2c1">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -226,9 +226,9 @@
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[序號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rab715e1b98f0}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="50" y="10" width="95" height="18" uuid="e66fdecd-3672-423d-8a10-ed078a5ac5bf">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -237,9 +237,9 @@
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[路綫]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r95d67f026a0c}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="145" y="10" width="80" height="18" uuid="38721c72-5f81-4be3-b1e1-335562f1dc38">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -247,9 +247,9 @@
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[貨品編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7f693b56a6ce}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="225" y="10" width="245" height="18" uuid="558582fa-0269-47d6-960b-305e51a8ff0c">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -257,9 +257,9 @@
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[貨品名稱]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r17f6b62ed896}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="470" y="10" width="84" height="18" uuid="bae79e0c-96f8-45dc-a5db-1c85466f860a">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -267,8 +267,8 @@
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[已提數量]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{re79ab7530b02}]]></textFieldExpression>
</textField>
<line>
<reportElement x="0" y="33" width="554" height="1" uuid="ff5ea71d-829e-40f0-bfa8-d223d9fc7769">
<property name="com.jaspersoft.studio.unit.height" value="px"/>


+ 134
- 0
src/main/resources/i18n/reports.properties Parādīt failu

@@ -0,0 +1,134 @@
r00041da98651=上架總計
r00c45eb6d637=送貨路線摘要(
r03ce1d5613e8=四月
r080fcc65b244= 頁
r09456e5bd8c2=上架數量
r0db83ab5ad90=材料消耗日期:
r0e9cf47b8ab4=物料出倉追蹤報告
r0eec66363def=箱數
r11cb5e87977f=到期日
r129bf23950c5=送貨日期
r14aba5f426df=三月
r1620c7944cce=成品編號:
r16b426416823=店鋪採購單編號:\n
r16d24ae82a7d=每單交貨總數:
r16d3eb3cba57=店鋪名稱 & 地址
r17f6b62ed896=貨品名稱
r1814ca0dcbea=送貨單編號:
r1af196452b7a=出貨數量
r1b1840749a63=送貨訂單編號
r1cb52e8436a0=提料人
r1ea2fde25c82=纍計存出量
r1efbb116be18=批號
r1f60da14d9c0=入庫檢查\n缺陷數量
r26101c67a651=箱數:
r2d36c3ab208f=審核時間
r313fd5bb330e=一月
r330e76596a33=庫存結餘報告
r3313eb0eab26=入庫檢查\n缺陷百分比
r33d99bd7d7ce=錯誤輸入\n或遺失
r37b5ae5f0edd=十二月
r38315806410a=貨車
r384f3abedb37=八月
r38aac4c4ec15=最後出倉日期:
r3a4716a37bef=物料編號:
r3b9bf196effe= 箱(蛋類除外)
r3baaab225b59=瑕疵品數量
r3d589b9b7f8a=地址:
r3dd6f613acd0=店鋪代碼
r3e002768eca6=成品出倉日期:
r469fb16b34e6=類型
r4876d5589e5b=盤盈虧
r4ce0ee8cc0b2=單位
r4d7049a1bca9=庫存盤點報告
r4dc2870c059c=單號:
r51024df5a7a1=品質檢查類型
r53fcb0cb5f04=庫存明細報告
r591faed0bf21=庫存品質檢測報告
r5b17a0615359=十月
r5d526c7219e5=物料名稱:
r5d940d9844a6=提料備注
r5e20027c6a98=實測值
r5f2d6fed3a7d=盤點前存量
r5f876eb35fb3=到期日期:\n
r604d446aa100=頁數
r60650ec2d16b=供應商:
r60940709a8ed=DN編號
r62feaa72467a=出庫
r63c7976d4b5b=纍計期初\n存量
r64838faf9fb0=工單編號
r649d1891700e=現存存貨
r65116ebb128b=店鋪採購單號:
r659a9e9a692d=採購訂單編號:
r6850973fd787=膠茜數目:
r6ba3e4fc4ed5=出入賬日期
r73005a9bafd9=完成生產日期:
r78b01a0a34a1=門店名稱
r7e6f86ce8a6b=入庫
r7eac0bb11fb9=存貨位置
r7f693b56a6ce=貨品編號
r832e34b15e49=纍計存量
r8404b57157c6=數量:
r86216baadfe7=成品名稱:
r8689d87a0ff1=收貨日期:
r8bf5d9b7ff89=QC 檢測日期:
r8d4f15f17db3=卸貨順序
r8d61728842d0=數量
r8f3cddd57d47=六月
r909fd3cf3808=庫存材料消耗趨勢報告
r92f8cd219e20=成品出倉追蹤報告
r93e2b9f9f280=五月
r9460041e30e6=貨品總量:
r9483d51c0380=品質檢查樣板
r95d67f026a0c=路綫
r9b7133939fe4=銷售單位:
r9c35fe458ba5=生產日期:
r9cd9cfdac0ff=入庫\n檢查備註
r9e0c4587c30c=入倉追蹤報告
r9e0c52c95eed=參考編號
r9e2304c74f73=提料單編號
r9e296b27523f=總和
r9eb0df469a62=入庫\n檢查結果
r9f96f7e891cd= 至
ra501f0a01799=不良品棄置
raa3a98ce3af5=纍計存入量
rab715e1b98f0=序號
raddfcfcdc60e=送貨日期:
raeb07bde6c88=期初存量
raeb34e99d155=生產日期:\n
raf1eb6fab37f=數量:\n
rb2778afe0187=日期:
rb568e0135677=年份:
rb7d45e4aed38=供應商名稱
rbad7c57898bb=盤盈虧百分比
rbca4ea568093=總出倉量:
rbe48450caef9=品質問題
rc23e5226dd29=計劃車次出發時間:
rc54be4c935e7=店鋪:
rcd2a4bdc0cd8=二月
rcfb0ffd45d73=盤點數
rd04825997b36=頁
rd27e4a4ff359=批次編號:
rd2ec8aa96e7a=貨車:
rd3d752f0f2e4=需求數量:
rd46b470b4009=QC 類型:
rd5712c61aadb=九月
rd62378893466=板頭紙(
rdd672eea7e72=最後入倉日期:
rdfd42b9c455a=七月
rdfef764f339a=十一月
re4e94fa79f81=成品出倉報告
re6eda806c6b1=報告日期:
re79ab7530b02=已提數量
reee4e96971fb=成品/半成品生產分析報告
rf03632dd7521=工單編號:
rf3924122809a=報告時間:
rf433fbec9e8a=入庫檢查\n樣品數量
rf495347d6acf=第
rf66b3d3ead11=總上架數量:
rf79aab5b7eed=到期日:
rf9015e9ab095=車線\n
rfa354ca634f3=)
rfaf5e4a94fd5=送貨單編號
rff67331bff3b=批次編號:\n
rffe7a1f62dab=存倉位置

+ 134
- 0
src/main/resources/i18n/reports_en.properties Parādīt failu

@@ -0,0 +1,134 @@
r00041da98651=Put-away total
r00c45eb6d637=Delivery route summary (
r03ce1d5613e8=Apr
r080fcc65b244=
r09456e5bd8c2=Put-away qty
r0db83ab5ad90=Consumption date:
r0e9cf47b8ab4=Material outbound traceability report
r0eec66363def=Cartons
r11cb5e87977f=Expiry date
r129bf23950c5=Delivery date
r14aba5f426df=Mar
r1620c7944cce=Finished good code:
r16b426416823=Shop PO no.:\n
r16d24ae82a7d=Delivery total:
r16d3eb3cba57=Shop name and address
r17f6b62ed896=Item name
r1814ca0dcbea=Delivery note no.:
r1af196452b7a=Shipped qty
r1b1840749a63=Delivery order no.
r1cb52e8436a0=Picker
r1ea2fde25c82=Cumulative stock out
r1efbb116be18=Lot no.
r1f60da14d9c0=Stock-in check\ndefect qty
r26101c67a651=Cartons:
r2d36c3ab208f=Approved at
r313fd5bb330e=Jan
r330e76596a33=Stock balance report
r3313eb0eab26=Stock-in check\ndefect %
r33d99bd7d7ce=Mis-entry\nor loss
r37b5ae5f0edd=Dec
r38315806410a=Truck
r384f3abedb37=Aug
r38aac4c4ec15=Last stock-out date:
r3a4716a37bef=Material code:
r3b9bf196effe= Cartons (excl. eggs)
r3baaab225b59=Defect qty
r3d589b9b7f8a=Address:
r3dd6f613acd0=Shop code
r3e002768eca6=FG outbound date:
r469fb16b34e6=Type
r4876d5589e5b=Variance
r4ce0ee8cc0b2=UOM
r4d7049a1bca9=Stock take report
r4dc2870c059c=Doc no.:
r51024df5a7a1=QC type
r53fcb0cb5f04=Stock ledger report
r591faed0bf21=Stock QC report
r5b17a0615359=Oct
r5d526c7219e5=Material name:
r5d940d9844a6=Pick notes
r5e20027c6a98=Measured value
r5f2d6fed3a7d=Qty before count
r5f876eb35fb3=Expiry date:\n
r604d446aa100=Page
r60650ec2d16b=Supplier:
r60940709a8ed=DN no.
r62feaa72467a=Stock out
r63c7976d4b5b=Opening\nbalance
r64838faf9fb0=Job order no.
r649d1891700e=On hand
r65116ebb128b=Shop PO no.:
r659a9e9a692d=PO no.:
r6850973fd787=Plastic crates:
r6ba3e4fc4ed5=Ledger date
r73005a9bafd9=Production finished:
r78b01a0a34a1=Shop name
r7e6f86ce8a6b=Stock in
r7eac0bb11fb9=Stock location
r7f693b56a6ce=Item code
r832e34b15e49=Cumulative balance
r8404b57157c6=Qty:
r86216baadfe7=Finished good:
r8689d87a0ff1=Receipt date:
r8bf5d9b7ff89=QC date:
r8d4f15f17db3=Unload sequence
r8d61728842d0=Qty
r8f3cddd57d47=Jun
r909fd3cf3808=Material consumption trend report
r92f8cd219e20=FG outbound traceability report
r93e2b9f9f280=May
r9460041e30e6=Total qty:
r9483d51c0380=QC template
r95d67f026a0c=Route
r9b7133939fe4=Sales UOM:
r9c35fe458ba5=Production date:
r9cd9cfdac0ff=Stock-in\ncheck notes
r9e0c4587c30c=Stock-in traceability report
r9e0c52c95eed=Reference no.
r9e2304c74f73=Pick order no.
r9e296b27523f=Total
r9eb0df469a62=Stock-in\ncheck result
r9f96f7e891cd= to
ra501f0a01799=Damaged disposal
raa3a98ce3af5=Cumulative stock in
rab715e1b98f0=No.
raddfcfcdc60e=Delivery date:
raeb07bde6c88=Opening qty
raeb34e99d155=Production date:\n
raf1eb6fab37f=Qty:\n
rb2778afe0187=Date:
rb568e0135677=Year:
rb7d45e4aed38=Supplier name
rbad7c57898bb=Variance %
rbca4ea568093=Total outbound qty:
rbe48450caef9=Quality issue
rc23e5226dd29=Planned departure:
rc54be4c935e7=Shop:
rcd2a4bdc0cd8=Feb
rcfb0ffd45d73=Counted qty
rd04825997b36=Page
rd27e4a4ff359=Lot no.:
rd2ec8aa96e7a=Truck:
rd3d752f0f2e4=Required qty:
rd46b470b4009=QC type:
rd5712c61aadb=Sep
rd62378893466=Pallet sheet (
rdd672eea7e72=Last stock-in date:
rdfd42b9c455a=Jul
rdfef764f339a=Nov
re4e94fa79f81=Finished goods outbound report
re6eda806c6b1=Report date:
re79ab7530b02=Picked qty
reee4e96971fb=Finished / semi-finished production report
rf03632dd7521=Job order no.:
rf3924122809a=Report time:
rf433fbec9e8a=Stock-in check\nsample qty
rf495347d6acf=Page
rf66b3d3ead11=Total put-away qty:
rf79aab5b7eed=Expiry date:
rf9015e9ab095=Truck lane\n
rfa354ca634f3=)
rfaf5e4a94fd5=Delivery note no.
rff67331bff3b=Lot no.:\n
rffe7a1f62dab=Storage location

+ 43
- 43
src/main/resources/jasper/FGDeliveryReport.jrxml Parādīt failu

@@ -83,13 +83,13 @@
<groupFooter>
<band height="20">
<printWhenExpression><![CDATA[$V{Group1_COUNT} > 1]]></printWhenExpression>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="424" y="0" width="78" height="19" uuid="17df3070-773d-4bac-8045-6b59d8673bb4"/>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[每單交貨總數:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r16d24ae82a7d}]]></textFieldExpression>
</textField>
<textField pattern="#,##0">
<reportElement x="502" y="0" width="80" height="19" uuid="939e4c5b-176c-4154-aabd-bf06c2a0e594"/>
<textElement textAlignment="Right" verticalAlignment="Middle">
@@ -129,7 +129,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="670" y="0" width="40" height="23" uuid="25f66e24-ad42-4ff6-ac86-ac1d1c6f3b03">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -137,8 +137,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="740" y="0" width="20" height="23" uuid="e0a5035b-8a7c-49c0-b012-baf4325774b7">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
@@ -156,7 +156,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="30" width="90" height="23" uuid="5f860195-7684-4674-bcba-5e3af52a55da">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -164,8 +164,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="711" y="53" width="79" height="23" uuid="b1bba504-8ae4-4985-909c-e598c2e6001b"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -173,7 +173,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{year}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="640" y="30" width="71" height="23" uuid="0986cf8b-0ade-490d-bcb5-f2b1aceaab15">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -181,9 +181,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告時間:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="640" y="53" width="71" height="23" uuid="3e31701d-067e-46eb-b691-a88829562c15">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -191,8 +191,8 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[年份:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rb568e0135677}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="711" y="30" width="79" height="23" uuid="89bfffda-987c-4c76-bd0e-cfdb63d8bd0e"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -207,7 +207,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="300" y="0" width="210" height="23" uuid="e34c7a3e-ea38-4b1b-bbdc-cfe4a5f969de">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -215,8 +215,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement>
<text><![CDATA[成品出倉報告]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{re4e94fa79f81}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="98" y="53" width="336" height="23" uuid="f855785e-5316-4c6c-a612-556f58dff006">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -224,9 +224,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + " 至 " + $P{lastOutDateEnd}]]></textFieldExpression>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + $R{r9f96f7e891cd} + $P{lastOutDateEnd}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="53" width="90" height="23" uuid="1543eecf-9964-43b0-9103-e885209265e4">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -235,9 +235,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[成品出倉日期:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r3e002768eca6}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="81" width="92" height="18" uuid="eb3506cf-6d61-4f70-901f-9576df17e66c">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -246,9 +246,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[送貨日期]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r129bf23950c5}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="582" y="81" width="100" height="18" uuid="a9c9239d-6640-4196-9ce4-5be81522a99b">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -257,9 +257,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[單位]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r4ce0ee8cc0b2}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="92" y="81" width="140" height="18" uuid="0f570907-538c-4d1e-a261-5e275f2c3fbe">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -268,9 +268,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[DN編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r60940709a8ed}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="502" y="81" width="80" height="18" uuid="aa069323-43b9-448c-840e-97054ad358ef">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -279,9 +279,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[數量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r8d61728842d0}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="232" y="81" width="130" height="18" uuid="d8d2ecce-255a-46a5-9ded-949df09192de">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -290,9 +290,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[送貨訂單編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1b1840749a63}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="362" y="81" width="140" height="18" uuid="805d0e34-eda9-45a6-9490-83d2282db99b">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -301,9 +301,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[門店名稱]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r78b01a0a34a1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="682" y="81" width="100" height="18" uuid="0f680edd-048d-4ee1-8a00-2ec33eaf2c88">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -312,8 +312,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[貨車]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r38315806410a}]]></textFieldExpression>
</textField>
<line>
<reportElement x="0" y="80" width="799" height="1" uuid="7c6becba-07e5-436b-aa4f-48e1711511bd">
<property name="com.jaspersoft.studio.unit.height" value="px"/>


+ 46
- 46
src/main/resources/jasper/FGStockOutTraceabilityReport.jrxml Parādīt failu

@@ -74,7 +74,7 @@
<groupFooter>
<band height="19">
<printWhenExpression><![CDATA[$V{Group1_COUNT} > 1]]></printWhenExpression>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="410" y="0" width="80" height="18" uuid="73188a51-3255-443c-9fee-4f3b527072c4">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -82,8 +82,8 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[總出倉量:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rbca4ea568093}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="490" y="0" width="59" height="18" uuid="e4734789-5213-4934-80fe-6d72f3c38f23"/>
<textElement textAlignment="Right" verticalAlignment="Middle">
@@ -127,7 +127,7 @@
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
</line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="275" y="0" width="253" height="23" uuid="2b4bdbda-a606-455e-b4c7-f59ada12dcf4">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -135,9 +135,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement>
<text><![CDATA[成品出倉追蹤報告]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r92f8cd219e20}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="53" width="90" height="23" uuid="297107ea-5827-41bc-83a0-8d966b714e0f">
<property name="com.jaspersoft.studio.unit.y" value="pixel"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -146,16 +146,16 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[最後出倉日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r38aac4c4ec15}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="53" width="560" height="23" uuid="76ed89e6-9e70-4cc3-9d38-ff5dc24cd094"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + " 至 " + $P{lastOutDateEnd}]]></textFieldExpression>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + $R{r9f96f7e891cd} + $P{lastOutDateEnd}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="490" y="80" width="59" height="18" uuid="7950d513-4660-445b-9b18-08e062b66f30">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -164,9 +164,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[出貨數量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1af196452b7a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="410" y="80" width="80" height="18" uuid="a2e0f22f-b299-4712-84f7-7ba3b54b1d1c">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -175,9 +175,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[到期日]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r11cb5e87977f}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="210" y="80" width="100" height="18" uuid="ccda69a3-43de-413b-b53c-1b572e92fcf8">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -186,9 +186,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[提料單編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r9e2304c74f73}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="549" y="80" width="49" height="18" uuid="21d9afe9-fd02-4896-a478-60967afc50f4">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -196,9 +196,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[提料人]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1cb52e8436a0}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="310" y="80" width="100" height="18" uuid="03fc341e-7026-4f5e-b975-264097a7aeda">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -207,9 +207,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[批號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1efbb116be18}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="710" y="80" width="92" height="18" uuid="0f155dfc-0aff-4935-aa8f-54b4f01af51e">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -217,9 +217,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isItalic="false"/>
</textElement>
<text><![CDATA[提料備注]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r5d940d9844a6}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="598" y="80" width="112" height="18" uuid="b20762b2-25ab-4fde-a693-a8b32776d866">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -227,9 +227,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[存貨位置]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7eac0bb11fb9}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="80" width="80" height="18" uuid="5db44150-7e52-40dc-9fab-fe174d818c61">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -238,9 +238,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[送貨日期]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r129bf23950c5}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="90" y="80" width="120" height="18" uuid="5db44150-7e52-40dc-9fab-fe174d818c61">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -249,8 +249,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[送貨訂單編號]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r1b1840749a63}]]></textFieldExpression>
</textField>
<line>
<reportElement x="1" y="98" width="800" height="1" uuid="8ee25725-096b-4d76-9c7a-c0a41fbe6dbb">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -280,7 +280,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="30" width="90" height="23" uuid="9ab6647d-c771-4c0c-aab9-a07d96a7f0eb">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -288,8 +288,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement x="768" y="0" width="30" height="23" uuid="0bd93c84-e6c8-4613-afec-12632071b737">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -305,7 +305,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="677" y="0" width="40" height="23" uuid="b5981ff6-676f-46c8-85bc-137714e60964">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -313,9 +313,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="640" y="29" width="68" height="23" uuid="53e03c14-32a0-4cdd-a883-542d6acb931a">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -323,8 +323,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告時間:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression>
</textField>
</band>
</pageHeader>
<detail>


+ 43
- 43
src/main/resources/jasper/ItemQCReport.jrxml Parādīt failu

@@ -97,7 +97,7 @@
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
</line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="322" y="0" width="158" height="23" uuid="0102d5e8-f072-4701-abff-8f62a4dc8463">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -105,9 +105,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement>
<text><![CDATA[庫存品質檢測報告]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r591faed0bf21}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="600" y="80" width="90" height="18" uuid="e36d0d94-9345-46d2-8fa5-604676255cba">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -116,9 +116,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[實測值]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r5e20027c6a98}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="90" y="80" width="70" height="18" uuid="7db4a800-8573-408c-baad-f4f4885625c9">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -127,9 +127,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[品質檢查類型]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r51024df5a7a1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="490" y="80" width="50" height="18" uuid="808b9adc-e79f-469b-89f8-a4d8035d0b02">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -138,9 +138,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[數量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r8d61728842d0}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="160" y="80" width="160" height="18" uuid="f6036ff2-a00e-4809-bcb2-f4e86fb1ccf7">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -149,9 +149,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[品質檢查樣板]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r9483d51c0380}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="80" width="80" height="18" uuid="67fc8d08-74ed-4e63-af62-4bf566c2bea4">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -160,9 +160,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[到期日]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r11cb5e87977f}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="550" y="80" width="50" height="18" uuid="7d8c7616-20d1-4081-853b-34bf90711d8f">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -171,9 +171,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[瑕疵品數量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r3baaab225b59}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="690" y="80" width="108" height="18" uuid="8b11690e-d04c-4402-9436-dba241594b9a">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -182,9 +182,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[參考編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r9e0c52c95eed}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="330" y="80" width="160" height="18" uuid="26c0ec07-f36c-4f9a-8b9c-5e485bdd501e">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -193,8 +193,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[品質問題]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rbe48450caef9}]]></textFieldExpression>
</textField>
<line>
<reportElement x="0" y="98" width="799" height="1" uuid="726e7b1b-ad52-448c-8ad8-c091106d74dc">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -225,7 +225,7 @@
</textElement>
<text><![CDATA[/]]></text>
</staticText>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="677" y="0" width="40" height="23" uuid="e6d84133-39ab-4405-be2c-abdcd968076e">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -233,8 +233,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="708" y="29" width="90" height="23" uuid="2531fea1-1a06-4c5b-9be5-c2f615d98dac"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -242,7 +242,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{reportTime}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="640" y="29" width="68" height="23" uuid="8160cd29-88e8-495b-b0ff-b816df69d2c2">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -250,8 +250,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告時間:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="30" width="335" height="23" uuid="20007ca4-c3e0-4e46-b05f-53ca15e9494f"/>
<textElement verticalAlignment="Middle">
@@ -259,7 +259,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="30" width="90" height="23" uuid="a5e6b095-e0c8-4200-911f-cdf9fbc953b1">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -267,9 +267,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="53" width="90" height="23" uuid="91156739-c0e2-4cd2-b4a5-a1bcef9a1eea">
<property name="com.jaspersoft.studio.unit.y" value="pixel"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -278,14 +278,14 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[QC 檢測日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r8bf5d9b7ff89}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="53" width="560" height="23" uuid="96afd73f-53ed-42cd-9911-fdaac017d65b"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$P{lastInDateStart} + " 至 " + $P{lastInDateEnd}]]></textFieldExpression>
<textFieldExpression><![CDATA[$P{lastInDateStart} + $R{r9f96f7e891cd} + $P{lastInDateEnd}]]></textFieldExpression>
</textField>
<textField isBlankWhenNull="true">
<reportElement x="322" y="23" width="158" height="20" uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890"/>
@@ -294,13 +294,13 @@
</textElement>
<textFieldExpression><![CDATA[$P{reportSection} != null && !$P{reportSection}.isEmpty() ? "(" + $P{reportSection} + ")" : ""]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="450" y="53" width="70" height="23" uuid="b2c3d4e5-f6a7-8901-bcde-f12345678901"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[QC 類型:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rd46b470b4009}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="520" y="53" width="80" height="23" uuid="c3d4e5f6-a7b8-9012-cdef-123456789012"/>
<textElement textAlignment="Left" verticalAlignment="Middle">


+ 43
- 43
src/main/resources/jasper/MaterialStockOutTraceability.jrxml Parādīt failu

@@ -69,7 +69,7 @@
<groupFooter>
<band height="19">
<printWhenExpression><![CDATA[$V{Group1_COUNT} > 1]]></printWhenExpression>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="330" y="0" width="80" height="18" uuid="127b8d9e-7af6-4973-bb72-e96ed062dcc9">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -77,8 +77,8 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[總出倉量:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rbca4ea568093}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="410" y="0" width="59" height="18" uuid="bef3e158-73d3-40dc-8cc7-29f93f54113f"/>
<textElement textAlignment="Right" verticalAlignment="Middle">
@@ -123,7 +123,7 @@
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
</line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="254" y="0" width="295" height="23" uuid="7de5fed6-2cd8-43a5-a81c-7dca66433be5">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -131,9 +131,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement>
<text><![CDATA[物料出倉追蹤報告]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r0e9cf47b8ab4}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="469" y="80" width="61" height="18" uuid="c17221d2-b543-4558-a530-e2b0fe57815c">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -141,9 +141,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[提料人]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1cb52e8436a0}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="130" y="80" width="100" height="18" uuid="58633e83-5a17-4b4c-91fb-0a1e95377b78">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -152,9 +152,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[提料單編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r9e2304c74f73}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="230" y="80" width="100" height="18" uuid="72c185c0-02bd-44c3-9a95-b8a8b118a5b8">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -163,9 +163,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[批號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1efbb116be18}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="80" width="120" height="18" uuid="53dda4bc-e6ba-40de-8bdb-cf9dc0803b23">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -174,9 +174,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[工單編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r64838faf9fb0}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="530" y="80" width="100" height="18" uuid="5faf317c-4814-4507-ae8d-21652d8642ef">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -184,9 +184,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[存倉位置]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rffe7a1f62dab}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="330" y="80" width="80" height="18" uuid="fab273cc-7a7b-4598-be08-b1473ab32124">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -195,9 +195,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[到期日]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r11cb5e87977f}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="630" y="80" width="168" height="18" uuid="74f1c031-48f4-4b36-baed-1d3fd973b7ad">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -205,9 +205,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[提料備注]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r5d940d9844a6}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="410" y="80" width="59" height="18" uuid="1f547265-a0c6-472f-8c99-c2ea25c9a6d5">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -216,8 +216,8 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[出貨數量]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r1af196452b7a}]]></textFieldExpression>
</textField>
<line>
<reportElement x="1" y="98" width="800" height="1" uuid="d327fcf7-3dfa-4470-b0df-8199ac04ab46">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -248,7 +248,7 @@
</textElement>
<text><![CDATA[/]]></text>
</staticText>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="677" y="0" width="40" height="23" uuid="70764071-b438-4548-a01d-d3bbaf01ad62">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -256,8 +256,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="708" y="29" width="90" height="23" uuid="55961375-1d81-4195-ae09-dbad03027460"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -265,7 +265,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{reportTime}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="640" y="29" width="68" height="23" uuid="60125685-7c9e-443d-afcb-8257836a7b0f">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -273,8 +273,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告時間:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="30" width="335" height="23" uuid="7e22315e-2b61-4d91-8c35-454a29a54440"/>
<textElement verticalAlignment="Middle">
@@ -282,7 +282,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="30" width="90" height="23" uuid="3dc4c597-8c09-424a-afcd-6fe9ae70137d">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -290,9 +290,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="53" width="90" height="23" uuid="7582a23b-1cd1-4058-b072-62d9a1b1f12a">
<property name="com.jaspersoft.studio.unit.y" value="pixel"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -301,14 +301,14 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[最後出倉日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r38aac4c4ec15}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="53" width="560" height="23" uuid="fb36cc91-4daf-439c-955e-148b0586bc95"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + " 至 " + $P{lastOutDateEnd}]]></textFieldExpression>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + $R{r9f96f7e891cd} + $P{lastOutDateEnd}]]></textFieldExpression>
</textField>
</band>
</pageHeader>


+ 67
- 67
src/main/resources/jasper/SemiFGProductionAnalysisReport.jrxml Parādīt failu

@@ -366,7 +366,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="677" y="0" width="40" height="23" uuid="5a9e0fa9-418d-4838-9f82-e2f336e5bce7">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -374,8 +374,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="747" y="0" width="21" height="23" uuid="26d3d09c-48aa-4870-822a-c403e7faddfa">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
@@ -393,7 +393,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="30" width="90" height="23" uuid="0daddd8b-ca61-42af-9c2b-cbf11b7d7dac">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -401,8 +401,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="708" y="52" width="90" height="23" uuid="53b66bc3-4925-4340-add0-b4f2069a76c1"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -410,7 +410,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{year}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="640" y="29" width="68" height="23" uuid="e2be43a3-3570-4a4e-a671-d96f872a5ad7">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -418,9 +418,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告時間:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="640" y="52" width="68" height="23" uuid="29ed871d-3417-4978-9799-964389143451">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -428,8 +428,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[年份:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rb568e0135677}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="708" y="29" width="90" height="23" uuid="cb1fbb06-e953-40e5-bdbe-5fc219f7c884"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -444,7 +444,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="300" y="0" width="210" height="23" uuid="7451001b-6d5a-438c-82db-2b9e687d9a27">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -452,8 +452,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement>
<text><![CDATA[成品/半成品生產分析報告]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{reee4e96971fb}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="53" width="336" height="23" uuid="b51949e1-c40a-4db0-a799-4243555893fd">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -461,9 +461,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + " 至 " + $P{lastOutDateEnd}]]></textFieldExpression>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + $R{r9f96f7e891cd} + $P{lastOutDateEnd}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="53" width="90" height="23" uuid="fb09a559-f5fa-4e56-a891-87c600a2745a">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -472,8 +472,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[完成生產日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r73005a9bafd9}]]></textFieldExpression>
</textField>
<line>
<reportElement x="0" y="75" width="799" height="1" uuid="f04b0470-72e7-42b6-80fd-f1dc4ea5fa66">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -488,16 +488,16 @@
</pageHeader>
<columnHeader>
<band height="28">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="200" y="0" width="45" height="20" uuid="e4267f38-4a00-4a22-965d-9ab531262592">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
</reportElement>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[一月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r313fd5bb330e}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="650" y="0" width="45" height="20" uuid="e51758d1-2a7e-4fef-8b41-206e9aa6c611">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -505,9 +505,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[十一月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rdfef764f339a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="695" y="0" width="45" height="20" uuid="d7c79995-7b3c-4622-8d08-6b4a87345cbe">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -515,9 +515,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[十二月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r37b5ae5f0edd}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="290" y="0" width="45" height="20" uuid="ac124afb-3aa8-4ec6-b4a8-8de161e8bbc5">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -525,9 +525,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[三月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r14aba5f426df}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="740" y="0" width="50" height="20" uuid="f092d4db-d5c5-4515-a826-8fec621a8992">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -535,9 +535,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[上架總計]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r00041da98651}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="560" y="0" width="45" height="20" uuid="85c77a9b-c044-4bc2-8cd9-3b0058e4b74e">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -545,9 +545,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[九月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rd5712c61aadb}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="245" y="0" width="45" height="20" uuid="ec7698ae-c92b-4b44-9f7a-28f10ba5f385">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -555,9 +555,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle" markup="html">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[二月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rcd2a4bdc0cd8}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="380" y="0" width="45" height="20" uuid="5204319c-5b4e-421b-9493-4dd988caca52">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -565,9 +565,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[五月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r93e2b9f9f280}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="605" y="0" width="45" height="20" uuid="a6161aa7-2abd-4bb6-894d-ccdd6f9575c4">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -575,9 +575,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[十月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r5b17a0615359}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="425" y="0" width="45" height="20" uuid="424446ec-655d-4bff-a30a-61e898dbc7ad">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -585,9 +585,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[六月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r8f3cddd57d47}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="515" y="0" width="45" height="20" uuid="2a9e0115-d056-4c4b-b0b2-0800f55435ad">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -595,9 +595,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true" isItalic="false"/>
</textElement>
<text><![CDATA[八月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r384f3abedb37}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="470" y="0" width="45" height="20" uuid="b221e73b-0f35-4036-bffb-9230a495b827">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -605,9 +605,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[七月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rdfd42b9c455a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="335" y="0" width="45" height="20" uuid="8c5260bc-9079-4f62-803d-1c3e3fc9f41c">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -615,14 +615,14 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[四月]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r03ce1d5613e8}]]></textFieldExpression>
</textField>
<line>
<reportElement x="1" y="23" width="799" height="1" uuid="ad5d85ce-e7fe-46c0-9b37-76b2ed3f4152">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
</line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="140" y="0" width="60" height="20" uuid="08d93aec-e4ae-46a6-afcb-3af9de518ca6">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -630,9 +630,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[單位]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r4ce0ee8cc0b2}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="0" width="48" height="20" uuid="b4a1a243-36d7-46f7-90ea-b38dd5641a9c">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -640,9 +640,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[貨品編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7f693b56a6ce}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="58" y="0" width="82" height="20" uuid="0b6e2d73-ed45-46c8-b330-07d81fe7f2da">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -650,8 +650,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[貨品名稱]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r17f6b62ed896}]]></textFieldExpression>
</textField>
</band>
</columnHeader>
</jasperReport>

+ 42
- 43
src/main/resources/jasper/StockBalanceReport.jrxml Parādīt failu

@@ -200,7 +200,7 @@
</background>
<pageHeader>
<band height="87" splitType="Stretch">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="351" y="0" width="101" height="23" uuid="e670cb8d-d591-4418-8bce-36398e286e1f">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -208,9 +208,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement>
<text><![CDATA[庫存結餘報告]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r330e76596a33}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="548" y="58" width="62" height="28" uuid="b208e97a-9d94-40ba-9922-3399d8e2f3ac">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -219,9 +219,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[不良品棄置]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{ra501f0a01799}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="308" y="58" width="60" height="28" uuid="e95456ea-35da-4b71-8dc6-f11cf1c519d5">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -229,9 +229,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[纍計存入量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{raa3a98ce3af5}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="428" y="58" width="60" height="28" uuid="7a1741f9-6a23-4c04-81dd-c5e87c7a5142">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -240,10 +240,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[錯誤輸入
或遺失]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r33d99bd7d7ce}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="488" y="58" width="60" height="28" uuid="66934b77-2d44-4218-b459-680e2aeca2e4">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -252,8 +251,8 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[盤盈虧]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r4876d5589e5b}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="30" width="335" height="23" uuid="849b3e33-5b07-41df-b761-2e2411d5d26e"/>
<textElement verticalAlignment="Middle">
@@ -261,7 +260,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="640" y="29" width="68" height="23" uuid="38bc1ddd-2d49-417c-a0f4-15180f8dc295">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -269,14 +268,14 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告時間:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression>
</textField>
<line>
<reportElement x="0" y="57" width="799" height="1" uuid="1c04b46e-491f-42a7-b8e0-2418dd068ace">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
</line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="677" y="0" width="40" height="23" uuid="0adb4709-fdd4-4c69-894e-6e4382527335">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -284,8 +283,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="708" y="29" width="90" height="23" uuid="dabd2770-cc5c-4337-8ba9-a09cd9fa2b32"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -310,7 +309,7 @@
</textElement>
<text><![CDATA[/]]></text>
</staticText>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="30" width="90" height="23" uuid="d0a07e02-a35c-4a9c-aea7-e7a97465e6e4">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -318,8 +317,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement x="768" y="0" width="30" height="23" uuid="de74acaa-0000-47f4-8358-825ac920082d">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -338,7 +337,7 @@
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
</line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="242" y="58" width="66" height="28" uuid="360cf13a-93e7-45d4-8a4d-9e9506a6ad3f">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -347,9 +346,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[期初存量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{raeb07bde6c88}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="368" y="58" width="60" height="28" uuid="a3ea1b07-2108-409f-adee-8478374d767a">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -357,9 +356,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[纍計存出量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1ea2fde25c82}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="610" y="58" width="59" height="28" uuid="4efdbfd9-2ad2-45de-aab9-b234d43b6026">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -368,9 +367,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[現存存貨]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r649d1891700e}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="58" width="48" height="28" uuid="f9475692-14cd-49e8-aac0-ad972aca79e1">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -379,9 +378,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="false"/>
</textElement>
<text><![CDATA[貨品編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7f693b56a6ce}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="180" y="58" width="62" height="28" uuid="e6c47019-de01-4e76-b4f8-cad3826d88b0">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -390,9 +389,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="false"/>
</textElement>
<text><![CDATA[單位]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r4ce0ee8cc0b2}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="58" y="58" width="112" height="28" uuid="759e71ab-8f6b-4664-9669-1da737d41343">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -401,8 +400,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="false"/>
</textElement>
<text><![CDATA[貨品名稱]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r17f6b62ed896}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="720" y="58" width="78" height="28" uuid="722cd2e3-3d4a-4edd-a2fc-ca82fd34efb6">
<property name="com.jaspersoft.studio.unit.y" value="px"/>


+ 52
- 57
src/main/resources/jasper/StockInTraceabilityReport.jrxml Parādīt failu

@@ -78,7 +78,7 @@
<groupFooter>
<band height="19">
<printWhenExpression><![CDATA[$V{Group1_COUNT} > 1]]></printWhenExpression>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="220" y="0" width="60" height="18" uuid="8d002bea-8762-4e6b-9101-35a570f55031">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -87,8 +87,8 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[總上架數量:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf66b3d3ead11}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="280" y="0" width="50" height="18" uuid="d98c4478-22bd-4fd6-9be4-b3777f91de6d">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -140,7 +140,7 @@
</group>
<pageHeader>
<band height="109" splitType="Stretch">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="335" y="0" width="100" height="23" uuid="15ab756b-0e92-466c-be47-112c2ee1aad1">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -148,9 +148,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement>
<text><![CDATA[入倉追蹤報告]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r9e0c4587c30c}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="280" y="80" width="50" height="28" uuid="5c05c89c-843b-4fd6-928c-002c6a529679">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -159,9 +159,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[上架數量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r09456e5bd8c2}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="10" y="80" width="110" height="28" uuid="3fa7c301-1c2a-430b-8985-338ebf7aa6cf">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -170,9 +170,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[送貨單編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rfaf5e4a94fd5}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="690" y="80" width="108" height="28" uuid="db5b9c55-0185-420b-ba6c-0e10d154cc8a">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -181,9 +181,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[供應商名稱]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rb7d45e4aed38}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="220" y="80" width="60" height="28" uuid="cd7a146a-1af0-4428-9b88-dcb159691656">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -192,9 +192,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[到期日]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r11cb5e87977f}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="540" y="80" width="60" height="28" uuid="58b33148-a772-4295-b10a-718fccc89683">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -203,10 +203,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[入庫
檢查備註]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r9cd9cfdac0ff}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="430" y="80" width="60" height="28" uuid="c70088ac-bcf1-48a1-bb82-ad238a3dbe70">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -215,10 +214,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[入庫檢查
缺陷百分比]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r3313eb0eab26}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="600" y="80" width="80" height="28" uuid="c1d0f0dd-34d6-4716-90bd-deb94e5084d2">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -227,9 +225,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[存貨位置]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7eac0bb11fb9}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="330" y="80" width="50" height="28" uuid="006c5557-c246-47cd-b599-4775f71cbf16">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -238,10 +236,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[入庫檢查
樣品數量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rf433fbec9e8a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="120" y="80" width="100" height="28" uuid="2f1e753f-ee01-42a1-a4e3-f75985403431">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -250,9 +247,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[批號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1efbb116be18}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="490" y="80" width="50" height="28" uuid="3c732314-35c2-42ad-98e6-ef42a512c233">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -261,10 +258,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[入庫
檢查結果]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r9eb0df469a62}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="380" y="80" width="50" height="28" uuid="1f82d706-0492-46e4-b692-dced5c97c824">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -273,9 +269,8 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[入庫檢查
缺陷數量]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r1f60da14d9c0}]]></textFieldExpression>
</textField>
<line>
<reportElement x="0" y="108" width="799" height="1" uuid="3190fa6b-3b27-4639-8de6-c93c8438ce35">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -288,7 +283,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="640" y="29" width="68" height="23" uuid="20514f3e-91e7-4d98-ade8-725d4f390397">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -296,8 +291,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告時間:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression>
</textField>
<line>
<reportElement x="0" y="79" width="799" height="1" uuid="4ff25125-9aa9-4dae-8a3e-55ab708ed66a">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -308,9 +303,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$P{lastInDateStart} + " 至 " + $P{lastInDateEnd}]]></textFieldExpression>
<textFieldExpression><![CDATA[$P{lastInDateStart} + $R{r9f96f7e891cd} + $P{lastInDateEnd}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="677" y="0" width="40" height="23" uuid="2ebe654d-a62f-48a7-b5f5-af7e1089dc84">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -318,8 +313,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="708" y="29" width="90" height="23" uuid="e751b9ba-1906-455c-a638-f3923a29c78b"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -344,7 +339,7 @@
</textElement>
<text><![CDATA[/]]></text>
</staticText>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="30" width="90" height="23" uuid="f57a2b35-2bb4-46cc-b4fc-80fc7adc8ee2">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -352,9 +347,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="53" width="90" height="23" uuid="8c19e04a-12bc-4d58-9873-ffe83ae77811">
<property name="com.jaspersoft.studio.unit.y" value="pixel"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -363,8 +358,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[最後入倉日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rdd672eea7e72}]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement x="768" y="0" width="30" height="23" uuid="3ef90e65-b07e-46d1-828a-7a345f96dc0d">
<property name="com.jaspersoft.studio.unit.width" value="px"/>


+ 67
- 67
src/main/resources/jasper/StockItemConsumptionTrendReport.jrxml Parādīt failu

@@ -366,7 +366,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="677" y="0" width="40" height="23" uuid="5a9e0fa9-418d-4838-9f82-e2f336e5bce7">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -374,8 +374,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="747" y="0" width="21" height="23" uuid="26d3d09c-48aa-4870-822a-c403e7faddfa">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
@@ -393,7 +393,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="30" width="90" height="23" uuid="0daddd8b-ca61-42af-9c2b-cbf11b7d7dac">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -401,8 +401,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="738" y="52" width="60" height="23" uuid="53b66bc3-4925-4340-add0-b4f2069a76c1"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -410,7 +410,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{year}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="670" y="29" width="68" height="23" uuid="e2be43a3-3570-4a4e-a671-d96f872a5ad7">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -418,9 +418,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告時間:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="670" y="52" width="68" height="23" uuid="29ed871d-3417-4978-9799-964389143451">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -428,8 +428,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[年份:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rb568e0135677}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="738" y="29" width="60" height="23" uuid="cb1fbb06-e953-40e5-bdbe-5fc219f7c884"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -444,7 +444,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="300" y="0" width="210" height="23" uuid="7451001b-6d5a-438c-82db-2b9e687d9a27">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -452,8 +452,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement>
<text><![CDATA[庫存材料消耗趨勢報告]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r909fd3cf3808}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="53" width="336" height="23" uuid="b51949e1-c40a-4db0-a799-4243555893fd">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -461,9 +461,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + " 至 " + $P{lastOutDateEnd}]]></textFieldExpression>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + $R{r9f96f7e891cd} + $P{lastOutDateEnd}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="53" width="90" height="23" uuid="fb09a559-f5fa-4e56-a891-87c600a2745a">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -472,8 +472,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[材料消耗日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r0db83ab5ad90}]]></textFieldExpression>
</textField>
<line>
<reportElement x="0" y="76" width="799" height="1" uuid="c97a9d60-80d8-4bdb-b7ba-999b3959417b">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -488,16 +488,16 @@
</pageHeader>
<columnHeader>
<band height="29">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="200" y="0" width="45" height="20" uuid="e4267f38-4a00-4a22-965d-9ab531262592">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
</reportElement>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[一月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r313fd5bb330e}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="650" y="0" width="45" height="20" uuid="e51758d1-2a7e-4fef-8b41-206e9aa6c611">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -505,9 +505,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[十一月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rdfef764f339a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="695" y="0" width="45" height="20" uuid="d7c79995-7b3c-4622-8d08-6b4a87345cbe">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -515,9 +515,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[十二月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r37b5ae5f0edd}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="290" y="0" width="45" height="20" uuid="ac124afb-3aa8-4ec6-b4a8-8de161e8bbc5">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -525,9 +525,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[三月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r14aba5f426df}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="740" y="0" width="50" height="20" uuid="f092d4db-d5c5-4515-a826-8fec621a8992">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -535,9 +535,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[總和]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r9e296b27523f}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="560" y="0" width="45" height="20" uuid="85c77a9b-c044-4bc2-8cd9-3b0058e4b74e">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -545,9 +545,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[九月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rd5712c61aadb}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="245" y="0" width="45" height="20" uuid="ec7698ae-c92b-4b44-9f7a-28f10ba5f385">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -555,9 +555,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle" markup="html">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[二月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rcd2a4bdc0cd8}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="380" y="0" width="45" height="20" uuid="5204319c-5b4e-421b-9493-4dd988caca52">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -565,9 +565,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[五月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r93e2b9f9f280}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="605" y="0" width="45" height="20" uuid="a6161aa7-2abd-4bb6-894d-ccdd6f9575c4">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -575,9 +575,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[十月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r5b17a0615359}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="425" y="0" width="45" height="20" uuid="424446ec-655d-4bff-a30a-61e898dbc7ad">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -585,9 +585,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[六月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r8f3cddd57d47}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="515" y="0" width="45" height="20" uuid="2a9e0115-d056-4c4b-b0b2-0800f55435ad">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -595,9 +595,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true" isItalic="false"/>
</textElement>
<text><![CDATA[八月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r384f3abedb37}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="470" y="0" width="45" height="20" uuid="b221e73b-0f35-4036-bffb-9230a495b827">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -605,9 +605,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[七月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rdfd42b9c455a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="335" y="0" width="45" height="20" uuid="8c5260bc-9079-4f62-803d-1c3e3fc9f41c">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -615,14 +615,14 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[四月]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r03ce1d5613e8}]]></textFieldExpression>
</textField>
<line>
<reportElement x="0" y="24" width="799" height="1" uuid="ad5d85ce-e7fe-46c0-9b37-76b2ed3f4152">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
</line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="130" y="0" width="70" height="20" uuid="08d93aec-e4ae-46a6-afcb-3af9de518ca6">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -630,9 +630,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[單位]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r4ce0ee8cc0b2}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="0" width="48" height="20" uuid="b4a1a243-36d7-46f7-90ea-b38dd5641a9c">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -640,9 +640,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[貨品編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7f693b56a6ce}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="58" y="0" width="72" height="20" uuid="0b6e2d73-ed45-46c8-b330-07d81fe7f2da">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -650,8 +650,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[貨品名稱]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r17f6b62ed896}]]></textFieldExpression>
</textField>
</band>
</columnHeader>
</jasperReport>

+ 45
- 46
src/main/resources/jasper/StockLedgarReport.jrxml Parādīt failu

@@ -89,7 +89,7 @@
<groupFooter>
<band height="19">
<printWhenExpression><![CDATA[$V{Group1_COUNT} > 1]]></printWhenExpression>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="359" y="0" width="57" height="18" uuid="518b1512-2f82-48ca-b334-652fe5991b72">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -98,8 +98,8 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[貨品總量:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r9460041e30e6}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="416" y="0" width="50" height="18" uuid="6c141d7d-766e-49bf-b987-e790312573a5">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -151,7 +151,7 @@
</group>
<pageHeader>
<band height="96" splitType="Stretch">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="324" y="5" width="165" height="23" uuid="61492f60-688d-4110-b8d2-fcc5b5b24ba7">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -159,8 +159,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement>
<text><![CDATA[庫存明細報告]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r53fcb0cb5f04}]]></textFieldExpression>
</textField>
<line>
<reportElement x="2" y="55" width="799" height="1" uuid="33569f74-fee4-43c9-9bfe-b6bf7e12ecd4">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -171,7 +171,7 @@
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
</line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="416" y="60" width="50" height="32" uuid="75d5ce02-8001-4f6f-85ae-88c6c21c038a">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -179,9 +179,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[入庫]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7e6f86ce8a6b}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="704" y="60" width="94" height="32" uuid="bb54ccd3-e003-4eba-9d95-d2c9c84767a5">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -190,9 +190,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[存貨位置]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7eac0bb11fb9}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="159" y="60" width="125" height="32" uuid="1a37e08c-8c54-462f-9a2d-876fc665cdba">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -201,9 +201,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[批號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1efbb116be18}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="11" y="60" width="78" height="32" uuid="29d7c8b3-689f-46c6-8283-ebc81c12e3b9">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -212,9 +212,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[出入賬日期]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r6ba3e4fc4ed5}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="524" y="60" width="66" height="32" uuid="12c55779-4875-4d8b-914c-9bbf4dcd64ff">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -222,9 +222,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[纍計存量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r832e34b15e49}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="592" y="60" width="112" height="32" uuid="19e06f3b-0c2a-4e9e-b436-79c21d497ebb">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -232,9 +232,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[參考編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r9e0c52c95eed}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="466" y="60" width="50" height="32" uuid="86dcb3cb-197d-458e-9530-d2f4de6e5980">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -243,9 +243,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[出庫]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r62feaa72467a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="97" y="60" width="62" height="32" uuid="8fde28bc-907f-406e-9efc-b1e2ff54d819">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -254,9 +254,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[類型]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r469fb16b34e6}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="359" y="60" width="57" height="32" uuid="9bfc6cdc-28da-4533-a349-5951fd3bdb8d">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -264,10 +264,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[纍計期初
存量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r63c7976d4b5b}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="284" y="60" width="75" height="32" uuid="42332f71-1b1f-4cef-a8c8-c2e66f125cb7">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -275,8 +274,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[到期日]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r11cb5e87977f}]]></textFieldExpression>
</textField>
<line>
<reportElement x="2" y="93" width="799" height="1" uuid="25601617-e2c7-4daf-829d-4525fdde0b6a">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -296,7 +295,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="670" y="29" width="68" height="23" uuid="743080b7-0b92-48b8-8a24-5fb93fb1a88d">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -304,8 +303,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告時間:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="747" y="0" width="21" height="23" uuid="98c8e822-fec6-445a-9d58-93bfb137f220">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
@@ -331,7 +330,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="30" width="90" height="23" uuid="836037e7-c4d4-40ac-a079-aefcf0bac275">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -339,9 +338,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="677" y="0" width="40" height="23" uuid="8beee270-4955-4bd8-b315-814bea3661e0">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -349,8 +348,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
</band>
</pageHeader>
<detail>


+ 37
- 37
src/main/resources/jasper/StockTakeVarianceReport.jrxml Parādīt failu

@@ -152,7 +152,7 @@
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
</line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="290" y="0" width="220" height="23" uuid="ae59d134-591e-4212-b594-6388bc15e629">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -160,8 +160,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement>
<text><![CDATA[庫存盤點報告]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r4d7049a1bca9}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="717" y="0" width="30" height="23" uuid="2b671e24-ab30-4c72-8d3c-0e68a7b7cb36">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -181,7 +181,7 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[($P{stockTakeFilterCaption} != null && !$P{stockTakeFilterCaption}.isEmpty()) ? $P{stockTakeFilterCaption} : ($P{stockTakeDateStart} + " 至 " + $P{stockTakeDateEnd})]]></textFieldExpression>
<textFieldExpression><![CDATA[($P{stockTakeFilterCaption} != null && !$P{stockTakeFilterCaption}.isEmpty()) ? $P{stockTakeFilterCaption} : ($P{stockTakeDateStart} + $R{r9f96f7e891cd} + $P{stockTakeDateEnd})]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="747" y="0" width="21" height="23" uuid="5a1b4b58-b7b1-48c9-b229-7e96392c6425">
@@ -211,7 +211,7 @@
</textElement>
<textFieldExpression><![CDATA[$P{stockTakeConditionLabel}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="30" width="90" height="23" uuid="0628b331-5736-4f93-bed3-2278011456aa">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -219,9 +219,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="677" y="0" width="40" height="23" uuid="db6e3fb3-b375-497b-bfc2-1795ec7ecefb">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -229,13 +229,13 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
</band>
</pageHeader>
<columnHeader>
<band height="20">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="10" y="1" width="100" height="18" isPrintInFirstWholeBand="true" uuid="12b01171-4800-444d-b50a-e9b204f526a7">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -244,9 +244,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[批號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1efbb116be18}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="110" y="1" width="98" height="18" isPrintInFirstWholeBand="true" uuid="8d6b48f0-38f2-45b9-b306-9e7c81b99d5f">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -255,9 +255,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[到期日]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r11cb5e87977f}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="324" y="1" width="64" height="18" isPrintInFirstWholeBand="true" uuid="38b97df1-2013-4b2d-a48d-06015c159953">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -266,9 +266,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[盤點前存量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r5f2d6fed3a7d}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="208" y="1" width="110" height="18" isPrintInFirstWholeBand="true" uuid="e95a755d-4ecb-4900-ac9a-3a6e3b9b3470">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -277,9 +277,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[存貨位置]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7eac0bb11fb9}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="688" y="1" width="110" height="18" isPrintInFirstWholeBand="true" uuid="12a99c2d-6eb7-44c3-b442-37a89be3fe15">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -288,9 +288,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[審核時間]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r2d36c3ab208f}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="520" y="1" width="82" height="18" isPrintInFirstWholeBand="true" uuid="921c16b3-172b-43b9-a090-24d2ee88a1b2">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -299,9 +299,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[盤盈虧百分比]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rbad7c57898bb}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="461" y="1" width="59" height="18" isPrintInFirstWholeBand="true" uuid="5dfc210f-b576-472b-a8a2-9db870c19b92">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -310,9 +310,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[盤盈虧]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r4876d5589e5b}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="388" y="1" width="72" height="18" isPrintInFirstWholeBand="true" uuid="1590e6c1-5f5a-46ca-84ae-a45e2d4c5a0b">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -321,14 +321,14 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[盤點數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rcfb0ffd45d73}]]></textFieldExpression>
</textField>
<line>
<reportElement isPrintRepeatedValues="false" x="0" y="19" width="800" height="1" isPrintInFirstWholeBand="true" uuid="8bdc6e64-fc14-4fee-bfd3-f2e68abdc606">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
</line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="602" y="1" width="86" height="18" isPrintInFirstWholeBand="true" uuid="0b8d0574-7a70-46f4-a622-384e0c32f0de">
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -337,8 +337,8 @@
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/>
</textElement>
<text><![CDATA[類型]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r469fb16b34e6}]]></textFieldExpression>
</textField>
</band>
</columnHeader>
<detail>


+ 24
- 24
src/main/resources/qrCodeLabel/poItemPDF.jrxml Parādīt failu

@@ -38,20 +38,20 @@
</textElement>
<textFieldExpression><![CDATA[$F{lotNo}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="14" width="80" height="16" uuid="f5f145f1-123f-4fe5-90fa-8550b3d2eb63"/>
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[批次編號:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rd27e4a4ff359}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="42" width="80" height="16" uuid="c2041205-51f8-45bb-a1d1-e3de37eebed7"/>
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[供應商:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r60650ec2d16b}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="90" y="42" width="150" height="16" uuid="ab82ca39-8840-4471-b7c0-cdeec9cb5693">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -62,13 +62,13 @@
</textElement>
<textFieldExpression><![CDATA[$F{supplier}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="97" width="80" height="16" uuid="96d46fb1-939d-4f3e-b8f0-172b69b85e9f"/>
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[物料編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r3a4716a37bef}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="90" y="97" width="150" height="16" uuid="1f289946-b945-4f79-8515-212368b8be3b">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -79,13 +79,13 @@
</textElement>
<textFieldExpression><![CDATA[$F{itemNo}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="163" width="80" height="16" uuid="53a2d7cf-bd50-4264-abee-346823cd49dd"/>
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[數量:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r8404b57157c6}]]></textFieldExpression>
</textField>
<textField textAdjust="StretchHeight">
<reportElement x="90" y="163" width="150" height="16" uuid="629d9af8-c73f-4614-ba9d-a582e2ed4a29">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -103,15 +103,15 @@
</reportElement>
<imageExpression><![CDATA[$F{qrCode}]]></imageExpression>
</image>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="209" width="80" height="16" uuid="c62ac00a-c495-462c-93bc-97bdd3cdb395">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[收貨日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r8689d87a0ff1}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="90" y="209" width="150" height="16" uuid="74a5cfba-046d-42f4-92d7-113729514a6f">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -122,13 +122,13 @@
</textElement>
<textFieldExpression><![CDATA[$F{productionDate}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="70" width="80" height="16" uuid="1b1efafd-049a-432e-93c4-9662273011f7"/>
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[採購訂單編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r659a9e9a692d}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="90" y="70" width="150" height="16" uuid="b805e20a-9a36-45c8-8255-23b6cc58f47c">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -139,13 +139,13 @@
</textElement>
<textFieldExpression><![CDATA[$P{poCode}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="125" width="80" height="16" uuid="5c3f9b03-222c-4c94-ab58-6bc86d44c5ce"/>
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[物料名稱:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r5d526c7219e5}]]></textFieldExpression>
</textField>
<textField textAdjust="StretchHeight">
<reportElement x="90" y="125" width="150" height="16" uuid="e04b094d-2d16-4060-b6d9-2e6033a673ab">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -156,13 +156,13 @@
</textElement>
<textFieldExpression><![CDATA[$F{itemName}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="237" width="80" height="16" uuid="32edcad1-23c1-4d41-8c9a-352d9e6ef377"/>
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[到期日:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf79aab5b7eed}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="90" y="237" width="150" height="16" uuid="97e4a9bb-fc84-4074-b523-ddf9eb9ed2d2">
<property name="com.jaspersoft.studio.unit.height" value="px"/>


+ 24
- 24
src/main/resources/qrCodeLabel/poItemPDF_v2.jrxml Parādīt failu

@@ -30,13 +30,13 @@
</background>
<detail>
<band height="279" splitType="Prevent">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="0" width="108" height="56" uuid="c62ac00a-c495-462c-93bc-97bdd3cdb395"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="18" isBold="true"/>
</textElement>
<text><![CDATA[收貨日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r8689d87a0ff1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="116" y="0" width="301" height="56" uuid="74a5cfba-046d-42f4-92d7-113729514a6f"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -44,13 +44,13 @@
</textElement>
<textFieldExpression><![CDATA[$F{productionDate}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="56" width="108" height="56" uuid="32edcad1-23c1-4d41-8c9a-352d9e6ef377"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="18" isBold="true"/>
</textElement>
<text><![CDATA[到期日:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf79aab5b7eed}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="116" y="56" width="301" height="56" uuid="97e4a9bb-fc84-4074-b523-ddf9eb9ed2d2"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -58,13 +58,13 @@
</textElement>
<textFieldExpression><![CDATA[$F{expiryDate}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="114" width="230" height="18" uuid="f5f145f1-123f-4fe5-90fa-8550b3d2eb63"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[批次編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rd27e4a4ff359}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="132" width="230" height="20" uuid="402f35fc-b11a-4bf1-982d-e12c622f38ea"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -72,20 +72,20 @@
</textElement>
<textFieldExpression><![CDATA[$F{lotNo}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="152" width="108" height="18" uuid="96d46fb1-939d-4f3e-b8f0-172b69b85e9f"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[物料編號:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r3a4716a37bef}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="120" y="152" width="118" height="18" uuid="53a2d7cf-bd50-4264-abee-346823cd49dd"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[數量:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r8404b57157c6}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="170" width="108" height="28" uuid="1f289946-b945-4f79-8515-212368b8be3b"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -109,13 +109,13 @@
</textElement>
<textFieldExpression><![CDATA[$F{qtyDetail}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="200" width="230" height="16" uuid="5c3f9b03-222c-4c94-ab58-6bc86d44c5ce"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[物料名稱:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r5d526c7219e5}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="216" width="230" height="30" uuid="e04b094d-2d16-4060-b6d9-2e6033a673ab"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -127,13 +127,13 @@
<reportElement x="248" y="112" width="166" height="166" uuid="5dd35c73-973b-4f0d-9cad-13305a29a9fd"/>
<imageExpression><![CDATA[$F{qrCode}]]></imageExpression>
</image>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="248" width="42" height="14" uuid="c2041205-51f8-45bb-a1d1-e3de37eebed7"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="8"/>
</textElement>
<text><![CDATA[供應商:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r60650ec2d16b}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="50" y="248" width="188" height="14" uuid="ab82ca39-8840-4471-b7c0-cdeec9cb5693"/>
<textElement verticalAlignment="Middle">
@@ -141,13 +141,13 @@
</textElement>
<textFieldExpression><![CDATA[$F{supplier}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="262" width="76" height="14" uuid="1b1efafd-049a-432e-93c4-9662273011f7"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="8"/>
</textElement>
<text><![CDATA[採購訂單編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r659a9e9a692d}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="84" y="262" width="154" height="14" uuid="b805e20a-9a36-45c8-8255-23b6cc58f47c"/>
<textElement verticalAlignment="Middle">


+ 24
- 24
src/main/resources/qrCodeLabel/poItemPDF_v3.jrxml Parādīt failu

@@ -30,13 +30,13 @@
</background>
<detail>
<band height="279" splitType="Prevent">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="0" width="108" height="56" uuid="c62ac00a-c495-462c-93bc-97bdd3cdb395"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="18" isBold="true"/>
</textElement>
<text><![CDATA[收貨日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r8689d87a0ff1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="116" y="0" width="301" height="56" uuid="74a5cfba-046d-42f4-92d7-113729514a6f"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -44,13 +44,13 @@
</textElement>
<textFieldExpression><![CDATA[$F{productionDate}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="56" width="108" height="56" uuid="32edcad1-23c1-4d41-8c9a-352d9e6ef377"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="18" isBold="true"/>
</textElement>
<text><![CDATA[到期日:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf79aab5b7eed}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="116" y="56" width="301" height="56" uuid="97e4a9bb-fc84-4074-b523-ddf9eb9ed2d2"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -58,13 +58,13 @@
</textElement>
<textFieldExpression><![CDATA[$F{expiryDate}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="114" width="286" height="16" uuid="f5f145f1-123f-4fe5-90fa-8550b3d2eb63"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[批次編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rd27e4a4ff359}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="130" width="286" height="20" uuid="402f35fc-b11a-4bf1-982d-e12c622f38ea"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -72,20 +72,20 @@
</textElement>
<textFieldExpression><![CDATA[$F{lotNo}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="152" width="140" height="16" uuid="96d46fb1-939d-4f3e-b8f0-172b69b85e9f"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[物料編號:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r3a4716a37bef}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="152" y="152" width="142" height="16" uuid="53a2d7cf-bd50-4264-abee-346823cd49dd"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[數量:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r8404b57157c6}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="168" width="140" height="26" uuid="1f289946-b945-4f79-8515-212368b8be3b"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -109,13 +109,13 @@
</textElement>
<textFieldExpression><![CDATA[$F{qtyDetail}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="200" width="290" height="18" uuid="5c3f9b03-222c-4c94-ab58-6bc86d44c5ce"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[物料名稱:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r5d526c7219e5}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="218" width="290" height="58" uuid="e04b094d-2d16-4060-b6d9-2e6033a673ab"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -127,13 +127,13 @@
<reportElement x="308" y="116" width="108" height="108" uuid="5dd35c73-973b-4f0d-9cad-13305a29a9fd"/>
<imageExpression><![CDATA[$F{qrCode}]]></imageExpression>
</image>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="308" y="226" width="108" height="12" uuid="c2041205-51f8-45bb-a1d1-e3de37eebed7"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="8"/>
</textElement>
<text><![CDATA[供應商:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r60650ec2d16b}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="308" y="238" width="108" height="14" uuid="ab82ca39-8840-4471-b7c0-cdeec9cb5693"/>
<textElement verticalAlignment="Middle">
@@ -141,13 +141,13 @@
</textElement>
<textFieldExpression><![CDATA[$F{supplier}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="308" y="252" width="108" height="12" uuid="1b1efafd-049a-432e-93c4-9662273011f7"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="8"/>
</textElement>
<text><![CDATA[採購訂單編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r659a9e9a692d}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="308" y="264" width="108" height="14" uuid="b805e20a-9a36-45c8-8255-23b6cc58f47c"/>
<textElement verticalAlignment="Middle">


+ 24
- 24
src/main/resources/qrCodeLabel/poItemPDF_v4.jrxml Parādīt failu

@@ -30,13 +30,13 @@
</background>
<detail>
<band height="279" splitType="Prevent">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="4" y="0" width="222" height="16" uuid="c62ac00a-c495-462c-93bc-97bdd3cdb395"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="11" isBold="true"/>
</textElement>
<text><![CDATA[收貨日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r8689d87a0ff1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="4" y="16" width="222" height="52" uuid="74a5cfba-046d-42f4-92d7-113729514a6f"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -44,13 +44,13 @@
</textElement>
<textFieldExpression><![CDATA[$F{productionDate}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="4" y="70" width="222" height="16" uuid="32edcad1-23c1-4d41-8c9a-352d9e6ef377"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="11" isBold="true"/>
</textElement>
<text><![CDATA[到期日:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf79aab5b7eed}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="4" y="86" width="222" height="52" uuid="97e4a9bb-fc84-4074-b523-ddf9eb9ed2d2"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -58,20 +58,20 @@
</textElement>
<textFieldExpression><![CDATA[$F{expiryDate}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="142" width="104" height="16" uuid="96d46fb1-939d-4f3e-b8f0-172b69b85e9f"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[物料編號:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r3a4716a37bef}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="130" y="142" width="96" height="16" uuid="53a2d7cf-bd50-4264-abee-346823cd49dd"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[數量:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r8404b57157c6}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="158" width="118" height="34" uuid="1f289946-b945-4f79-8515-212368b8be3b"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -95,13 +95,13 @@
</textElement>
<textFieldExpression><![CDATA[$F{qtyDetail}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="196" width="218" height="16" uuid="5c3f9b03-222c-4c94-ab58-6bc86d44c5ce"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[物料名稱:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r5d526c7219e5}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="212" width="218" height="64" uuid="e04b094d-2d16-4060-b6d9-2e6033a673ab"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -113,13 +113,13 @@
<reportElement x="230" y="4" width="190" height="190" uuid="5dd35c73-973b-4f0d-9cad-13305a29a9fd"/>
<imageExpression><![CDATA[$F{qrCode}]]></imageExpression>
</image>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="230" y="196" width="190" height="16" uuid="f5f145f1-123f-4fe5-90fa-8550b3d2eb63"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement>
<text><![CDATA[批次編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rd27e4a4ff359}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="230" y="212" width="190" height="26" uuid="402f35fc-b11a-4bf1-982d-e12c622f38ea"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
@@ -127,13 +127,13 @@
</textElement>
<textFieldExpression><![CDATA[$F{lotNo}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="230" y="240" width="42" height="16" uuid="c2041205-51f8-45bb-a1d1-e3de37eebed7"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="8"/>
</textElement>
<text><![CDATA[供應商:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r60650ec2d16b}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="272" y="240" width="148" height="16" uuid="ab82ca39-8840-4471-b7c0-cdeec9cb5693"/>
<textElement verticalAlignment="Middle">
@@ -141,13 +141,13 @@
</textElement>
<textFieldExpression><![CDATA[$F{supplier}]]></textFieldExpression>
</textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="230" y="258" width="72" height="16" uuid="1b1efafd-049a-432e-93c4-9662273011f7"/>
<textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="8"/>
</textElement>
<text><![CDATA[採購訂單編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r659a9e9a692d}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="302" y="258" width="118" height="16" uuid="b805e20a-9a36-45c8-8255-23b6cc58f47c"/>
<textElement verticalAlignment="Middle">


Notiek ielāde…
Atcelt
Saglabāt