{ ==============================================================================
|
方法名稱:GetDataDocNoPage
|
引用相依:
|
方法描述:從 DOC_INF_List 資料中查詢特定文件與版本的預設頁數設定。
|
============================================================================== }
|
Function TCB_IMGPSScanX.GetDataDocNoPage(MainDocNo,MainVersion:String):Integer; //取記錄的文件_版本頁數
|
var
|
P : String;
|
begin
|
Result := 0;
|
If FindSQLData(Doc_Inf_List,'FORM_PAGES','DOC_NO,DOC_VERSION',MainDocNo+','+MainVersion,0,FindResult) Then
|
begin
|
P := GetFindResult('FORM_PAGES');
|
if P <> '' then
|
Result := strtoint(P)
|
else
|
Result := 0;
|
end;
|
end;
|
|
|
{ ==============================================================================
|
方法名稱:CheckCaseDocNoPage
|
引用相依:LoadFromFile
|
方法描述:計算案件中特定文件與版本的實際頁數。透過讀取 upload 目錄下的 Context.
|
dat 與 DocDir.dat,精確比對 FormID、DocNo、版本與頁碼索引,並排除入庫狀
|
態影像,回傳符合條件的影像總數。
|
============================================================================== }
|
Function TCB_IMGPSScanX.CheckCaseDocNoPage(CaseID,DocNo,Version:String;Pages:Integer):Integer; //取案件裡的文件_版本頁數
|
var
|
i,n,Count : integer;
|
S, S2 : TStringlist;
|
FormCode,iPage : String;
|
docInt,tempInt:integer;
|
v,v2:integer;
|
begin
|
Count := 0;
|
docInt:=0;
|
tempInt:=0;
|
S := TStringlist.Create;
|
S2 := TStringlist.Create;
|
//ShowMessage('page='+IntToStr(Pages));
|
try
|
S.LoadFromFile(ImageSavePath+CaseID+'\upload\Context.dat');
|
S2.LoadFromFile(ImageSavePath+CaseID+'\upload\DocDir.dat'); //2017 1220 改成只承認第一份的
|
|
for I := 1 to pages do //從0到pages-1 改成 1到pages 20170316 這樣可以修改檢核的頁數問題
|
begin
|
iPage := Add_Zoo(i,2);
|
for n := 0 to S.Count - 1 do
|
begin
|
if (FWH_category='N') and (FIs_In_Wh='Y') then
|
begin
|
if ISExistImg(ImageSavePath+CaseID+'\upload\'+S.Strings[n]) then
|
begin
|
Continue;
|
end;
|
end;
|
|
if (Length(S2.Strings[n])>8) and (Pos(DocNo,S2.Strings[n])<>0) then //2017 1220 改成只承認第一份的
|
begin
|
//LogFile1.LogToFile(logTimeString+'有進'+docno+','+S2.Strings[n]+IntToStr(Pos(DocNo,S2.Strings[n])));
|
v:=Pos('(',S2.Strings[n]);
|
v2:=Pos(')',S2.Strings[n]);
|
tempInt:=StrToInt(Copy(S2.Strings[n],v+1,v2-v-1));
|
|
if docInt=0 then
|
begin
|
docInt:=tempInt;
|
end;
|
if docInt<>tempInt then
|
begin
|
//LogFile1.LogToFile(logTimeString+'docInt='+IntToStr(docInt)+',tempInt='+IntToStr(tempInt));
|
Result := Count;
|
Break;
|
end;
|
end;
|
|
FormCode := FileName2FormCode(S.Strings[n]);
|
//LogFile1.LogToFile(logTimeString+'S.Strings[n]='+S.Strings[n]);
|
//Showmessage('1:'+version+','+FormCode2Version(FormCode)+','+DocNo+','+FormCode2DocNo(FormCode)+','+iPage+','+FormCode2Page(FormCode));
|
//LogFile1.LogToFile(logTimeString+'FormCode='+FormCode);
|
LogFile1.LogToFile(logTimeString+'CheckCaseDocNoPage caseno='+CaseID+','+version+','+FormCode2Version(FormCode)+','+DocNo+','+FormCode2DocNo(FormCode)+','+iPage+','+FormCode2Page(FormCode));
|
//ShowMessage(DocNo+','+IntToStr(docInt)+','+IntToStr(tempInt));
|
//LogFile1.LogToFile(logTimeString+'FormCode='+FormCode);
|
if (version = FormCode2Version(FormCode)) and (DocNo = FormCode2DocNo(FormCode)) and (ipage = FormCode2Page(FormCode)) then
|
begin
|
LogFile1.LogToFile(logTimeString+'CheckCaseDocNoPage caseno='+CaseID+','+version+','+FormCode2Version(FormCode)+','+DocNo+','+FormCode2DocNo(FormCode)+','+iPage+','+FormCode2Page(FormCode));
|
//Showmessage(version+','+DocNo+',iPage='+iPage);
|
//Showmessage(inttostr(Count+1));
|
Inc(Count);
|
Break; //找到了...離開
|
end;
|
end;
|
end;
|
finally
|
S.Free;
|
S2.free;
|
end;
|
Result := Count;
|
end;
|
|
|
{ ==============================================================================
|
方法名稱:FindFormCodePages
|
引用相依:LoadFromFile
|
方法描述:計算案件中特定 FormID 的實際影像總數,可用於檢核。
|
============================================================================== }
|
Function TCB_IMGPSScanX.FindFormCodePages(CaseID,FormCode:String):Integer; //計算案件裡FormID的頁數
|
var
|
i,Count : integer;
|
S : TStringlist;
|
iFormCode : String;
|
begin
|
Count := 0;
|
S := TStringlist.Create;
|
try
|
S.LoadFromFile(ImageSavePath+CaseID+'\upload\Context.dat');
|
for i := 0 to S.Count - 1 do
|
begin
|
if FWH_category='N' then
|
begin
|
if ISExistImg(ImageSavePath+CaseID+'\upload\'+S.Strings[i]) then
|
begin
|
Continue;
|
end;
|
end;
|
iFormCode := FileName2FormCode(S.Strings[i]);
|
if FormCode = iFormCode then
|
begin
|
Inc(Count);
|
end;
|
end;
|
finally
|
S.Free;
|
end;
|
Result := Count;
|
end;
|
|
|
{ ==============================================================================
|
方法名稱:GetDataFormCodePages
|
引用相依:
|
方法描述:查詢特定表單 ID 的最大頁數限制,若未設定則回傳 9999。
|
============================================================================== }
|
Function TCB_IMGPSScanX.GetDataFormCodePages(FormCode:String):Integer; //取記錄的FormcID的頁數
|
begin
|
If FindSQLData(FORM_INF_List,'T1.MAX_PAGE','T1.FORM_ID',FormCode,0,FindResult) Then
|
begin
|
IF GetFindResult('T1.MAX_PAGE') = '' Then
|
Result := 9999
|
Else
|
Result := Strtoint(GetFindResult('T1.MAX_PAGE'));
|
end;
|
end;
|
|
|
{ ==============================================================================
|
方法名稱:GetDocDir_Page
|
引用相依:FileExists, LoadFromFile
|
方法描述:取得特定文件目錄下的影像總頁數。
|
============================================================================== }
|
Function TCB_IMGPSScanX.GetDocDir_Page(CaseID,DocDir:String):Integer;
|
var
|
FileList : TStringlist;
|
begin
|
Result := 0;
|
FileList := TStringlist.Create;
|
try
|
if FileExists(ImageSavePath+CaseID+'\'+DocDir+'\Context.dat') then
|
begin
|
FileList.LoadFromFile(ImageSavePath+CaseID+'\'+DocDir+'\Context.dat');
|
Result := FileList.Count;
|
end;
|
finally
|
FileList.Free;
|
end;
|
end;
|
|
|
{ ==============================================================================
|
方法名稱:GetDocNoCount
|
引用相依:FileExists, LoadFromFile
|
方法描述:統計指定案件中某文件編號(DocNo)的總份數。讀取 CaseDocNo.dat 與 CaseDo
|
cNo_Copies.dat 並累加匹配項目的份數值。
|
============================================================================== }
|
Function TCB_IMGPSScanX.GetDocNoCount(CaseID,DocNo:String):Integer; //取DocNo數量
|
var
|
i : Integer;
|
Doc_Ct:Integer;
|
iDocNo : String;
|
DocNoList,DocNo_CopiesList : TStringlist;
|
begin
|
DocNoList := TStringlist.Create;
|
DocNo_CopiesList := TStringlist.Create;
|
try
|
if FileExists(ImageSavePath+CaseID+'\CaseDocNo.dat') then
|
begin
|
DocNoList.LoadFromFile(ImageSavePath+CaseID+'\CaseDocNo.dat');
|
DocNo_CopiesList.LoadFromFile(ImageSavePath+CaseID+'\CaseDocNo_Copies.dat');
|
end;
|
Doc_Ct := 0;
|
for i := 0 to DocNoList.Count - 1 do
|
begin
|
iDocNo := DocNoDir2DocNo(DocNoList.Strings[i]);
|
if iDocNo = DocNo then
|
Doc_Ct := Doc_Ct + strtoint(DocNo_CopiesList.Strings[i]);
|
end;
|
Result := Doc_Ct;
|
// Showmessage(DocNo+#13+inttostr(Doc_Ct));
|
finally
|
DocNoList.Free;
|
DocNo_CopiesList.Free;
|
end;
|
end;
|
|
|
{ ==============================================================================
|
方法名稱:GetDocDirCopies
|
引用相依:FileExists, LoadFromFile
|
方法描述:取得特定文件目錄(DocDir)目前的份數設定。
|
============================================================================== }
|
Function TCB_IMGPSScanX.GetDocDirCopies(CaseID,DocDir:String):Integer; //取DocDir數量
|
var
|
i : Integer;
|
DocNoList,DocNo_CopiesList : TStringlist;
|
begin
|
Result := 1; //預設回傳1 //20140521 由0改成1
|
DocNoList := TStringlist.Create;
|
DocNo_CopiesList := TStringlist.Create;
|
try
|
if FileExists(ImageSavePath+CaseID+'\CaseDocNo.dat') then
|
DocNoList.LoadFromFile(ImageSavePath+CaseID+'\CaseDocNo.dat');
|
|
if FileExists(ImageSavePath+CaseID+'\CaseDocNo_Copies.dat') then
|
begin
|
DocNo_CopiesList.LoadFromFile(ImageSavePath+CaseID+'\CaseDocNo_Copies.dat');
|
for i := 0 to DocNoList.Count - 1 do
|
begin
|
if (DocDir = DocNoList.Strings[i]) and (i <= DocNo_CopiesList.Count-1) then
|
begin
|
Result := strtoint(DocNo_CopiesList.Strings[i]);
|
Break;
|
end;
|
end;
|
end;
|
finally
|
DocNoList.Free;
|
DocNo_CopiesList.Free;
|
end;
|
end;
|
|
|
{ ==============================================================================
|
方法名稱:SetDocDirCopies
|
引用相依:FileExists, LoadFromFile, SaveToFile
|
方法描述:修改並儲存特定文件目錄的份數設定至 CaseDocNo_Copies.dat。
|
============================================================================== }
|
Procedure TCB_IMGPSScanX.SetDocDirCopies(CaseID,DocDir:String;NewCopies:Integer); //修改DocDir份數
|
var
|
i : Integer;
|
DocNoList,DocNo_CopiesList : TStringlist;
|
begin
|
DocNoList := TStringlist.Create;
|
DocNo_CopiesList := TStringlist.Create;
|
try
|
if FileExists(ImageSavePath+CaseID+'\CaseDocNo.dat') then
|
begin
|
DocNoList.LoadFromFile(ImageSavePath+CaseID+'\CaseDocNo.dat');
|
DocNo_CopiesList.LoadFromFile(ImageSavePath+CaseID+'\CaseDocNo_Copies.dat');
|
end;
|
for i := 0 to DocNoList.Count - 1 do
|
begin
|
if DocDir = DocNoList.Strings[i] then
|
begin
|
DocNo_CopiesList.Strings[i] := inttostr(NewCopies);
|
DocNo_CopiesList.SaveToFile(ImageSavePath+CaseID+'\CaseDocNo_Copies.dat');
|
Break;
|
end;
|
end;
|
finally
|
DocNoList.Free;
|
DocNo_CopiesList.Free;
|
end;
|
end;
|
|
|
{ ==============================================================================
|
方法名稱:GetDocDirCopies_Rec
|
引用相依:
|
方法描述:從 FOldCaseInfo 記錄字串中解析並取得特定文件目錄在舊案中的份數。支援
|
自定義文件名稱與一般文件編號的匹配。
|
============================================================================== }
|
Function TCB_IMGPSScanX.GetDocDirCopies_Rec(Path,CaseID,DocDir:String):Integer; //取記錄裡的DocDir份數
|
var
|
i,n,v,v1 : Integer;
|
OldCaseInfoList,Caseinfolist : TStringlist;
|
iCaseID,Year,iBS_No,iIS_Old,iDocNo,iCopies:String;
|
begin
|
Result := 1;
|
OldCaseInfoList := TStringlist.Create;
|
Caseinfolist := TStringlist.Create;
|
try
|
//OldCaseInfoList 案件編號@#,年度@#,業務別@#,是否舊件@#,Data@#,Verify@#,文件編號[份數]@#,文件編號[份數] tab 案件編號@#,年度@#,業務別@#,是否舊件@#,Data@#,Verify@#,文件編號[份數]@#,文件編號[份數]
|
OldCaseInfoList.StrictDelimiter := true;
|
OldCaseInfoList.Delimiter := #9;
|
OldCaseInfoList.DelimitedText := FOldCaseInfo;
|
|
for i := 0 to OldCaseInfoList.Count - 1 do
|
begin
|
Caseinfolist:=SplitString('@#,',OldCaseInfoList.Strings[i]);
|
//Caseinfolist.Delimiter := '_';
|
//Caseinfolist.DelimitedText := OldCaseInfoList.Strings[i];
|
iCaseID := Caseinfolist.Strings[0];
|
Year := Caseinfolist.Strings[1];
|
iBS_No := Caseinfolist.Strings[2];
|
iIS_Old := Caseinfolist.Strings[3];
|
if CaseID = iCaseID then
|
begin
|
for n := 6 to Caseinfolist.Count - 1 do
|
begin
|
v := Pos('[',Caseinfolist.Strings[n]);
|
v1 := Pos(']',Caseinfolist.Strings[n]);
|
iDocNo := Copy(Caseinfolist.Strings[n],1,v-1);
|
iCopies := Copy(Caseinfolist.Strings[n],v+1,v1-v-1);
|
if Copy(DocDir,1,5) = 'ZZZZZ' then
|
begin
|
if iDocNo = GetCustomDocName(Path,DocDir) then
|
Result := strtoint(iCopies);
|
end
|
else
|
begin
|
if iDocNo = DocNoDir2DocNo(DocDir) then
|
Result := strtoint(iCopies);
|
end;
|
end;
|
|
end;
|
end;
|
finally
|
OldCaseInfoList.Free;
|
Caseinfolist.Free;
|
end;
|
end;
|
|
|
{ ==============================================================================
|
方法名稱:GetDocNoEdit
|
引用相依:FileExists, LoadFromFile
|
方法描述:檢查指定文件是否被異動。程序會載入已編輯目錄清單,並與原始的文件代號/
|
名稱清單(FC_DocNoList)進行比對。若文件代號或名稱不在原始清單中,或存在
|
於已編輯清單內,則判定該文件已被異動並回傳 "Y"。
|
============================================================================== }
|
Function TCB_IMGPSScanX.GetDocNoEdit(CaseID,DocNo,DocName:String):String; //取出DocNo是否被異動 (Y/N)
|
var
|
i : Integer;
|
EditedDocDirList : TStringlist;
|
C_DocNoList,C_DocNameList : TStringlist;
|
begin
|
Result := 'N';
|
EditedDocDirList := TStringlist.Create;
|
C_DocNoList := TStringlist.Create;
|
C_DocNameList := TStringlist.Create;
|
try
|
if FileExists(ImageSavePath+CaseID+'\EditedDocDir.dat') then
|
EditedDocDirList.LoadFromFile(ImageSavePath+CaseID+'\EditedDocDir.dat');
|
C_DocNoList.StrictDelimiter := True;
|
C_DocNoList.Delimiter := #9;
|
C_DocNoList.DelimitedText := FC_DocNoList;
|
C_DocNameList.StrictDelimiter := True;
|
C_DocNameList.Delimiter := #9;
|
C_DocNameList.DelimitedText := FC_DocNameList;
|
|
//Showmessage(C_DocNoList.Text);
|
if (DocName = '') and (C_DocNoList.IndexOf(DocNo)=-1 ) then
|
Result := 'Y';
|
if (DocName <> '') and (C_DocNameList.IndexOf(DocName)=-1) then
|
Result := 'Y';
|
for i := 0 to EditedDocDirList.Count - 1 do
|
begin
|
if (DocNo = DocNoDir2DocNo(EditedDocDirList.Strings[i])) then
|
begin
|
Result := 'Y';
|
Break;
|
end;
|
end;
|
finally
|
EditedDocDirList.Free;
|
C_DocNoList.Free;
|
C_DocNameList.Free;
|
end;
|
end;
|
|
|
{ ==============================================================================
|
方法名稱:GetDocNo_Count
|
引用相依:LoadFromFile
|
方法描述:計算指定文件代號在案件中的份數。若文件不需分組則直接回傳 1。否則,遍歷
|
影像清單(Context.dat),根據檔案名稱解析出的頁碼是否為第一頁("01")來累
|
計該文件的份數。
|
============================================================================== }
|
Function TCB_IMGPSScanX.GetDocNo_Count(Path,DocNo:String):Integer; //取出文件份數
|
var
|
i : Integer;
|
iCopys : integer;
|
S,S1 : TStringlist;
|
iFormID : String;
|
DocFirst : Boolean;
|
begin
|
Result := 0;
|
if not DocnoNeedGroup(DocNo) then
|
begin
|
Result := 1;
|
Exit;
|
end;
|
|
S := TStringlist.Create;
|
S1 := TStringlist.Create;
|
try
|
S.LoadFromFile(Path+'Context.dat');
|
S1.LoadFromFile(Path+'Context_DocNo.dat');
|
iCopys := 0;
|
|
for i := 0 to S.Count - 1 do
|
begin
|
iFormID := FileName2FormCode(S.Strings[i]);
|
DocFirst := False;
|
if FormCode2Page(iFormID) = '01' then
|
DocFirst := True;
|
if ((iCopys = 0) or DocFirst) and (Docno = S1.Strings[i]) then
|
begin
|
inc(iCopys);
|
end;
|
end;
|
Result := iCopys;
|
finally
|
S.Free;
|
S1.Free;
|
end;
|
end;
|
|
|
{ ==============================================================================
|
方法名稱:GetDocNo_Page
|
引用相依:LoadFromFile
|
方法描述:計算指定文件代號在案件中擁有的總影像頁數。遍歷影像對應的文件清單(Cont
|
ext_DocNo.dat),統計與傳入代號相符的項目數量。
|
============================================================================== }
|
Function TCB_IMGPSScanX.GetDocNo_Page(Path,DocNo:String):Integer; //取出文件總頁數
|
var
|
i : Integer;
|
ipages : integer;
|
S,S1 : TStringlist;
|
begin
|
Result := 0;
|
S := TStringlist.Create;
|
S1 := TStringlist.Create;
|
try
|
S.LoadFromFile(Path+'Context.dat');
|
S1.LoadFromFile(Path+'Context_DocNo.dat');
|
iPages := 0;
|
for i := 0 to S.Count - 1 do
|
begin
|
if Docno = S1.Strings[i] then
|
begin
|
inc(iPages);
|
end;
|
end;
|
Result := ipages;
|
finally
|
S.Free;
|
S1.Free;
|
end;
|
end;
|
|
|
{ ==============================================================================
|
方法名稱:FormIDExists
|
引用相依:
|
方法描述:檢查指定的表單代碼(FormID)是否存在於系統資料庫中。支援日期檢核模式:若
|
啟用,則會進一步查詢該表單所屬文件的起迄效期(START_DATE, STOP_DATE),
|
並與伺服器當前日期比對,確保表單仍在有效期限內。
|
============================================================================== }
|
Function TCB_IMGPSScanX.FormIDExists(FormCode:String;CheckDate:Boolean;index:Integer):Boolean; //檢查FormID是否存在
|
var
|
STDate,SPDate : String;
|
Docno,Version : String;
|
begin
|
Result := False;
|
If FormCode = '' then //附件不檢查
|
begin
|
Result := True;
|
Exit;
|
end;
|
if CheckDate then //要檢查日期
|
begin
|
STDate := '00000000'; //沒設定
|
SPDate := '99999999'; //沒設定
|
|
IF FindSQLData(FORM_INF_List,'T1.FORM_ID,T1.DOC_NO','T1.FORM_ID',FormCode,index,FindResult) then
|
begin
|
DocNo := GetFindResult('T1.DOC_NO');
|
Version := FormCode2Version(FormCode);
|
if FindSQLData(Doc_Inf_List,'START_DATE,STOP_DATE','DOC_NO,DOC_VERSION',DocNo+','+Version,0,FindResult) then
|
begin
|
Result := True;
|
STDate := GetFindResult('START_DATE');
|
SPDate := GetFindResult('STOP_DATE');
|
if STDate = '' then STDate := '00000000'; //沒設定
|
if SPDate = '' then SPDate := '99999999'; //沒設定
|
if (ServerDate < STDate) or (ServerDate > SPDate) then
|
Result := False;
|
end;
|
end;
|
end
|
Else
|
begin
|
Result := FindSQLData(FORM_INF_List,'T1.FORM_ID','T1.FORM_ID',FormCode,index,FindResult);
|
end;
|
end;
|
|
|
{ ==============================================================================
|
方法名稱:Case_DocNoExists
|
引用相依:LoadFromFile
|
方法描述:檢查指定的文件代號是否存在於特定案件的 Context.dat 影像清單中。
|
============================================================================== }
|
Function TCB_IMGPSScanX.Case_DocNoExists(CaseID,Docno:String):Boolean; //Docno是否存在案件裡
|
var
|
i : Integer;
|
S : TStringlist;
|
iDocNo : String;
|
begin
|
Result := False;
|
S := TStringlist.Create;
|
try
|
S.LoadFromFile(ImageSavePath + CaseID+'\Context.dat');
|
for i := 0 to S.Count - 1 do
|
begin
|
iDocNo := FormCode2DocNo(FileName2FormCode(S.Strings[i]));
|
if Docno = iDocNo then
|
begin
|
Result := True;
|
Break;
|
end;
|
end;
|
finally
|
S.Free;
|
end;
|
|
end;
|