Browse Source

查询统计测试版

raomeng 8 years ago
parent
commit
b0ea89cb4c

+ 5 - 6
WeiChat/build.gradle

@@ -17,10 +17,10 @@ android {
             keyPassword '13237658359'
         }
     }
-    
+
     compileSdkVersion rootProject.ext.android.compileSdkVersion
     buildToolsVersion rootProject.ext.android.buildToolsVersion
-   
+
     defaultConfig {
         applicationId project.applicationId
         minSdkVersion rootProject.ext.android.minSdkVersion
@@ -68,7 +68,7 @@ android {
         xiaomi {}
         tencent {}
         taobao {}
-       
+
     }
 
     productFlavors.all {
@@ -87,7 +87,7 @@ android {
 }
 
 dependencies {
-    compile fileTree(dir: 'libs', include: ['*.jar'])
+    compile fileTree(include: ['*.jar'], dir: 'libs')
     //依赖库
     testCompile deps.junit
     compile deps.appcompatV7
@@ -108,7 +108,6 @@ dependencies {
     compile deps.stickyListHeaders
     compile deps.stickyGridHeaders
     compile deps.materialDialogs
-
     androidTestCompile deps.leakcanaryNp
     debugCompile deps.leakcanary
     releaseCompile deps.leakcanaryNp
@@ -123,7 +122,7 @@ dependencies {
     compile project(':lib-zxing')
     compile project(':library-refreshlayout')
     compile 'com.squareup.okhttp3:okhttp:3.8.1'
-    //compile project(':android-pdf-viewer')
+    compile project(':android-pdf-viewer')
 }
 
 buildscript {

+ 1 - 1
WeiChat/src/main/AndroidManifest.xml

@@ -997,7 +997,7 @@
         <activity android:name=".ui.erp.activity.datainquiry.activity.ReportQueryCriteriaActivity"
                   android:windowSoftInputMode="adjustPan"/>
         <activity android:name=".ui.erp.activity.datainquiry.activity.ReportStatisticsMoreMenuActivity"/>
-    <!--    <activity android:name=".ui.erp.activity.datainquiry.activity.PDFDownloadActivity"/>-->
+        <activity android:name=".ui.erp.activity.datainquiry.activity.PDFDownloadActivity"/>
     </application>
 
 </manifest>

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

@@ -0,0 +1,207 @@
+package com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.activity;
+
+import android.content.Intent;
+import android.graphics.Canvas;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.github.barteksc.pdfviewer.PDFView;
+import com.github.barteksc.pdfviewer.listener.OnDrawListener;
+import com.github.barteksc.pdfviewer.listener.OnErrorListener;
+import com.github.barteksc.pdfviewer.listener.OnLoadCompleteListener;
+import com.github.barteksc.pdfviewer.listener.OnPageChangeListener;
+import com.github.barteksc.pdfviewer.listener.OnPageScrollListener;
+import com.github.barteksc.pdfviewer.listener.OnRenderListener;
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.Constants;
+import com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.PDFUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
+
+import java.io.File;
+
+/**
+ * Created by RaoMeng on 2017/8/17.
+ * 报表统计PDF文件下载并展示页面
+ */
+public class PDFDownloadActivity extends BaseActivity implements View.OnClickListener, OnDrawListener, OnLoadCompleteListener, OnPageChangeListener, OnPageScrollListener, OnErrorListener, OnRenderListener {
+    private PDFView mPDFView;
+    private TextView mStateTextView, mRemainTextView, mReloadTextView, mExitTextView;
+    private ProgressBar mDownloadProgressBar;
+    private RelativeLayout mDownloadRelativeLayout;
+    private LinearLayout mErrorLinearLayout;
+    private String downloadUrl = "", mReportName = "";
+    private String mCondition;
+
+    private Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case Constants.CONSTANT.DOWNLOAD_PROGRESS:
+                    try {
+                        int progress = (int) msg.obj;
+                        Log.d("progress", progress + "");
+                        mStateTextView.setText(R.string.str_loading);
+                        mDownloadProgressBar.setProgress(progress);
+                        mRemainTextView.setText((100 - progress) + "");
+                    } catch (Exception e) {
+
+                    }
+                    break;
+                case Constants.CONSTANT.DOWNLOAD_SUCCESS:
+                    mStateTextView.setText("报表文件下载成功!");
+                    mDownloadProgressBar.setProgress(100);
+                    mRemainTextView.setText("0");
+                    mDownloadRelativeLayout.postDelayed(new Runnable() {
+                        @Override
+                        public void run() {
+                            mDownloadRelativeLayout.setVisibility(View.GONE);
+                        }
+                    }, 1000);
+                    displayFromFile(new File(Constants.CONSTANT.PDF_FILE_PATH, Constants.CONSTANT.PDF_FILE_NAME));
+                    break;
+                case Constants.CONSTANT.PDF_OVERLOAD:
+                    mErrorLinearLayout.setVisibility(View.VISIBLE);
+                    mStateTextView.setText("数据量过载,报表文件获取失败!");
+                    mDownloadProgressBar.setProgress(0);
+                    mRemainTextView.setText(100 + "");
+                    break;
+                case Constants.CONSTANT.DOWNLOAD_FAILED:
+                    mErrorLinearLayout.setVisibility(View.VISIBLE);
+                    String info = "";
+                    if (msg.obj != null) {
+                        info = "\n" + (String) msg.obj;
+                    }
+                    mStateTextView.setText("报表文件下载失败" + info);
+                    mDownloadProgressBar.setProgress(0);
+                    mRemainTextView.setText(100 + "");
+                    break;
+            }
+        }
+    };
+
+    private void displayFromFile(File fileName) {
+        mPDFView.fromFile(fileName)
+//                .pages(0, 2, 1, 3, 3, 3) // all pages are displayed by default
+                .enableSwipe(true) // allows to block changing pages using swipe
+                .swipeHorizontal(true)
+                .enableDoubletap(true)
+                .defaultPage(0)
+                        // allows to draw something on the current page, usually visible in the middle of the screen
+                .onDraw(this)
+                        // allows to draw something on all pages, separately for every page. Called only for visible pages
+                .onDrawAll(this)
+                .onLoad(this) // called after document is loaded and starts to be rendered
+                .onPageChange(this)
+                .onPageScroll(this)
+                .onError(this)
+                .onRender(this) // called after document is rendered for the first time
+                .enableAnnotationRendering(false) // render annotations (such as comments, colors or forms)
+                .password(null)
+                .scrollHandle(null)
+                .enableAntialiasing(true) // improve rendering a little bit on low-res screens
+                        // spacing between pages in dp. To define spacing color, set view background
+                .spacing(10)
+                .load();
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_pdf_download);
+
+        initViews();
+        initEvents();
+        downloadPDF();
+    }
+
+    private void downloadPDF() {
+        PDFUtils.downloadPDF(downloadUrl, mHandler);
+    }
+
+    private void initViews() {
+        Intent intent = getIntent();
+        if (intent != null) {
+            mCondition = intent.getStringExtra("condition");
+            mReportName = intent.getStringExtra("reportName");
+        }
+
+//        downloadUrl = com.xzjmyk.pm.activity.ui.erp.util.Constants.getAppBaseUrl(this)
+//                + "report/pdf/data?u=" + CommonUtil.getSharedPreferences(ct, "erp_master")
+//                + "&pf=phone&r=" + mReportName + "&w=" + mCondition;
+//        downloadUrl = "http://192.168.253.60:8090/report/pdf/data?u=" + CommonUtil.getSharedPreferences(ct, "erp_master")
+//                + "&pf=phone&r=" + mReportName + "&w=where " + mCondition;
+        downloadUrl = "http://print.ubtob.com/report/pdf/data?u=" + CommonUtil.getSharedPreferences(ct, "erp_master")
+                + "&pf=phone&r=" + mReportName + "&w=where " + mCondition;
+
+        Log.d("downloadUrl", downloadUrl);
+
+        mPDFView = (PDFView) findViewById(R.id.pdf_download_pdfview);
+        mPDFView.useBestQuality(true);
+
+        mStateTextView = (TextView) findViewById(R.id.pdf_download_state_tv);
+        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);
+        mExitTextView = (TextView) findViewById(R.id.pdf_download_exit_tv);
+        mErrorLinearLayout = (LinearLayout) findViewById(R.id.pdf_download_error_menu_ll);
+    }
+
+    private void initEvents() {
+        mExitTextView.setOnClickListener(this);
+        mReloadTextView.setOnClickListener(this);
+        mDownloadRelativeLayout.setOnClickListener(this);
+    }
+
+    @Override
+    public void onClick(View v) {
+        switch (v.getId()) {
+            case R.id.pdf_download_exit_tv:
+                onBackPressed();
+                break;
+            case R.id.pdf_download_reload_tv:
+                mStateTextView.setText(R.string.str_loading);
+                mErrorLinearLayout.setVisibility(View.GONE);
+                PDFUtils.downloadPDF(downloadUrl, mHandler);
+                break;
+        }
+    }
+
+    @Override
+    public void onLayerDrawn(Canvas canvas, float pageWidth, float pageHeight, int displayedPage) {
+
+    }
+
+    @Override
+    public void loadComplete(int nbPages) {
+
+    }
+
+    @Override
+    public void onPageChanged(int page, int pageCount) {
+
+    }
+
+    @Override
+    public void onPageScrolled(int page, float positionOffset) {
+
+    }
+
+    @Override
+    public void onError(Throwable t) {
+
+    }
+
+    @Override
+    public void onInitiallyRendered(int nbPages, float pageWidth, float pageHeight) {
+        mPDFView.fitToWidth();
+    }
+}

