Files
agent_jrxml/kb_data/d198ae3b32cd49f09736c4290dd1223a/5a1ba1acd39344d79602df3e38ff52a8/raw/打印单定制介绍.md
T
panda bd5bfbac2d fix: band-level windowed refine_layout + programmatic map_fields to prevent 91.5% content loss
Root cause: LLM receiving full 34k-char JRXML would regenerate from scratch
instead of modifying coordinates in-place, shrinking output to ~3k chars.

Solution (programmatic node control, not prompt engineering):

- New agent/jrxml_windower.py: decompose JRXML into header (never sent to
  LLM) + individual bands. Split bands >4000 chars at element boundaries.
  Reassemble with element count validation (>10% change = rollback).

- Rewrite refine_layout: per-band windowed LLM processing (~2-4k chars
  each). LLM cannot "reimagine" the entire report.

- Rewrite map_fields: 100% programmatic regex $F{field_N} -> real name
  replacement. Zero LLM calls, zero content loss.

- _sanitize_field_name: non-ASCII chars escaped to _uXXXX_ format for
  valid JRXML identifiers.

- Tests: 48 new unit tests (windower 28 + map_fields 20). All passing.
  Full suite 385 tests, zero regressions.
2026-05-24 08:55:38 +08:00

12 KiB
Raw Blame History

打印单定制介绍

打印单定制介绍

最常用的基础操作
1、新增静态文本
2、新增动态字段(例如想要展示结算单中的工单号)
3、列表中增减字段(例如结算单中的项目列表和材料列表)
4、新增边框和样式设置
6、保存+输出
7、打印单后台配置

常用链接地址:

打印单后台地址

http://print.f6yc.com/print-server/ui/index.html#/template/classification

打印单模板样式

https://xcz.yuque.com/ombipo/rpc7ms/fbd6ay?singleDoc# 《打印单各类模板样式》

打印单参数表

https://xcz.yuque.com/ombipo/rpc7ms/ro5fs1?singleDoc# 《打印单最新接口参数》

打印单工具简易开发教程(附带案例)

《打印单定制简易开发教程》

工具下载

jdk1.8 使用 jaspersoft6.8版本

请至钉钉文档查看附件《Jaspersoft Studio-6.8.0.zip》

WIN

请至钉钉文档查看附件《Jaspersoft Studio-6.3.1.final.rar》

MAC

请至钉钉文档查看附件《TIBCOJaspersoftStudio-6.3.1.final-mac-x86_64.zip》

打印单模板修改流程

1、下载需要的模板

通过模板名称,直接到模板管理中通过模板名称查询并下载

image

2、打开编辑工具 TIBCO Jaspersoft Studio

打开文件夹,双击Jaspersoft Studio.exe 运行工具

image

点击File-->Open File-->选择下载的模板文件
image进入编辑模板的页面

image

3、常见编辑操作

1.新增静态文本
新增组件到模板中

image

双击组件编辑显示文本

image

调整组件大小和位置参数

image

2.新增动态字段(例如想要展示结算单中的工单号)
在参数表中搜索想要的参数名称和类型:名称是:billNo  类型是文本信息=java.lang.String

image

拖拽一个 Text Field 组件到模板中

image

双击组件写入公式固定写法$P{参数名称}
image
遇到提示:The current expression is not valid. Please verify it!;表明这个参数在模板中没有预先创建,需要手动创建参数信息

image

模板中预设参数信息:Outline-->Parameters(右键单击)-->Create Parameter

image

