doom4ster
2017-06-27 a57c1e93c86fe03088296e87f2ebc0a92a3fa2b7
CB_IMGPSScanImp.pas
@@ -481,8 +481,10 @@
    NowShowFileList : TStringlist;  //目前顯示的影像清單
    NowSelectFileList : TStringlist; //目前被點選的影像清單
    GuideFormIDList : TStringlist; //要當導引頁表單清單
    DivPageFormIDList:TStringlist; //要當分案頁表單清單
    LastInitFormidList:TStringList;
    LastAddFormidList:TstringList;
    SampleFormIDList:TStringList; //20170627 已存在範本的formid
    //********清單區********
    //********顯示區********
@@ -554,6 +556,7 @@
    Has_Authorize :String; //是否有授權書影像
    AttName : String; //未歸類目錄名稱
    NowGuideFormID : String;
    NowDivPageFormID:String;
    FirstDocDir : String;
@@ -676,7 +679,7 @@
    Function FindFormCodePages(CaseID,FormCode:String):Integer;  //計算案件裡FormID的頁數
    Function GetDataFormCodePages(FormCode:String):Integer;   //取記錄的FormcID的頁數
    Procedure CaseReSize(CaseID:String); //案件的影像縮放
    Procedure ImageReSize(CaseID,FileName:String);  //依十字定位點做縮放
    Procedure ImageReSize_FormID(CaseID,FileName:String);  //依十字定位點做縮放
    Procedure ImageReSize_tmp(FormID,FileName:String);  //依十字定位點做縮放(暫存檔)
    Function TransCaseID(Path,CaseID:String;MainCase:Boolean):Boolean; //傳送案件
    Procedure NewTreeNodeRefresh;
@@ -827,6 +830,8 @@
    procedure initParameter;
    procedure LastInitFormidListCreate(path:string);
    function checkFormCodeIsCustom(path,formcode:string):boolean;
    function ISDivPageFormID(FormID: String): Boolean;
    function GetSampleInf: Boolean;
  protected
    { Protected declarations }
    procedure DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage); override;
@@ -1555,9 +1560,10 @@
  Cust_DocNoList.Free; //自行定義文件名稱
  IN_WH_DocNoList.Free; //入庫的文件清單
  GuideFormIDList.Free; //要當導引頁表單清單
  DivPageFormIDList.Free; //要當分案頁表單清單
  LastInitFormidList.Free;
  LastAddFormidList.Free;
  SampleFormIDList.Free;
  //********清單區********
  if FEvents <> nil then FEvents.OnDestroy;
end;
@@ -2155,6 +2161,7 @@
      TreeView1click(nil);
      FirstDocDir := '';
      NowGuideFormID := '';
      NowDivPageFormID :='';
      AddScanBtnclick(nil);
    end;
  end
@@ -2170,6 +2177,7 @@
    ScanPath := '';
    ScanCaseno := '';
    NowGuideFormID := '';
    NowDivPageFormID :='';
    ClearView(1);
    ContextList.Clear;
    Try
@@ -3372,6 +3380,7 @@
var
  SampleFormID : String;
  SendData : String;
  buttonSelected : Integer;
begin
  ScanMode := smSample;
  ClearView(1);
@@ -3384,6 +3393,19 @@
  ShowText := _Msg('範本掃描中,請稍候');
  DataLoading(True,True);
  SampleFormID := UpperCase(InputBox(_Msg('範本檔掃瞄輸入畫面'),_Msg('請輸入文件編號'),''));
  if SampleFormIDList.IndexOf(SampleFormID)<>-1 then
  begin
    // Show a custom dialog
    buttonSelected := messagedlg(SampleFormID+'已有範本,是否取代?',mtCustom,
                                [mbYes,mbCancel], 0);
    if buttonSelected = mrCancel then
    begin
      DataLoading(false,false);
      Exit;
    end;
  end;
  if SampleFormID <> '' then
  begin
    if FormIDExists(SampleFormID,False,0) then
@@ -3696,6 +3718,10 @@
  ShowMessage('MEMO_INF_List='+MEMO_INF_List.Text)         ;
  ShowMessage('WORK_INF_List='+WORK_INF_List.Text)          ;
  ShowMessage('LASTEST_FORM_INF_List='+LASTEST_FORM_INF_List.Text)   ;
  ShowMessage('SampleFormIDList='+SampleFormIDList.Text);
//  SampleFormIDList.Add('31A00101011706A');
//  SampleFormIDList.Add('31A00101021706A');
//  SampleFormIDList.Add('31A00101031706A');
end;
procedure TCB_IMGPSScanX.StatrTwainScan;
@@ -4019,8 +4045,13 @@
          if FormID = '' then
          begin
            FormID := BarCode2FormID; //取出FormID
          end;
          if (FormID <> '') and ISDivPageFormID(FormID) then
          begin
            NowDivPageFormID := FormID;
          end;
          if (FormID <> '') and ISGuideFormID(FormID) then
          begin
            NowGuideFormID := FormID;
@@ -4030,7 +4061,7 @@
            FormID := NowGuideFormID;
          DocNo := FormCode2DocNo(FormID);
