📋 概述
本檔案為物流管理系統中負責出貨空間計算的 Visual Basic 表單類別。主要進行紙箱包裝與貨櫃裝載的最佳化,並根據卡車運輸及運輸設備的規格制定出貨計畫。
主要功能:
- 讀取與處理出貨包裝物量資料
- 紙箱包裝計算與棧板化
- 貨櫃裝載最佳化
- 基於卡車/運輸設備規格的裝載計畫
- 碼頭數計算與出貨空間最佳化
🔧 依賴關係
Imports OfficeOpenXml
使用 EPPlus 函式庫進行 Excel 檔案的讀寫操作。
📊 主要類別與成員
類別: T3_4出貨空間From
繼承自 Windows 表單,用於出貨空間計算的表單類別。
🔹 重要全域變數
| 變數名稱 | 說明 |
|---|---|
| 貨櫃型號 (コンテナ型式) | 使用的貨櫃型號(如 20ft、40ft 等) |
| 出貨貨櫃裝填率 (出荷コンテナ充填率) | 貨櫃的裝填效率(%) |
| 紙箱裝填率 (脱ボール充填率) | 紙箱的棧板裝填效率(%) |
| 紙箱數計 (段ボール数計) | 總紙箱數 |
| 出貨貨櫃數計 (出荷コンテナ数計) | 所需的總貨櫃數 |
| 出貨貨櫃容積計 (出荷コンテナ容積計) | 貨櫃的總容積 |
| 空運輸設備面積 (空輸送機面積) | 空的運輸設備面積 |
🎯 主要方法
1. 表單載入處理
Private Sub 空間計算2B出貨空間_Load(sender As Object, e As EventArgs)
處理內容:
- 初始化處理(Dgv顯示_確認 = 0)
- 檔案存在確認
- 版權與有效期限顯示
- 從 Excel 讀取空間計算2A的計算結果
- 從 Excel 讀取卡車及運輸設備規格
- 執行出貨空間與碼頭數計算
2. 出貨空間與碼頭數計算
Private Sub 出貨空間與碼頭數計算()
處理流程:
- 執行出貨紙箱計算
- 執行出貨貨櫃計算
- 彙總出貨空間與碼頭數
3. 紙箱包裝計算
Private Sub 出貨紙箱計算()
功能:
- DataGridView 的初始化與設定
- 紙箱包裝資料的計算與顯示
- 棧板化(PL化)的計算
- 卡車裝載容量的計算
- 碼頭數與裝載時間的計算
注意: 根據包裝方式不同,紙箱尺寸與裝載方式將會改變。
・出貨資料的區分: 使用更詳細的分類
・合併紙箱包裝: 使用合併後的包裝
・出貨資料的區分: 使用更詳細的分類
・合併紙箱包裝: 使用合併後的包裝
4. 貨櫃計算
Private Sub 出貨貨櫃計算()
計算內容:
- 貨櫃直堆計算(紙箱直接裝載於貨櫃)
- 貨櫃棧板化計算(使用棧板裝載)
- 運輸設備(棧板、籠車等)的選擇與計算
- 裝載效率的最佳化
- 計算所需貨櫃數
5. 彙總處理
Private Sub 出貨空間與碼頭數彙總()
彙總項目:
- 出貨碼頭數總計
- 總卡車台數
- 總裝載時間
- 總待機面積
- 暫存面積計算
- 可作業範圍計算
📥 Excel 資料讀取
讀取空間計算2A計算結果
Private Sub 空間計算2A計算結果_Excel讀取()
讀取資料:
- 出貨包裝物量資料
- 出貨包裝數量與容積
- 全出貨天數、指定出貨日
- 包裝方式
- 貨櫃型號與裝填率
- 紙箱相關資料
檔案路徑: Dat儲存Path & "\SoftData\空間計算.xlsx"
工作表名稱: 出貨包裝物量
工作表名稱: 出貨包裝物量
讀取卡車及運輸設備規格
Private Sub 卡車及運輸設備規格_Excel讀取()
讀取的工作表:
| 工作表名稱 | DataGridView | 用途 |
|---|---|---|
| 卡車規格 | 卡車規格Dgv | 各種卡車的裝載容量與尺寸 |
| 運輸設備規格 | 運輸設備規格Dgv | 棧板、籠車等規格 |
| 紙箱PL化卡車裝載容量 | 紙箱PL化卡車裝載容量Dgv | 棧板化時的裝載容量 |
| 出貨貨櫃直堆數 | 出貨貨櫃直堆數Dgv | 直接裝載至貨櫃的數量 |
| 出貨貨櫃PL化裝載數 | 出貨貨櫃PL化裝載數Dgv | 棧板裝載至貨櫃的數量 |
| 依卡車分類之搬運設備裝載數 | 依卡車分類之搬運設備裝載數Dgv | 各卡車的搬運設備裝載能力 |
| 依運輸設備分類之出貨貨櫃裝載數 | 依運輸設備分類之出貨貨櫃裝載數Dgv | 運輸設備對貨櫃的裝載能力 |
檔案路徑: Dat儲存Path & "\SoftData\出貨空間計算.xlsx"
🚛 運輸設備選擇功能
全紙箱包裝模式
Private Sub 全紙箱包裝()
可選擇的運輸設備:
出貨資料區分時:
- 直堆運輸
- 棧板1100*1100
- 籠車850*650
- 籠車1100*800
- 推車(Dolly)
- 雙扶手台車1260*425
- 雙扶手台車900*600
合併紙箱包裝時:
- 直堆運輸
- 棧板1100*1100
- 籠車850*650
- 籠車1100*800
- 雙扶手台車1260*425
- 雙扶手台車900*600
- (不包含推車(Dolly))
自動轉換: 若選擇推車(Dolly),系統將自動轉換為籠車850*650。
🔍 輔助函數 (Helper Functions)
取得卡車規格函數
Private Function 卡車規格(ByVal 車種名 As String, 列 As Integer) As Double
透過欄位編號取得指定車型的規格數值。
取得運輸設備規格函數
Private Function 運輸設備規格(ByVal 設備名 As String, 列 As Integer) As Double
透過欄位編號取得指定運輸設備的規格數值。
計算裝載容量函數
Private Function 紙箱PL化卡車裝載容量(車種名 As String, 設備名 As String) As Double
回傳由卡車與運輸設備組合而成的裝載容量。
計算貨櫃裝載數函數
| 函數名稱 | 說明 |
|---|---|
| 出貨貨櫃直堆數() | 紙箱直接裝載於貨櫃的可裝載數 |
| 出貨貨櫃PL化裝載數() | 棧板裝載於貨櫃的可裝載數 |
| 依卡車分類之搬運設備裝載數() | 卡車可裝載的運輸設備數量 |
| 依卡車分類之搬運設備裝載時間() | 裝載所需時間 |
📐 計算邏輯
貨櫃計算基本流程
- 判斷有無貨櫃
- 貨櫃數計 > 0 時: 進入貨櫃使用模式
- 貨櫃數計 = 0 時: 進入紙箱直送模式
- 選擇裝載方式
- 直堆: 直接裝載紙箱
- PL化: 使用棧板等運輸設備
- 計算所需數量
- 計算運輸設備數
- 計算卡車台數
- 計算碼頭數
- 空間計算
- 計算待機面積
- 計算暫存面積
- 計算作業空間
碼頭數計算
碼頭數 = 總裝載時間 / (出貨天數 × 每日作業時間)
面積計算
待機面積 = 卡車台數 × 卡車佔用面積
暫存面積 = 運輸設備數 × 運輸設備面積
總空間 = 待機面積 + 暫存面積 + 作業空間
暫存面積 = 運輸設備數 × 運輸設備面積
總空間 = 待機面積 + 暫存面積 + 作業空間
🎨 UI 元件
DataGridView 列表
- 出貨包裝總計後容積Dgv: 顯示包裝後的容積資料
- 出貨紙箱計算Dgv: 顯示紙箱計算結果
- 出貨貨櫃計算Dgv: 顯示貨櫃計算結果
- 空間計算彙總Dgv: 顯示彙總結果
- 卡車規格Dgv: 顯示卡車規格資料
- 運輸設備規格Dgv: 顯示運輸設備規格資料
ComboBox(運輸設備選擇)
- 出貨方式1運輸設備Cb
- 出貨方式2運輸設備Cb
- 出貨方式3運輸設備Cb
TextBox(資料顯示)
- 全出貨天數Tb
- 指定出貨日Tb
- 包裝方式Tb
按鈕
- 開始出貨空間計算Btn: 執行計算處理
- 點擊時背景顏色改變(LightYellow ⇔ PowderBlue)
- 提供計算狀態的視覺回饋
- 空間計算1進貨_關閉Tb: 關閉表單
⚠️ 錯誤處理
檔案存在確認
If fi.Exists = False Then
MessageBox.Show("找不到檔案,請從空間計算2A出貨包裝物量開始處理,結束程式")
Me.Close()
End If
MessageBox.Show("找不到檔案,請從空間計算2A出貨包裝物量開始處理,結束程式")
Me.Close()
End If
若所需的 Excel 檔案不存在,將顯示錯誤訊息並關閉表單。
重要: 若前置作業(空間計算2A)未正常完成,本模組將無法執行。
🔄 處理流程全圖
┌─────────────────────────────────────┐
│ 表單載入 │
└──────────┬──────────────────────────┘
│
├→ 檔案確認
├→ 版權顯示
├→ Excel 讀取(計算結果)
├→ Excel 讀取(規格資料)
│
▼
┌─────────────────────────────────────┐
│ 出貨空間與碼頭數計算 │
└──────────┬──────────────────────────┘
│
├→ 出貨紙箱計算
│ ├─ 計算紙箱數
│ ├─ 棧板化計算
│ ├─ 計算卡車台數
│ └─ 計算碼頭數
│
├→ 出貨貨櫃計算
│ ├─ 貨櫃直堆計算
│ ├─ 貨櫃PL化計算
│ ├─ 運輸設備選擇
│ └─ 裝載效率計算
│
└→ 出貨空間與碼頭數彙總
├─ 碼頭數彙總
├─ 卡車台數彙總
├─ 待機面積計算
├─ 暫存面積計算
└─ 總空間計算
📈 DataGridView 格式設定
儲存格樣式
| 樣式 | 設定 | 用途 |
|---|---|---|
| cstyle1 | Alignment = MiddleCenter | 置中對齊(標題等) |
| cstyle2 | Alignment = MiddleRight Format = "N1" |
靠右對齊,顯示小數點後1位 |
| cstyle3 | Alignment = MiddleRight Format = "N3" |
靠右對齊,顯示小數點後3位 |
共通設定
- RowHeadersVisible = False: 隱藏列標題
- ColumnHeadersVisible = False: 隱藏行標題
- AllowUserToAddRows = False: 停用使用者新增資料列
- AutoSizeColumnsMode = AllCells: 自動調整欄寬
- SortMode = NotSortable: 停用排序功能
- ReadOnly = True: 唯讀模式
- Frozen = True: 凍結首列與首欄
💾 資料流程
輸入資料
- 空間計算.xlsx
- 出貨包裝物量工作表
- 前置作業(T3_2)所產生的資料
- 出貨空間計算.xlsx
- 主檔資料(卡車規格、運輸設備規格等)
輸出資料
- 於 DataGridView 顯示計算結果
- 碼頭數、卡車台數、所需空間等的彙總數值
- 裝載計畫的詳細資料
🔧 技術規格
使用函式庫
- EPPlus: Excel 檔案操作(讀寫 .xlsx)
開發語言與框架
- 語言: Visual Basic .NET
- 框架: Windows Forms
- 目標環境: .NET Framework
主要技術要素
- 事件驅動程式設計
- DataGridView 資料繫結
- Excel 資料整合(EPPlus)
- 物流最佳化演算法
📝 附註解的程式碼區塊
#Region 指示詞
程式碼使用以下 Region 進行結構化:
- 出貨空間計算Excel讀取: Excel 資料讀取處理群
- 刪除: 已刪除或未使用的程式碼(註解化)
維護性: Region 指示詞可提升程式碼的可讀性與可維護性。
🚀 最佳化重點
1. 裝填率的最佳化
- 調整貨櫃裝填率以提升空間利用效率
- 透過紙箱裝填率調整棧板效率
2. 運輸設備選擇
- 根據包裝方式自動選擇最佳運輸設備
- 妥善處理推車(Dolly)等特殊設備
3. 碼頭分配
- 考量作業時間與出貨天數來計算碼頭數
- 有效率地分配待機面積與暫存面積
⚙️ 可設定的參數
| 參數 | 說明 | 影響範圍 |
|---|---|---|
| 貨櫃型號 | 使用的貨櫃種類 | 裝載容量、所需台數 |
| 裝填率 | 貨櫃/棧板的裝填效率 | 所需數量、空間 |
| 運輸設備 | 使用的運輸設備種類 | 裝載效率、作業時間 |
| 卡車車型 | 使用的卡車種類 | 裝載容量、台數、待機面積 |
| 出貨天數 | 總出貨天數 | 碼頭數、每日作業量 |
🔗 相關模組
- T3_2 (前置作業): 進行出貨包裝物量計算,產生本模組所需的輸入資料
- T3_5 (後續作業): 預期使用本模組的計算結果來制定更詳細的計畫
資料整合: 透過 空間計算.xlsx 與前置作業進行資料整合。
📚 總結
T3_4_出貨空間.vb 是物流管理系統中負責出貨計畫最佳化的重要模組。
主要特色
- ✅ 涵蓋從紙箱包裝到貨櫃裝載的全面計算
- ✅ 支援多種運輸設備與卡車規格
- ✅ 透過 DataGridView 進行視覺化的結果顯示
- ✅ 透過 Excel 整合提供靈活的資料管理
- ✅ 基於裝填率的最佳化功能
- ✅ 自動計算碼頭數與作業空間
應用場景 (Use Cases)
- 大規模出貨計畫的制定
- 倉庫與物流中心的空間設計
- 運輸成本的最佳化
- 作業效率的分析與改善
重要: 為了讓本模組正常運作,必須先完成前置作業(T3_2)並備妥必要的主檔資料(出貨空間計算.xlsx)。
📞 支援資訊
文件建立日期: 自動產生
目標檔案: T3_4_出貨空間.vb
語言: Visual Basic .NET (VB.NET)
總行數: 2047行