Browse Source

解决报表文件加载失败

raomeng 8 years ago
parent
commit
aeee50d662

+ 50 - 26
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/activity/PDFDownloadActivity.java

@@ -51,7 +51,7 @@ public class PDFDownloadActivity extends BaseActivity implements View.OnClickLis
     private final int OBATIN_PDF_PATH = 100;
 
     private PDFView mPDFView;
-    private TextView mStateTextView, mRemainTextView, mReloadTextView, mExitTextView, mPauseTextView;
+    private TextView mStateTextView, mRemainTextView, mRedownloadTextView, mExitTextView, mPauseTextView, mLoadTextView;
     private ProgressBar mDownloadProgressBar;
     private RelativeLayout mDownloadRelativeLayout;
     private LinearLayout mErrorLinearLayout;
@@ -63,6 +63,7 @@ public class PDFDownloadActivity extends BaseActivity implements View.OnClickLis
     private long contentLength;
     private long totalBytes;
     private String replace;
+    private int mRetryTimes = 0;
 
     private Handler mHandler = new Handler() {
         @Override
@@ -72,7 +73,7 @@ public class PDFDownloadActivity extends BaseActivity implements View.OnClickLis
                     try {
                         int progress = (int) msg.obj;
                         Log.d("progress", progress + ":" + contentLength);
-                        mStateTextView.setText(R.string.str_loading);
+                        mStateTextView.setText(R.string.str_downloading);
                         mDownloadProgressBar.setProgress(progress);
                         mRemainTextView.setText((100 - (((progress * 1024 * 100) / contentLength))) + "");
                     } catch (Exception e) {
@@ -82,14 +83,7 @@ public class PDFDownloadActivity extends BaseActivity implements View.OnClickLis
                 case Constants.CONSTANT.DOWNLOAD_SUCCESS:
                     mPauseTextView.setVisibility(View.GONE);
                     mStateTextView.setText("报表文件下载成功!\n正在加载....");
-//                    mDownloadProgressBar.setProgress(100);
                     mRemainTextView.setText("0");
-                    /*mDownloadRelativeLayout.postDelayed(new Runnable() {
-                        @Override
-                        public void run() {
-                            mDownloadRelativeLayout.setVisibility(View.GONE);
-                        }
-                    }, 1000);*/
                     displayFromFile(new File(PDF_FILE_PATH, PDF_FILE_NAME));
                     break;
                 case Constants.CONSTANT.PDF_OVERLOAD:
@@ -116,9 +110,9 @@ public class PDFDownloadActivity extends BaseActivity implements View.OnClickLis
                     break;
                 case com.core.app.Constants.APP_SOCKETIMEOUTEXCEPTION:
                     result = msg.getData().getString("response");
-                    String exception = "";
+                    String exception = "系统错误";
                     if (JSONUtil.validate(result)) {
-                        if (JSON.parse(result) instanceof JSONObject) {
+                        if (JSON.parse(result) instanceof com.alibaba.fastjson.JSONObject) {
                             exception = JSON.parseObject(result).getString("exceptionInfo");
                         }
                     }
@@ -218,11 +212,17 @@ public class PDFDownloadActivity extends BaseActivity implements View.OnClickLis
                     .spacing(10)
                     .load();
         } catch (Exception e) {
-            mPauseTextView.setVisibility(View.GONE);
-            mErrorLinearLayout.setVisibility(View.VISIBLE);
-            mStateTextView.setText("报表文件加载失败!");
-            mDownloadProgressBar.setProgress(0);
-            mRemainTextView.setText(100 + "");
+            if (mRetryTimes <= 2) {
+                mRetryTimes++;
+                displayFromFile(new File(PDF_FILE_PATH, PDF_FILE_NAME));
+            } else {
+                mPauseTextView.setVisibility(View.GONE);
+                mErrorLinearLayout.setVisibility(View.VISIBLE);
+                mLoadTextView.setVisibility(View.VISIBLE);
+                mStateTextView.setText("报表文件加载失败!");
+                mDownloadProgressBar.setProgress(0);
+                mRemainTextView.setText(100 + "");
+            }
         }
     }
 
@@ -237,6 +237,10 @@ public class PDFDownloadActivity extends BaseActivity implements View.OnClickLis
     }
 
     private void obtainPdfPath() {
+        mStateTextView.setText(R.string.obtain_pdf_path);
+        mDownloadProgressBar.setProgress(0);
+        mRemainTextView.setText(100 + "");
+
         String url = replace + "report/pdf/path";
         Map<String, Object> params = new HashMap<>();
         params.put("u", CommonUtil.getSharedPreferences(ct, "erp_master"));
@@ -279,17 +283,19 @@ public class PDFDownloadActivity extends BaseActivity implements View.OnClickLis
         mRemainTextView = (TextView) findViewById(R.id.pdf_download_remain_tv);
         mDownloadProgressBar = (ProgressBar) findViewById(R.id.pdf_download_progress_pb);
         mDownloadRelativeLayout = (RelativeLayout) findViewById(R.id.pdf_download_progress_rl);
-        mReloadTextView = (TextView) findViewById(R.id.pdf_download_reload_tv);
+        mRedownloadTextView = (TextView) findViewById(R.id.pdf_download_redownload_tv);
         mExitTextView = (TextView) findViewById(R.id.pdf_download_exit_tv);
         mErrorLinearLayout = (LinearLayout) findViewById(R.id.pdf_download_error_menu_ll);
         mPauseTextView = (TextView) findViewById(R.id.pdf_download_pause_tv);
+        mLoadTextView = (TextView) findViewById(R.id.pdf_download_load_tv);
     }
 
     private void initEvents() {
         mExitTextView.setOnClickListener(this);
-        mReloadTextView.setOnClickListener(this);
+        mRedownloadTextView.setOnClickListener(this);
         mDownloadRelativeLayout.setOnClickListener(this);
         mPauseTextView.setOnClickListener(this);
+        mLoadTextView.setOnClickListener(this);
     }
 
     @Override