//ShowMessage('FormID='+FormID);
          if (FormID <>'') and FindDivFormCode(FormID) and (NowGuideFormID <> '')  Then  //只找分案頁上的案件條碼
          if (FormID <>'') and FindDivFormCode(FormID) and (NowDivPageFormID <> '')  Then  //只找分案頁上的案件條碼
          begin
            ScanInfo.ImageCount := 0;
@@ -4040,6 +4071,7 @@
            ClearCaseIndex;                //清掉案件索引
            ScanCaseno := BarCode2CaseID; //取出案件編號
            NowGuideFormID := '';
            NowDivPageFormID :='';
//ShowMessage('NowGuideFormID='+NowGuideFormID+#10#13+'FormID='+FormID+#10#13+'ScanCaseno='+ScanCaseno);
          end;
          if ScanCaseno = '' then //一開始都沒找到
@@ -4130,10 +4162,10 @@
      begin
        ScanSaveFilename := '';
        FormID := BarCode2FormID; //取出FormID
//        if (FormID <> '') and ISGuideFormID(FormID) then   //20170510 註解 因為DSCAN 會全擠在導引頁下
//          NowGuideFormID := FormID;
//        if (NowGuideFormID <> '') {and (FormID = '')} then  //20170510 註解  因為DSCAN 會全擠在導引頁下
//          FormID := NowGuideFormID;
        if (FormID <> '') and ISGuideFormID(FormID) then   //20170510 註解 因為DSCAN 會全擠在導引頁下
          NowGuideFormID := FormID;
        if (NowGuideFormID <> '') {and (FormID = '')} then  //20170510 註解  因為DSCAN 會全擠在導引頁下
          FormID := NowGuideFormID;
        DocNo := FormCode2DocNo(FormID);
        ScanDocDir := FindLastestDocDir(ScanCaseno,DocNo);
//ShowMessage('ScanDocDir='+ScanDocDir);
@@ -4682,6 +4714,11 @@
    begin
      PARA_CONTENT := GetSQLData(WORK_INF_List,'PARA_CONTENT',i);
      GuideFormIDList.CommaText := PARA_CONTENT;
    end
    Else if UpperCase(GetSQLData(WORK_INF_List,'PARA_NO',i)) = 'DIVPAGEFORMID' Then     //當分案頁的表單
    begin
      PARA_CONTENT := GetSQLData(WORK_INF_List,'PARA_CONTENT',i);
      DivPageFormIDList.CommaText := PARA_CONTENT;
    end;
  end;
  ScanDuplex := Def_ScanDuplex;
@@ -4827,6 +4864,39 @@
    ServerTime := Copy(ServerDate,9,6);
    ServerDate := Copy(ServerDate,1,8);
    Balance := GetBalance(ServerTime); //Server 跟Local的時間差
    Result := True;
  end
  Else if Pos('<script type="text/javascript" src="scripts/CW00/login.js"></script>',Memo1.Lines.Text) > 0 then
  begin
    HttpErrStr := _Msg('錯誤原因:')+_Msg('閒置過久或被登出,請重新登入');
    Result := False;
    Exit;
  end;
end;
Function TCB_IMGPSScanX.GetSampleInf : Boolean;
var
  str:String;
begin
  Result := False;
  If not ProcessServlet_Get(HTTPSClient,FURL+'service/imgpsc/IMGPSC01/serversampleforocx','work_no='+FWork_no,FReWrite,Memo1,False) Then
  begin
    HttpErrStr := _Msg('錯誤代碼:')+inttostr(HttpError.HttpErrorCode)+','+HttpError.HttpReason;
    Result := False;
    Exit;
  end;
  IF memo1.Lines.Strings[0] = '1' Then
  begin
    HttpErrStr := _Msg('錯誤原因:')+memo1.Lines.Strings[1];
    Result := False;
    Exit;
  end
  Else IF memo1.Lines.Strings[0] = '0' Then
  begin
    str := memo1.Lines.Strings[1];
    SampleFormIDList.CommaText:=str;
    Result := True;
  end
  Else if Pos('<script type="text/javascript" src="scripts/CW00/login.js"></script>',Memo1.Lines.Text) > 0 then
@@ -5403,14 +5473,14 @@
    For i := 0 to S.Count -1 do
    begin
      FileName := S.Strings[i];
      ImageReSize(CaseID,FileName);  //依十字定位點做縮放
      ImageReSize_FormID(CaseID,FileName);  //依十字定位點做縮放
    end;
  finally
  S.Free;
  end;
end;
Procedure TCB_IMGPSScanX.ImageReSize(CaseID,FileName:String);  //依十字定位點做縮放
Procedure TCB_IMGPSScanX.ImageReSize_FormID(CaseID,FileName:String);  //依十字定位點做縮放
var
  FormID : String;
  DH,DW : String;
@@ -5429,17 +5499,27 @@
    DW := GetFindResult('T1.FORM_WIDTH');
    ANCHOR := UpperCase(GetFindResult('T1.ANCHOR'));
    ANCHOR := Index2Anchor(ANCHOR);
