替换当前登录用户编号: #{sysUserId}
SELECT IF( EXISTS(SELECT * FROM test_order_main WHERE create_by='#{sysUserId}'and location like '%[location]%'), '该用户编码下"[location]"区域已存在订单数据,请检查!', '')
实际效果:
替换当前登录用户姓名: #{sysUserName}
SELECT IF( EXISTS(SELECT * FROM test_order_main WHERE create_by='#{sysUserName}'
and location like '%北京%'), '该用户名下"[location]"区域已存在订单数据,请检查!', '')
实际效果可参考上图
配置规则:[#细表表名]
SELECT IF(EXISTS (select a.* from test_order_main a left join (select * from [#test_order_product])
b on a.descc=b.descc where order_code='90877723'), '该订单编码已存在,请修改后重新保存!', '' )
配置说明:[#test_order_product]直接将细表名替换后直接执行语句并返回,这里指定的表名必须与实际细表表名一致,该种替换方式需要自己将select写上去
配置规则:[#_细表表名]
SELECT IF(EXISTS (select a.* from test_order_main a left join ([#_test_order_product])
b on a.abc=b.descc where a.order_code='[order_code]'), '"[order_code]"订单编码已存在,请修改后重新保存!', '' )
配置说明:[#_test_order_product]会转换成一条子表查询语句跟主表关联查询,可以在语句中在添加需要的字段来过滤;这里生成出来的子表查询语句就是页面中即将保存或者修改子表数据,使用该配置可实现页面数据与数据库数据作关联查询;检查SQL中的[order_code]表示取主表的order_code值
注意点:若配置的检查语句为主表与细表关联查询,则sql语句中”ON”指定的字段不能是基础字段,如create_by、create_time,或是外键字段等,必须指定其他两个存在关联的字段以保证sql的有效性
实际效果:
配置规则:[@主表表名]
SELECT IF(EXISTS (select a.* from [@test_order_main] a
where order_code='90877723'), '该订单编码已存在,请修改后重新保存!', '' )
配置说明:[@主表表名]替换主表表名后执行sql并返回,这里指定的表名必须与实际主表表名一致
数据检查关联微服务调用配置示例
配置格式请参考该文档:通用查询API调用微服务
注意事项:
配置表达式时需要注意参数四,数据检查处调用微服务只参数四只支持传这四个参数,传其他参数不会生效,如下:{“pageSize”:32,”pageNo”:1, “column”:”title”,”order”:”desc”}:
pageSize:分页参数,每页显示记录数
pageNo:分页参数,显示第几页的数据
column:排序字段
order:排序方式
示例一(使用left join查询)
使用场景描述:数据检查sql关联指定通用查询API的code,并将其返回的结果与数据检查执行sql执行关联查询,最终实现数据校验。
配置字符:${“cgreportapi”,”ba_cpinfo_test_2”,”sys-business”,{“pageSize”:10,”pageNo”:1}}
SELECT IF(EXISTS(select * from fx_material as m left join
${"cgreportapi","ba_cpinfo_test_2","sys-business",{"pageSize":32,"pageNo":1}} as n
on n.mcode=m.material_no where m.material_no='[material_no]' ),'"[material_no]"编号已存在,请修改后重新保存!','')
实际效果:
示例二(使用 in 查询)
配置字符:${“cgreportapi”,”ba_cpinfo_test_2”,”sys-business”,{“pageSize”:10,”pageNo”:1},mcode}
SELECT IF(EXISTS(select * from fx_material as m where m.material_no in
${"cgreportapi","ba_cpinfo_test_2","sys-business",{"pageSize":32,"pageNo":1},mcode} and
m.material_no='[material_no]' ),'"[material_no]"编号已存在,请修改后重新保存!','')
