每一個合格的家庭主婦都是生產廠長的有力競爭者——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的使用侷限:要有穩定的外部環境,要有一個起碼的提前期。
  • 每一個合格的家庭主婦都是生產廠長的有力競爭者。

歡迎關注,敬請點贊!
返回頂部

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章