//showmessage(FormID+#13+DH+#13+DW+#13);
//ShowMessage('AAAAAAAAA');
    if ((ANCHOR = 'ANCHOR') or (ANCHOR = 'FRAME')) and (DH <> '') and (DW <> '') then  //有十字定位點
    begin
//ShowMessage('BBBBBBB');
      ImageScrollBox1.LoadFromFile(ImageSavePath+CaseID+'\Upload\'+FileName,1);
      //FindPoint(ImageScrollBox1.Graphic,UpLPoint,UpRPoint,DownLPoint,NowW,NowH);
      FindPoint(ISB_BW.Graphic,UpLPoint,UpRPoint,DownLPoint,NowW,NowH,ANCHOR);
      SizeStr := CheckSize(ISB_BW,UpLPoint,UpRPoint,DownLPoint,DW,DH);
      ImageResize(ImageScrollBox1.Graphic,ISB_BW.Graphic.Width,ISB_BW.Graphic.Height);
      FindPoint(ISB_BW.Graphic,UpLPoint,UpRPoint,DownLPoint,NowW,NowH,ANCHOR);
      v := 5;
      v1 := length(SizeStr);
      IF (SizeStr <> '') and (Copy(SizeStr,1,v) <> 'ERROR') then
      begin
//ShowMessage('CCCCC');
        ImageScrollBox1.SaveToFile(ImageSavePath+CaseID+'\Upload\'+FileName);
//showmessage(ImageSavePath+CaseID+'\Upload\'+FileName);
        S := TStringlist.Create;                     ///20110422拿掉 換成上傳才做
        if FileExists(ImageSavePath+CaseID+'\Upload\ReSize.dat') then
          S.LoadFromFile(ImageSavePath+CaseID+'\Upload\ReSize.dat');
@@ -9659,6 +9739,22 @@
  end;
end;
Function TCB_IMGPSScanX.ISDivPageFormID(FormID:String):Boolean;
var
  i : Integer;
begin
  Result := False;
  for i := 0 to DivPageFormIDList.Count - 1 do
  begin
    if FormID = DivPageFormIDList.Strings[i] then
    begin
      Result := True;
      Break;
    end;
  end;
end;
Function TCB_IMGPSScanX.CaseDelete_Enable(CaseID:String):Boolean;  //案件可否被刪除
var
  i : Integer;
@@ -10715,7 +10811,7 @@
          OMRFormName := FormCode2FormName(CaseID,OMRFormCode);
          Anchor := FormID2Anchor(OMRFormCode);
          ///依十字定位點縮放////
          ImageReSize(CaseID,OMRFile);
          ImageReSize_FormID(CaseID,OMRFile);
          ////依十字定位點縮放////
          if not FileExists(CheckXmlPath+OMRFormCode+'.xml') then  //沒有Xml就不用檢核
            Continue;
@@ -11974,7 +12070,8 @@
  for I := 0 to ContextList.Count - 1 do
  begin
    FileFormID := FileName2FormCode(ContextList.Strings[i]);
    if FileFormID=GuideFormIDList.Strings[0] then //20170509 跳過導引頁的formid
    if DivPageFormIDList.IndexOf(FileFormID)<>-1 then //20170509 跳過分案頁的formid
    begin
      Continue;
    end;
@@ -13089,8 +13186,10 @@
  Cust_DocNoList := TStringlist.Create; //自行定義的文件名稱
  IN_WH_DocNoList := TStringlist.Create; //入庫的文件清單
  GuideFormIDList := TStringlist.Create; //要當導引頁表單清單
  DivPageFormIDList := TStringList.Create; //要當分案頁表單清單
  LastInitFormidList :=TStringList.Create;
  LastAddFormidList := TStringList.Create;
  SampleFormIDList := TStringList.Create;//20170627 加入
  //********清單區********
  ShowText := _Msg('資料載入中,請稍候');
@@ -13102,6 +13201,19 @@
    DataLoading(False,False);
    Exit;
  end;
  if FMode='SAMPLESCAN' then
  begin
    IF not GetSampleInf Then  //取已存在sample
    begin
      Showmessage(_Msg('取存在範本資訊時,網路發生錯誤!!')+HttpErrStr);
      DataLoading(False,False);
      Exit;
    end;
  end;
//ShowMessage('GetServerDate  '+ServerDate+' , '+ServerTime);
  ////下載系統資訊////
  IF not GetSetInf1 Then  //取DOC_INF  文件資訊
@@ -13313,7 +13425,8 @@
  DataLoading(False,False);
//ShowMessage('初始話執行完成');
//ShowMessage(GuideFormIDList.Text);
//ShowMessage('GuideFormIDList='+GuideFormIDList.Text);
//ShowMessage('DivPageFormIDList='+DivPageFormIDList.Text);
end;
procedure TCB_IMGPSScanX.Timer2Timer(Sender: TObject);
@@ -13451,6 +13564,8 @@
      ShowText := CaseID+_Msg('資料上傳中,請稍候');
      DataLoading(True,True);
//ShowMessage('NNNNN');
//ShowMessage('退出');
//Exit;
      If Not TransCaseID(TransPath,CaseID,True) Then  //傳送案件
      begin
        DataLoading(False,False);