字段关联校验有没有好的解决办法

76 天前
 montaro2017
字段 a ,字段 b ,字段 c 。

其中字段 a 是必填,字段 b 当字段 a 为 1 时必填,字段 c 当字段 b 为 2 时必填,有现成的解决方案吗?

当字段 a 不是 1 时,要把字段 b 设置为 null ,要考虑前端字段 a 选择了 1 ,填写了字段 b ,然后再把字段 a 选择为其他的选项考虑进去。

现在有 56 个表单,每个表单有大约 200 个字段,每个字段都有一个校验规则,每个表单都有一个 excel 文件描述字段和校验规则,有快速生成的方法吗?

1955 次点击
所在节点    Java
21 条回复
murmur
76 天前
这种拿低开一配就可以,你们的排平台那么垃圾么校验还得后端做

企业开发和互联网不一样,企业开发是全内网+实名制,谁改数据开谁,更何况是医生拿自己前程赌?不至于

后端不管就做前端校验就行
murmur
76 天前
而且我感觉你思路都错了,这个重点不是要校验,是做动态显隐,按你的截图明显是特殊疾病才要填写对应病种的详细信息

还有一点,这东西不像是医生用的界面,倒像是给医保局的接口
montaro2017
76 天前
@murmur #1 前端做校验也很麻烦啊,总共 1000 多个字段,大部分字段都有校验规则
montaro2017
76 天前
@montaro2017 #3 10000 多个字段
montaro2017
76 天前
@murmur #2 要过一遍审核再调接口上传,必须得做校验,不然上传会被打回
wolfie
76 天前
工作量永远在那,配置也好,代码硬写也好。

校验的话,用 Validation 自定义注解,搭配 SpEL ,类似 `@NotNullWhen(expression = "entity.name == ''foobar")`
Donjote
76 天前
@wolfie 可行
Belmode
76 天前
做过类似的,无论哪种方式都很麻烦的...这种就是硬工作量
wineast
76 天前
前面回复都说了,工作量都摆在哪里,纯体力活
设计时别想着重用,除非一模一样。
我们的做法是做成可配置化,方便后期修改,所有的规则全部做成数据库的一条记录,类似规则引擎。复杂一点的规则,可以用 groovy 脚本;简单点的,正则或者 spel 。写三个解析器(spel, 正则,groovy)解析下,
但是基本都是单条记录字段间可以做关联校验,如果要做汇总校验(某个字段总和不超过 xxx )。还是要上代码实现。

和业务交流过,不在乎怎么实现,但是对于新加规则或者调整规则,要快速起效果,简单的一天之内能上线,复杂的一周之内。所以最后采取配置化的方案来实现。但是这个也不能解决你一个个字段都要配置的工作量,这个就是体力活,没法减少
lujianwen9
76 天前
springboot 校验注解可以用
@AssertTrue(message = "domain 不能为空")
@JsonIgnore
public boolean isDomainValid() {
// 如果是七牛,必须带有 domain
if (StrUtil.contains(endpoint, ENDPOINT_QINIU) && StrUtil.isEmpty(domain)) {
return false;
}
return true;
}
也可以用分组校验
tomatocici2333
76 天前
交给别人做。纯纯体力活
justdoit123
76 天前
同意楼上说的。规则化,可配置化。业务的输入源头(就是那个 excel 文件)做好规范校验。

大概率没有可以直接用的第三方工具、库,别在上面费功夫。
andyC
76 天前
纯体力活, 文档写清楚投喂给 claude
realpg
76 天前
@justdoit123 #12

其实有现成的库,但是大概率 OP 搜不到,也不知道方向

我们给医院做 HIS 的数据库信创国产化改造类似的规则问题(原始写在 oracle 存储过程内的校验,新库实现不显示,改为在后端校验),通过架构的知识面 复用一些 js 的库 再用 copilot 把逻辑用 java 转写实现的

实现之后利用 AI 可以做到自然语言文字描述规则 然后他自动生成配置 90%以上完全正确

因为 HIS 系统有非常庞大的原始开发需求文档,直接把文档对这里的约束描述丢给 AI 90%概率能生成合适规则
securityCoding
76 天前
得自己撸个 dsl 出来了
ikas
76 天前
好熟悉...
没什么好的办法
以前我们是自己开发的一套验证框架..规则基本都是手动写,还要前后端都要加...
jinliming2
76 天前
hapijs/joi 我记得是支持这种校验模式的,找找有没有 Java 版
liuby
75 天前
可以看一下 JSON Schema 应该能足你的业务场景, 编写一套规则, 前端后端都可以用.
wujianhua22
75 天前
写个代码生成工具,也就个把小时的事
montaro2017
75 天前
@lujianwen9 #10 代码生成自己可以撸一套,就是这个校验规则感觉不好生成

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1086764

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX