反馈已提交
网络繁忙
一些特殊的业务逻辑用公式校验不好实现,希望可以获取填报页面数据,交给用户自定义的程序来判断,最后将校验结果返回给页面展示。
设计器菜单栏点击「模板>报表填报属性」,设置界面选择「数据校验」,点击,选择「自定义校验」即可,如下图所示:
1)自定义校验的本质是获取页面数据后做自定义的处理,最后将校验结果返回,所以处理数据的代码部分需要用户自己根据业务需求编写。
2)只支持返回校验结果给页面展示,不支持其他回调需求。
3)自定义校验支持在移动端使用。
新建数据集 ds1,从 FRDemo 取数,SQL 语句为:SELECT * FROM S产品 limit 3
设计填报表格,将数据集相应字段拖到单元格中,C2 单元格添加「文本控件」,表格样式如下图所示:
本示例要实现的效果是:当单价小于设置的最小值时,弹出校验提醒。
参考以下代码可获取相应的模板数据,进行判断并返回校验结果。
package com.fr.data;import com.fr.base.Utils;import com.fr.log.FineLoggerFactory;import com.fr.script.Calculator;public class VerifyDemo extends DefinedVerifyJob { /** * 必须要定义此私有变量,变量名可改,表示校验状态,默认为0 * 0 表示校验成功 * 1 表示校验失败 */ private int type = 0; /** * 当模板自定义事件增加的属性名称与下面变量名一致时,则会自动赋值于此对应变量 * JobValue代表绑定的值为单元格,其他类型数据需按照各自类型去定义类,例如字符串为String * 不支持单元格组 */ private JobValue Price; private int MinNum; public void doJob(Calculator calculator) throws Exception { FineLoggerFactory.getLogger().error("------Price:" + Price.getValue() + ",MinNum:" + MinNum + "------"); //在fanruan.log以error级别输出获取到的参数值 /** * 获取Price的值并转为整型,赋给price对象 */ if (Price != null) { int price = 0; if (Price.getValue() instanceof Integer) { //判断Price的值是否为整数 price = (Integer) Price.getValue(); //将Price的值强转为整型,防止比较时因类型不一致导致报错 } else { price = Integer.parseInt(Utils.objectToString(Price.getValue())); } /** * 校验价格是否小于设定的最小值,是的话返回1(失败),否则返回0(成功) */ if (price < MinNum) { type = 1; } } else { type = 0; } } public String getMessage() { /** * 根据校验状态是0(成功)还是1(失败),设置对应的返回信息 */ if (type == 0) { return "校验成功"; //此处设置的信息没有用,成功的时候不会显示这里的内容,还是显示默认的"校验成功" } else { return "价格不能小于" + MinNum; } } public Verifier.Status getType() { // 返回校验状态 return Verifier.Status.parse(type); } public void doFinish(Calculator arg0) throws Exception { }}
1)报表填报属性界面新增一个「自定义校验」,点击「编辑」按钮,如下图所示:
2)将 2.3 节编写好的 Java 代码拷贝到自定义函数编辑界面,点击「编译」按钮,只有显示「编译成功」后,才能保存,如下图所示:
注:除了上述编译方式外,也可以将外部编译好的 class 文件放到 %FR_HOME%\webapps\webroot\WEB-INF\classes 文件夹下和代码中定义的package 路径一致的位置,然后点击「选择按钮」引用 class 文件。若修改替换了 class 文件,则需要重启设计器或帆软服务,修改的代码才会生效。
点击可下载 class 文件:VerifyDemo.rar
3)点击增加属性按钮,给提交事件添加 2 个属性,注意值的类型需要和代码中定义的类型一致,如下图所示:
使用填报预览,点击校验按钮。
注:支持移动端预览。
点击下载模板:自定义校验.cpt
注:模板下载后需按照文档 2.4 节操作,增加数据校验事件后才能生效。
售前咨询电话
400-811-8890转1
在线技术支持
请前往「服务平台」,选择「在线支持」
热线电话:400-811-8890转2
总裁办24H投诉
热线电话:173-1278-1526
文 档反 馈
鼠标选中内容,快速反馈问题
鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。
不再提示
10s后关闭