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.docmod.pas |  196 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 196 insertions(+), 0 deletions(-)

diff --git a/reassemble/CB_IMGPSScanImp.docmod.pas b/reassemble/CB_IMGPSScanImp.docmod.pas
new file mode 100644
index 0000000..c8172a8
--- /dev/null
+++ b/reassemble/CB_IMGPSScanImp.docmod.pas
@@ -0,0 +1,196 @@
+{ ==============================================================================
+  方法名稱:OldCasetoNewCase
+  引用相依:LoadFromFile, SaveToFile
+  方法描述:將舊系統格式的案件文件份數轉換為新系統規則。方法會載入案件的文件目錄
+            清單 (CaseDocNo.dat),並解析由全域變數傳入的舊案文件編號與名稱清單(以
+             Tab 字串傳遞)。流程中會針對每個目錄編號統計其在舊資料中的出現次數,並
+            將統計後的份數結果更新至 CaseDocNo_Copies.dat 檔案中,以完成歷史資料
+            的規格對接。
+============================================================================== }
+Procedure TCB_IMGPSScanX.OldCasetoNewCase(CaseID:String); //將舊案份數轉成新規則
+var
+  i,n : Integer;
+  C_DocNoList,C_DocNameList : TStringlist;
+  DocNoList,DocNo_CopiesList : TStringlist;
+  DocNo,DocName,DocDir : String;
+  DocNo_Ct :integer;
+begin
+  C_DocNoList := TStringlist.Create;
+  C_DocNameList := TStringlist.Create;
+  DocNoList := TStringlist.Create;
+  DocNo_CopiesList := TStringlist.Create;
+  try
+    DocNoList.LoadFromFile(ImageSavePath+CaseID+'\CaseDocNo.dat');
+    for i := 0 to DocNoList.Count - 1 do
+    begin
+      DocNo_CopiesList.Add('0');
+    end;
+    //Showmessage(FC_DocNoList);
+    if FC_DocNoList <> '' then
+    begin
+      C_DocNoList.StrictDelimiter := True;
+      C_DocNoList.Delimiter := #9;
+      C_DocNoList.DelimitedText := FC_DocNoList;
+      //showmessage(C_DocNoList.Text+#13+#13+DocNoList.Text);
+      for i := 0 to DocNoList.Count - 1 do
+      begin
+        //DocNo := DocNoList.Strings[i];
+        DocNo := DocNoDir2DocNo(DocNoList.Strings[i]);  //20140812 因轉舊案錯誤件會出現DocnoDir
+        DocNo_Ct := 0;
+        for n := 0 to C_DocNoList.Count - 1 do
+        begin
+          if DocNo = C_DocNoList.Strings[n] then
+            inc(DocNo_Ct);
+        end;
+        if DocNo_CT > 0 Then
+          DocNo_CopiesList.Strings[i] := inttostr(DocNo_CT);
+      end;
+      DocNo_CopiesList.SaveToFile(ImageSavePath+CaseID+'\CaseDocNo_Copies.dat');
+    end;
+    if FC_DocNameList <> '' then
+    begin
+      C_DocNameList.StrictDelimiter := True;
+      C_DocNameList.Delimiter := #9;
+      C_DocNameList.DelimitedText := FC_DocNameList;
+      for i := 0 to DocNoList.Count - 1 do
+      begin
+        DocNo := DocNoList.Strings[i];
+        DocNo_Ct := 0;
+        for n := 0 to C_DocNameList.Count - 1 do
+        begin
+          if GetCustomDocName(ImageSavePath+CaseID+'\',DocNo) = C_DocNameList.Strings[n] then
+            inc(DocNo_Ct);
+        end;
+
+        if DocNo_CT > 0 Then
+          DocNo_CopiesList.Strings[i] :=inttostr(DocNo_CT);
+      end;
+    end;
+    DocNo_CopiesList.SaveToFile(ImageSavePath+CaseID+'\CaseDocNo_Copies.dat');
+  finally
+  C_DocNoList.Free;
+  C_DocNameList.Free;
+  DocNoList.Free;
+  DocNo_CopiesList.Free;
+  end;
+
+end;
+
+
+{ ==============================================================================
+  方法名稱:ErrFormtoCurrentForm
+  引用相依:FileExists, LoadFromFile, MoveFile, RenameFile, SaveToFile
+  方法描述:修正案件中歸類錯誤的表單代碼及其關聯檔案。邏輯如下:
+            1. 取得錯誤與正確表單對應的文件編號。
+            2. 遍歷案件下的所有文件目錄,載入各目錄的影像索引檔 (Context.dat)。
+            3. 識別檔名中包含 EFormID 的影像,執行實體重新命名並更新索引。
+            4. 若該目錄編號與錯誤文件編號一致,則會執行 MoveFile 搬移整個目錄至新
+            路徑,並同步更新總文件清單 (CaseDocNo.dat),確保影像與分類資訊的一致性
+            。
+============================================================================== }
+Procedure TCB_IMGPSScanX.ErrFormtoCurrentForm(CaseID,EFormID,CFormID:String);//將舊案的錯誤FormID改正確的FormID
+var
+  DocNoList,FileList :TStringlist;
+  EDocNo,CDocNo,iDocNo,iFormID :String;
+  EDocDir,CDocDir:String;
+  OldFile,NewFile :String;
+  iPath,iiPath : String;
+  i,n : Integer;
+begin
+  EDocNo := FormCode2DocNo(EFormID);
+  CDocNo := FormCode2DocNo(CFormID);
+  DocNoList :=TStringlist.Create;
+  FileList := TStringlist.Create;
+  try
+    DocNoList.LoadFromFile(ImageSavePath+CaseID+'\CaseDocNo.dat');
+    for i := 0 to DocNoList.Count - 1 do
+    begin
+      EDocDir := DocNoList.Strings[i];
+      iDocNo := DocNoDir2DocNo(DocNoList.Strings[i]);
+      iPath := ImageSavePath+CaseID+'\'+EDocDir+'\';
+      if FileExists(iPath+'Context.dat') then  //20140909漏加這個判斷造成自訂文件但沒影像會出錯誤訊息
+        FileList.LoadFromFile(iPath+'Context.dat');
+      for n := 0 to FileList.Count - 1 do
+      begin
+        iFormID := FileName2FormCode(FileList.Strings[n]);
+        if iFormID = EFormID then
+        begin
+          OldFile := FileList.Strings[n];
+          NewFile := StringReplace(FileList.Strings[n],iFormID,CFormID,[rfReplaceAll]);
+          FileList.Strings[n] := NewFile;
+          RenameFile(iPath+OldFile,iPath+NewFile);
+          FileList.SaveToFile(iPath+'Context.dat');
+        end;
+      end;
+      if iDocNo = EDocNo then
+      begin
+        CDocDir := StringReplace(EDocDir,EDocNo,CDocNo,[rfReplaceAll]);
+        iiPath := ImageSavePath+CaseID+'\'+CDocDir+'\';
+        MoveFile(PWideChar(iPath),PWideChar(iiPath));
+        DocNoList.Strings[i] := StringReplace(DocNoList.Strings[i],iDocNo,CDocNo,[rfReplaceAll]);
+        DocNoList.SaveToFile(ImageSavePath+CaseID+'\CaseDocNo.dat');
+        //SetRecordEditedDocDir('A',CaseID,CDocNo);  //20140918 yuu說改成不紀錄
+      end;
+    end;
+  finally
+  DocNoList.Free;
+  FileList.Free;
+  end;
+end;
+
+
+{ ==============================================================================
+  方法名稱:SetRecordEditedDocDir
+  引用相依:FileExists, LoadFromFile, SaveToFile
+  方法描述:記錄案件中曾被異動(新增或刪除)的文件目錄。將目錄名稱存入 EditedDocDir
+            .dat,以便後續判斷哪些內容需要同步上傳或重新計算。
+============================================================================== }
+Procedure TCB_IMGPSScanX.SetRecordEditedDocDir(Mode:Char;CaseID,DocDir:String);  //記錄被異動的文件目錄  'A:加入D:刪掉'
+var
+  i : Integer;
+  Exists : Boolean;
+  EditedDocDirList : TStringlist;
+begin
+  EditedDocDirList := TStringlist.Create;
+  try
+    if FileExists(ImageSavePath+CaseID+'\EditedDocDir.dat') then
+      EditedDocDirList.LoadFromFile(ImageSavePath+CaseID+'\EditedDocDir.dat');
+    case Mode of
+      'A':begin
+            Exists := False;
+            for i := 0 to EditedDocDirList.Count - 1 do
+            begin
+              if EditedDocDirList.Strings[i]=DocDir then
+              begin
+                Exists := True;
+                Break;
+              end;
+            end;
+            if not Exists then
+            begin
+              EditedDocDirList.Add(DocDir);
+              EditedDocDirList.SaveToFile(ImageSavePath+CaseID+'\EditedDocDir.dat');
+            end;
+          end;
+      'D':begin
+            for i := 0 to EditedDocDirList.Count - 1 do
+            begin
+              if EditedDocDirList.Strings[i] = DocDir then
+              begin
+                EditedDocDirList.Delete(i);
+                if EditedDocDirList.Count > 0 then
+                  EditedDocDirList.SaveToFile(ImageSavePath+CaseID+'\EditedDocDir.dat')
+                else
+                  DeleteFile(ImageSavePath+CaseID+'\EditedDocDir.dat');
+                Break;
+              end;
+            end;
+          end;
+    end;
+
+  finally
+  EditedDocDirList.Free;
+  end;
+end;
+
+

--
Gitblit v1.8.0