【聚合查询】节点 null 值的处理问题

* 描述问题

整数类型的字段,使用聚合查询节点时,SUM求和的值若是NULL,不会自动转为0

* 运行环境

  • NocoBase 版本:v1.6.0-beta.15
  • 数据库种类与版本: MySQL 8.4.3
  • 操作系统: Windows
  • 部署方式: Docker
  • Docker 镜像版本:nocobase/nocobase@sha256:f1541b7a3fa6de47fc69773f89e2ff00a07dd93cea7b3454d65facbfe613230c
  • NodeJS 版本:

如何重现

搜到之前有人反馈这个问题,详见 https://forum.nocobase.com/t/null/1105

【聚合查询】节点 null 值的处理
建立产品表:{ID, 产品名称,. …}
建立出入库记录表:{产品ID,出入库类型(单选),出入库数量(整数)}
配置好关系,产品表1→N出入库记录表

新增出入库记录
产品ID=1, 出入库类型=入库, 出入库数量=5

工作流大概流程是:【聚合查询】SUM求和总入库数量 → 【聚合查询】SUM求和总出库数量 → 【运算】总入库数量减总出库数量

当产品只有入库记录没有出库记录时,工作流在执行到“SUM求和总出库数量”时,由于没有出库记录,求和结果是NULL,而不是0,工作流报错:
Unexpected type of argument in function round (expected: number or Complex or BigNumber or Fraction or Array or Matrix or DenseMatrix or SparseMatrix or string or boolean, actual: null, index: 0

个人测试:NOCOBASE v1.6.0-beta.15 求和结果NULL值能够自动转为0,更新至v1.6.0-beta.19时,求和结果是NULL

已经在官网申请demo测试这一工作流,详见 https://a_wni3204xewu.v7.demo-cn.nocobase.com/admin/y43821k5dzm

苹果2只有入库记录,
触发 工作流#34【库存计算】执行历史ID 68 出错

预期行为

整数类型的字段,求和时若是NULL,自动转为0

截图

日志

1 Like

我也遇到了这个问题,只能先COUNT,判断有没有记录,然后再SUM聚合,这样搞太麻烦了,而且效率不高

感谢反馈,已在 PR#6473 中修复,后续 1.6.5 发版后可以更新版本。