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.
12 KiB
打印单定制介绍
打印单定制介绍
| 最常用的基础操作 |
|---|
| 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、下载需要的模板
通过模板名称,直接到模板管理中通过模板名称查询并下载
2、打开编辑工具 TIBCO Jaspersoft Studio
打开文件夹,双击Jaspersoft Studio.exe 运行工具
点击File-->Open File-->选择下载的模板文件
进入编辑模板的页面
3、常见编辑操作
1.新增静态文本
新增组件到模板中
双击组件编辑显示文本
调整组件大小和位置参数
2.新增动态字段(例如想要展示结算单中的工单号)
在参数表中搜索想要的参数名称和类型:名称是:billNo 类型是文本信息=java.lang.String
拖拽一个 Text Field 组件到模板中
双击组件写入公式固定写法$P{参数名称}
遇到提示:The current expression is not valid. Please verify it!;表明这个参数在模板中没有预先创建,需要手动创建参数信息
模板中预设参数信息:Outline-->Parameters(右键单击)-->Create Parameter
编辑参数信息:Name(填写参数名称);Class(数字就选择:java.math.BigDecimal 文本就选择java.lang.String)
3.列表中增减字段(例如结算单中的项目列表和材料列表)
例如查找材料名称,可以发现参数名是partName,是在一个名字叫partList 的列表里面的,在材料信息的列表中能使用到的参数就只有partList下的这个参数,其他参数无法在列表中直接使用(例如工单号在材料列表中展示不了)
双击需要编辑的列表,进入列表编辑页面
编辑方式与新增动态字段相同,但是固定写法从$P{参数名称} 改为 $F{参数名称}
提示The current expression is not valid. Please verify it! 参数没有预设时,在列表编辑页面中新增,逻辑与上面相同
4.新增边框和样式设置
选择需要编辑的组件,选择Boeders 进行编辑
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包步骤
从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系统工单中打印预览
6、保存+输出
保存
选择.jrxml的文件,右键选择Compile Report 进行编译
选择.jasper的文件,右键选择Export Files to...
另存到桌面
7、打印单后台配置
新增/编辑模板
注意:不要随便删除模板,删除一定要再三确认清楚,避免出现误操作的情况(删除不可恢复) 预计5.16号后 对删除的功能二次确认进行优化。
模板名称命名规范
- 简单调整****模板名称:基础表+特殊修改需求
模板编码:修改人姓名首字母英文大写+模板分类+日期
模板备注:模板各修改点
- 定制调整****模板名称:门店名称+定制
模板编码:修改人姓名首字母英文大写+模板分类+日期
模板备注:模板各修改点
给指定门店配置打印单
8、常见打印分类及对应的通用模板
| 常见打印单分类 | 对应系统上的打印模块 | 通用模板名称 | 模板编码 |
|---|---|---|---|
| 新结算单打印 | 维保单 | F6标准结算单(壹) | newSettleFirst |
| 结算单-新 | 除维保单的其他单据(维修单、贴膜单......) | 无 | 无 |
| 附表-新 | 新附表 | 无 | 无 |
| 销售单 | 销售单 | 销售单(日期版) | xiaoshodanriqiban |
| 洗车单 | 洗车单 | 洗车单 | wash01 |
| 报价单打印 | 报价单 | 报价单打印 | quotationPrint |
| 新库存入库单打印 | 入库单 | 新库存入库单打印 | 9001 |
| 新库存出库单打印 | 出库单 | 新库存出库单打印 | 9002 |
| 注:采购单和采购退货单走打印平台定制,先向赵亚妮提供门店编码、门店名称,开通后再上传配置门店生效 |
注意:结算单要在收款后页面打印,请确保模板名称中包含“结算单”三个字
更新: 2025-05-16 13:54:24 原文: https://xcz.yuque.com/ombipo/obbigo/kg2qc1sbszwk48bf






























