通过自定义函数进行子表更新 分享

问答  收藏
0 / 113

业务场景:如实现主表字段变动更新子表内容(适用于再次修改符合,无法通过按钮和工作流进行刷新的业务需求,必须特殊业务规则情况下才能完成提交)
如主表汇总校验必须达到 100% 汇总字段拆分两部分汇总,(1-第一部分汇总)*各子表比例=各子表汇总,其中第一部分汇总为动态,那么动态更新子表就成为了难题了
现在的解决方案是事件 + 自定义函数
image.png

最终代码:
const sourceData = $69b3b55058322d512e630b33; const sourceControId = $69b3acc358322d512e62f6ee;
const CountMoney = $69b3b2d22a479e88abcf99ee; const ysbi = $69b7562d9e299b18435c94a0;
const countmoney = '69b3ad66c337053cb91811cd';
const xiaoBI = '69b3aca19450253d98ee8124';
const money = '69b3ad66c337053cb91811ce';
const dzyBI = '69b3aca19450253d98ee8125';
const dzykfpBI = '69b3aca19450253d98ee8126';
const outputRows = sourceData.map(row => {
const QZ = ((parseFloat(row[dzykfpBI]))/(((1 - (parseFloat(row[xiaoBI]) || 0)) * (parseFloat(row[dzyBI]) || 0)))).toFixed(4);//计算子表该记录比例权重
const result=((1 - (parseFloat(sourceControId) || 0)) * (parseFloat(row[dzyBI]) || 0))*(parseFloat(QZ)).toFixed(4);//计算该记录比例
const result2 = (parseFloat(result) * (parseFloat(CountMoney) || 0)).toFixed(2);
return {
...row,
[dzykfpBI]: result,
[money]: result2,
[xiaoBI]: sourceControId,
[dzyBI]: ysbi,
[countmoney]: CountMoney,
};
});
return JSON.stringify(outputRows);
最终效果

改变前:
image.png

image.png

改变后:
image.png

image.png
通过观察子表计算字段发生了等比变化
可实现多条子表记录权重计算
mdy 文件分享测试_20260317_0908.mdy