@@ -298,9 +304,11 @@ public class PDFDownloadActivity extends BaseActivity implements View.OnClickLis
             case R.id.pdf_download_exit_tv:
                 onBackPressed();
                 break;
-            case R.id.pdf_download_reload_tv:
-                mStateTextView.setText(R.string.str_loading);
+            case R.id.pdf_download_redownload_tv:
+                mStateTextView.setText(R.string.str_downloading);
                 mErrorLinearLayout.setVisibility(View.GONE);
+                mDownloadProgressBar.setProgress(0);
+                mRemainTextView.setText(100 + "");
 //                PDFUtils.downloadPDF(downloadUrl, mHandler);
                 if (TextUtils.isEmpty(downloadUrl)) {
                     obtainPdfPath();
@@ -311,16 +319,27 @@ public class PDFDownloadActivity extends BaseActivity implements View.OnClickLis
             case R.id.pdf_download_pause_tv:
                 if (getString(R.string.pause_download).equals(mPauseTextView.getText().toString())) {
                     mPauseTextView.setText(R.string.continue_download);
+                    mStateTextView.setText(R.string.download_paused);
                     mDownloader.pause();
                     ToastUtil.showToast(this, "下载暂停");
                     // 存储此时的totalBytes,即断点位置。
                     breakPoints = totalBytes;
                 } else if (getString(R.string.continue_download).equals(mPauseTextView.getText().toString())) {
                     mPauseTextView.setText(R.string.pause_download);
+                    mStateTextView.setText(R.string.str_downloading);
                     ToastUtil.showToast(this, "下载继续");
                     mDownloader.download(breakPoints);
                 }
                 break;
+            case R.id.pdf_download_load_tv:
+                mRetryTimes = 0;
+                mErrorLinearLayout.setVisibility(View.GONE);
+                mLoadTextView.setVisibility(View.GONE);
+                mStateTextView.setText(R.string.str_reloading);
+                mDownloadProgressBar.setProgress((int) (contentLength / 1024));
+                mRemainTextView.setText(0 + "");
+                displayFromFile(new File(PDF_FILE_PATH, PDF_FILE_NAME));
+                break;
         }
     }
 
@@ -352,12 +371,17 @@ public class PDFDownloadActivity extends BaseActivity implements View.OnClickLis
 
     @Override
     public void onError(Throwable t) {
-        Log.e("pdfloaderror", t.getMessage() == null ? "" : t.getMessage());
-        mPauseTextView.setVisibility(View.GONE);
-        mErrorLinearLayout.setVisibility(View.VISIBLE);
-        mStateTextView.setText("报表文件加载失败!");
-        mDownloadProgressBar.setProgress(0);
-        mRemainTextView.setText(100 + "");
+        if (mRetryTimes <= 2) {
+            mRetryTimes++;
+            displayFromFile(new File(PDF_FILE_PATH, PDF_FILE_NAME));
+        } else {
+            mPauseTextView.setVisibility(View.GONE);
+            mErrorLinearLayout.setVisibility(View.VISIBLE);
+            mLoadTextView.setVisibility(View.VISIBLE);
+            mStateTextView.setText("报表文件加载失败!");
+            mDownloadProgressBar.setProgress(0);
+            mRemainTextView.setText(100 + "");
+        }
     }
 
     @Override

+ 19 - 5
WeiChat/src/main/res/layout/activity_pdf_download.xml

@@ -30,7 +30,7 @@
                 android:ellipsize="end"
                 android:gravity="center"
                 android:maxLines="2"
-                android:text="@string/str_loading"
+                android:text="@string/obtain_pdf_path"
                 android:textSize="16sp" />
 
             <ProgressBar
@@ -77,7 +77,7 @@
         <TextView
             android:id="@+id/pdf_download_pause_tv"
             android:layout_width="match_parent"
