单据转换,自定义比较符脚本过滤原创
3人赞赏了该文章
231次浏览
编辑于2024年01月02日 16:03:50
在单据转换过程中,如果使用到自定义比较符,会触发脚本方法。
即AbstractFilterContantParser的getScriptFilter方法。
以订单(源单)和入库单(目标单)为例。
配置自定义比较符和单据转换。
1.日期字段,过滤今年的数据
创建自定义比较符如下图,有几个需要注意的地方:
适用类型,指的是控件类型,创建了比较符之后,还需要再对应的控件中添加这个自定义比较符才会生效。
应用,只有应用中的页面,才能使用这个自定义比较符。
解析类,派生自AbstractFilterContantParser,通过java代码实现自定义比较符的业务逻辑。
ThisYearFilterContantParser这个类的类路径,要填在在自定义比较符的解析类上。
代码如下:
import kd.bos.entity.filter.AbstractFilterContantParser; import kd.bos.entity.filter.FilterContantParserArgs; import java.text.SimpleDateFormat; import java.util.Calendar; /** * 自定义比较符:今年 */ public class ThisYearFilterContantParser extends AbstractFilterContantParser { @Override protected QFilter getQFilter(FilterContantParserArgs filterContantParserArgs) { return null; } @Override protected String getScriptFilter(FilterContantParserArgs filterContantParserArgs) { String fieldName = filterContantParserArgs.getFieldName(); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_YEAR, 1); calendar.set(Calendar.HOUR_OF_DAY, 1); calendar.set(Calendar.MINUTE, 1); calendar.set(Calendar.SECOND, 1); calendar.set(Calendar.MILLISECOND, 0); // 使用逗号隔开 SimpleDateFormat format=new SimpleDateFormat("yyyy,MM,dd"); String strScript = String.format("%s >= DATE(%s)", fieldName, format.format(calendar.getTime()) ); return strScript; } }
2.源单中,日期字段绑定自定义比较符。(新建源单、目标单的步骤略过,请自行搜索其他文章)
3.单据转换关系中,配置自定义比较符
(1)配置关联实体
(2)配置目标单按条件取值
条件为自定义比较符"今年"
取值公式是,在源单的“订单日期”的基础上日期增加1天:
上述取值公式用到了“日期增减”函数:
效果
推荐阅读