curtis
20小時前 5577f3ba7b9f0319c9b32d7080165207726d1f81
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
[
  {
    "matcher": "Function TCB_IMGPSScanX.GetSetInf1 : Boolean; //取系統設定資訊Mode1 DOC_INF",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.paramState",
      "API 呼叫相關"
    ],
    "deps": [
      "En_DecryptionStr_Base64",
      "ProcessServlet_Get"
    ],
    "lIndex": "5665",
    "rIndex": "5707",
    "description": "向伺服器請求 DOC_INF 資料表資訊(模式 1)。方法會加密目前伺服器時間戳記並發送 HTTP GET 請求。若成功取得資料(狀態碼 '0'),則利用 SetSQLData 將結果解析並存入本地快取 Doc_Inf_List;若發生通訊錯誤或 Session 逾時(偵測到登入頁面標籤),則會記錄對應的 HttpErrStr 並返回 False。"
  },
  {
    "matcher": "Function TCB_IMGPSScanX.GetSetInf2 : Boolean; //取系統設定資訊Mode2  DM_FORM_INF",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.paramState",
      "API 呼叫相關"
    ],
    "deps": [
      "En_DecryptionStr_Base64",
      "ProcessServlet_Get"
    ],
    "lIndex": "5708",
    "rIndex": "5746",
    "description": "向伺服器請求 DM_FORM_INF 表單關聯資訊(模式 2)。流程包含加密請求參數與發送 GET 請求。此方法負責取得表單間的主從關係、相依性以及互斥規則,並將回傳的資料行解析後存入本地的 DM_FORM_INF_List。若通訊失敗或 Session 過期,會設定錯誤訊息並中斷流程。"
  },
  {
    "matcher": "Function TCB_IMGPSScanX.GetSetInf3 : Boolean; //取系統設定資訊mode3  FORM_INF",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.paramState",
      "API 呼叫相關"
    ],
    "deps": [
      "En_DecryptionStr_Base64",
      "ProcessServlet_Get"
    ],
    "lIndex": "5747",
    "rIndex": "5786",
    "description": "向伺服器請求 FORM_INF 表單詳細資料(模式 3)。方法會取得包含表單名稱、說明、分類、定位點類型(ANCHOR/FRAME)、最大頁數及預設高寬等中繼數據。取得的資料會被快取至 FORM_INF_List,作為影像處理(如自動縮放與 OMR 檢核)的重要依據。"
  },
  {
    "matcher": "Function TCB_IMGPSScanX.GetSetInf4 : Boolean; //取系統設定資訊mode4  CHECK_RULE_INF",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.paramState",
      "API 呼叫相關"
    ],
    "deps": [
      "En_DecryptionStr_Base64",
      "ProcessServlet_Get"
    ],
    "lIndex": "5787",
    "rIndex": "5827",
    "description": "向伺服器請求 CHECK_RULE_INF 檢核規則資訊(模式 4)。此方法取得包含檢核代號、描述及顯示類型在內的驗證規則,並將其儲存於 CHECK_RULE_INF_List。最後會呼叫 CheckRule2OMRErrInfo,將取得的規則同步更新至 OMR 錯誤資訊記錄中,以確保前端檢核邏輯與伺服器同步。"
  },
  {
    "matcher": "Function TCB_IMGPSScanX.GetSetInf5 : Boolean; //取系統設定資訊mode5  MEMO_INF",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.paramState",
      "API 呼叫相關"
    ],
    "deps": [
      "En_DecryptionStr_Base64",
      "ProcessServlet_Get"
    ],
    "lIndex": "5828",
    "rIndex": "5866",
    "description": "向伺服器請求 MEMO_INF 註記資訊(模式 5)。方法會取得預設的註記內容及其對應的類型名稱,並將其快取至 MEMO_INF_List。這些資料通常用於 UI 上的註記選擇選單,方便掃瞄人員在影像處理過程中快速標註預設的說明文字。"
  },
  {
    "matcher": "Function TCB_IMGPSScanX.GetSetInf6 : Boolean; //取系統設定資訊mode5  WORK_INF",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.paramState",
      "API 呼叫相關"
    ],
    "deps": [
      "En_DecryptionStr_Base64",
      "ProcessServlet_Get"
    ],
    "lIndex": "5867",
    "rIndex": "5906",
    "description": "向伺服器請求 WORK_INF 工作參數資訊(模式 6)。此方法取得當前工作項目的全域參數(如 PARA_NO 與 PARA_CONTENT),並儲存於 WORK_INF_List。這些參數控制了掃瞄器的預設行為(如 DPI、雙面掃瞄等),是系統初始化環境設定的關鍵步驟。"
  },
  {
    "matcher": "Function TCB_IMGPSScanX.GetSetInf7 : Boolean; //取系統設定資訊mode5  LASTEST_FORM_INF",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.paramState",
      "API 呼叫相關"
    ],
    "deps": [
      "En_DecryptionStr_Base64",
      "ProcessServlet_Get"
    ],
    "lIndex": "5907",
    "rIndex": "5946",
    "description": "向伺服器請求 LASTEST_FORM_INF 最新表單版本資訊(模式 7)。方法會獲取各文件編號對應的最新表單 ID 與版本號,並儲存於 LASTEST_FORM_INF_List。此資訊用於確保使用者掃瞄的是最新版表單,或是用於舊案件轉檔時與歷史版本對照。"
  },
  {
    "matcher": "Function TCB_IMGPSScanX.DeleteDocNoFileForESCAN(Path,DocNo:String):Boolean;  //刪除指定DocNo文件",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.caseManager",
      "檔案操作"
    ],
    "deps": [
      "DeleteDocNoFile",
      "LoadFromFile",
      "SaveToFile",
      "_DelTree"
    ],
    "lIndex": "6141",
    "rIndex": "6174",
    "description": "在補件模式 (ESCAN) 下刪除屬於特定文件類型 (DocNo) 的影像。方法會從索引清單 (ContextList) 的末尾開始向前遍歷,識別符合目標文件編號或附件名稱的圖檔。若該檔案並非預先存在的(ISExistImg 返回 False),則執行實體刪除並從索引清單中移除。若整個文件目錄因此清空,則會進一步移除該目錄並從文件清單中刪除紀錄。"
  },
  {
    "matcher": "Function TCB_IMGPSScanX.BarCode2CaseID : String; //Barcode依規則轉成CaseID",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.entityMapping"
    ],
    "deps": [],
    "lIndex": "8155",
    "rIndex": "8172",
    "description": "從目前掃瞄到的條碼清單中提取案件編號 (CaseID)。方法會遍歷條碼暫存對象 (MpsBarcodeinf),並將第一個長度正好等於預設 CaseIDLength 的條碼值視為合法的案件編號返回。若遍歷結束仍未找到符合長度限制的條碼,則返回空字串。"
  },
  {
    "matcher": "Function TCB_IMGPSScanX.BarCode2FormID : String; //Barcode依規則轉成FormID",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.entityMapping"
    ],
    "deps": [],
    "lIndex": "8173",
    "rIndex": "8195",
    "description": "從目前掃瞄到的條碼清單中識別有效的表單代碼 (FormID)。方法會過濾長度符合 FormIDLength 的條碼,並呼叫 FormIDAppear 驗證其格式。若初步驗證通過,會進一步呼叫 FormIDExists 確認該代碼在系統中已註冊且可用。返回第一個完全符合條件的表單代碼,否則返回空。"
  },
  {
    "matcher": "Procedure TCB_IMGPSScanX.SetSQLData(ColumeStr:String;FromList,ToList:TStringlist); //把SQL值塞入",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.paramState"
    ],
    "deps": [],
    "lIndex": "8651",
    "rIndex": "8662",
    "description": "將 SQL 查詢結果格式化後塞入目標字串清單。此方法會先清除目標清單 (ToList),第一行加入欄位定義字串 (ColumeStr),隨後將來源清單 (FromList) 中扣除標題後的資料列依序填入,用於更新系統本地的資料快取。"
  },
  {
    "matcher": "Function TCB_IMGPSScanX.GetSQLData(TableList:TStringlist;Colname:String;colNo:Integer):String; //依欄位及索引取值",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.paramState"
    ],
    "deps": [],
    "lIndex": "8663",
    "rIndex": "8723",
    "description": "從結構化字串清單中提取特定欄位的值。邏輯如下:1. 解析 TableList 的第一行(欄位定義)以確定目標欄位 (Colname) 的索引位置。2. 讀取指定行 (colNo) 的資料字串,該字串使用 '!@!' 作為欄位分隔符。3. 透過循環將資料拆分並存入臨時清單,最後返回對應欄位索引位置的數值內容。若找不到欄位或索引超出範圍,則返回空字串。"
  },
  {
    "matcher": "Function TCB_IMGPSScanX.FindSQLData(TableList:TStringlist;ColumeStr,KeyColumeStr,KeyStr:String;ColNo:Integer;Var ResultList:TStringlist):Boolean; //找指定的資料",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.paramState"
    ],
    "deps": [],
    "lIndex": "8724",
    "rIndex": "8802",
    "description": "在資料快取清單中搜尋符合鍵值的紀錄。核心邏輯:1. 支援多個鍵值比對 (KeyColumeStr 與 KeyStr 可包含多個欄位)。2. 若 ColNo 為 0,則從頭搜尋清單;若非 0 則僅檢查該指定行。3. 搜尋時會調用 GetSQLData 提取欄位值並與目標鍵值比對。4. 一旦匹配成功,會將 ColumeStr 中指定的所有欄位名稱及其對應數值(格式為「欄位名,數值」)填入 ResultList 中並返回 True。若搜尋無結果則返回 False。"
  },
  {
    "matcher": "Procedure TCB_IMGPSScanX.OldCasetoNewCase(CaseID:String); //將舊案份數轉成新規則",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.caseManager",
      "舊案/異動件處理"
    ],
    "deps": [
      "LoadFromFile",
      "SaveToFile"
    ],
    "lIndex": "10456",
    "rIndex": "10524",
    "description": "將舊系統格式的案件文件份數轉換為新系統規則。方法會載入案件的文件目錄清單 (CaseDocNo.dat),並解析由全域變數傳入的舊案文件編號與名稱清單(以 Tab 字串傳遞)。流程中會針對每個目錄編號統計其在舊資料中的出現次數,並將統計後的份數結果更新至 CaseDocNo_Copies.dat 檔案中,以完成歷史資料的規格對接。"
  },
  {
    "matcher": "Procedure TCB_IMGPSScanX.ErrFormtoCurrentForm(CaseID,EFormID,CFormID:String);//將舊案的錯誤FormID改正確的FormID",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.caseManager",
      "舊案/異動件處理"
    ],
    "deps": [
      "FileExists",
      "LoadFromFile",
      "MoveFile",
      "RenameFile",
      "SaveToFile"
    ],
    "lIndex": "10525",
    "rIndex": "10574",
    "description": "修正案件中歸類錯誤的表單代碼及其關聯檔案。邏輯如下:1. 取得錯誤與正確表單對應的文件編號。2. 遍歷案件下的所有文件目錄,載入各目錄的影像索引檔 (Context.dat)。3. 識別檔名中包含 EFormID 的影像,執行實體重新命名並更新索引。4. 若該目錄編號與錯誤文件編號一致,則會執行 MoveFile 搬移整個目錄至新路徑,並同步更新總文件清單 (CaseDocNo.dat),確保影像與分類資訊的一致性。"
  },
  {
    "matcher": "Procedure TCB_IMGPSScanX.SetUseCase(Mode:Char;Path,DocDir,FormCaseID,ToCaseID:String);   //記錄引用其他案件 A:加入 D:刪掉",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.caseManager"
    ],
    "deps": [],
    "lIndex": "11506",
    "rIndex": "11526",
    "description": "管理案件間的文件引用紀錄。此方法使用 Tinifile 操作案件目錄下的 UseCase.ini 檔案。當 Mode 為 'A' (Add) 時,會在指定的 DocDir 區段下紀錄來源案件 (FROM_CASEID) 與目標案件 (TO_CASEID) 的引用關係;當 Mode 為 'D' (Delete) 時,則會移除該目錄對應的引用資訊。這用於追蹤不同案件間影像資源的重複利用情況。"
  },
  {
    "matcher": "Function TCB_IMGPSScanX.GetUseCase(Mode:Char;Path,DocDir:String):String;  //F:取被引用 To:引用",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.caseManager"
    ],
    "deps": [],
    "lIndex": "11527",
    "rIndex": "11546",
    "description": "取得指定目錄的文件引用資訊。方法讀取 UseCase.ini 設定檔,根據 Mode 參數返回對應的案件 ID:模式 'F' 返回被引用的來源案件 ID (FROM_CASEID),模式 'T' 返回執行引用的目標案件 ID (TO_CASEID)。若查無紀錄則返回空字串。"
  },
  {
    "matcher": "Function TCB_IMGPSScanX.FormCode2DocNo(FormCode:String):String;   //FormCode轉Docno",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.entityMapping",
      "轉換區(名稱/格式轉換)"
    ],
    "deps": [],
    "lIndex": "11994",
    "rIndex": "12018",
    "description": "將表單代碼 (FormCode) 轉換為對應的文件編號 (DocNo)。方法遍歷預載的 FormID_List,若找到匹配的表單代碼,則返回 DocNo_List 中相同索引位置的數值。若表單代碼不在清單中(通常為使用者自訂的文件),則預設截取代碼的前 8 位字元作為文件編號返回。"
  },
  {
    "matcher": "Function TCB_IMGPSScanX.DocNo2DocName(CaseID,DocNo:String):String; //Docno轉Doc名稱",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.entityMapping",
      "轉換區(名稱/格式轉換)"
    ],
    "deps": [],
    "lIndex": "12029",
    "rIndex": "12066",
    "description": "解析文件編號對應的描述性名稱。優先權邏輯為:1. 若編號符合附件名稱 (AttName),返回「未歸類」。2. 從系統定義快取 (Doc_Inf_List) 中搜尋對應的描述 (DOC_U_DESC)。3. 若系統定義查無結果,則呼叫 GetCustomDocName 從案件本地的自訂文件設定中尋找對應名稱。此方法確保 UI 上能顯示人類可讀的文件類別名稱。"
  },
  {
    "matcher": "Function TCB_IMGPSScanX.DocNoNeedDiv(DocNo:String):Boolean; //是否是需分份數的文件代號",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.entityMapping",
      "轉換區(名稱/格式轉換)"
    ],
    "deps": [],
    "lIndex": "12100",
    "rIndex": "12112",
    "description": "檢查指定的文件類型是否需要執行頁面拆分(分份數)。方法透過 FindSQLData 在 Doc_Inf_List 中查詢該編號的 'IS_DOC_DIV' 欄位,若旗標值為 'Y' 則返回 True,否則返回 False。此設定決定了掃瞄流程中是否需要根據條碼自動切分文件目錄。"
  },
  {
    "matcher": "Function TCB_IMGPSScanX.OMRCheckCase(CaseID:String):Boolean; //OMR檢核",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.ormRuleEngine",
      "OMR 檢核"
    ],
    "deps": [
      "FileExists",
      "FindPoint",
      "GetSiteOMR",
      "ImageReSize_FormID",
      "ImageResize",
      "LoadFromFile",
      "SaveToFile"
    ],
    "lIndex": "12255",
    "rIndex": "12950",
    "description": "執行案件的自動化 OMR 規則檢核,這是確保掃瞄案件合規性的核心邏輯。程序流程:1. 初始化檢核日誌。2. 識別主文件並驗證必要文件是否缺漏、相依與互斥文件是否衝突、以及表單是否已停用。3. 檢查各文件類型是否超過預設的最大頁數。4. 針對案件內每張影像,執行十字定位點縮放 (ImageReSize_FormID) 後,載入對應表單的 XML 規則檔。5. 執行欄位級檢核,包含必填項 (settype1)、跨文件欄位關聯 (settype3/settype8)、相依文件需求 (settype4) 及備註填寫要求 (settype6) 等。6. 將所有檢核失敗原因紀錄至 Checkerr.ini。最終返回案件是否通過所有檢核規則。"
  },
  {
    "matcher": "Procedure TCB_IMGPSScanX.OMRErr2ini(CaseID,Reason,FileName,Site,RelaFileName,RelaSite,Anchor,Anchor1:String;Del,Ingnore,Display:Boolean); //OMR檢核失敗寫入ini",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.ormRuleEngine",
      "OMR 檢核"
    ],
    "deps": [
      "FileExists",
      "LoadFromFile",
      "SaveToFile"
    ],
    "lIndex": "12951",
    "rIndex": "12990",
    "description": "紀錄 OMR 檢核失敗的詳細資訊。方法根據 Display 旗標決定紀錄方式:若為 True,則在案件目錄下的 Checkerr.ini 中建立新的錯誤序號區段,詳細紀錄失敗原因、檔案路徑、OMR 座標點、關聯檔案及定位點類型,用於後續 UI 呈現;若為 False,則僅將錯誤原因字串附加於 CheckMemo.dat 純文字日誌中,作為背景紀錄之用。"
  },
  {
    "matcher": "Procedure TCB_IMGPSScanX.OMRErrini2List(CaseID:String;ErrlistForm:TErrlistForm); //OMR檢核失敗從ini寫入ListView",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.ormRuleEngine",
      "UIView",
      "UIView.listView",
      "OMR 檢核"
    ],
    "deps": [],
    "lIndex": "12991",
    "rIndex": "13020",
    "description": "將檢核失敗紀錄從 INI 設定檔載入至 UI 介面。方法會讀取 Checkerr.ini,遍歷所有錯誤紀錄,並過濾掉已標記為刪除 (Del) 的項目。將符合條件的錯誤原因填入 ErrlistForm 中的 ListView 元件,供使用者查看與修正。若清單中仍存在錯誤,會同步停用介面上的上傳按鈕以防止不合規案件送出。"
  },
  {
    "matcher": "function TCB_IMGPSScanX.OMRErrini2ListForLog(CaseID: String): String;",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.ormRuleEngine",
      "OMR 檢核"
    ],
    "deps": [
      "LoadFromFile"
    ],
    "lIndex": "13021",
    "rIndex": "13058",
    "description": "彙整系統中所有活動案件的 OMR 檢核錯誤訊息。方法讀取全域的 CaseList.dat,依次遍歷每個案件子目錄下的 Checkerr.ini,收集所有未被移除的錯誤原因,並將其合併為一個完整的文字區塊返回。此功能主要用於產生系統運行日誌,方便追蹤與審查多案件的檢核狀態。"
  },
  {
    "matcher": "Function TCB_IMGPSScanX.CreateDocNo_Info(CaseID:String):String; //產生 DocNo[tab]份數[tab]總頁數[tab]是否異動[換行]DocNo[tab]份數[tab]總頁數[tab]是否異動",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.entityMapping",
      "上傳前置資料產生"
    ],
    "deps": [
      "FileExists",
      "LoadFromFile"
    ],
    "lIndex": "13985",
    "rIndex": "14068",
    "description": "產生案件內標準文件(非自訂)的彙總資訊字串。方法讀取 CaseDocNo.dat,針對每個非 'ZZZZZ' 開頭的文件編號,計算其在案件中的總份數、累計總頁數,並檢查編輯狀態(異動旗標)。結果以「編號[Tab]份數[Tab]頁數[Tab]狀態」的格式逐行組成,作為案件上傳時與伺服器比對資料完整性的核心依據。"
  },
  {
    "matcher": "Function TCB_IMGPSScanX.CreateCustDocNo_Info(CaseID:String):String; //產生自訂文件 DocName[tab]份數[tab]總頁數[tab]是否異動[#13#10]DocName[tab]份數[tab]總頁數[tab]是否異動",
    "tags": [
      "BusinessLogic",
      "BusinessLogic.entityMapping",
      "上傳前置資料產生"
    ],
    "deps": [
      "FileExists",
      "LoadFromFile"
    ],
    "lIndex": "14069",
    "rIndex": "14121",
    "description": "產生案件內自訂文件的彙總資訊字串。方法專門處理代碼開頭為 'ZZZZZ' 的文件目錄,透過 GetCustomDocName 取得使用者定義的文件名稱,並彙整其總份數、總頁數與編輯異動狀態。最終格式與標準文件一致,但首位欄位改為顯示自訂名稱,確保自訂類別的文件也能正確被伺服器識別與儲存。"
  }
]