编辑参数信息:Name(填写参数名称);Class(数字就选择:java.math.BigDecimal   文本就选择java.lang.String

image

3.列表中增减字段(例如结算单中的项目列表和材料列表)
例如查找材料名称,可以发现参数名是partName,是在一个名字叫partList 的列表里面的,在材料信息的列表中能使用到的参数就只有partList下的这个参数,其他参数无法在列表中直接使用(例如工单号在材料列表中展示不了)

image

双击需要编辑的列表,进入列表编辑页面

image

编辑方式与新增动态字段相同,但是固定写法从$P{参数名称} 改为 $F{参数名称}

image

提示The current expression is not valid. Please verify it!  参数没有预设时,在列表编辑页面中新增,逻辑与上面相同image
4.新增边框和样式设置
选择需要编辑的组件,选择Boeders 进行编辑

image

4、常见语法介绍

文本拼接参数:$P{参数名称}+"特定文本内容"  —— 例如打印单标题:$P{printOrgName}+"结算单"
小数保留2位小数或多位:$P{参数名称}.setScale( 保留几位小数, BigDecimal.ROUND_DOWN ) ——例如折后金额小计,保留2位小数:$P{stuffSubtotalAll}.setScale( 2, BigDecimal.ROUND_DOWN )
字符串截取:$P{参数名称}.substring(起始位置,截取长度)——例如进厂日期,保留前10位:$P{billDate}.substring(0,10)
三元运算-IF判断:(关系表达式) ? 表达式1 : 表达式2 ——例如打印单标题:($P{printOrgName}==null?$P{orgName}:($P{printOrgName}.isEmpty()?$P{orgName}:$P{printOrgName}))+"结算单"
常见运算:

是否相等:”==“  或者 $P{参数名称}.equals("文本内容")

加:$P{参数名称1}.add($P{参数名称2})

减:$P{参数名称1}.subtract($P{参数名称2})

乘:$P{参数名称1}.multiply($P{参数名称2})              ;$P{参数名称1}.multiply(new BigDecimal(1.13))

除:$P{参数名称1}.divide($P{参数名称2}, 2, BigDecimal.ROUND_HALF_UP)

4.1、高级语法介绍

jar包导入:例如金额转大写,研发通过编写一个jar工具包实现特定功能,下面是导入jar包步骤

image.png

image.png

image.png

启用成功后按照研发语法实现具体功能,比如image.png

从list中取特定的值写入外层表格中:该公式使用jdk1.8语法,jaspersoft6.8可用

下面表达式的意思是,从支付方式列表(payItemList) 中找到

支付方式(payWay) 

等于“记账”的

第一个支付金额(payAmount

$P{payItemList}.getData().stream()
                .filter(map -> "记账".equals(map.get("payWay")))
                .map(map -> {
                    Object amt = map.get("payAmount");
                    return amt == null ? BigDecimal.ZERO : new BigDecimal(amt.toString());
                })
                .findFirst()
                .orElse(BigDecimal.ZERO)

5、格式预览

工具中只能预览模板的样式,涉及到参数判断的需要将模板上传到门店后在F6系统工单中打印预览

image

image

image

6、保存+输出

保存

image

选择.jrxml的文件,右键选择Compile Report 进行编译

image

选择.jasper的文件,右键选择Export Files to...

image

另存到桌面

image

7、打印单后台配置

新增/编辑模板

注意:不要随便删除模板,删除一定要再三确认清楚,避免出现误操作的情况(删除不可恢复)  预计5.16号后 对删除的功能二次确认进行优化。

image

模板名称命名规范
  • 简单调整****模板名称:基础表+特殊修改需求

模板编码:修改人姓名首字母英文大写+模板分类+日期

模板备注:模板各修改点

image

  • 定制调整****模板名称:门店名称+定制

模板编码:修改人姓名首字母英文大写+模板分类+日期

模板备注:模板各修改点

image

给指定门店配置打印单

image

8、常见打印分类及对应的通用模板

常见打印单分类 对应系统上的打印模块 通用模板名称 模板编码
新结算单打印 维保单 F6标准结算单(壹) newSettleFirst
结算单-新 除维保单的其他单据(维修单、贴膜单......)
附表-新 新附表
销售单 销售单 销售单(日期版) xiaoshodanriqiban
洗车单 洗车单 洗车单 wash01
报价单打印 报价单 报价单打印 quotationPrint
新库存入库单打印 入库单 新库存入库单打印 9001
新库存出库单打印 出库单 新库存出库单打印 9002
注:采购单和采购退货单走打印平台定制,先向赵亚妮提供门店编码、门店名称,开通后再上传配置门店生效

注意:结算单要在收款后页面打印,请确保模板名称中包含“结算单”三个字

更新: 2025-05-16 13:54:24 原文: https://xcz.yuque.com/ombipo/obbigo/kg2qc1sbszwk48bf