Browse Source

不能下载无锁文件。

Chenshilong 9 years ago
parent
commit
c54d79e9a8

+ 1 - 1
DataModules/PHPWebDm.pas

@@ -537,7 +537,7 @@ end;
 
 function TPHPWeb.PageError(AMid: string): string;
 begin
-  Result := Format('Web页返回错误(0),%s,请重新尝试或联系纵横客服。', [AMid]);
+  Result := Format('Web页返回错误(JieGe),%s,请重新尝试或联系纵横客服。', [AMid]);
 end;
 
 procedure TPHPWeb.Debug(AFileName, AStr: string);

+ 2 - 2
Dprs/CSL/Measure_Cloud.dof

@@ -115,7 +115,7 @@ AutoIncBuild=1
 MajorVer=3
 MinorVer=1
 Release=3
-Build=1087
+Build=1088
 Debug=0
 PreRelease=0
 Special=0
@@ -126,7 +126,7 @@ CodePage=936
 [Version Info Keys]
 CompanyName=珠海纵横创新软件有限公司
 FileDescription=纵横结算决算计量一体化云版
-FileVersion=3.1.3.1087
+FileVersion=3.1.3.1088
 InternalName=
 LegalCopyright=
 LegalTrademarks=

BIN
Dprs/CSL/Measure_Cloud.res


+ 2 - 2
Frames/ProjectFme.pas

@@ -959,7 +959,7 @@ begin
 
     if not PHPWeb.CheckZip(sZipFile, 3) then
     begin
-      WarningMessage('up数据包文件无法通过检验请重试!如果重试后仍不能解决该问题,请联系纵横客服。', ProgressProHandle);
+      WarningMessage('up数据包无法正确解压检验,请重试!如果重试后仍不能解决该问题,请联系纵横客服。', ProgressProHandle);
       Exit;
     end;
     ProgressProRun('校验数据包。OK', 10, pmtEdit);
@@ -1015,7 +1015,7 @@ begin
         TipMessage('^_^ 恭喜!数据已成功上传到云端服务器。', ProgressProHandle);
       end
       else
-        WarningMessage('数据上传失败请重试!服务器故障:' + sResult, ProgressProHandle);
+        WarningMessage('数据上传失败请重试!失败原因:' + sResult, ProgressProHandle);
     except
       WarningMessage('数据上传失败请重试!网络较差,数据文件无法送达云端:' + sResult, ProgressProHandle);
     end;

+ 49 - 44
Frames/ProjectManagerFme.pas

@@ -220,33 +220,6 @@ begin
   end;
 end;
 
-function SearchFileOnline(AURL: string; var ADownURL, AFolder, ASubFolder, ABidName, AMD5Web, AError: string;
-  var AFolderID, ASubFolderID: Integer): Integer;
-var vArr: TOVArr;
-begin
-  Result := PHPWeb.Search(AURL, [''], [''], vArr);
-  AError := '';
-  if Result = 1 then
-  begin
-    if High(vArr) >= 0 then
-    begin
-      ADownURL := vArr[0, 0];
-      AFolder := vArr[0, 2];
-      ASubFolder := vArr[0, 3];
-      AMD5Web := vArr[0, 1];
-      AFolderID := StrToInt(vArr[0, 4]);
-      ASubFolderID := StrToInt(vArr[0, 5]);
-      ABidName := vArr[0, 6];
-    end
-    else
-      Result := 10;      // 返回10,表示无记录。用这个数字代表是否觉得怪异?没办法,0被占用了。
-  end
-  else if Result = 0 then
-    AError := PHPWeb.PageError('标段更新数据失败')
-  else if Result = -1 then
-    AError := PHPWeb.NetError('标段更新数据失败');
-end;
-
 // 双击打开项目 TagB
 procedure TProjectManagerFrame.actnOpenExecute(Sender: TObject);
 var
@@ -254,6 +227,32 @@ var
   vRec: TsdDataRecord;
   sHint: string;
 
+  function SearchFileOnline(AURL: string; var ADownURL, AFolder, ASubFolder, ABidName, AMD5Web, AError: string; var AFolderID, ASubFolderID: Integer): Integer;
+  var vArr: TOVArr;
+  begin
+    Result := PHPWeb.Search(AURL, [''], [''], vArr);
+    AError := '';
+    if Result = 1 then
+    begin
+      if High(vArr) >= 0 then
+      begin
+        ADownURL := vArr[0, 0];
+        AFolder := vArr[0, 2];
+        ASubFolder := vArr[0, 3];
+        AMD5Web := vArr[0, 1];
+        AFolderID := StrToInt(vArr[0, 4]);
+        ASubFolderID := StrToInt(vArr[0, 5]);
+        ABidName := vArr[0, 6];
+      end
+      else
+        Result := 10;      // 返回10,表示无记录。用这个数字代表是否觉得怪异?没办法,0被占用了。
+    end
+    else if Result = 0 then
+      AError := PHPWeb.PageError('标段更新数据失败')
+    else if Result = -1 then
+      AError := PHPWeb.NetError('标段更新数据失败');
+  end;
+
   function CanOpen: Boolean;
   var
     sSearchURL, sDownURL,
