原数据是一个excel格式的bom单,写一个python程序进行bomc穿透
时间: 2023-06-11 15:10:10 浏览: 188
BOM(Bill of Materials)是指物料清单,通常用于描述制造产品所需的原材料、零部件、组件等物料的清单。BOM穿透则是指通过递归查询BOM清单中的子项,直到子项中不再包含其他物料为止。下面是一个简单的Python程序,可以实现BOM穿透:
```python
import pandas as pd
# 读取BOM清单
bom = pd.read_excel('bom.xlsx')
# 定义递归函数
def bom_explosion(part_no, qty):
# 查找当前物料号的BOM清单
sub_bom = bom[bom['Parent Part No.'] == part_no]
# 如果BOM清单为空,则输出当前物料号和数量
if len(sub_bom) == 0:
print(part_no, qty)
# 如果BOM清单不为空,则递归查询子项
else:
for index, row in sub_bom.iterrows():
bom_explosion(row['Child Part No.'], row['Quantity'] * qty)
# 调用递归函数,从顶层物料开始穿透
bom_explosion('A', 1)
```
假设BOM清单的文件名为bom.xlsx,其中包含两列数据:Parent Part No.和Child Part No.表示父物料号和子物料号,Quantity表示子物料数量。
在代码中,首先读取BOM清单,然后定义递归函数bom_explosion,这个函数接收两个参数:当前物料号part_no和数量qty。函数首先查找当前物料号的BOM清单sub_bom,如果BOM清单为空,则输出当前物料号和数量;否则递归查询子项,直到子项中不再包含其他物料为止。
最后,在主程序中调用递归函数bom_explosion,从顶层物料开始穿透,假设顶层物料为A,数量为1。可以根据实际情况修改代码,适应不同的BOM清单格式和要求。
阅读全文