ITPub博客

首页 > 应用开发 > IT综合 > 低代码快速实现MRP运算

低代码快速实现MRP运算

原创 IT综合 作者:Sen666 时间:2021-01-25 14:48:02 0 删除 编辑

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

实现环境:白码低代码开发平台; 

前期准备: 

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

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

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

测试效果: 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69981618/viewspace-2752625/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-08-13

  • 博文量
    44
  • 访问量
    23858