头图

目标

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

前期准备
1.访问白码低代码平台
https://www.bnocode.com/

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

2.提前录好基础数据;

图片

图片

图片

图片

图片

图片

实现步骤

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);

    }

}

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

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

图片

测试效果:
图片


科技事儿哥
10 声望0 粉丝