1. 概要說明
🎯 模組設計目的
T3_2_進貨空間.vb 係一套專供精算物流中心進貨區域所需硬體空間面積之高階工程模組。本模組綜合評估進貨物流量、貨車載具車型、堆疊打板方式,以及卸貨作業停泊時間等多維度參數,落實以科學工程根據為底層邏輯之面積推算。
1.1 主要特色
📊 支援多元數據匯入
可直接由 Excel 檔讀取進貨量數據,並妥善分離管理以整箱為單位與以散裝為單位之入庫物流量。
🚛 支援多種貨車規格
可靈活設定多種貨車載具與對應之裝載模式(例如:打棧板入庫、紙箱直接堆疊入庫等)。
⏱️ 動態工時模擬
導入精確的卸貨作業循環時間,並考量尖峰時段的集中進貨倍率進行模擬。
📐 面積最佳化演算
不僅推算理貨空間,連同貨車排隊待命區與空棧板回收暫放區亦納入綜合空間演算。
1.2 檔案基礎資訊
| 項目 | 內容細節 |
|---|---|
| 實體檔案名稱 | T3_2_入荷スペース.vb |
| 程式總行數 | 962 行 |
| 程式類別名稱 | T3_2入荷From |
| 繼承來源 | System.Windows.Forms.Form |
| 引用之外部套件 | System.IO, OfficeOpenXml (EPPlus) |
1.3 關聯依賴檔案
- 在庫入荷量.xlsx: 存放進貨物流量來源數據(依整箱/散裝分離)。
- 入荷スペース計算.xlsx: 存放貨車規格參數與卸貨標準工時表。
- Tera計算Data 資料夾: 存放系統資料庫與上述 Excel 檔之根目錄。
2. 系統架構與設計
2.1 類別結構
📦 T3_2入荷From 類別
基底類別: System.Windows.Forms.Form
存取修飾子: Public
主要職責: 提供進貨空間推算之使用者介面 (UI) 並實作底層數學演算邏輯。
2.2 程式碼區塊 (Region) 劃分
| 區塊名稱 (Region) | 程式行數區間 | 主要功能簡述 |
|---|---|---|
| 入荷量Dgv表示 | 23-163 | 載入並渲染進貨量數據網格 |
| 入荷スペース計算 | 165-578 | 空間面積推算之主引擎迴圈 |
| PL_ケースの容積計算 | 580-637 | 執行棧板與紙箱容積之逆向推算 |
| 荷降ろし時間修正変更 | 639-858 | 讀取與更新卸貨工時設定值 |
| 荷降ろし時間修正変更を保存 | 860-940 | 將使用者客製化之參數寫回存檔 |
2.3 數據處理流 (Data Flow)
演算法推進程序
1. 載入 Excel 外部數據
├─ 庫存進貨量.xlsx (整箱與散裝之歷史出貨換算值)
└─ 進貨空間計算.xlsx (貨車硬體規格/卸貨工時表)
2. 進貨量彙整
├─ 整箱出貨衍生之進貨量
├─ 散裝出貨衍生之進貨量
└─ 加總為總進貨材積容積
3. 貨車車型與裝載模式配置
├─ 進貨模式 1, 2, 3 (支援最高混搭三種車型)
├─ 棧板打板入庫 / 紙箱直接堆疊入庫
└─ 設定各模式分攤之物量百分比
4. 碼頭數量 (Dock Bays) 運算
├─ 每日停靠車次 = 分配物量 / 單車實際滿載容積
├─ 總停泊耗時 = 車次 × 單車卸貨工時
├─ 套用尖峰時段集中倍率
└─ 最終得出所需之碼頭總數
5. 總坪數面積推算
├─ 貨車待命區面積 = 車輛占地面積 × 碼頭數 × 車道寬裕係數
├─ 卸貨空棧板回收暫放區面積
└─ 總進貨空間面積 = (待命區 + 暫放區) × 最終安全寬裕倍率
3. 核心功能
3.1 數據匯入功能
📥 Excel 在庫入荷量讀取
在庫入荷量XLSX読込(MySheet, Mydgv)
功能說明: 透過解析 Excel 檔,將進貨數據讀取並映射至畫面上之 DataGridView。
底層技術: EPPlus (OfficeOpenXml 函式庫)。
目標工作表:
- ケース出荷物量 (整箱出貨物量表)
- バラ出荷物量 (散裝出貨物量表)
Private Sub 在庫入荷量XLSX読込(MySheet As String, Mydgv As DataGridView) MyExcel = Dat保存Path & "\在庫入荷量.xlsx" Dim fi As IO.FileInfo = New IO.FileInfo(MyExcel) If fi.Exists = False Then MessageBox.Show("找不到檔案") Return End If Using pkg As New ExcelPackage(fi) Dim sheet1 As ExcelWorksheet = pkg.Workbook.Worksheets(MySheet) ' 執行資料讀取迴圈... End Using End Sub
3.2 空間面積推算功能
🧮 入荷スペース計算1()
主運算程序
執行內容:
- 呼叫 入荷トラック仕様Dgv表示() 渲染貨車規格網格。
- 呼叫 入荷バースと入荷スペース計算1() 執行數學運算。
📊 碼頭與進貨空間推算引擎()
推算微觀步驟
此函式會將總進貨量拆分至使用者設定之三種進貨模式,並執行平行運算。
步驟 1: 分配物量
步驟 2: 計算貨車實際滿載容積
步驟 3: 推算單日車次
步驟 4: 推算總停泊耗時
步驟 5: 推算尖峰集中時數
步驟 6: 計算所需碼頭數
步驟 7: 貨車待命區面積
步驟 8: 空棧板暫存面積
步驟 9: 最終總面積
3.3 輔助數學函式
打棧板入庫之容積計算()
計算採用棧板堆疊時,貨車可裝載之實際容積。
紙箱直接堆疊入庫之容積計算()
由車型規格主檔直接調用該車之理論最大貨斗容積。
停泊工時提取()
依據指定之車型與裝載方式,自使用者定義之卸貨工時表中提取對應之作業時間(分鐘)。
貨車待命區面積()
計算碼頭外圍供貨車排隊之預留空間面積。
空棧板暫存面積()
計算卸下貨物後,空棧板退庫待運走之暫存區面積。
3.4 棧板/紙箱容積反推演算
📦 容積逆向推算引擎()
模組功能概要
若原始資料缺乏具體之長寬高數值,本模組可透過總庫存容積,運用代數逆向推算出平均之單箱長寬高尺寸。
演算邏輯:
- 由總容積與總箱數求出單一紙箱之平均容積。
- 鎖定長、寬、高比例為 4:3:2 進行迭代放大測試,直到其乘積吻合目標平均容積。
- 將求出之長寬高應用於棧板堆疊密度計算。
' 透過 4:3:2 比例限制進行尺寸反推 Dim V As Single = 平均紙箱容積 * 1000 ^ 3 ' 將 m³ 轉為 mm³ For i = 1 To 1000 平均紙箱寬度 = 4 * i 平均紙箱深度 = 3 * i 平均紙箱高度 = 2 * i If (平均紙箱寬度 * 平均紙箱深度 * 平均紙箱高度) >= V Then Exit For End If Next
4. 數據指標與變數定義
4.1 進貨物流量溯源
| 項目 | 公式/來源 | 說明 |
|---|---|---|
| 整箱入庫量 | 自整箱出貨歷史統計提取 | 為支應整箱揀貨出庫所引發之對應進貨需求。 |
| 散裝入庫量 | 自散裝出貨歷史統計提取 | 為支應散裝揀貨出庫所引發之對應進貨需求。 |
| 總進貨容積 | 整箱入庫容積 + 散裝入庫容積 | 每日進貨總吞吐量之立方公尺 (m³)。 |
| 尖峰時段容積 | 總進貨容積 × 尖峰集中倍率 / 100 | 碼頭實際面臨之最高峰值吞吐量,作為硬體設計之標準。 |
4.2 貨車與碼頭設計參數
⚠️ 關鍵之運算參數
- 3 種進貨模式: 系統允許使用者將進貨量分攤至最多 3 種不同之貨車車型,以貼近真實之混編車隊情境。
- 物量分攤比例: 各車型分攤之百分比總和必須精確等於 100%。
- 實際裝載率: 現實中貨車極少 100% 滿載,此參數反映實際空間利用率。
- 尖峰集中倍率: 考量貨車多集中於清晨或特定時段抵達之擁擠效應。
- 車道寬裕係數: 碼頭區需乘以 1.5 倍以預留拖板車或堆高機之迴轉腹地。
- 面積倍率: 套用於最終總面積之寬裕值,做為未來擴充之保留腹地。
4.3 卸貨工時拆解
| 作業環節 | 耗時 (分鐘) | 說明 |
|---|---|---|
| 貨車倒車靠泊 | 變動值 | 貨車駛入碼頭並對準月台之耗時。 |
| 進貨行政登錄 | 變動值 | 查核進貨單與系統收貨打單耗時。 |
| 實體卸貨作業 | 變動值 | 堆高機或人力將貨物卸至月台之耗時。 |
| 理貨與驗收 | 變動值 | 品項、數量與品質抽檢之耗時。 |
| 貨車駛離 | 變動值 | 關閉車廂並駛離碼頭之耗時。 |
| 加總 | 總卸貨工時 | 碼頭被該貨車完全佔用之總時間。 |
4.4 模擬運算範例
📝 具體推算過程解析
情境參數設定:
- 總進貨容積: 100 m³
- 進貨模式 1 (打棧板入庫): 占總量 60%
- 貨車車型: 4噸中型貨車
- 車廂理論容積: 30 m³
- 實際裝載率: 80%
- 單車總卸貨工時: 60 分鐘
- 尖峰集中倍率: 30%
逐步運算:
1. 該模式承擔物量 = 100 m³ × 60% = 60 m³
2. 單車實際滿載容積 = 30 m³ × 80% = 24 m³
3. 每日需停泊車次 = 60 m³ / 24 m³ = 2.5 車次
4. 總停泊耗時 = 2.5 車次 × 60 分鐘 = 150 分鐘
5. 尖峰時段停泊耗時 = 150 分鐘 × 30% = 45 分鐘
6. 所需碼頭數 = 45 分鐘 / 60 分鐘 = 0.75 → 向上進位為 1 個碼頭 (Bay)
7. 貨車待命區面積 = 15m² (單車占地) × 1 個碼頭 × 1.5 係數 = 22.5 m²
8. 空棧板暫存面積 = (1.21 m² × 每車10板 × 1 個碼頭) / 5層堆疊 = 2.42 m²
9. 最終進貨空間面積 = (22.5 + 2.42) × 1.2 寬裕倍率 = 29.9 m²
5. 數據流與外部檔案相依關係
5.1 Excel 檔案結構定義
📄 庫存進貨量 (在庫入荷量.xlsx)
| 工作表名稱 | 存放資料內容 | 矩陣尺寸 |
|---|---|---|
| ケース出荷物量 | 為支應整箱出貨所需之進貨量原始數據。 | 7 行 × 60 列 |
| バラ出荷物量 | 為支應散裝出貨所需之進貨量原始數據。 | 7 行 × 60 列 |
📄 進貨空間參數 (入荷スペース計算.xlsx)
| 工作表名稱 | 存放資料內容 | 矩陣尺寸 |
|---|---|---|
| 荷降ろし時間Tera設定 | 系統內建之原廠預設卸貨標準工時表。 | 20 行 × 23 列 |
| 荷降ろし時間ユーザ設定 | 使用者手動覆寫儲存之客製化卸貨工時表。 | 20 行 × 23 列 |
| トラック仕様 | 各型號大貨車之長寬高與理論容積主檔。 | 15 行 × 12 列 |
5.2 DataGridView (網格控制項) 映射表
| UI 控制項名稱 | UI 職責 | 綁定之資料來源 |
|---|---|---|
| ケース単位出荷分入荷物量Dgv | 顯示整箱進貨量。 | Excel: ケース出荷物量 |
| バラ単位出荷分入荷物量Dgv | 顯示散裝進貨量。 | Excel: バラ出荷物量 |
| 入荷量Dgv | 顯示前兩者之總和。 | 於程式碼內動態加總生成 |
| 入荷トラック仕様Dgv | 顯示貨車硬體規格。 | Excel: 荷降ろし時間ユーザ設定 |
| 荷降ろし時間Tera設定Dgv | 顯示系統預設工時。 | Excel: 荷降ろし時間Tera設定 |
| 荷降ろし時間ユーザDgv | 供使用者編輯工時之網格。 | Excel: 荷降ろし時間ユーザ設定 |
| 入荷スペース計算結果Dgv | 顯示最終面積與碼頭數。 | 記憶體中之運算結果 |
5.3 核心狀態變數
' 繼承自 T3_UtilitySoft.vb 之全域變數 Public Dat保存Path As String ' 系統資料庫與檔案之根目錄徑 Public MyExcel As String ' 當前操作中之 Excel 檔案徑 Public MySheet As String ' 當前操作中之工作表名稱 Public MyDgv As DataGridView ' 當前獲得焦點之網格控制項 ' 表單內部私有變數 Private Dgv表示_チェック As Integer ' 防止 UI 渲染衝突之信號旗標 (Semaphore) Private 平均ケース幅 As Single ' 反推得出之紙箱寬度 Private 平均ケース奥行 As Single ' 反推得出之紙箱深度 Private 平均ケース高 As Single ' 反推得出之紙箱高度
6. 方法函式參考清單
6.1 啟動與初始化
スペース計算1入荷From_Load
觸發時機: 表單載入 (Form Load)
執行順序:
- 將初始化旗標設為 0。
- 執行 檔案驗證() 以確認根目錄存在。
- 寫入著作權宣告與軟體到期日文字。
- 自 Excel 讀取整箱與散裝物量數據。
- 將初始化旗標設為 1。
- 將彙總完畢之數據渲染至網格 UI 上。
- 載入卸貨工時之標準表與使用者自訂表。
- 更新畫面文字標籤。
- 執行 棧板與紙箱容積反推邏輯。
6.2 畫面渲染刷新
入荷量Dgv表示()
功能說明: 刷新畫面上的總進貨量統計網格。
顯示切換模式:
- 若選取「容積換算」選項:網格內數值全數切換為立方公尺 (m³)。
- 若未選取該選項:網格內數值維持物理單位 (棧板數、箱數、個數)。
入荷トラック仕様Dgv表示()
功能說明: 渲染唯讀屬性之大貨車硬體規格表。
UI 鎖定規則:
- 隱藏行與列之系統標題。
- 強制開啟唯讀模式防範誤觸修改。
- 套用嚴謹之 N0, N1, N2 數值小數點格式。
- 依據內容字串長度自動調校欄寬。
- 凍結首行與首列以便於水平捲動。
6.3 執行運算與存檔寫回
入荷スペース計算開始Bt_Click
功能說明: 觸發面積推算之主進入點。
邏輯說明: 呼叫核心演算法函式,並變更 GroupBox 背景色彩以視覺化提示運算完成。
テキスト集計Bt_Click
功能說明: 於存檔前,將畫面上的 5 項微觀耗時欄位加總為單一的「總卸貨工時」數值。
荷降ろし時間ユーザ設定_修正保存Bt_Click
功能說明: 將使用者於 UI 介面上修改的工時參數,寫回底層之 Excel 檔案實體儲存。
荷降ろし時間Tera設定Rb_CheckedChanged
功能說明: 恢復原廠預設值。系統會跳出確認對話框,若同意,則會使用原廠工時表覆蓋掉使用者自訂之工時表。
7. 使用方法與作業流程
7.1 標準使用者操作流程
📋 循序漸進指南
- 啟動畫面
- 從工具主選單進入「進貨空間推算」模組。
- 等待系統自動於背景載入 Excel 歷史數據至網格中。
- 檢閱進貨量數據
- 審視畫面上方之進貨總量網格數據是否合理。
- 可透過選取鈕自由切換顯示「實體數量」或「材積容積」。
- 調校營運參數
- 設定進貨尖峰倍率(例如設定為 30% 集中度)。
- 確認系統自動反推之紙箱尺寸是否符合現實。
- 設定目標之棧板打板滿載率(例如設定為 75%)。
- 設定最終面積之安全寬裕倍率(例如設定為 120%)。
- 配置貨車進貨情境(支援至 3 種情境)
- 選擇貨車等級(如:15噸、4噸、20呎貨櫃)。
- 選擇卸貨方式(整板堆高機下貨 / 人工徒手下貨)。
- 分配各情境承擔之物量百分比(三者加總必須為 100%)。
- 輸入該貨車現實中可能之空間裝載率。
- 執行運算
- 點擊巨大的「進貨空間計算開始」按鈕。
- 觀察下方之結果網格自動填入數據。
- 判讀最終結果
- 查閱 進貨碼頭總數:決定建築物外牆需開設幾個大門。
- 查閱 進貨空間總面積:決定進貨暫存區需預留之室內總坪數。
- 將上述數據記錄下來,供後續廠房平面圖繪製使用。
7.2 客製化卸貨工時參數
🔧 參數微調步驟
- 點選「使用者自訂 (User Setting)」之單選按鈕以解鎖編輯權限。
- 從下拉選單選擇欲修改工時之車型。
- 選擇對應之卸貨方式(棧板/人工)。
- 手動覆寫各項微觀耗時:
- 貨車靠泊耗時
- 進貨文件處理耗時
- 實體下貨耗時
- 檢貨驗收耗時
- 貨車駛離耗時
- 點擊「小計」按鈕使系統加總。
- 點擊「儲存」將自訂數據寫回 Excel 實體檔案中。
📌 注意事項: 存檔後之自訂數據,於下次重啟軟體時依然會持續生效。
7.3 恢復原廠預設值
⚠️ 清除使用者自訂數據
若欲將所有工時設定還原為系統初始值:
- 點選「原廠預設 (Tera Setting)」單選按鈕。
- 系統將彈出防呆確認對話框。
- 點擊「是」,系統便會將原廠設定檔強行覆寫至使用者設定檔之上。
⚠️ 警告: 此動作為破壞性寫入,一旦執行,過去所有辛勤測量輸入的客製化參數將無法復原。
7.4 疑難排解
❌ 常見錯誤訊息與解法
1. 「找不到檔案 (File Not Found)」錯誤
- 發生原因: 系統無法循路徑尋獲必要的 Excel 檔案。
- 處置方式: 請確認 `Tera計算Data` 資料夾是否原封不動地放置於 A: 到 F: 磁碟機的根目錄下。
2. 計算結果呈現 #DIV/0! (除以零) 錯誤
- 發生原因: 貨車之裝載容積參數被設定為 0。
- 處置方式: 檢查貨車規格檔是否正常載入,並確保裝載率未被設為 0。
3. 算出的碼頭數極端龐大或極端微小
- 發生原因: 尖峰集中倍率或卸貨工時設定不合常理。
- 處置方式: 重新檢視尖峰倍率(一般落在 30-50% 之間)與裝載率(一般落在 70-85% 之間)是否輸入錯誤。
4. 物流分攤不完全
- 發生原因: 設定之三種進貨模式,其分攤比例加總不等於 100%。
- 處置方式: 重新調整各模式之百分比數值,確保其總和恰好為 100。
8. 總結與最佳實務建議
🎓 T3_2_進貨空間.vb 模組之核心價值
- 屏除瞎猜的科學化推算: 透過將物理量、硬體規格與作業時間結合之演算法,推導出具備強大說服力之廠房需求數據。
- 高擬真度之情境切割: 允許最多將進貨量分攤至三種不同車型與下貨方式,極大化還原現實中混編車隊之營運生態。
- 與 Excel 深度掛鉤: 透過 EPPlus 套件直接與 Excel 表單互動,確保數據具備極佳的透明度與可稽核性。
- 支援實地碼表測時: 允許資深廠長將現場實測之卸貨秒數覆寫進系統,使運算結果更貼近該企業之特有文化。
8.1 建議應用情境
情境一:全新建廠規劃
在建築師繪製草圖前,明確給定需要開設幾座碼頭大門,以及室內需退縮多深之緩衝區。
情境二:既有廠房健檢
以系統算出之理論所需碼頭數,對比目前廠區之實際碼頭數,提出擴建之正當性背書。
情境三:吞吐量壓力測試
調高歷史進貨數據模擬未來的營收成長,預測現有之碼頭數量將於何時成為營運上的致命瓶頸。
情境四:作業流程改善效益評估
模擬若要求供應商全面改採棧板化交貨(放棄紙箱散裝),能省下多少卸貨工時與碼頭占用空間。
8.2 給後續維護工程師之備忘錄
💡 程式碼維護要點
- 寫死之 Excel 座標: 程式中對 Excel 儲存格之存取皆採固定欄列位移 (Offset) 定位。若未來更動 Excel 範本的排版,必須同步修改 VB 程式碼中的迴圈索引值。
- EPPlus 授權地雷: 若未來升級 EPPlus 套件至 5.x 版以上,將面臨商業授權限制,請謹慎評估。
- 旗標安全防護: 請確保
Dgv表示_チェック此一信號旗標在 UI 重繪期間被妥善保護,以防止非同步事件競爭 (Race Conditions)。 - 輸入字串過濾: 儘管系統有實作基本之數值防呆機制,但仍需提防使用者惡意輸入文字字串導致型別轉換崩潰 (Cast Exception)。