From 524eea3312ebc07fd6e1dc94594d33c6a69d5ef5 Mon Sep 17 00:00:00 2001
From: curtis <curtis@i-mps.com>
Date: 星期二, 31 三月 2026 09:32:51 +0800
Subject: [PATCH] fix: 型別更新 1) 新增 TShape, TMemo, TMenuItem, TImageScrollBox 2) 理清 Delphi 相依使用: IISUnit, MPSBarcode, IISImageProcess 3) 方法說明/Mermaid 生成
---
reassemble/CB_IMGPSScanImp.prUpload.pas | 111 ++++++++++++++++++++++++++++++++-----------------------
1 files changed, 65 insertions(+), 46 deletions(-)
diff --git a/reassemble/CB_IMGPSScanImp.prUpload.pas b/reassemble/CB_IMGPSScanImp.prUpload.pas
index 0715269..c3bed1b 100644
--- a/reassemble/CB_IMGPSScanImp.prUpload.pas
+++ b/reassemble/CB_IMGPSScanImp.prUpload.pas
@@ -1,8 +1,12 @@
{ ==============================================================================
方法名稱:CreateCaseNeedData
- 引用相依:FileExists, LoadFromFile, SaveToFile
- 方法描述:掃描案件目錄下的 Context.dat 影像清單,自動推導並產生該案件所需的 Doc
- Dir.dat、CaseDocNo.dat 及份數清單,用於修復或重建案件結構。
+ 引用相依:Context.dat, DocDir.dat, CaseDocNo.dat
+ 方法描述:【重建案件元數據檔案】
+ 當案件描述檔損毀或缺失時(常見於直接截圖或外部匯入),執行自我修復。
+ 1. 遍歷影像:讀取實體 Context.dat。
+ 2. 推導 DocNo:透過檔名反查對應的文件編號。
+ 3. 生成清單:自動重建 DocDir.dat (對應目錄)、CaseDocNo.dat (目錄清單)
+ 與 CaseDocNo_Copies.dat (預設 1 份)。
============================================================================== }
Procedure TCB_IMGPSScanX.CreateCaseNeedData(Path:String);
var
@@ -53,10 +57,17 @@
{ ==============================================================================
方法名稱:Case2upload
- 引用相依:DirectoryExists, _DelTree, Str2Dir, CopyFile, FileExists, LoadFromFi
- le, SaveToFile
- 方法描述:準備案件上傳用的資料夾結構。將分散在各文件子目錄下的影像檔案複製到單
- 一的 Upload 目錄下並重新編號檔名,同時產生彙整後的索引檔與附件。
+ 引用相依:_DelTree, CopyFile, FileName2NoQuene_Filename
+ 方法描述:【案件上傳封裝(打平結構)】
+ 將本機的階層式文件目錄扁平化,準備上傳至伺服器。
+ 1. 清理:刪除舊的 Upload 暫存目錄。
+ 2. 同步配置:將案件層級的 INI/DAT 設定檔複製至 Upload 根目錄。
+ 3. 影像遷移:
+ - 遍歷所有文件子目錄。
+ - 將影像檔案重新編號(全案唯一流水號)。
+ - 實體複製至 Upload 資料夾。
+ 4. 索引重製:同步產生彙總後的 Context.dat、Context_DocNo.dat
+ 與 DocDir.dat,確保伺服器接收後能還原結構。
============================================================================== }
Procedure TCB_IMGPSScanX.Case2upload(CaseID:String);
var
@@ -187,9 +198,14 @@
{ ==============================================================================
方法名稱:Download2Case
- 引用相依:FileExists, CopyFile, LoadFromFile, DirectoryExists, SaveToFile
- 方法描述:將下載或匯入的案件結構還原回本系統的多層級目錄結構。包含建立文件子目
- 錄、檔案複製並重新編號、以及重建各類索引與份數設定檔。
+ 引用相依:CreateCaseNeedData, CopyFile, ReSortFileName, InitExistImgList
+ 方法描述:【下載案件解構(還原層級)】
+ 將從伺服器下載的扁平化 ZIP 包還原為本地階層式目錄。
+ 1. 結構修復:若描述檔缺失,先呼叫 CreateCaseNeedData 補全。
+ 2. 目錄重建:依據 CaseDocNo.dat 建立各類文件子資料夾。
+ 3. 檔案歸位:依據 DocDir.dat 指示,將 Upload 中的影像分配回對應目錄,
+ 並調用 ReSortFileName 重新整理子目錄序號。
+ 4. 狀態更新:在補件模式下,呼叫 InitExistImgList 計算歷史影像 MD5。
============================================================================== }
Procedure TCB_IMGPSScanX.Download2Case(SoDir,DeDir:String);
var
@@ -366,10 +382,11 @@
{ ==============================================================================
方法名稱:GetCaseFormID
- 引用相依:LoadFromFile
- 方法描述:從案件目錄的 Context.dat 檔案中搜尋並回傳該案件的主表單代碼(FormID)。
- 程序會遍歷影像清單,提取各檔案的表單代碼,並排除特定的分案頁代碼,直到
- 找到符合條件的主表單代碼為止。
+ 引用相依:DivPageFormIDList, FindDivFormCode, LoadFromFile
+ 方法描述:【偵測案件主表單代碼】
+ 遍歷影像清單,尋找定義為「主表單」的 FormID。
+ 1. 過濾:自動跳過分案頁 (Division Page) 與非主鍵表單。
+ 2. 識別:回傳第一個符合條件的實體表單 ID 作為案件的主索引。
============================================================================== }
Function TCB_IMGPSScanX.GetCaseFormID(Path:String):String; //取案件的主FormID
var i,n : Integer;
@@ -396,9 +413,10 @@
{ ==============================================================================
方法名稱:CreateFormID_FormName
- 引用相依:SaveToFile
- 方法描述:遍歷 ContextList,提取每個檔案的表單代號與名稱並格式化為「代號_名稱」,
- 最後存成 FormCode_Name.dat 供上傳使用。
+ 引用相依:FormCode2FormName, SaveToFile
+ 方法描述:【生成表單代碼與名稱對照表】
+ 遍歷 ContextList,將每個影像的表單代號與人類可讀名稱格式化為
+ 「FormID_FormName」並存入 FormCode_Name.dat,供後端顯示參考。
============================================================================== }
Procedure TCB_IMGPSScanX.CreateFormID_FormName(Path,CaseID:String); //產生FormID_FormName.dat
var i : Integer;
@@ -423,10 +441,11 @@
{ ==============================================================================
方法名稱:CreateDocNo_DocName
- 引用相依:SaveToFile
- 方法描述:產生包含文件代號與名稱的對應檔 DocNo_Name.dat。首先執行案件內文件去重
- ,接著遍歷 CaseDocNoList 取得對應名稱,針對不需分組的文件會在名稱前加
- 上星號標記,最後將結果以 UTF-8 編碼儲存。
+ 引用相依:DistinctDocNoinCase, DocNo2DocName, SaveToFile
+ 方法描述:【生成文件代號與名稱對照表】
+ 1. 去重:呼叫 DistinctDocNoinCase 取得案件內實際存在的文件編號。
+ 2. 格式化:對應名稱,若不需分組則加上星號標記(如 *101_名稱)。
+ 3. 持久化:存入 DocNo_Name.dat 並強制使用 UTF-8 編碼。
============================================================================== }
Procedure TCB_IMGPSScanX.CreateDocNo_DocName(Path,CaseID:String); //產生DocNo_DocName.dat
var
@@ -453,10 +472,10 @@
{ ==============================================================================
方法名稱:CreateIn_WH
- 引用相依:FileExists, LoadFromFile, SaveToFile
- 方法描述:產生在席文件清單檔 In_Wh.dat。讀取案件的文件目錄清單後,比對全域的在席
- 文件清單(IN_WH_DocNoList),若文件代號匹配或屬於特定系統目錄(ZZZZZ),則
- 將其加入清單並儲存,用於標記需留存實體的文件。
+ 引用相依:IN_WH_DocNoList, DocNoDir2DocNo, SaveToFile
+ 方法描述:【生成在席入庫清單】
+ 識別案件中哪些目錄屬於實體入庫類別(包含 ZZZZZ 自定義件)。
+ 將這些目錄名稱寫入 In_Wh.dat,供上傳後後端系統進行入庫追蹤。
============================================================================== }
Procedure TCB_IMGPSScanX.CreateIn_WH(CaseID:String); //產生In_WH.dat
var
@@ -492,11 +511,12 @@
{ ==============================================================================
方法名稱:CreateDocNo_Info
- 引用相依:FileExists, LoadFromFile
- 方法描述:產生案件內標準文件(非自訂)的彙總資訊字串。方法讀取 CaseDocNo.dat,針對
- 每個非 'ZZZZZ' 開頭的文件編號,計算其在案件中的總份數、累計總頁數,並檢
- 查編輯狀態(異動旗標)。結果以「編號[Tab]份數[Tab]頁數[Tab]狀態」的格式逐
- 行組成,作為案件上傳時與伺服器比對資料完整性的核心依據。
+ 引用相依:DocNoDir2DocNo, GetDocNoCount, GetDocDir_Page, GetDocNoEdit
+ 方法描述:【生成標準文件彙總資訊】
+ 統計案件中非自訂文件的元數據。
+ - 欄位:DocNo[Tab]份數[Tab]總頁數[Tab]異動狀態 (Y/N)。
+ - 行:每個 DocNo 一行。
+ 此字串將作為 Java Servlet 的參數傳輸。
============================================================================== }
Function TCB_IMGPSScanX.CreateDocNo_Info(CaseID:String):String; //產生 DocNo[tab]份數[tab]總頁數[tab]是否異動[換行]DocNo[tab]份數[tab]總頁數[tab]是否異動
var
@@ -585,11 +605,10 @@
{ ==============================================================================
方法名稱:CreateCustDocNo_Info
- 引用相依:FileExists, LoadFromFile
- 方法描述:產生案件內自訂文件的彙總資訊字串。方法專門處理代碼開頭為 'ZZZZZ' 的文
- 件目錄,透過 GetCustomDocName 取得使用者定義的文件名稱,並彙整其總份數
- 、總頁數與編輯異動狀態。最終格式與標準文件一致,但首位欄位改為顯示自訂
- 名稱,確保自訂類別的文件也能正確被伺服器識別與儲存。
+ 引用相依:GetCustomDocName, GetDocNoCount, GetDocDir_Page, GetDocNoEdit
+ 方法描述:【生成自訂文件彙總資訊】
+ 專門針對 'ZZZZZ' 開頭的目錄,提取使用者定義的文件名稱並彙整其
+ 份數、頁數與異動狀態。
============================================================================== }
Function TCB_IMGPSScanX.CreateCustDocNo_Info(CaseID:String):String; //產生自訂文件 DocName[tab]份數[tab]總頁數[tab]是否異動[#13#10]DocName[tab]份數[tab]總頁數[tab]是否異動
var
@@ -647,10 +666,10 @@
{ ==============================================================================
方法名稱:CreateDocnoFrom_Info
- 引用相依:FileExists, LoadFromFile
- 方法描述:產生被引進的保管袋文件詳細資訊字串。程序遍歷案件的文件目錄,排除自定義
- 文件後,取得各文件的份數、總頁數、異動狀態及來源案件編號(UseCase)。若同
- 一文件來自多個目錄,則會累加數據,最後產出以 Tab 分隔的文件資訊清單。
+ 引用相依:GetUseCase, GetDocDirCopies, GetDocDir_Page, GetDocNoEdit
+ 方法描述:【生成標準引用件來源清單】
+ 針對補件模式下「從其他案件引進」的標準文件,紀錄其來源案號與引入份數。
+ 彙整格式為:DocNo[Tab]份數[Tab]來源案號。
============================================================================== }
Function TCB_IMGPSScanX.CreateDocnoFrom_Info(CaseID:String):String; //產生被引進的保管袋文件資訊 Docno[tab]份數[tab]案件編號#13#10Docno[tab]份數[tab]案件編號
var
@@ -720,10 +739,10 @@
{ ==============================================================================
方法名稱:CreateCustDocNoFrom_Info
- 引用相依:FileExists, LoadFromFile
- 方法描述:產出自定義文件的引進資訊字串。專門處理前綴為 "ZZZZZ" 的目錄,提取自定
- 義文件名稱、份數及來源案件。與保管袋文件類似,會執行重複合併並統計總頁
- 數,最後產出格式化的資訊字串。
+ 引用相依:GetCustomDocName, GetUseCase, GetDocDirCopies, GetDocDir_Page, GetDocNoEdit
+ 方法描述:【生成自訂引用件來源清單】
+ 針對補件模式下「從其他案件引進」的自定義文件,紀錄其來源案號與引入份數。
+ 彙整格式為:自訂名稱[Tab]份數[Tab]來源案號。
============================================================================== }
Function TCB_IMGPSScanX.CreateCustDocNoFrom_Info(CaseID:String):String; //產生被引進的自定文件資訊 Docno[tab]份數[tab]案件編號#13#10Docno[tab]份數[tab]案件編號
var
@@ -786,9 +805,9 @@
{ ==============================================================================
方法名稱:CreateAttach_Info
- 引用相依:
- 方法描述:判斷案件是否存在附加電子檔。透過檢查附加檔案目錄的總頁數是否大於 0,回
- 傳 "Y" 或 "N"。
+ 引用相依:GetDocDir_Page, AttName
+ 方法描述:【偵測是否有附加檔案】
+ 檢查指定的附件目錄 (AttName) 是否包含影像或電子檔,回傳 "Y" 或 "N" 標記。
============================================================================== }
Function TCB_IMGPSScanX.CreateAttach_Info(CaseID:String):String; //產生是否有Attach Y:有 N:沒有
begin
--
Gitblit v1.8.0