+ 10 - 10
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/activity/ReportQueryCriteriaActivity.java

@@ -12,6 +12,7 @@ import android.os.Message;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
+import android.widget.ListView;
 import android.widget.TextView;
 
 import com.xzjmyk.pm.activity.R;
@@ -24,7 +25,6 @@ import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
 import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 import com.xzjmyk.pm.activity.util.PermissionUtil;
-import com.xzjmyk.pm.activity.view.MyListView;
 
 import org.json.JSONArray;
 import org.json.JSONException;
@@ -48,7 +48,7 @@ import java.util.Map;
 public class ReportQueryCriteriaActivity extends BaseActivity implements View.OnClickListener {
     private final int REQUEST_WRITE_EXTERNAL_STORAGE = 0X22;
     private final int GET_OPTION_DATA = 0X11;
-    private MyListView mOptionListView;
+    private ListView mOptionListView;
     private TextView mCancelTextView, mResetTextView, mConfirmTextView;
     private GridMenuReportStatisticsBean.ListBean mReportInfo;
     private String mCondition = "";
@@ -164,7 +164,7 @@ public class ReportQueryCriteriaActivity extends BaseActivity implements View.On
     private void initViews() {
         getSupportActionBar().setTitle(R.string.report_query);
 
-        mOptionListView = (MyListView) findViewById(R.id.report_query_criteria_lv);
+        mOptionListView = (ListView) findViewById(R.id.report_query_criteria_lv);
         mCancelTextView = (TextView) findViewById(R.id.report_query_criteria_cancel_btn);
         mResetTextView = (TextView) findViewById(R.id.report_query_criteria_reset_btn);
         mConfirmTextView = (TextView) findViewById(R.id.report_query_criteria_confirm_btn);
@@ -319,13 +319,13 @@ public class ReportQueryCriteriaActivity extends BaseActivity implements View.On
         if (mCondition.length() == 0) {
             ToastMessage("请确认报表查询条件");
         } else {
-//            Intent intent = new Intent();
-//            intent.setClass(this, PDFDownloadActivity.class);
-//            intent.putExtra("condition", mCondition);
-//            if (mReportInfo != null)
-//                intent.putExtra("reportName", mReportInfo.getReportName());
-//
-//            startActivity(intent);
+            Intent intent = new Intent();
+            intent.setClass(this, PDFDownloadActivity.class);
+            intent.putExtra("condition", mCondition);
+            if (mReportInfo != null)
+                intent.putExtra("reportName", mReportInfo.getReportName());
+
+            startActivity(intent);
         }
     }
 

+ 59 - 16
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/adapter/ReportQueryConditionAdapter.java

@@ -35,6 +35,7 @@ public class ReportQueryConditionAdapter extends BaseAdapter {
     private Context context;
     private LayoutInflater layoutInflater;
     private boolean strChanged = true, numChanged1 = true, numChanged2 = true;
+    private int mTouchPosition = -1, mTouchIndex = -1;
 
     public ReportQueryConditionAdapter(Context context, List<ReportConditionBean> objects) {
         this.context = context;
@@ -63,11 +64,11 @@ public class ReportQueryConditionAdapter extends BaseAdapter {
         convertView = layoutInflater.inflate(R.layout.item_list_data_inquiry_exact_query, null);
         convertView.setTag(new ViewHolder(convertView));
 //        }
-        initializeViews((ReportConditionBean) getItem(position), (ViewHolder) convertView.getTag());
+        initializeViews((ReportConditionBean) getItem(position), (ViewHolder) convertView.getTag(), position);
         return convertView;
     }
 
-    private void initializeViews(final ReportConditionBean object, final ViewHolder holder) {
+    private void initializeViews(final ReportConditionBean object, final ViewHolder holder, int position) {
         holder.captionTv.setText(object.getTitle());
         holder.captionTv.setOnClickListener(new View.OnClickListener() {
             @Override
@@ -85,6 +86,9 @@ public class ReportQueryConditionAdapter extends BaseAdapter {
                 holder.gridview.setVisibility(View.GONE);
                 List<ReportConditionBean.Property> mProperties = object.getProperties();
 
+                holder.numEdittext1.setTag(position);
+                holder.numEdittext2.setTag(position);
+
                 holder.numEdittext1.addTextChangedListener(new TextWatcher() {
                     @Override
                     public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -125,6 +129,26 @@ public class ReportQueryConditionAdapter extends BaseAdapter {
                     }
                 });
 
+                holder.numEdittext1.setOnFocusChangeListener(new View.OnFocusChangeListener() {
+                    @Override
+                    public void onFocusChange(View v, boolean hasFocus) {
+                        if (hasFocus) {
+                            mTouchPosition = (int) holder.numEdittext1.getTag();
+                            mTouchIndex = 1;
+                        }
+                    }
+                });
+
+                holder.numEdittext2.setOnFocusChangeListener(new View.OnFocusChangeListener() {
+                    @Override
+                    public void onFocusChange(View v, boolean hasFocus) {
+                        if (hasFocus) {
+                            mTouchPosition = (int) holder.numEdittext2.getTag();
+                            mTouchIndex = 2;
+                        }
+                    }
+                });
+
                 numChanged1 = true;
                 numChanged2 = true;
                 if (mProperties != null && mProperties.size() == 2) {
@@ -134,6 +158,22 @@ public class ReportQueryConditionAdapter extends BaseAdapter {
                     holder.numEdittext2.setText(mProperties.get(1).getDisplay());
                     numChanged2 = false;
                 }
+
+                if (mTouchPosition == position) {
+                    if (mTouchIndex == 1) {
+                        holder.numEdittext1.requestFocus();
+                        holder.numEdittext1.setSelection(holder.numEdittext1.getText().length());
+                    } else if (mTouchIndex == 2) {
+                        holder.numEdittext2.requestFocus();
+                        holder.numEdittext2.setSelection(holder.numEdittext2.getText().length());
+                    } else {
+                        holder.numEdittext1.clearFocus();
+                        holder.numEdittext2.clearFocus();
+                    }
+                } else {
+                    holder.numEdittext1.clearFocus();
+                    holder.numEdittext2.clearFocus();
+                }
                 break;
             case "D":
             case "CD":
@@ -152,20 +192,6 @@ public class ReportQueryConditionAdapter extends BaseAdapter {
 
                 mProperties = object.getProperties();
 
-                holder.textview1.setOnClickListener(new View.OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-
-                    }
-                });
-
-                holder.textview2.setOnClickListener(new View.OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-
-                    }
-                });
-
                 holder.calendar1.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View v) {
@@ -258,6 +284,8 @@ public class ReportQueryConditionAdapter extends BaseAdapter {
                 holder.gridview.setVisibility(View.GONE);
                 mProperties = object.getProperties();
 
+                holder.stringEdittext.setTag(position);
+
                 holder.stringEdittext.addTextChangedListener(new TextWatcher() {
                     @Override
                     public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -278,11 +306,26 @@ public class ReportQueryConditionAdapter extends BaseAdapter {
                     }
                 });
 
+                holder.stringEdittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
+                    @Override
+                    public void onFocusChange(View v, boolean hasFocus) {
+                        if (hasFocus)
+                            mTouchPosition = (int) v.getTag();
+                    }
+                });
+
                 strChanged = true;
                 if (mProperties != null && object.getProperties().size() == 1) {
                     holder.stringEdittext.setText(mProperties.get(0).getDisplay());
                     strChanged = false;
                 }
+
+                if (mTouchPosition == position) {
+                    holder.stringEdittext.requestFocus();
+                    holder.stringEdittext.setSelection(holder.stringEdittext.getText().length());
+                } else {
+                    holder.stringEdittext.clearFocus();
+                }
                 break;
         }
     }

+ 3 - 13
WeiChat/src/main/res/layout/activity_report_query_criteria.xml

@@ -23,21 +23,11 @@
         android:layout_height="1dp"
         android:background="@color/gray_light"/>
 
-    <ScrollView
+    <ListView
+        android:id="@+id/report_query_criteria_lv"
         android:layout_width="match_parent"
         android:layout_height="0dp"
-        android:layout_weight="1">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent">
-
-            <com.xzjmyk.pm.activity.view.MyListView
-                android:id="@+id/report_query_criteria_lv"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"/>
-        </LinearLayout>
-    </ScrollView>
+        android:layout_weight="1"/>
 
     <LinearLayout
         android:layout_width="match_parent"