From c2ca52370281338f658b7fae6d30f418dfda4d35 Mon Sep 17 00:00:00 2001
From: doom4ster <doom4ster@gmail.com>
Date: 星期四, 16 三月 2017 03:14:29 +0800
Subject: [PATCH] 重覆3/6到3/15做的事情

---
 CB_IMGPSScanImp.pas |  179 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 159 insertions(+), 20 deletions(-)

diff --git a/CB_IMGPSScanImp.pas b/CB_IMGPSScanImp.pas
index 898293d..9b04af0 100644
--- a/CB_IMGPSScanImp.pas
+++ b/CB_IMGPSScanImp.pas
@@ -404,6 +404,8 @@
     FFileSizeLimit:integer;//匯入單一檔案大小限  依業務別決定  以KB為單位  預設5*1024kb
     FCaseNoLength:integer;//案件編號長度檢查  依業務別決定   無預設  一定要傳入
     FImgDelete:string; // Y/N  有權限可在補件時刪除影像
+    FIsExternal:string;//Y/N
+    FCheck_main_form:string; //Y/N
     ////////傳入參數///////
 
     //********Http參數********
@@ -479,6 +481,8 @@
     NowShowFileList : TStringlist;  //目前顯示的影像清單
     NowSelectFileList : TStringlist; //目前被點選的影像清單
     GuideFormIDList : TStringlist; //要當導引頁表單清單
+    LastInitFormidList:TStringList;
+    LastAddFormidList:TstringList;
     //********清單區********
 
     //********顯示區********
@@ -820,6 +824,7 @@
     procedure PaintEvent(Sender: TObject);
     function GetCurrentVersionNo: String;
     procedure initParameter;
+    procedure LastInitFormidListCreate(path:string);
   protected
     { Protected declarations }
     procedure DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage); override;
@@ -935,6 +940,10 @@
     procedure Set_scancolor(const Value: WideString); safecall;
     function Get_imgdelete: WideString; safecall;
     procedure Set_imgdelete(const Value: WideString); safecall;
+    function Get_check_main_form: WideString; safecall;
+    function Get_isExternal: WideString; safecall;
+    procedure Set_check_main_form(const Value: WideString); safecall;
+    procedure Set_isExternal(const Value: WideString); safecall;
   public
     { Public declarations }
     procedure Initialize; override;
@@ -1544,6 +1553,9 @@
   Cust_DocNoList.Free; //自行定義文件名稱
   IN_WH_DocNoList.Free; //入庫的文件清單
   GuideFormIDList.Free; //要當導引頁表單清單
+
+  LastInitFormidList.Free;
+  LastAddFormidList.Free;
   //********清單區********
   if FEvents <> nil then FEvents.OnDestroy;
 end;
@@ -3355,13 +3367,14 @@
       Showmessage(Format(_Msg('FormID:%s尚未註冊'),[SampleFormID]));
       Panel1.Enabled := True;
       Panel2.Enabled := True;
+      DataLoading(false,false);
       Exit;
     end;
     SampleAnchorMode := FormID2Anchor(SampleFormID);
 
     Panel1.Enabled := False;
     Panel2.Enabled := False;
-
+//ShowMessage('AAAAA');
     Try
       StatrTwainScan;
     Except
@@ -5455,6 +5468,12 @@
   Doc_Data,Doc_Data1 : String;
   In_Doc1,In_Doc2 : String;
   AttachYN : String; //是否有附件 Y:有 N:沒有
+
+  ST1,ST2:TStringList;
+  str1,str2:String;
+  must_formidStr :string;
+  last_add_formidstr :string;
+  casepath:String;
 begin
   Result := True;
   TransName := CaseID;
@@ -5500,13 +5519,71 @@
 //ShowMessage('DDDDDDDDDD');
   //LoanDoc := 'Y';
   //產生遮罩影像
-  if FWork_No = 'CW' then
-    HaveMask := Case2Mask(Path,MaskPath);
+//  if FWork_No = 'CW' then
+//    HaveMask := Case2Mask(Path,MaskPath);
   //產生遮罩影像
  // S := S +#13+'5-->'+ Timetostr(now);
 
+  ///////必要formid 20170315 start  //////////////////////////////
+  must_formidStr:='';
+  last_add_formidstr:='';
+  ST1:=TStringList.Create;
+  ST1.LoadFromFile(path+'FormCode_Name.dat');
+//ShowMessage(ST1.Text);
+  ST2:=TStringList.Create;
 