@@ -289,22 +288,28 @@ var
           #10#13 +'点击【否(N)】查看不通过计量,软件将打开本期最后审批的数据,重新打开标段' + '可再次打开本确认窗口。';
         if Application.MessageBox(PChar(sHint), '询问', MB_YESNO + MB_ICONQUESTION) = ID_Yes then
         begin
-          sSearchURL := Format('%suser/create/%d/%d/new/audit', [PHPWeb.MeasureURL, FWebID, FPhaseNo]);
-          case SearchFileOnline(sSearchURL, sDownURL, FWebFolder_OnLine, FWebSubFolder_OnLine, FWebBidName_OnLine, sMD5_UnLock, sError, iFolderID, iSubFolderID) of
-            1:
-            begin
-              if not FileDownAndReceive(sDownURL, 2) then Exit;
-              sHint := '【重要提示】:本期计量已重新开始,在本次上报完成前,请勿删除该标段或更换电脑。';
-              Application.MessageBox(PChar(sHint), '提示', MB_OK + MB_ICONINFORMATION);
-            end;
-
-            0, -1:
-            begin
-              sHint := sError + '(因网络出错,无法连接到云端以获取本期原报上传的无锁文件,无法重新开始本期,本次操作已取消。请重试。';
-              Application.MessageBox(PChar(sHint), '警告', MB_OK + MB_ICONWARNING);
-              Exit;
+          // 无锁文件机制取消。直接从原位置再下载一遍,这次不插表。
+          if FileDownAndReceive(sDownURL, 2) then
+          begin
+            // 这里主要是为了线上创建新一期审批人列表、更改标段状态。不再使用同步更新等。
+            sSearchURL := Format('%suser/create/%d/%d/new/audit', [PHPWeb.MeasureURL, FWebID, FPhaseNo]);
+            case SearchFileOnline(sSearchURL, sDownURL, FWebFolder_OnLine, FWebSubFolder_OnLine, FWebBidName_OnLine, sMD5_UnLock, sError, iFolderID, iSubFolderID) of
+              1:
+              begin
+                sHint := '【十分重要】:本期计量已重新开始,原报在本次上报完成前,请勿删除该标段或更换电脑。';
+                Application.MessageBox(PChar(sHint), '提示', MB_OK + MB_ICONINFORMATION);
+              end;
+
+              0, -1:
+              begin
+                sHint := sError + '(因网络出错,无法连接到云端以获取本期原报上传的无锁文件,无法重新开始本期,本次操作已取消。请重试。';
+                Application.MessageBox(PChar(sHint), '警告', MB_OK + MB_ICONWARNING);
+                Exit;
+              end;
             end;
-          end;
+          end
+          else
+            Exit;
         end;
       end;
     end
@@ -1706,7 +1711,7 @@ begin
   sLocalFile := PHPWeb.UserPath + ExtractFileName(ADownURL);
   if not PHPWeb.DownFile(ADownURL, sLocalFile) then
   begin
-    sHint := Format('云端已找到[%s]的新文件,但由于网络原因下载失败!请重试!', [FWebBidName_Local]);
+    sHint := Format('云端已找到 [%s] 的新文件,但由于网络原因下载失败!请重试!', [FWebBidName_Local]);
     Application.MessageBox(PChar(sHint), '系统提醒', MB_OK + MB_ICONWARNING);
     Exit;
   end;
@@ -1742,7 +1747,7 @@ begin
   // 接收更新
   if not ReceiveFile(sLocalFile, (AReceiveKind = 2)) then
   begin
-    sHint := Format('已从云端下载新的[%s]到本地[%s],但接收失败,请删除该项目然后重新从云端获取!', [FWebBidName_Local, sLocalFile]);
+    sHint := Format('已从云端下载新的 [%s] 到本地 [%s],但接收失败,请删除该项目然后重新从云端获取!', [FWebBidName_OnLine, sLocalFile]);
     Application.MessageBox(PChar(sHint), '系统提醒', MB_OK + MB_ICONWARNING);
     Exit;
   end;