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

update jasper gradle, print qrcode, font

create_edit_user
MSI\derek 3 месяцев назад
Родитель
Сommit
f2182b56c6
10 измененных файлов: 110 добавлений и 54 удалений
  1. +5
    -2
      build.gradle
  2. +4
    -2
      src/main/java/com/ffii/fpsms/modules/stock/entity/projection/QrCodeInfo.kt
  3. +28
    -10
      src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt
  4. +3
    -1
      src/main/java/com/ffii/fpsms/modules/stock/web/StockInLineController.kt
  5. Двоичные данные
      src/main/resources/fonts/STSONG.TTF
  6. +28
    -0
      src/main/resources/fonts/fonts.xml
  7. Двоичные данные
      src/main/resources/fonts/msjh_0.ttf
  8. +1
    -0
      src/main/resources/jasperreports.properties
  9. +2
    -0
      src/main/resources/jasperreports_extension.properties
  10. +39
    -39
      src/main/resources/qrCodeLabel/poItemPDF.jrxml

+ 5
- 2
build.gradle Просмотреть файл

@@ -32,10 +32,13 @@ dependencies {

implementation group: 'org.springframework.cloud', name: 'spring-cloud-context', version: '4.2.1'

implementation("net.sf.jasperreports:jasperreports:7.0.0") {
implementation group: 'com.google.zxing', name: 'core', version: '3.5.2'
implementation group: 'com.google.zxing', name: 'javase', version: '3.5.2'

implementation("net.sf.jasperreports:jasperreports:6.21.0") {
exclude group: "com.fasterxml.jackson.dataformat", module: "jackson-dataformat-xml"
}
implementation group: 'net.sf.jasperreports', name: 'jasperreports-fonts', version: '7.0.0'
implementation group: 'net.sf.jasperreports', name: 'jasperreports-fonts', version: '6.21.0'

implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0'
implementation group: 'org.apache.poi', name: 'poi', version: '5.2.3'


+ 4
- 2
src/main/java/com/ffii/fpsms/modules/stock/entity/projection/QrCodeInfo.kt Просмотреть файл

@@ -18,10 +18,12 @@ interface QrCodeInfo { // stockInLine
@get:Value("#{target.item?.type}")
val itemType: String
val acceptedQty: BigDecimal
@get:Value("#{target.purchaseOrderLine?.uom?.code}")
val uom: String?
val productionDate: LocalDateTime?
val expiryDate: LocalDate?
val lotNo: String?
@get:Value("#{target.stockIn?.purchaseOrder?.shop?.name}")
@get:Value("#{target.stockIn?.supplier?.name}")
val supplier: String?
var qrCode: BufferedImage?
}
}

+ 28
- 10
src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt Просмотреть файл

@@ -25,6 +25,8 @@ import java.math.BigDecimal
import java.time.LocalDate
import java.time.LocalDateTime
import com.ffii.core.utils.PdfUtils;
import java.io.FileNotFoundException
import java.time.format.DateTimeFormatter


@Service
@@ -241,26 +243,42 @@ open class StockInLineService(
open fun exportStockInLineQrcode(request: ExportQrCodeRequest): Map<String, Any> {
val QRCODE_PDF = "qrCodeLabel/poItemPDF.jrxml"
val resource = ClassPathResource(QRCODE_PDF)
if (!resource.exists()) {
println("here")
throw FileNotFoundException("Report file not found: $QRCODE_PDF")
}
val inputStream = resource.inputStream
val poLabel = JasperCompileManager.compileReport(inputStream)
val stockInLineInfo = stockInLineRepository.findQrCodeInfoByIdInAndDeletedFalse(request.stockInLineIds).toMutableList()
for (lineInfo in stockInLineInfo) {
val qrCodeInfo = stockInLineRepository.findQrCodeInfoByIdInAndDeletedFalse(request.stockInLineIds).toMutableList()
println(qrCodeInfo)
val fields = mutableListOf<MutableMap<String ,Any>>()
for (info in qrCodeInfo) {
val field = mutableMapOf<String, Any>()
val qrCodeContent = (
"itemId:${lineInfo.itemId}" +
",stockInLineId:${lineInfo.id}"
"itemId:${info.itemId}" +
",stockInLineId:${info.id}"
)
// field["itemId"] = info.itemId
field["itemName"] = info.itemName
field["itemNo"] = info.itemNo
field["poCode"] = info.poCode
field["itemType"] = info.itemType
field["acceptedQty"] = info.acceptedQty.toString()
field["uom"] = info.uom!!
field["productionDate"] = info.productionDate?.format(DateTimeFormatter.ISO_LOCAL_DATE) ?: ""
field["expiryDate"] = info.expiryDate?.format(DateTimeFormatter.ISO_LOCAL_DATE) ?: ""
field["lotNo"] = info.lotNo!!
field["supplier"] = info.supplier!!
val image = QrCodeUtil.generateQRCodeImage(qrCodeContent)
lineInfo.apply {
this.qrCode = image
}
field["qrCode"] = image
fields.add(field)
}
val params: MutableMap<String, Any> = mutableMapOf(
"poCode" to stockInLineInfo[0].poCode
"poCode" to qrCodeInfo[0].poCode
)
return mapOf(
"report" to PdfUtils.fillReport(poLabel,stockInLineInfo, params),
"fileName" to stockInLineInfo[0].poCode
"report" to PdfUtils.fillReport(poLabel,fields, params),
"fileName" to qrCodeInfo[0].poCode
);
}


+ 3
- 1
src/main/java/com/ffii/fpsms/modules/stock/web/StockInLineController.kt Просмотреть файл

@@ -41,7 +41,9 @@ class StockInLineController(
val out: OutputStream = response.outputStream
val pdf: Map<String, Any> = stockInLineService.exportStockInLineQrcode(request)
val jasperPrint = pdf["report"] as JasperPrint
response.setHeader("Content-Disposition", "attachment; filename=" + pdf["fileName"] + ".pdf");
println(pdf["fileName"])
response.addHeader("filename", "${pdf["fileName"]}.pdf")
// response.setHeader("Content-Disposition", "attachment; filename=" + pdf["fileName"] + ".pdf");
out.write(JasperExportManager.exportReportToPdf(jasperPrint));
}



Двоичные данные
src/main/resources/fonts/STSONG.TTF Просмотреть файл


+ 28
- 0
src/main/resources/fonts/fonts.xml Просмотреть файл

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<fontFamily name="微軟正黑體">
<normal>fonts/msjh_0.ttf</normal>
<bold>fonts/msjh_0.ttf</bold>
<italic>fonts/msjh_0.ttf</italic>
<boldItalic>fonts/msjh_0.ttf</boldItalic>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
<export key="net.sf.jasperreports.html">'微軟正黑體', Arial, Helvetica, sans-serif</export>
<export key="net.sf.jasperreports.xhtml">'微軟正黑體', Arial, Helvetica, sans-serif</export>
</exportFonts>
</fontFamily>
<fontFamily name="華文宋體">
<normal>fonts/STSONG.TTF</normal>
<bold>fonts/STSONG.TTF</bold>
<italic>fonts/STSONG.TTF</italic>
<boldItalic>fonts/STSONG.TTF</boldItalic>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
<export key="net.sf.jasperreports.html">'華文宋體', Arial, Helvetica, sans-serif</export>
<export key="net.sf.jasperreports.xhtml">'華文宋體', Arial, Helvetica, sans-serif</export>
</exportFonts>
</fontFamily>
</fontFamilies>


Двоичные данные
src/main/resources/fonts/msjh_0.ttf Просмотреть файл


+ 1
- 0
src/main/resources/jasperreports.properties Просмотреть файл

@@ -0,0 +1 @@
net.sf.jasperreports.compiler.xml.parser.cache.schemas=false

+ 2
- 0
src/main/resources/jasperreports_extension.properties Просмотреть файл

@@ -0,0 +1,2 @@
net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.lobstertwo=fonts/fonts.xml

+ 39
- 39
src/main/resources/qrCodeLabel/poItemPDF.jrxml Просмотреть файл

@@ -3,27 +3,27 @@
<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="poItemPDF" printOrder="Horizontal" pageWidth="425" pageHeight="283" orientation="Landscape" columnWidth="421" leftMargin="2" rightMargin="2" topMargin="2" bottomMargin="2" uuid="6cb85eb9-3573-42f3-a293-099db250aec0">
<property name="com.jaspersoft.studio.unit." value="pixel"/>
<parameter name="lotNo" class="java.lang.String"/>
<parameter name="materialName" class="java.lang.String"/>
<parameter name="materialCode" class="java.lang.String"/>
<parameter name="purchaseCode" class="java.lang.String"/>
<parameter name="itemName" class="java.lang.String"/>
<parameter name="itemNo" class="java.lang.String"/>
<parameter name="poCode" class="java.lang.String"/>
<parameter name="qrCode" class="java.awt.Image"/>
<parameter name="materialQty" class="java.math.BigDecimal"/>
<parameter name="materialUom" class="java.lang.String"/>
<parameter name="acceptedQty" class="java.math.BigDecimal"/>
<parameter name="uom" class="java.lang.String"/>
<queryString>
<![CDATA[]]>
</queryString>
<field name="lotNo" class="java.lang.String"/>
<field name="materialName" class="java.lang.String"/>
<field name="materialCode" class="java.lang.String"/>
<field name="materialQty" class="java.lang.String"/>
<field name="materialUom" class="java.lang.String"/>
<field name="itemName" class="java.lang.String"/>
<field name="itemNo" class="java.lang.String"/>
<field name="acceptedQty" class="java.lang.String"/>
<field name="uom" class="java.lang.String"/>
<field name="qrCode" class="java.awt.Image"/>
<field name="purchaseCode" class="java.lang.String"/>
<field name="supplierName" class="java.lang.String"/>
<field name="materialWeight" class="java.lang.String"/>
<field name="weightUnit" class="java.lang.String"/>
<field name="mfrDate" class="java.lang.String"/>
<field name="shelfLifeDate" class="java.lang.String"/>
<field name="poCode" class="java.lang.String"/>
<field name="supplier" class="java.lang.String"/>
<!-- <field name="materialWeight" class="java.lang.String"/>-->
<!-- <field name="weightUnit" class="java.lang.String"/>-->
<field name="productionDate" class="java.lang.String"/>
<field name="expiryDate" class="java.lang.String"/>
<background>
<band splitType="Stretch"/>
</background>
@@ -61,7 +61,7 @@
<textElement>
<font fontName="微軟正黑體" size="12"/>
</textElement>
<textFieldExpression><![CDATA[$F{supplierName}]]></textFieldExpression>
<textFieldExpression><![CDATA[$F{supplier}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="0" y="104" width="80" height="16" uuid="96d46fb1-939d-4f3e-b8f0-172b69b85e9f"/>
@@ -78,7 +78,7 @@
<textElement>
<font fontName="微軟正黑體" size="12"/>
</textElement>
<textFieldExpression><![CDATA[$F{materialCode}]]></textFieldExpression>
<textFieldExpression><![CDATA[$F{itemNo}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="0" y="160" width="80" height="16" uuid="53a2d7cf-bd50-4264-abee-346823cd49dd"/>
@@ -95,7 +95,7 @@
<textElement>
<font fontName="微軟正黑體" size="12"/>
</textElement>
<textFieldExpression><![CDATA[$F{materialQty} + " " + $F{materialUom}]]></textFieldExpression>
<textFieldExpression><![CDATA[$F{acceptedQty} + " " + $F{uom}]]></textFieldExpression>
</textField>
<image>
<reportElement x="230" y="45" width="190" height="190" uuid="5dd35c73-973b-4f0d-9cad-13305a29a9fd">
@@ -121,7 +121,7 @@
<textElement>
<font fontName="微軟正黑體" size="12"/>
</textElement>
<textFieldExpression><![CDATA[$F{mfrDate}]]></textFieldExpression>
<textFieldExpression><![CDATA[$F{productionDate}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="0" y="77" width="80" height="16" uuid="1b1efafd-049a-432e-93c4-9662273011f7"/>
@@ -138,7 +138,7 @@
<textElement>
<font fontName="微軟正黑體" size="12"/>
</textElement>
<textFieldExpression><![CDATA[$P{purchaseCode}]]></textFieldExpression>
<textFieldExpression><![CDATA[$P{poCode}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="0" y="132" width="80" height="16" uuid="5c3f9b03-222c-4c94-ab58-6bc86d44c5ce"/>
@@ -155,25 +155,25 @@
<textElement>
<font fontName="微軟正黑體" size="12"/>
</textElement>
<textFieldExpression><![CDATA[$F{materialName}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="0" y="188" width="80" height="16" uuid="8b4d694b-90eb-4be4-b407-38d3dae15096"/>
<textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/>
</textElement>
<text><![CDATA[總淨重量:]]></text>
</staticText>
<textField>
<reportElement x="80" y="188" width="150" height="16" uuid="d6a75fb1-ade3-4216-b7e2-d596e65091ef">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
</reportElement>
<textElement>
<font fontName="微軟正黑體" size="12"/>
</textElement>
<textFieldExpression><![CDATA[$F{materialWeight} + " " + $F{weightUnit}]]></textFieldExpression>
<textFieldExpression><![CDATA[$F{itemName}]]></textFieldExpression>
</textField>
<!-- <staticText>-->
<!-- <reportElement x="0" y="188" width="80" height="16" uuid="8b4d694b-90eb-4be4-b407-38d3dae15096"/>-->
<!-- <textElement textAlignment="Left">-->
<!-- <font fontName="微軟正黑體" size="12"/>-->
<!-- </textElement>-->
<!-- <text><![CDATA[總淨重量:]]></text>-->
<!-- </staticText>-->
<!-- <textField>-->
<!-- <reportElement x="80" y="188" width="150" height="16" uuid="d6a75fb1-ade3-4216-b7e2-d596e65091ef">-->
<!-- <property name="com.jaspersoft.studio.unit.height" value="px"/>-->
<!-- <property name="com.jaspersoft.studio.unit.width" value="px"/>-->
<!-- </reportElement>-->
<!-- <textElement>-->
<!-- <font fontName="微軟正黑體" size="12"/>-->
<!-- </textElement>-->
<!-- <textFieldExpression><![CDATA[$F{materialWeight} + " " + $F{weightUnit}]]></textFieldExpression>-->
<!-- </textField>-->
<staticText>
<reportElement x="0" y="244" width="80" height="16" uuid="32edcad1-23c1-4d41-8c9a-352d9e6ef377"/>
<textElement textAlignment="Left">
@@ -189,7 +189,7 @@
<textElement>
<font fontName="微軟正黑體" size="12"/>
</textElement>
<textFieldExpression><![CDATA[$F{shelfLifeDate}]]></textFieldExpression>
<textFieldExpression><![CDATA[$F{expiryDate}]]></textFieldExpression>
</textField>
</band>
</detail>


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