-            android:layout_height="40dp"
+            android:layout_height="36dp"
             android:layout_alignParentBottom="true"
             android:layout_marginBottom="20dp"
             android:layout_marginLeft="30dp"
@@ -99,9 +99,23 @@
             android:visibility="gone">
 
             <TextView
-                android:id="@+id/pdf_download_reload_tv"
+                android:id="@+id/pdf_download_load_tv"
                 android:layout_width="match_parent"
-                android:layout_height="40dp"
+                android:layout_height="36dp"
+                android:layout_marginBottom="10dp"
+                android:layout_marginLeft="20dp"
+                android:layout_marginRight="20dp"
+                android:background="@drawable/selector_confirm_bg"
+                android:gravity="center"
+                android:text="重新加载"
+                android:textColor="@color/white"
+                android:textSize="16sp"
+                android:visibility="gone" />
+
+            <TextView
+                android:id="@+id/pdf_download_redownload_tv"
+                android:layout_width="match_parent"
+                android:layout_height="36dp"
                 android:layout_marginBottom="10dp"
                 android:layout_marginLeft="20dp"
                 android:layout_marginRight="20dp"
@@ -114,7 +128,7 @@
             <TextView
                 android:id="@+id/pdf_download_exit_tv"
                 android:layout_width="match_parent"
-                android:layout_height="40dp"
+                android:layout_height="36dp"
                 android:layout_marginLeft="20dp"
                 android:layout_marginRight="20dp"
                 android:background="@drawable/selector_cancel_bg"

+ 4 - 1
WeiChat/src/main/res/values-en/strings.xml

@@ -1430,11 +1430,14 @@
     <string name="select_query_service">选择查询业务</string>
     <string name="report_query">报表查询</string>
     <string name="report_query_prompt">报表查询结果是PDF文件,\n需要耗费您一些流量....</string>
-    <string name="str_loading">正在下载...</string>
+    <string name="str_downloading">正在下载...</string>
     <string name="re_download">重新下载</string>
     <string name="search_history">搜索历史</string>
     <string name="str_clear">清空</string>
     <string name="pause_download">暂停下载</string>
     <string name="continue_download">继续下载</string>
+    <string name="obtain_pdf_path">正在获取报表文件资源,请稍候...</string>
+    <string name="download_paused">下载已暂停</string>
+    <string name="str_reloading">正在加载....</string>
 
 </resources>

+ 4 - 1
WeiChat/src/main/res/values-zh-rCN/strings.xml

@@ -1542,11 +1542,14 @@
     <string name="select_query_service">选择查询业务</string>
     <string name="report_query">报表查询</string>
     <string name="report_query_prompt">报表查询结果是PDF文件,\n需要耗费您一些流量....</string>
-    <string name="str_loading">正在下载...</string>
+    <string name="str_downloading">正在下载...</string>
     <string name="re_download">重新下载</string>
     <string name="search_history">搜索历史</string>
     <string name="str_clear">清空</string>
     <string name="pause_download">暂停下载</string>
     <string name="continue_download">继续下载</string>
+    <string name="obtain_pdf_path">正在获取报表文件资源,请稍候...</string>
+    <string name="download_paused">下载已暂停</string>
+    <string name="str_reloading">正在加载....</string>
 
 </resources>

+ 4 - 1
WeiChat/src/main/res/values-zh-rTW/strings.xml

@@ -1531,11 +1531,14 @@
     <string name="select_query_service">选择查询业务</string>
     <string name="report_query">报表查询</string>
     <string name="report_query_prompt">报表查询结果是PDF文件,\n需要耗费您一些流量....</string>
-    <string name="str_loading">正在下载...</string>
+    <string name="str_downloading">正在下载...</string>
     <string name="re_download">重新下载</string>
     <string name="search_history">搜索历史</string>
     <string name="str_clear">清空</string>
     <string name="pause_download">暂停下载</string>
     <string name="continue_download">继续下载</string>
+    <string name="obtain_pdf_path">正在获取报表文件资源,请稍候...</string>
+    <string name="download_paused">下载已暂停</string>
+    <string name="str_reloading">正在加载....</string>
 
 </resources>

+ 4 - 1
WeiChat/src/main/res/values/strings.xml

@@ -1874,10 +1874,13 @@
     <string name="select_query_service">选择查询业务</string>
     <string name="report_query">报表查询</string>
     <string name="report_query_prompt">报表查询结果是PDF文件,\n需要耗费您一些流量....</string>
-    <string name="str_loading">正在下载...</string>
+    <string name="str_downloading">正在下载...</string>
     <string name="re_download">重新下载</string>
     <string name="search_history">搜索历史</string>
     <string name="str_clear">清空</string>
     <string name="pause_download">暂停下载</string>
     <string name="continue_download">继续下载</string>
+    <string name="obtain_pdf_path">正在获取报表文件资源,请稍候...</string>
+    <string name="download_paused">下载已暂停</string>
+    <string name="str_reloading">正在加载....</string>
 </resources>