From 0756bf12d10cf1b7f78c571de0a9ad69cbaeb7ca Mon Sep 17 00:00:00 2001
From: curtis <curtis@i-mps.com>
Date: 星期一, 30 三月 2026 14:24:17 +0800
Subject: [PATCH] fix: 更新內部引用方法參照
---
reassemble/CB_IMGPSScanImp.convert.pas | 480 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 480 insertions(+), 0 deletions(-)
diff --git a/reassemble/CB_IMGPSScanImp.convert.pas b/reassemble/CB_IMGPSScanImp.convert.pas
new file mode 100644
index 0000000..5288d5f
--- /dev/null
+++ b/reassemble/CB_IMGPSScanImp.convert.pas
@@ -0,0 +1,480 @@
+{ ==============================================================================
+ 方法名稱:Path2DocDir
+ 引用相依:FileExists, LoadFromFile
+ 方法描述:將實體路徑轉換為案件內的文件目錄名稱。透過比對路徑字串與 CaseDocNo.da
+ t 中的清單來識別對應的目錄。
+============================================================================== }
+Function TCB_IMGPSScanX.Path2DocDir(Path,CaseID:String):String;
+var
+ i : Integer;
+ DocnoList : TStringlist;
+begin
+ Result := '';
+ DocNoList := TStringlist.Create;
+ try
+ if FileExists(ImageSavePath+CaseID+'\CaseDocNo.dat') then
+ DocNoList.LoadFromFile(ImageSavePath+CaseID+'\CaseDocNo.dat');
+ if Path[length(Path)]<>'\' then
+ path := path+'\';
+ for i := 0 to DocNoList.Count - 1 do
+ begin
+ if (path=ImageSavePath+CaseID+'\'+DocNoList.Strings[i]+'\') then
+ begin
+ Result := DocNoList.Strings[i];
+ Break;
+ end;
+ end;
+ finally
+ DocNoList.Free;
+ end;
+end;
+
+
+{ ==============================================================================
+ 方法名稱:FormCode2FormName
+ 引用相依:
+ 方法描述:將表單代碼轉換為易讀的文件名稱。優先查詢系統定義表,若無則至自定義文件
+ 清單中搜尋。
+============================================================================== }
+Function TCB_IMGPSScanX.FormCode2FormName(CaseID,FormCode:String):String; //用FormCode轉成文件名稱
+var
+ i,v,ln : Integer;
+ DelBarCode : String;
+ CusDocNo,CusDocName : String;
+begin
+ Result := '';
+ if (FormCode = '') or (FormCode = 'Attach') or (FormCode = 'S_Attach') then
+ Result := _Msg('未歸類')
+ //showmessage('a');
+ //stringtofile(FORM_INF_List.Text,'D:\121.txt');
+ Else If FindSQLData(FORM_INF_List,'T1.FORM_ID,T1.FORM_DESC','T1.FORM_ID',FormCode,0,FindResult) then
+ Result := GetFindResult('T1.FORM_DESC');
+
+ ////// 到自訂文件找//////
+ if Result = '' then
+ Result := GetCustomDocName(ImageSavePath+CaseID+'\',FormCode2DocNo(FormCode));
+ {for i := 0 to Cust_DocNoList.Count - 1 do
+ begin
+ v := Pos('_',Cust_DocNoList.Strings[i]);
+ ln := Length(Cust_DocNoList.Strings[i]);
+ CusDocNo := copy(Cust_DocNoList.Strings[i],1,v-1);
+ CusDocName := Copy(Cust_DocNoList.Strings[i],v+1,ln-v);
+ if CusDocNo = FormCode2DocNo(FormCode) then
+ Result := DocNo2DocName(CusDocNo);
+
+ end;}
+
+
+ {DelBarCode := '**'+FormCode;
+ for I := 0 to FormCodeList.Count - 1 do
+ begin
+ if FindDel then //要找下架的
+ begin
+ if (FormCode = FormCodeList.Strings[i]) or (DelBarCode = FormCodeList.Strings[i]) then
+ begin
+ Result := FormNameList.Strings[i];
+ Break;
+ end;
+ end
+ Else
+ begin
+ if (FormCode = FormCodeList.Strings[i]) or (DelBarCode = FormCodeList.Strings[i]) then
+ begin
+ Result := FormNameList.Strings[i];
+ Break;
+ end;
+ end;
+ end; }
+end;
+
+
+{ ==============================================================================
+ 方法名稱:FormCode2FileName
+ 引用相依:
+ 方法描述:在指定的檔案清單中,根據表單代碼尋找其對應的第一個影像檔名。
+============================================================================== }
+Function TCB_IMGPSScanX.FormCode2FileName(FormCode:String;List:TStrings):String; //用FormCode找出檔名(第一頁)
+var
+ i : Integer;
+ v,v1 : Integer;
+begin
+ Result := '';
+ for i := 0 to List.Count - 1 do
+ begin
+ V := pos('_',List.Strings[i]);
+ v1 := pos('.',List.Strings[i]);
+ if (FormCode = '') and (V = 0)then //FormCode 為空的則找附件出來
+ begin
+ Result := List.Strings[i];
+ Break;
+ end;
+ IF FormCode = Copy(List.Strings[i],v+1,v1-v-1) then
+ begin
+ Result := List.Strings[i];
+ Break;
+ end;
+ end;
+end;
+
+
+{ ==============================================================================
+ 方法名稱:FileName2FormCode
+ 引用相依:
+ 方法描述:從影像檔名中提取表單代碼(底線與點號之間的部分)。若檔名格式不符則視為
+ 附件並回傳空字串。
+============================================================================== }
+Function TCB_IMGPSScanX.FileName2FormCode(FileName:String):String; //從檔名取出FormCode
+var
+ v,v1 : Integer;
+begin
+ FileName := ExtractFileName(FileName);
+ v := Pos('_',FileName);
+ v1 := Pos('.',FileName);
+ if v > 0 then
+ begin
+ Result := Copy(FileName,v+1,v1-v-1);
+ end
+ Else //附件
+ begin
+ Result := '';
+ end;
+end;
+
+
+{ ==============================================================================
+ 方法名稱:FileName2FormName
+ 引用相依:
+ 方法描述:根據案件編號與檔案名稱,先取得表單代碼,再轉換為對應的表單名稱。
+============================================================================== }
+Function TCB_IMGPSScanX.FileName2FormName(CaseID,FileName:String):String; //從檔名取出文件名稱
+begin
+ Result := FormCode2FormName(CaseID,FileName2FormCode(FileName));
+end;
+
+
+{ ==============================================================================
+ 方法名稱:FileName2ScanPage
+ 引用相依:
+ 方法描述:從檔案名稱中提取掃描頁碼。透過尋找底線或點號的位置,截取檔名前段並轉換
+ 為整數。
+============================================================================== }
+Function TCB_IMGPSScanX.FileName2ScanPage(FileName:String):Integer; //從檔名轉出掃瞄頁數
+Var
+ v : Integer;
+ FName : String;
+begin
+ FName := ExtractFileName(FileName);
+ v := Pos('_',FName);
+ if v = 0 then //附件
+ v := pos('.',FName);
+ Result := Strtoint(Copy(FName,1,v-1));
+end;
+
+
+{ ==============================================================================
+ 方法名稱:FileName2NoQuene_Filename
+ 引用相依:
+ 方法描述:從檔案名稱中移除序號部分,僅保留從底線或點號開始的剩餘檔名結構。
+============================================================================== }
+Function TCB_IMGPSScanX.FileName2NoQuene_Filename(FileName:String):String; //取出沒有序號的檔名
+var
+ v,v1 : Integer;
+ FName : String;
+begin
+ FName := ExtractFileName(FileName);
+ v := Pos('_',FName);
+ if v = 0 then //附件
+ v := pos('.',FName);
+ v1 := length(FName);
+ Result := Copy(FName,v,v1-v+1);
+end;
+
+
+{ ==============================================================================
+ 方法名稱:FileName2Index
+ 引用相依:
+ 方法描述:在 ContextList 清單中搜尋指定的檔案名稱,並回傳其所在的索引位置。
+============================================================================== }
+Function TCB_IMGPSScanX.FileName2Index(FileName:String):Integer; //從檔名取出在ContextList的序號
+var
+ i : Integer;
+begin
+ for i := 0 to ContextList.Count - 1 do
+ begin
+ if FileName = ContextList.Strings[i] then
+ begin
+ Result := i;
+ Break;
+ end;
+ end;
+end;
+
+
+{ ==============================================================================
+ 方法名稱:FileName2NowDcoNo
+ 引用相依:
+ 方法描述:從檔案名稱對應的 CTList 中尋找索引,並從 DNList 取得其歸屬的文件代號。
+============================================================================== }
+Function TCB_IMGPSScanX.FileName2NowDcoNo(FileName:String;CtList,DNList:TStrings):String; //從檔名取出歸屬的文件代號
+var
+ i : Integer;
+begin
+ for I := 0 to CTList.Count -1 do
+ begin
+ if FileName = CTList.Strings[i] then
+ begin
+ Result := DNList.Strings[i];
+ break;
+ end;
+ end;
+end;
+
+
+{ ==============================================================================
+ 方法名稱:FormCode2DocNo
+ 引用相依:
+ 方法描述:將表單代碼 (FormCode) 轉換為對應的文件編號 (DocNo)。方法遍歷預載的 Fo
+ rmID_List,若找到匹配的表單代碼,則返回 DocNo_List 中相同索引位置的數
+ 值。若表單代碼不在清單中(通常為使用者自訂的文件),則預設截取代碼的前 8
+ 位字元作為文件編號返回。
+============================================================================== }
+Function TCB_IMGPSScanX.FormCode2DocNo(FormCode:String):String; //FormCode轉Docno
+Var
+ i : Integer;
+begin
+ Result := '';
+ for i := 0 to FormID_List.Count-1 do
+ begin
+ if FormID_List.Strings[i] = FormCode then
+ begin
+ Result := DocNo_List.Strings[i];
+ Break;
+ end;
+
+ end;
+ if (FormCode <> '') and (Result = '') then //是自訂文件
+ begin
+ Result := Copy(FormCode,1,8); //20170224 DocNo 固定長度8碼
+ end;
+
+ {If FindSQLData(FORM_INF_List,'T1.DOC_NO','T1.FORM_ID',FormCode,0,FindResult) Then //20130403太慢了..換掉
+ begin
+ Result := GetFindResult('T1.DOC_NO');
+ end;}
+end;
+
+
+{ ==============================================================================
+ 方法名稱:FormCode2Version
+ 引用相依:
+ 方法描述:從表單代碼(FormCode)的特定位置(第 11 位開始取 5 位)提取版本資訊。
+============================================================================== }
+Function TCB_IMGPSScanX.FormCode2Version(FormCode:String):String; //FormCode轉版本
+begin
+ Result := Copy(FormCode,11,5);
+end;
+
+
+{ ==============================================================================
+ 方法名稱:FormCode2Page
+ 引用相依:
+ 方法描述:從表單代碼(FormCode)的特定位置(第 9 位開始取 2 位)提取頁數資訊。
+============================================================================== }
+Function TCB_IMGPSScanX.FormCode2Page(FormCode:String):String; //FormCode轉頁數
+begin
+ Result := Copy(FormCode,9,2)
+end;
+
+
+{ ==============================================================================
+ 方法名稱:DocNo2DocName
+ 引用相依:
+ 方法描述:解析文件編號對應的描述性名稱。優先權邏輯為:
+ 1. 若編號符合附件名稱 (AttName),返回「未歸類」。
+ 2. 從系統定義快取 (Doc_Inf_List) 中搜尋對應的描述 (DOC_U_DESC)。
+ 3. 若系統定義查無結果,則呼叫 GetCustomDocName 從案件本地的自訂文件設
+ 定中尋找對應名稱。此方法確保 UI 上能顯示人類可讀的文件類別名稱。
+============================================================================== }
+Function TCB_IMGPSScanX.DocNo2DocName(CaseID,DocNo:String):String; //Docno轉Doc名稱
+var
+ i,v,ln : Integer;
+ CusDocNo,CusDocName : String;
+begin
+ Result := '';
+ if DocNo = AttName then
+ begin
+ Result := _Msg('未歸類');
+ end
+ Else
+ begin
+ If FindSQLData(Doc_Inf_List,'DOC_U_DESC','DOC_NO',DocNo,0,FindResult) Then
+ begin
+//ShowMessage(FindResult.Text);
+ Result := GetFindResult('DOC_U_DESC');
+ end;
+ end;
+
+ if Result = '' then //去自訂文件裡找
+ begin
+ Result := GetCustomDocName(ImageSavePath+CaseID+'\',DocNo);
+ {for i := 0 to Cust_DocNoList.Count - 1 do
+ begin
+ v := Pos('_',Cust_DocNoList.Strings[i]);
+ ln := length(Cust_DocNoList.Strings[i]);
+ CusDocNo := Copy(Cust_DocNoList.Strings[i],1,v-1);
+ CusDocName := Copy(Cust_DocNoList.Strings[i],v+1,ln-v);
+ if DocNo = CusDocNo then
+ begin
+ Result := CusDocName;
+ Break;
+ end;
+ end;}
+ end;
+
+end;
+
+
+{ ==============================================================================
+ 方法名稱:DocNo2FileName
+ 引用相依:
+ 方法描述:根據文件代號,在指定的檔案清單中搜尋並回傳該文件第一頁的檔案名稱。
+============================================================================== }
+Function TCB_IMGPSScanX.DocNo2FileName(DocNo:String;List:TStrings):String; //用DocNo找出檔名(第一頁)
+var
+ i : Integer;
+begin
+ Result := '';
+ for i := 0 to List.Count - 1 do
+ begin
+ IF DocNo = FormCode2DocNo(FileName2FormCode(List.Strings[i])) then
+ begin
+ Result := List.Strings[i];
+ Break;
+ end;
+ end;
+end;
+
+
+{ ==============================================================================
+ 方法名稱:FormCode2WorkNo
+ 引用相依:
+ 方法描述:透過 FORM_INF_List 查詢表單代碼對應的作業別(WORK_NO)。
+============================================================================== }
+Function TCB_IMGPSScanX.FormCode2WorkNo(FormCode:String):String; //用FormCode取出作業別
+begin
+ Result := '';
+ If FindSQLData(FORM_INF_List,'T1.WORK_NO','T1.FORM_ID',FormCode,0,FindResult) Then
+ begin
+ Result := GetFindResult('T1.WORK_NO');
+ end;
+end;
+
+
+{ ==============================================================================
+ 方法名稱:DocNo2WorkNo
+ 引用相依:
+ 方法描述:透過 Doc_Inf_List 查詢文件代號對應的作業別(WORK_NO)。
+============================================================================== }
+Function TCB_IMGPSScanX.DocNo2WorkNo(DocNo:String):String; //用DocNo取出作業別
+begin
+ Result := '';
+ If FindSQLData(Doc_Inf_List,'WORK_NO','DOC_NO',DocNo,0,FindResult) Then
+ begin
+ Result := GetFindResult('WORK_NO');
+ end;
+end;
+
+
+{ ==============================================================================
+ 方法名稱:DocNoNeedDiv
+ 引用相依:
+ 方法描述:檢查指定的文件類型是否需要執行頁面拆分(分份數)。方法透過 FindSQLData
+ 在 Doc_Inf_List 中查詢該編號的 'IS_DOC_DIV' 欄位,若旗標值為 'Y' 則返
+ 回 True,否則返回 False。此設定決定了掃瞄流程中是否需要根據條碼自動切
+ 分文件目錄。
+============================================================================== }
+Function TCB_IMGPSScanX.DocNoNeedDiv(DocNo:String):Boolean; //是否是需分份數的文件代號
+var
+ NeedDiv : String;
+begin
+ Result := False;
+ If FindSQLData(Doc_Inf_List,'IS_DOC_DIV','DOC_NO',DocNo,0,FindResult) Then
+ begin
+ NeedDiv := GetFindResult('IS_DOC_DIV');
+ if NeedDiv = 'Y' then
+ Result := True;
+ end;
+end;
+
+
+{ ==============================================================================
+ 方法名稱:CaseNode2Info
+ 引用相依:
+ 方法描述:從樹狀結構的案件節點文字中,根據指定的模式提取案件編號或案件頁數。
+============================================================================== }
+Function TCB_IMGPSScanX.CaseNode2Info(Node:TTreeNode;Mode:Char):String; //案件Node取案件編號 Mode: I:Caseno;P:Page
+var
+ v,ln : Integer;
+begin
+ //XXXXXX-XX頁
+ V := Pos('-',Node.Text);
+ ln := Length(Node.Text);
+ case Mode of
+ 'I': Result := Copy(Node.Text,1,v-1); //CaseID
+ 'P': Result := Copy(Node.Text,v+1,ln-v-1); //CasePage
+ end;
+
+end;
+
+
+{ ==============================================================================
+ 方法名稱:DocNode2Info
+ 引用相依:
+ 方法描述:從樹狀結構的文件節點文字中提取詳細資訊。節點文字格式預期為「文件名稱@
+ 組數{文件代號}-XX頁」。此函式會根據傳入的模式(Mode),利用分隔符號(@, {,
+ }, -)定位並截取回傳文件代號(I)、文件名稱(N)、文件頁碼(P)或文件組別(G)
+ 。
+============================================================================== }
+Function TCB_IMGPSScanX.DocNode2Info(Node:TTreeNode;Mode:Char):String; //文件Node取文件代號 Mode: I:Docno;N:Docname;P:Page;G:Group
+var
+ v,v1,v2,v3,ln :integer;
+begin
+ //文件名稱@組數{文件代號}-XX頁
+ V := PosEnd('@',Node.Text);
+ v1 := PosEnd('{',Node.Text);
+ v2 := PosEnd('}',Node.Text);
+ v3 := PosEnd('-',Node.Text);
+ ln := Length(Node.Text);
+ case Mode of
+ 'I': Result := Copy(Node.Text,v1+1,v2-v1-1); //DocNo
+ 'N': Result := Copy(Node.Text,1,v-1); //DocName
+ 'P': Result := Copy(Node.Text,v3+1,ln-v3-1); //DocPage
+ 'G': Result := Copy(Node.Text,v+1,v1-v-1); //DocGroup
+ end;
+end;
+
+
+{ ==============================================================================
+ 方法名稱:FormNode2Info
+ 引用相依:
+ 方法描述:從樹狀結構的表單節點文字中提取資訊。節點文字格式預期為「表單代號{表單
+ 名稱}-XX頁」。根據模式(Mode)參數,解析並回傳表單代號(I)、表單名稱(N)或頁
+ 碼(P)。
+============================================================================== }
+Function TCB_IMGPSScanX.FormNode2Info(Node:TTreeNode;Mode:Char):String; //表單Node取表單代號 Mode: I:FormID;N:FormName;P:Page
+var
+ v,v1,v2,ln :integer;
+begin
+ //表單代號{表單名稱}-XX頁
+ v := Pos('{',Node.Text);
+ v1 := PosEnd('}',Node.Text);
+ v2 := PosEnd('-',Node.Text);
+ ln := Length(Node.Text);
+ case Mode of
+ 'I': Result := Copy(Node.Text,1,v-1); //FormID
+ 'N': Result := Copy(Node.Text,v1+1,v2-v1-1); //FormName
+ 'P': Result := Copy(Node.Text,v2+1,ln-v2-1); //Page
+ end;
+end;
+
+
--
Gitblit v1.8.0