-//ShowMessage('壓縮前');
+  for I := 0 to ST1.Count - 1 do
+  begin
+    if (Pos('_',St1.Strings[i])<>1) and (Pos('_',St1.Strings[i])<>-11) then
+    begin
+      str1:=Copy(ST1.Strings[i],1,Pos('_',St1.Strings[i])-1);
+      if ST2.IndexOf(str1) = -1 then
+      begin
+        ST2.Add(str1);
+        must_formidStr:= must_formidStr+str1+'@#,';
+      end;
+    end;
+  end;
+  must_formidStr:=Copy(must_formidStr,1,Length(must_formidStr)-3) ;
+  for I := 0 to LastInitFormidList.Count - 1 do
+  begin
+    if ST2.IndexOf(LastInitFormidList.Strings[i]) <> -1 then
+    begin
+      ST2.Delete(ST2.IndexOf(LastInitFormidList.Strings[i]));
+    end;
+  end;
+  for I := 0 to ST2.Count - 1 do
+  begin
+    if i <> ST2.Count then
+    begin
+      last_add_formidstr:=last_add_formidstr+ST2.Strings[i]+'@#,';
+    end
+    else
+    begin
+      last_add_formidstr:=last_add_formidstr+ST2.Strings[i]
+    end;
+  end;
+  ST1.Free;
+  ST2.Free;
+  ///////必要formid 20170315 end //////////////////////////
+
+  ///保留外部影像  start///////////////////////////////
+  casepath:= Copy(Path,1,pos('Upload',path)-1);
+//ShowMessage('casepath='+casepath);
+//FIsExternal:='Y';
+  if (FMode='ESCAN') and (FIsExternal='Y') then
+  begin
+    if FileExists(casepath+'Download\FirstImg.zip') then
+    begin
+      CopyFile(PWChar(casepath+'Download\FirstImg.zip'),PWChar(path+'FirstImg.zip'),false);
+    end
+    else
+    begin
+      CopyFile(PWChar(casepath+'Download\'+CaseID+'.zip'),PWChar(path+'FirstImg.zip'),false);
+    end;
+  end;
+  ///保留外部影像  end///////////////////////////////
+
   //////壓檔/////
   ZipMainFile(Path,Path,'Img.zip');
   if HaveMask then
@@ -5521,9 +5598,12 @@
   +'&doc_data='+HTTPEncode(UTF8Encode(Doc_Data))
   +'&doc_data1='+HTTPEncode(UTF8Encode(Doc_Data1))
   +'&attach='+AttachYN
+  +'&must_formid='+must_formidStr  //擁有的 formid
+  +'&last_add_formid='+last_add_formidstr   //當次新加的 formid
   +'&in_doc1='+HTTPEncode(UTF8Encode(In_Doc1))
   +'&in_doc2='+HTTPEncode(UTF8Encode(In_Doc2));
-
+//ShowMessage('SendData='+SendData);
+//exit;
   if not upFile(HTTPSClient,FUrl,'service/imgpsc/IMGPSC02/caseupload',SendData,'file',Path+'Img.zip',FReWrite,Memo1,False) then
   begin
     Showmessage(Format(_Msg('傳送案件編號(%s)檔案時,網路發生錯誤!!'+_Msg('錯誤代碼:')),[CaseID])+Inttostr(HttpError.HttpErrorCode)+' '+HttpError.HttpReason);
@@ -5782,7 +5862,7 @@
   EnCodeDateTime := En_DecryptionStr_Base64('E',ServerDate+GetBalance2Time(Balance),Mpskey);
   ///service/slic/SLIC04/case?data=&verify=&case_no=&file=
   SendData := 'data='+HTTPEncode(UTF8Encode(FData))+'&verify='+FVerify+'&case_no='+CaseID+'&file=';
-ShowMessage(SendData);
+//ShowMessage(SendData);
   if not dnFile_Get(HTTPSClient,Furl,'service/imgpsc/IMGPSC04/case',SendData,Path+CaseID+'.zip',FReWrite,Memo1,False,DownImgStatus) then
   begin
     HttpErrStr := _Msg('錯誤代碼:')+Inttostr(HttpError.HttpErrorCode)+' '+HttpError.HttpReason;
@@ -5801,7 +5881,7 @@
     Result := False;
     Exit;
   end;
-ShowMessage('sssss');
+//ShowMessage('sssss');
   AttPath := Path + 'AttFile\';
   if FileExists(Path+CaseID+'.zip') then
   begin
@@ -7017,6 +7097,12 @@
     if FileExists(SoPath+'UseCase.ini') then
       ZipfileList.Add(SoPath+'UseCase.ini');
 
+    if FileExists(SoPath+'FirstImg.zip') then//20170315 加的
+    begin
+      ZipfileList.Add(SoPath+'FirstImg.zip');
+    end;
+
+
     ExeCuteZip(DePath+ZipName,SoPath,ZipFileList,False,False);
     //Showmessage('111');
   finally
@@ -7972,6 +8058,30 @@
   iDocNoList.Free;
   OldCaseInfoForm.Free;
   end;
+end;
+
+procedure TCB_IMGPSScanX.LastInitFormidListCreate(path: string);
+var
+  i:integer;
+  ST1:TStringList;
+  str1:string;
+begin
+//ShowMessage('path='+path);
+  ST1:=TStringList.Create;
+  ST1.LoadFromFile(path+'FormCode_Name.dat');
+  for I := 0 to ST1.Count - 1 do
+  begin
+    if (Pos('_',St1.Strings[i])<>1) and (Pos('_',St1.Strings[i])<>-11) then
+    begin
+      str1:=Copy(ST1.Strings[i],1,Pos('_',St1.Strings[i])-1);
+      if LastInitFormidList.IndexOf(str1) = -1 then
+      begin
+        LastInitFormidList.Add(str1);
+      end;
+    end;
+  end;
+
+  ST1.Free;
 end;
 
 procedure TCB_IMGPSScanX.LoadImgFile;  //載入新件及替換件
@@ -10365,15 +10475,20 @@
         begin
 
         end;
+//ShowMessage('MainFormID='+MainFormID);
         if MainFormID = ''then
         begin
-          //20131203 yuu說不檢查這個,先拿掉
-          {if FMode <> 'SSCAN' then  //簽署章件會換主FormID,先跳過
+          //20131203 yuu說不檢查這個,先拿掉   20170315 楷琳說未歸類要擋
+          if FCheck_main_form='Y' then
           begin
-            ErrStr:=_Msg('找不到分案文件');   //找不到主文件
-            OMRErr2ini(CaseID,ErrStr,'','','','','','',False,False,True);
-            CaseOk := false;
-          end;}
+            if (FMode <> 'SSCAN') and (Fmode <> 'ESCAN') then  //簽署章件會換主FormID,先跳過
+            begin
+              ErrStr:=_Msg('找不到分案文件');   //找不到主文件
+              OMRErr2ini(CaseID,ErrStr,'','','','','','',False,False,True);
+              CaseOk := false;
+            end;
+          end;
+
         end
         Else
         begin
@@ -12785,7 +12900,7 @@
   PageLVclear := True;
   InitialOk := False;
 
-  FMode := 'DSCAN' ;
+  //FMode := 'DSCAN' ;
   //FIs_In_Wh := 'Y';
   if FIs_In_Wh = 'Y' then
     AttName := 'Attach'  //入庫附件
@@ -12886,6 +13001,8 @@
   Cust_DocNoList := TStringlist.Create; //自行定義的文件名稱
   IN_WH_DocNoList := TStringlist.Create; //入庫的文件清單
   GuideFormIDList := TStringlist.Create; //要當導引頁表單清單
+  LastInitFormidList :=TStringList.Create;
+  LastAddFormidList := TStringList.Create;
   //********清單區********
 
   ShowText := _Msg('資料載入中,請稍候');
@@ -13057,6 +13174,7 @@
 //        //LoadImgFile;
 //      end;
       Create_Cust_DocDir(FCaseID); //產生外面傳入的文件
+      LastInitFormidListCreate(ImageSavePath+FCaseID+'\Download\');
     end;
   end;
 
@@ -13188,12 +13306,6 @@
       s.Free;
       end;
     end;}
-
-    //*******DOC必要文件檢核應該寫在這邊 START 20170222 ************
-    //DocDir.dat 會含有DOC列表  所以上傳前要給檢查  有沒有少必要的DOC
-    //並檢查 DOC 中 有沒有影像
-
-    //*******DOC必要文件檢核應該寫在這邊 END************
     if (FMode = 'NSCAN') then
     begin
       /////訊問是否可上傳/////
@@ -13269,6 +13381,13 @@
 
   LoadImgFile;
   if (FMode = 'ESCAN') and (SuccessCount = 1) then
+  begin
+    if FEvents <> nil Then
+    begin
+      FEvents.OnClosePage;
+    end;
+  end;
+  if (FMode = 'DSCAN') and (SuccessCount = 1) then
   begin
     if FEvents <> nil Then
     begin
@@ -14086,7 +14205,27 @@
 
 procedure TCB_IMGPSScanX.Set_imgdelete(const Value: WideString);
 begin
+  FImgDelete:=Value;
+end;
 
+function TCB_IMGPSScanX.Get_check_main_form: WideString;
+begin
+
+end;
+
+function TCB_IMGPSScanX.Get_isExternal: WideString;
+begin
+
+end;
+
+procedure TCB_IMGPSScanX.Set_check_main_form(const Value: WideString);
+begin
+  FCheck_main_form := Value;
+end;
+
+procedure TCB_IMGPSScanX.Set_isExternal(const Value: WideString);
+begin
+  FIsExternal:=Value;
 end;
 
 initialization

--
Gitblit v1.8.0