1
murmur 47 天前
这种拿低开一配就可以,你们的排平台那么垃圾么校验还得后端做
企业开发和互联网不一样,企业开发是全内网+实名制,谁改数据开谁,更何况是医生拿自己前程赌?不至于 后端不管就做前端校验就行 |
2
murmur 47 天前
而且我感觉你思路都错了,这个重点不是要校验,是做动态显隐,按你的截图明显是特殊疾病才要填写对应病种的详细信息
还有一点,这东西不像是医生用的界面,倒像是给医保局的接口 |
3
montaro2017 OP @murmur #1 前端做校验也很麻烦啊,总共 1000 多个字段,大部分字段都有校验规则
|
4
montaro2017 OP @montaro2017 #3 10000 多个字段
|
5
montaro2017 OP @murmur #2 要过一遍审核再调接口上传,必须得做校验,不然上传会被打回
|
6
wolfie 47 天前
工作量永远在那,配置也好,代码硬写也好。
校验的话,用 Validation 自定义注解,搭配 SpEL ,类似 `@NotNullWhen(expression = "entity.name == ''foobar")` |
8
Belmode 47 天前
做过类似的,无论哪种方式都很麻烦的...这种就是硬工作量
|
9
wineast 47 天前
前面回复都说了,工作量都摆在哪里,纯体力活
设计时别想着重用,除非一模一样。 我们的做法是做成可配置化,方便后期修改,所有的规则全部做成数据库的一条记录,类似规则引擎。复杂一点的规则,可以用 groovy 脚本;简单点的,正则或者 spel 。写三个解析器(spel, 正则,groovy)解析下, 但是基本都是单条记录字段间可以做关联校验,如果要做汇总校验(某个字段总和不超过 xxx )。还是要上代码实现。 和业务交流过,不在乎怎么实现,但是对于新加规则或者调整规则,要快速起效果,简单的一天之内能上线,复杂的一周之内。所以最后采取配置化的方案来实现。但是这个也不能解决你一个个字段都要配置的工作量,这个就是体力活,没法减少 |
10
lujianwen9 46 天前
springboot 校验注解可以用
@AssertTrue(message = "domain 不能为空") @JsonIgnore public boolean isDomainValid() { // 如果是七牛,必须带有 domain if (StrUtil.contains(endpoint, ENDPOINT_QINIU) && StrUtil.isEmpty(domain)) { return false; } return true; } 也可以用分组校验 |
11
tomatocici2333 46 天前
|
12
justdoit123 46 天前
同意楼上说的。规则化,可配置化。业务的输入源头(就是那个 excel 文件)做好规范校验。
大概率没有可以直接用的第三方工具、库,别在上面费功夫。 |
13
andyC 46 天前
纯体力活, 文档写清楚投喂给 claude
|
14
realpg 46 天前
@justdoit123 #12
其实有现成的库,但是大概率 OP 搜不到,也不知道方向 我们给医院做 HIS 的数据库信创国产化改造类似的规则问题(原始写在 oracle 存储过程内的校验,新库实现不显示,改为在后端校验),通过架构的知识面 复用一些 js 的库 再用 copilot 把逻辑用 java 转写实现的 实现之后利用 AI 可以做到自然语言文字描述规则 然后他自动生成配置 90%以上完全正确 因为 HIS 系统有非常庞大的原始开发需求文档,直接把文档对这里的约束描述丢给 AI 90%概率能生成合适规则 |
15
securityCoding 46 天前
得自己撸个 dsl 出来了
|
16
ikas 46 天前
好熟悉...
没什么好的办法 以前我们是自己开发的一套验证框架..规则基本都是手动写,还要前后端都要加... |
17
jinliming2 46 天前 via iPhone
hapijs/joi 我记得是支持这种校验模式的,找找有没有 Java 版
|
18
liuby 46 天前
可以看一下 JSON Schema 应该能足你的业务场景, 编写一套规则, 前端后端都可以用.
|
19
wujianhua22 46 天前
写个代码生成工具,也就个把小时的事
|
20
montaro2017 OP @lujianwen9 #10 代码生成自己可以撸一套,就是这个校验规则感觉不好生成
|
21
kandaakihito 46 天前
快速生成的方法:我不知道(
但是建议,看看能不能从这么多规则里面抽象出一点共性,用策略模式搞几个接口封装起来,每条规则要能配置。再写个简单的选择器去匹配规则,项目初期能动就行。 因为不能确定后期规则会不会有变动,你这里几百条规则,如果全部写 sheme 写死的话后期会很炸裂。 |