| | |
| | | ```mermaid |
| | | graph TD |
| | | Start([開始 OMRCheckCase]) --> Init[刪除舊日誌/初始化變數] |
| | | Init --> GetMainID[獲取 MainFormID] |
| | | flowchart TD |
| | | Start([開始 OMRCheckCase]) --> Init[刪除暫存檔並初始化變數] |
| | | Init --> GetMainID[取得主文件 ID] |
| | | |
| | | GetMainID --> MainCheck{MainFormID 是否存在?} |
| | | MainCheck -- 否 --> Phase2[進入檔案清單檢查] |
| | | MainCheck -- 是 --> CheckDep[檢查主要文件頁數 / 相依文件 / 互斥文件] |
| | | GetMainID --> CaseMain{主文件 ID 是否存在?} |
| | | |
| | | CheckDep --> Phase2 |
| | | Phase2 --> LoopContext[遍歷 Context.dat 檢查停用文件] |
| | | CaseMain -- 是 --> CheckMajor[執行主要文件頁數檢核] |
| | | CheckMajor --> CheckDeps[執行相依與互斥文件檢核] |
| | | CheckDeps --> CheckDisabled |
| | | |
| | | LoopContext --> MaxPage[檢查各表單是否超過最大頁數] |
| | | MaxPage --> LoopOMRFiles{遍歷 OMRFileList 進行欄位檢核} |
| | | CaseMain -- 否 --> CheckDisabled[檢查所有表單是否停用] |
| | | |
| | | LoopOMRFiles -- 每張影像 --> Resize[執行十字定位縮放 ImageReSize_FormID] |
| | | Resize --> LoadXML[載入對應 XML 規則] |
| | | CheckDisabled --> MaxPage[檢查表單最大頁數限制] |
| | | MaxPage --> LoopFiles[遍歷 OMRFileList] |
| | | |
| | | LoadXML --> CheckField1[Type 1: 必填欄位檢核] |
| | | CheckField1 --> CheckField3[Type 3: 關聯欄位檢核] |
| | | CheckField3 --> CheckField8[Type 8: 互斥填寫檢核] |
| | | CheckField8 --> CheckField4[Type 4: 欄位有值附文件檢核] |
| | | CheckField4 --> CheckField5[Type 5: 欄位有值不附文件檢核] |
| | | CheckField5 --> CheckField6[Type 6: 欄位有值寫備註檢核] |
| | | CheckField6 --> SaveValue[Type 7: OMR 帶值處理] |
| | | LoopFiles --> Resize[影像十字定位點縮放] |
| | | Resize --> LoadRules[載入對應 XML 規則檔] |
| | | |
| | | SaveValue --> NextOMRFile[下一個影像] |
| | | NextOMRFile --> LoopOMRFiles |
| | | LoadRules --> Rule1[必填欄位檢核 settype1] |
| | | Rule1 --> Rule3[相關欄位關聯檢核 settype3] |
| | | Rule3 --> Rule8[互斥欄位關聯檢核 settype8] |
| | | Rule8 --> Rule4[相依文件檢核 settype4] |
| | | Rule4 --> Rule5[互斥文件檢核 settype5] |
| | | Rule5 --> Rule6[備註檢核 settype6] |
| | | Rule6 --> Rule7[OMR 帶值處理 settype7] |
| | | |
| | | LoopOMRFiles -- 結束 --> Finish([返回 CaseOk 結果]) |
| | | Rule7 --> NextFile[下一張影像] |
| | | NextFile --> LoopFiles |
| | | |
| | | LoopFiles -- 遍歷結束 --> FinalResult[返回 CaseOk 結果] |
| | | FinalResult --> End([結束]) |
| | | ``` |