每一个合格的家庭主妇都是生产厂长的有力竞争者——ERP库存管理pandas代码示例(面试题)

欢迎关注,敬请点赞!

每一个合格的家庭主妇都是生产厂长的有力竞争者——ERP简介及代码示例

ERP简介

一般来说,ERP系统是一个以生产厂长为核心的信息系统,用来识别和规划企业资源,从而获取客户订单、完成加工和交付、最后得到客户付款,最终获得收入和利润。

ERP小故事

返回顶部

下面我们用一个小故事,来说明什么是ERP:
一天中午,丈夫在外给家里打电话:
“亲爱的老婆,晚上我想带几个同事回家吃饭,可以吗?” 【订货意向】
妻子:“当然可以,来几个人,几点来,想吃什么菜?” 

丈夫:“6个人,我们7点左右回来,准备些酒、烤鸭、番茄炒蛋、凉菜、蛋花汤……,你看可以吗?”【商务沟通】 

妻子:“没问题,我会准备好的。”【订单确认】

妻子记录下需要做的菜单【MPS计划】(Master Production Schedule,主生产计划)
具体要准备的东西:鸭、酒、番茄、鸡蛋、调料……【BOM物料清单】(Bill of Materials)
发现需要:1只鸭、5瓶酒、4个鸡蛋……【BOM展开】
炒蛋需要6个鸡蛋,蛋花汤需要4个鸡蛋【共用物料】
打开冰箱一看【查库存】
只剩下2个鸡蛋【发现缺货】

来到菜市场【市场】
妻子:“请问鸡蛋怎么卖?”【采购询价】
小贩:“1个1元,半打5元,1打9.5元。” (注,1打12个)
妻子:“我只需要8个,但这次买1打。”【经济批量采购】
妻子:“这有一个坏的,换一个。”【验收、退料、换料】

回到家中,准备洗菜、切菜、炒菜……【工艺线路】
厨房中有燃气灶、微波炉、电饭煲……【工作中心】

妻子发现拨鸭毛最费时间【瓶颈工序,关键工艺路线】
用微波炉自己做烤鸭可能来不及【产能不足】
于是决定,在楼下的餐厅里买现成的【产品委外】

下午4点,接到儿子的电话:“妈妈,晚上几个同学想来家里吃饭,你帮忙准备一下。”【紧急订单】
“好的,你们想吃什么,爸爸晚上也有客人,你愿意和他们一起吃吗?” 
“菜你看着办吧,但一定要有番茄炒鸡蛋,我们不和大人一起吃,6:30左右回来。”【不能并单处理】
“好的,肯定让你们满意!”【订单确定】

“鸡蛋又不够了,打电话叫小店送来。”【紧急采购】

5:30,一切准备就绪,可烤鸭还没送来,急忙打电话询问:“我是李太,怎么订的烤鸭还不送来?”【采购委外单跟催】
“不好意思,送货的人已经走了,可能是堵车吧,马上就会到的。”
门铃响了。
“李太太,这是您要的烤鸭。请在单上签一个字。”【验收、入库、转应付账款】

5:45,女儿的电话:“妈妈,我想现在带几个朋友回家吃饭可以吗?”
呵呵,又是紧急订购意向,【要求现货】

“不行呀,女儿,今天妈已经需要准备两桌饭了,时间实在是来不及,真的非常抱歉,下次早点说,一定给你们准备好。”
哈哈,这就是ERP的使用局限,要有稳定的外部环境,要有一个起码的【提前期】。
【ERP管正常的事情】
【领导管异常的事情】

……
送走了所有客人,疲惫的妻子坐在沙发上对丈夫说:“亲爱的,现在咱们家请客的频率非常高,应该要买些厨房用品了【设备采购】
最好能再雇个小保姆【人力资源系统缺口】

丈夫:“家里你做主,需要什么你就去办吧。”【通过审核】

妻子:“还有,最近家里花销太大,用你的私房钱来补贴一下,好吗?”【最后就是应收货款的催要】

现在还有人不理解ERP系统吗?
记住,每一个【合格的家庭主妇都是生产厂长的有力竞争者】。

ERP库存管理简单代码示例

返回顶部
【面试题】:
用python实现如下要求:(时间复杂度尽可能小)
分配总可用库存【初始为38】:按30天销量排序,依次满足不同平台产品ID的需求数量,分为完止。
excel表格名:《开发面试笔试题.xlsx》;sheet名:“123”
【感兴趣的小伙伴,可以自己复制到excel表格练习】

平台产品ID 30天销量 需求数量 erp_id 可用库存 最终分配数量
AB1111111 5 10 CK12345 38
AB2222222 8 5 CK12345 38
AB3333333 1 7 CK12345 38
AB4444444 3 8 CK12345 38
AB5555555 1 11 CK12345 38
AB6666666 3 11 CK12345 38
AB7777777 19 21 CK12345 38

【说明】:
【可用库存指的是总存储能力——仓库容量】
这样理解ERP库存管理:销量是市场供应能力,需求量是生产资料需求,如果市场供应不足,需要提前做库存。【 比如:AB2222222不用做库存】

导入数据

import pandas as pd
import numpy as np


data = pd.read_excel('开发面试笔试题.xlsx', '123') 
data.info
<bound method DataFrame.info of       平台产品ID  30天销量  需求数量   erp_id  可用库存  最终分配数量
0  AB1111111      5    10  CK12345    38     NaN
1  AB2222222      8     5  CK12345    38     NaN
2  AB3333333      1     7  CK12345    38     NaN
3  AB4444444      3     8  CK12345    38     NaN
4  AB5555555      1    11  CK12345    38     NaN
5  AB6666666      3    11  CK12345    38     NaN
6  AB7777777     19    21  CK12345    38     NaN>

按销量排序的索引列表

lt = data['30天销量'].sort_values(ascending=False).keys().tolist()  # 降序排列,取索引,转列表

分配库存量

for idx in lt:  # 遍历排序后的索引
    distribution = (data.loc[[idx]]['需求数量'] - data.loc[[idx]]['30天销量']).item()  # 分配量
    if distribution < 0:  # 跳过条件
        continue
        
    if data['最终分配数量'].sum() >= 38:  # 退出条件
        break
    elif data['最终分配数量'].sum() + distribution > 38:  # 不能完全满足时,分配量调整
        distribution = 38 - data['最终分配数量'].sum()
    
    data.loc[[idx], '最终分配数量'] = distribution  # 分配

最终结果

data['最终分配数量'] = data['最终分配数量'].fillna(0)
data['最终分配数量'] = data['最终分配数量'].apply(lambda x: int(x))
data['可用库存'] -= data['最终分配数量'].sum()
data
平台产品ID 30天销量 需求数量 erp_id 可用库存 最终分配数量
0 AB1111111 5 10 CK12345 2 5
1 AB2222222 8 5 CK12345 2 0
2 AB3333333 1 7 CK12345 2 6
3 AB4444444 3 8 CK12345 2 5
4 AB5555555 1 11 CK12345 2 10
5 AB6666666 3 11 CK12345 2 8
6 AB7777777 19 21 CK12345 2 2

总结

  • ERP系统是以生产厂长为核心的信息系统。
  • ERP的使用局限:要有稳定的外部环境,要有一个起码的提前期。
  • 每一个合格的家庭主妇都是生产厂长的有力竞争者。

欢迎关注,敬请点赞!
返回顶部

原创文章 43 获赞 14 访问量 2838

猜你喜欢

转载自blog.csdn.net/weixin_45221012/article/details/105736714