快速实现MRP运算
Sen
• 发表于:2021-03-04 18:37:15 • 更新于:2021-12-04 09:07:22
584

目标:

创建生产任务时,系统自动根据各产品的BOM,进行MRP运算,统计出所需物料,并根据库存计算缺货数。

前期准备:

1.准备好产品、物料、BOM、生产任务、生产任务明细、生产任务需求物料数据表;

2.提前录好基础数据;

产品物料BOM生产任务生产任务明细生产任务需求物料数据表

实现步骤:

1.新建一个功能,命名为新建生产任务;

新建生产任务

2.编辑功能流程

①第一步新增生产任务,使用新增数据的步骤;

使用新建数据编辑功能流程


②第二步新增生产任务明细,使用新增集合的步骤,其中产品属性可以设置“固定”,以实现多选的效果;

新增生产任务明细属性设置为固定


③第三步则需要通过编程的方式,进行MRP运算;

编程

async function runProcess($model = model, $plugin = plugin, $params) {

    let list = $params.list;//生产任务明细

    let itemid = $params.item._id;//生产任务id

    let require_list = [];

    /*物料需求列表

        [

            {

                id:"物料id",

                demand:"总需求数量"

            }

        ]

    */

    for (let i = 0; i < list.length; i++) {//遍历生产任务明细collection

        let quantity = list[i]["5fd1cc619f7ebc78933d9a2b"];//计划生产量

        //查询产品的BOM列表

        let bom_list = await $plugin.data.queryData("5fd1cb6c04284278923ac9a7", {

            "5fd1cb8404284278923ac9a8": list[i]["5fd1cc429f7ebc78933d9a2a"]

        });

        for (let j = 0; j < bom_list.length; j++) {//遍历bom列表

            //查询物料需求列表中是否已有物料

            let itemIndex = require_list.findIndex((item) => {

                return item.id == bom_list[j]["5fd1cb9204284278923ac9a9"];

            });

            if (itemIndex > 0) {

                //物料重复,去重,增加数量

                require_list[itemIndex]["demand"] =  new Number(require_list[itemIndex]["demand"]) + new Number(quantity) * new Number(bom_list[j]["5fd1cb9804284278923ac9aa"]);//产品计划生产量*物料用量

            } else {

                //新物料

                require_list.push({

                    id: bom_list[j]["5fd1cb9204284278923ac9a9"],//物料id

                    demand: new Number(quantity) * new Number(bom_list[j]["5fd1cb9804284278923ac9aa"])//产品计划生产量*物料用量

                });

            }

        }

    }

    for (let i = 0; i < require_list.length; i++) {//去重完后,录入到需求物料表

        let form = {

            "5fd1cc8d04284278923ac9ad":itemid,//关联生产任务

            "5fd1ccad9f7ebc78933d9a2c":require_list[i]["id"],//物料

            "5fd1ccb39f7ebc78933d9a2d":require_list[i]["demand"]//总需求数量

        };

        //保存数据

        await $plugin.data.saveData("5fd1cc8204284278923ac9ac",form);

    }

}

④经过前面三步,已经计算好所有需要的物料以及用量,接下来就需要计算缺货数,第四步使用获取集合的步骤,获取已经创建好的需求物料列表;

计算获取需求物料列表

⑤第五步通过关联获取集合的步骤,获取第四步的集合进行计算缺货数;

关联集合计算缺货数

测试效果:

测试结果

本文是否对您有帮助?
有帮助
没帮助
您是否遇到了以下问题?
内容过期或不准确
缺少场景、事例
链接有误
太简单,步骤待完善
其他
提交反馈
如需获取即时帮助,请联系
小助理
微信扫码添加小助理
让你的想法快速变成软件吧~
联系我们
售前咨询电话
020-88520693
意见箱 · 建议反馈
您的宝贵建议,使白码更完美!
微信扫码添加白码小助理