如何做到子表(明细表)不可重复选择关联记录

分享  收藏
10 / 930

场景:

现有三个工作表,商品表,出库单,出库单明细

问题:
创建出库单时,新增出库单明细,选择商品可选择同样的商品,这样做出库数量校验时,就会出现出库数量超出。

希望实现效果:
出库单明细里出现的商品不重复

解决方法一:
在商品表添加商品编号(自动编号,不会重复):

在出库单表添加随机数,用默认值的函数计算生成一个随机数(也需要不重复)


图中代码如下

let len = 32;
let timestamp = new Date().getTime();
/****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
let $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';    
let maxPos = $chars.length;
let randomStr = '';
for (let i = 0; i < len; i++) {
randomStr += $chars.charAt(Math.floor(Math.random() * maxPos));
}
return randomStr + timestamp;

在出库单明细添加字段“唯一值”,其默认值设置为 “商品表的商品编号 + 出库单的随机数”,注意还要设置不允许重复,这是关键一步。

这样再添加重复商品的出库明细时,唯一值会提示不允许重复

解决方法二:

在出库单明细表添加他表字段“商品编号”

在出库单添加检查出库明细商品重复,用默认值的函数计算判断出库明细商品是否重复


图中代码如下

let arr = 出库单明细;
let id_arr = [];
for(let i=0; i< arr.length; i++) {
if (id_arr.indexOf(arr[i]['644b6bf5721aefee720edb03']) === -1) {
id_arr.push(arr[i]['644b6bf5721aefee720edb03']);
} else {
return false;
}
}
return true;

商品编号字段 ID 可在 API 文档里查找

最后在业务规则里,设置错误提醒

**效果:**添加重复商品的出库明细时,会根据业务规则提示错误