低代码快速实现MRP运算

目标:

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

实现环境:

白码低代码开发平台;

前期准备:

1.准备好产品、物料、BOM、生产任务、生产任务明细、生产任务需求物料数据表;
2.提前录好基础数据;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实现步骤:

1.新建一个功能,命名为新建生产任务;
在这里插入图片描述

2.编辑功能流程
①第一步新增生产任务,使用新增数据的步骤;
在这里插入图片描述
在这里插入图片描述

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

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
物料需求计划(简称为MRP)与主生产计划一样属于ERP计划管理体系,它主要解决企业生产中的物料需求与供给之间的关系,即无论是对独立需求的物料,还是相关需求的物料,物料需求计划都要解决“需求什么?现有什么?还缺什么?什么时候需要?”等几个问题。它是一个时段优先计划系统,其主要对象是决定制造与采购的净需求计划。它是由主生产计划推动运行的,但反过来,它又是主生产计划的具体化和实现主生产计划的保证计划。     由于物料需求计划是把主生产计划排产的产品分解为各个零部件的生产计划和采购件的采购计划,因此,制订物料需求计划前就必须具备以下的基本数据:第一项数据是主生产计划,它指明在某一计划时间段内应生产出的各种产品和备件,它是物料需求计划制订的一个最重要的数据来源。第二项数据是物料清单(BOM),它指明了物料之间的结构关系,以及每种物料需求的数量,它是物料需求计划系统中最为基础的数据。第三项数据是库存记录,它把每个物料品目的现有库存量和计划接受量的实际状态反映出来。第四项数据是提前期,决定着每种物料何时开工、何时完工。应该说,这四项数据都是至关重要、缺一不可的。缺少其中任何一项或任何一项中的数据不完整,物料需求计划的制订都将是不准确的。因此,在制订物料需求计划之前,这四项数据都必须先完整地建立好,而且保证是绝对可靠的、可执行的数据。     一般来说,物料需求计划的制订是遵照先通过主生产计划导出有关物料的需求量与需求时间,然后,再根据物料的提前期确定投产或订货时间的计算思路。其基本计算步骤如下:1.计算物料的毛需求量。即根据主生产计划、物料清单得到第一层级物料品目的毛需求量,再通过第一层级物料品目计算出下一层级物料品目的毛需求量,依次一直往下展开计算,直到最低层级原材料毛坯或采购件为止。     2.净需求量计算。即根据毛需求量、可用库存量、已分配量等计算出每种物料的净需求量,即净需求量=毛需求量+已分配量-可用库存量-在途量。     3.批量计算。即由相关计划人员对物料生产作出批量策略决定,不管采用何种批量规则或不采用批量规则,净需求量计算后都应该表明有否批量要求。     4.安全库存量、废品率和损耗率等的计算。即由相关计划人员来规划是否要对每个物料的净需求量作这三项计算。     5.下达计划订单。即指通过以上计算后,根据提前期生成计划订单。物料需求计划所生成的计划订单,要通过能力资源平衡确认后,才能开始正式下达计划订单。     6.再一次计算。物料需求计划的再次生成大致有两种方式第一种方式会对库存信息重新计算,同时覆盖原来计算的数据,生成的是全新的物料需求计划;第二种方式则只是在制定、生成物料需求计划的条件发生变化时,才相应地更新物料需求计划有关部分的记录。这两种生成方式都有实际应用的案例,至于选择哪一种要看企业实际的条件和状况。
以下是一个简单的Java实现MRP算法的示例代码: ```java import java.util.*; public class MRPAlgorithm { public static void main(String[] args) { // 定义需求量矩阵(Demand Matrix) int[][] demandMatrix = {{100, 150, 200}, {50, 75, 100}, {150, 200, 250}}; // 定义库存矩阵(Inventory Matrix) int[][] inventoryMatrix = {{50, 25, 0}, {25, 10, 5}, {15, 10, 5}}; // 定义产出矩阵(Output Matrix) int[][] outputMatrix = {{80, 100, 120}, {60, 80, 100}, {100, 120, 140}}; // 定义MRP对象 MRP mrp = new MRP(demandMatrix, inventoryMatrix, outputMatrix); // 运行MRP算法 mrp.runMRP(); // 输出计划表 System.out.println("Material Requirements Planning (MRP) Report:"); System.out.println("Item\tPeriod 1\t\tPeriod 2\t\tPeriod 3"); for (int i = 0; i < mrp.getNumberOfItems(); i++) { System.out.print((char) ('A' + i) + "\t"); for (int j = 0; j < 3; j++) { System.out.print(mrp.getPlannedProduction(i, j) + "\t\t"); } System.out.println(); } } } class MRP { private int[][] demandMatrix; // 需求量矩阵 private int[][] inventoryMatrix; // 库存矩阵 private int[][] outputMatrix; // 产出矩阵 private int numberOfItems; // 物料数量 private int numberOfPeriods; // 周期数量 private int[][] plannedProduction; // 计划生产量矩阵 public MRP(int[][] demandMatrix, int[][] inventoryMatrix, int[][] outputMatrix) { this.demandMatrix = demandMatrix; this.inventoryMatrix = inventoryMatrix; this.outputMatrix = outputMatrix; numberOfItems = demandMatrix.length; numberOfPeriods = demandMatrix[0].length; plannedProduction = new int[numberOfItems][numberOfPeriods]; } public void runMRP() { for (int i = 0; i < numberOfItems; i++) { for (int j = 0; j < numberOfPeriods; j++) { // 计算净需求量 int netDemand = demandMatrix[i][j] - inventoryMatrix[i][j]; // 如果净需求量小于等于0,则无需生产 if (netDemand <= 0) { plannedProduction[i][j] = 0; } else { // 计算所需毛需求量 int grossDemand = netDemand; // 计算所需总产出量 int totalOutput = 0; for (int k = j; k < numberOfPeriods; k++) { totalOutput += outputMatrix[i][k]; } // 如果所需总产出量小于所需毛需求量,则需要增加生产计划 if (totalOutput < grossDemand) { plannedProduction[i][j] = grossDemand - totalOutput; } } } } } public int getNumberOfItems() { return numberOfItems; } public int getPlannedProduction(int itemIndex, int period) { return plannedProduction[itemIndex][period]; } } ``` 该示例代码中定义了一个MRP类,其中包含了需求量矩阵、库存矩阵和产出矩阵等属性,以及计划生产量矩阵和运行MRP算法的方法。在main方法中,我们定义了一个需求量矩阵、库存矩阵和产出矩阵,然后创建MRP对象并运行MRP算法。最后,我们输出了计划表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值