Browse Source

功能完成备份

raomeng 8 years ago
parent
commit
b3e6aefd2e
16 changed files with 963 additions and 62 deletions
  1. 5 2
      WeiChat/src/main/AndroidManifest.xml
  2. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/Constants.java
  3. 13 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/PDFUtils.java
  4. 238 38
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/activity/DataInquiryListActivity.java
  5. 24 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/activity/PDFDownloadActivity.java
  6. 201 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/activity/ReportQueryCriteriaActivity.java
  7. 12 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/adapter/DataInquirySchemeConditionAdapter.java
  8. 69 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/adapter/ItemGridReportQueryExactAdapter.java
  9. 300 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/adapter/ReportQueryConditionAdapter.java
  10. 85 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/bean/ReportConditionBean.java
  11. 5 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/bean/SchemeConditionBean.java
  12. 3 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/CommonUtil.java
  13. 1 1
      WeiChat/src/main/res/anim/anim_search_popout.xml
  14. 2 2
      WeiChat/src/main/res/layout/activity_pdf_download.xml
  15. 2 1
      WeiChat/src/main/res/layout/item_list_data_inquiry_child.xml
  16. 2 1
      WeiChat/src/main/res/layout/item_list_data_inquiry_exact_query.xml

+ 5 - 2
WeiChat/src/main/AndroidManifest.xml

@@ -988,9 +988,12 @@
         <!--数据统计,报表查询-->
         <activity android:name=".ui.erp.activity.datainquiry.activity.ReportStatisticsActivity"/>
         <activity android:name=".ui.erp.activity.datainquiry.activity.DataInquiryActivity"/>
-        <activity android:name=".ui.erp.activity.datainquiry.activity.DataInquiryListActivity"/>
+        <activity
+            android:name=".ui.erp.activity.datainquiry.activity.DataInquiryListActivity"
+            android:windowSoftInputMode="adjustPan"/>
         <activity android:name=".ui.erp.activity.datainquiry.activity.DataInquiryMoreMenuActivity"/>
-        <activity android:name=".ui.erp.activity.datainquiry.activity.ReportQueryCriteriaActivity"/>
+        <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"/>
     </application>

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/Constants.java

@@ -8,7 +8,7 @@ import android.os.Environment;
 public interface Constants {
     interface CONSTANT {
         String PDF_FILE_NAME = "statement.pdf";
-        String PDF_FILE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/UU/statementFile/";
+        String PDF_FILE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/UU/statementFile";
 
         //打印成功
         int DOWNLOAD_SUCCESS = 1;

+ 13 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/PDFUtils.java

@@ -5,6 +5,8 @@ import android.os.Message;
 import android.text.TextUtils;
 import android.util.Base64;
 
+import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
+
 import org.json.JSONObject;
 
 import java.io.ByteArrayInputStream;
@@ -15,6 +17,7 @@ import java.io.InputStream;
 import java.security.SecureRandom;
 import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
+import java.util.concurrent.TimeUnit;
 
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.SSLContext;
@@ -52,6 +55,7 @@ public class PDFUtils {
         OkHttpClient mOkHttpClient = new OkHttpClient.Builder()
                 .sslSocketFactory(createSSLSocketFactory(), new TrustAllCerts())
                 .hostnameVerifier(new TrustAllHostnameVerifier())
+                .connectTimeout(30 * 1000, TimeUnit.SECONDS)
                 .build();
         mOkHttpClient.newCall(mRequest).enqueue(new Callback() {
             @Override
@@ -68,9 +72,9 @@ public class PDFUtils {
                 try {
                     if (response.body() != null) {
                         String responseStr = response.body().string();
+                        LogUtil.prinlnLongMsg("pdfresponse", responseStr);
                         JSONObject responseObject = new JSONObject(responseStr);
-                        boolean success = responseObject.optBoolean("success");
-                        if (!success) {
+                        if (!responseObject.isNull("success") && !responseObject.optBoolean("success")) {
                             mHandler.sendEmptyMessage(Constants.CONSTANT.DOWNLOAD_FAILED);
                             return;
                         }
@@ -80,7 +84,7 @@ public class PDFUtils {
                         } else {
                             File directory = new File(Constants.CONSTANT.PDF_FILE_PATH);
                             if (!directory.exists() && !directory.isDirectory()) {
-                                directory.mkdirs();
+                                boolean mkdirs = directory.mkdirs();
                             } else {
                                 delAllFile(Constants.CONSTANT.PDF_FILE_PATH);
                             }
@@ -91,7 +95,12 @@ public class PDFUtils {
                                 inputStream = getStringStream(printData);
                                 if (inputStream != null) {
                                     int available = inputStream.available();
-                                    File file = new File(Constants.CONSTANT.PDF_FILE_PATH, Constants.CONSTANT.PDF_FILE_NAME);
+                                    File file = new File(Constants.CONSTANT.PDF_FILE_PATH + "/", Constants.CONSTANT.PDF_FILE_NAME);
+                                    try {
+                                        file.createNewFile();
+                                    } catch (IOException e) {
+                                        e.printStackTrace();
+                                    }
                                     fileOutputStream = new FileOutputStream(file);
                                     int count = 0;
                                     while ((length = inputStream.read(buffer)) != -1) {

+ 238 - 38
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/activity/DataInquiryListActivity.java

@@ -6,6 +6,7 @@ import android.os.Handler;
 import android.os.Message;
 import android.support.v7.app.ActionBar;
 import android.text.TextUtils;
+import android.util.Log;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -15,8 +16,10 @@ import android.view.inputmethod.EditorInfo;
 import android.widget.AdapterView;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
+import android.widget.ListView;
 import android.widget.TextView;
 
+import com.handmark.pulltorefresh.library.PullToRefreshBase;
 import com.handmark.pulltorefresh.library.PullToRefreshListView;
 import com.iflytek.cloud.RecognizerResult;
 import com.iflytek.cloud.SpeechConstant;
@@ -38,6 +41,7 @@ import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 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.ui.erp.view.EmptyLayout;
 import com.xzjmyk.pm.activity.view.ClearEditText;
 import com.xzjmyk.pm.activity.view.MyListView;
 
@@ -45,6 +49,11 @@ import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
@@ -76,21 +85,24 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
     private TextView mExactOptionConfirmTv;
     private View mFuzzyViewBg, mExactViewBg;
     private Animation mInAnimation, mOutAnimation;
-    private int mPageIndex = 1, mPagesize = 20;
+    private int mPageIndex = 1, mPagesize = 10;
     private List<HistoricalRecordBean> mHistoricalRecordBeans;
     private HistoricalRecordAdapter mHistoricalRecordAdapter;
     private String mSearchField = "";
-    private List<SchemeConditionBean> mAllSchemeConditions, mAppSchemeConditions;
+    private List<SchemeConditionBean> mAllSchemeConditions, mAppSchemeConditions, mfuzzySchemeConditionBeans, mResetSchemeConditionBeans;
     private DataInquirySchemeConditionAdapter mDataInquirySchemeConditionAdapter;
     private List<DataInquiryFlexBean> mDataInquiryFlexBeans;
     private DataInquiryFlexAdapter mDataInquiryFlexAdapter;
     private List<DataInquiryFlexBean.RowBean.RowChildBean> mAllRowChildBeans;
+    private EmptyLayout mEmptyLayout;
 
     private Handler mHandler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
             switch (msg.what) {
                 case GET_QUERY_CRITERIA:
+                    if (mDataListView.isRefreshing())
+                        mDataListView.onRefreshComplete();
                     String result = msg.getData().getString("result");
                     if (result != null) {
                         LogUtil.prinlnLongMsg("querycriteria", msg.getData().getString("result"));
@@ -98,6 +110,7 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
                             JSONObject resultObject = new JSONObject(result);
                             JSONArray dataArray = resultObject.optJSONArray("data");
                             if (dataArray != null) {
+                                String fuzzyHint = "";
                                 for (int i = 0; i < dataArray.length(); i++) {
                                     JSONObject dataObject = dataArray.optJSONObject(i);
                                     if (dataObject != null) {
@@ -109,6 +122,11 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
                                         String caption = optStringNotNull(dataObject, "caption");
                                         String defaultValue = optStringNotNull(dataObject, "defaultValue");
                                         String type = optStringNotNull(dataObject, "type");
+
+                                        if (appCondition && "S".equals(type)) {
+                                            fuzzyHint = fuzzyHint + caption + "/";
+                                        }
+
                                         if (!dataObject.isNull("properties")) {
                                             JSONArray properties = dataObject.optJSONArray("properties");
                                             if (properties != null) {
@@ -142,7 +160,7 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
                                                     SchemeConditionBean.Property property = new SchemeConditionBean.Property();
                                                     properties.add(property);
                                                 }
-                                            } else if ("CBG".equals(type) || "C".equals(type) || "R".equals(type)) {
+                                            } else if ("CBG".equals(type) || "EC".equals(type) || "C".equals(type) || "R".equals(type)) {
 
                                             }
                                             schemeConditionBean.setProperties(properties);
@@ -160,10 +178,29 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
 
                                         if (schemeConditionBean.isAppCondition()) {
                                             mAppSchemeConditions.add(schemeConditionBean);
+                                            if ("S".equals(type)) {
+                                                mfuzzySchemeConditionBeans.add(schemeConditionBean);
+                                            }
                                         }
                                     }
                                 }
+
+                                try {
+                                    mResetSchemeConditionBeans = deepCopy(mAppSchemeConditions);
+                                } catch (IOException e) {
+                                    e.printStackTrace();
+                                } catch (ClassNotFoundException e) {
+                                    e.printStackTrace();
+                                }
+
                                 mDataInquirySchemeConditionAdapter.notifyDataSetChanged();
+
+                                if (fuzzyHint.length() > 0) {
+                                    fuzzyHint = fuzzyHint.substring(0, fuzzyHint.length() - 1);
+                                    mSearchEditText.setHint(fuzzyHint);
+                                } else {
+                                    mSearchEditText.setHint("搜索");
+                                }
                             }
                         } catch (JSONException e) {
                             e.printStackTrace();
@@ -173,10 +210,13 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
                     getSchemeData();
                     break;
                 case GET_DATA_RESULT:
+                    if (mDataListView.isRefreshing())
+                        mDataListView.onRefreshComplete();
                     progressDialog.dismiss();
                     result = msg.getData().getString("result");
                     if (result != null) {
-                        mDataInquiryFlexBeans.clear();
+                        if (mPageIndex == 1)
+                            mDataInquiryFlexBeans.clear();
                         LogUtil.prinlnLongMsg("schemedata", msg.getData().getString("result"));
                         try {
                             JSONObject resultObject = new JSONObject(result);
@@ -236,54 +276,65 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
                                                 longChildBeans.add(rowChildBean);
                                             }
                                         }
-                                        for (int k = 0; k < longChildBeans.size(); k++) {
+
+                                        for (int k = 0; k < (shortChildBeans.size() / 2); k++) {
                                             DataInquiryFlexBean.RowBean rowBean = new DataInquiryFlexBean.RowBean();
 
                                             List<DataInquiryFlexBean.RowBean.RowChildBean> childBeans = new ArrayList<>();
-                                            childBeans.add(longChildBeans.get(k));
+                                            childBeans.add(shortChildBeans.get(k * 2));
+                                            childBeans.add(shortChildBeans.get((k * 2) + 1));
 
                                             rowBean.setRowChildBeans(childBeans);
 
                                             rowBeans.add(rowBean);
                                         }
 
-                                        for (int k = 0; k < (shortChildBeans.size() / 2); k++) {
+                                        if ((shortChildBeans.size() % 2) != 0) {
                                             DataInquiryFlexBean.RowBean rowBean = new DataInquiryFlexBean.RowBean();
 
                                             List<DataInquiryFlexBean.RowBean.RowChildBean> childBeans = new ArrayList<>();
-                                            childBeans.add(shortChildBeans.get(k * 2));
-                                            childBeans.add(shortChildBeans.get((k * 2) + 1));
+                                            childBeans.add(shortChildBeans.get(shortChildBeans.size() - 1));
 
                                             rowBean.setRowChildBeans(childBeans);
 
                                             rowBeans.add(rowBean);
                                         }
 
-                                        if ((shortChildBeans.size() % 2) != 0) {
+                                        for (int k = 0; k < longChildBeans.size(); k++) {
                                             DataInquiryFlexBean.RowBean rowBean = new DataInquiryFlexBean.RowBean();
 
                                             List<DataInquiryFlexBean.RowBean.RowChildBean> childBeans = new ArrayList<>();
-                                            childBeans.add(shortChildBeans.get(shortChildBeans.size() - 1));
+                                            childBeans.add(longChildBeans.get(k));
 
                                             rowBean.setRowChildBeans(childBeans);
 
                                             rowBeans.add(rowBean);
                                         }
+
                                         dataInquiryFlexBean.setRowBeans(rowBeans);
 
                                         mDataInquiryFlexBeans.add(dataInquiryFlexBean);
                                     }
                                 }
                                 mDataInquiryFlexAdapter.notifyDataSetChanged();
+                            } else {
+                                mDataInquiryFlexAdapter.notifyDataSetChanged();
+                                mEmptyLayout.showEmpty();
                             }
+
                         } catch (JSONException e) {
                             e.printStackTrace();
                         }
                     }
                     break;
                 case Constants.APP_SOCKETIMEOUTEXCEPTION:
+                    if (mDataListView.isRefreshing())
+                        mDataListView.onRefreshComplete();
                     progressDialog.dismiss();
                     ToastMessage(msg.getData().getString("result"));
+                    if (mPageIndex > 1) {
+                        mPageIndex--;
+                    }
                     break;
             }
         }
@@ -315,16 +366,22 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
             mHistoricalRecordAdapter.notifyDataSetChanged();
         }
 
-        if (mQueryScheme != null) {
-            progressDialog.show();
-            String url = Constants.getAppBaseUrl(this) + "mobile/qry/schemeCondition.action";
-            Map<String, Object> params = new HashMap<>();
-            params.put("caller", mQueryScheme.getCaller());
-            params.put("id", mQueryScheme.getSchemeId());
-            LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
-            headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
-            ViewUtil.httpSendRequest(this, url, params, mHandler, headers, GET_QUERY_CRITERIA, null, null, "post");
+        if (!CommonUtil.isNetWorkConnected(this)) {
+            mEmptyLayout.setErrorMessage(getString(R.string.networks_out));
+            mEmptyLayout.showError();
+        } else {
+            if (mQueryScheme != null) {
+                progressDialog.show();
+                String url = Constants.getAppBaseUrl(this) + "mobile/qry/schemeCondition.action";
+                Map<String, Object> params = new HashMap<>();
+                params.put("caller", mQueryScheme.getCaller());
+                params.put("id", mQueryScheme.getSchemeId());
+                LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+                headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+                ViewUtil.httpSendRequest(this, url, params, mHandler, headers, GET_QUERY_CRITERIA, null, null, "post");
+            }
         }
+
     }
 
     private void initViews() {
@@ -338,6 +395,7 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
         bar.setCustomView(view);
 
         mDataListView = (PullToRefreshListView) findViewById(R.id.data_inquiry_list_ptlv);
+        mDataListView.setMode(PullToRefreshBase.Mode.BOTH);
         mFuzzyWholeLl = (LinearLayout) findViewById(R.id.data_inquiry_list_fuzzy_ll);
         mFuzzyHistoryLl = (LinearLayout) findViewById(R.id.data_inquiry_list_history_ll);
         mHistoryClearTv = (TextView) findViewById(R.id.data_inquiry_history_clear_tv);
@@ -353,11 +411,19 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
         mHistoricalRecordBeans = new ArrayList<>();
         mAllSchemeConditions = new ArrayList<>();
         mAppSchemeConditions = new ArrayList<>();
+        mfuzzySchemeConditionBeans = new ArrayList<>();
+        mResetSchemeConditionBeans = new ArrayList<>();
         mDataInquiryFlexBeans = new ArrayList<>();
         mAllRowChildBeans = new ArrayList<>();
         mInAnimation = AnimationUtils.loadAnimation(this, R.anim.anim_search_popin);
         mOutAnimation = AnimationUtils.loadAnimation(this, R.anim.anim_search_popout);
 
+        mEmptyLayout = new EmptyLayout(this, mDataListView.getRefreshableView());
+        mEmptyLayout.setShowLoadingButton(false);
+        mEmptyLayout.setShowEmptyButton(false);
+        mEmptyLayout.setShowErrorButton(false);
+        mEmptyLayout.setEmptyMessage("没有符合条件的数据");
+
         mDataInquirySchemeConditionAdapter = new DataInquirySchemeConditionAdapter(this, mAppSchemeConditions);
         mExactOptionLv.setAdapter(mDataInquirySchemeConditionAdapter);
 
@@ -384,10 +450,36 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
 
         mSearchEditText.setOnEditorActionListener(this);
 
+        mDataListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
+            @Override
+            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
+                if (CommonUtil.isNetWorkConnected(DataInquiryListActivity.this)) {
+                    mPageIndex = 1;
+                    getSchemeData();
+                } else {
+                    mEmptyLayout.setErrorMessage(getString(R.string.networks_out));
+                    mEmptyLayout.showError();
+                }
+            }
+
+            @Override
+            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
+                if (!CommonUtil.isNetWorkConnected(DataInquiryListActivity.this)) {
+                    mEmptyLayout.setErrorMessage(getString(R.string.networks_out));
+                    mEmptyLayout.showError();
+                } else {
+                    mPageIndex++;
+                    getSchemeData();
+                }
+            }
+        });
+
         mSearchEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
             @Override
             public void onFocusChange(View v, boolean hasFocus) {
                 if (hasFocus) {
+                    if (mExactWholeLl.getVisibility() == View.VISIBLE)
+                        mExactWholeLl.setVisibility(View.GONE);
                     if (mHistoricalRecordAdapter.getObjects().size() > 0) {
                         if (mFuzzyWholeLl.getVisibility() == View.GONE) {
                             mFuzzyHistoryLl.startAnimation(mInAnimation);
@@ -395,8 +487,6 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
                         }
                     }
 
-
-                    mExactWholeLl.setVisibility(View.GONE);
                 } else {
                     if (mFuzzyWholeLl.getVisibility() == View.VISIBLE)
                         mFuzzyWholeLl.setVisibility(View.GONE);
@@ -430,6 +520,7 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
                 mSearchEditText.clearFocus();
                 mExactWholeLl.setVisibility(View.GONE);
                 mFuzzyWholeLl.setVisibility(View.GONE);
+                CommonUtil.closeKeybord(mSearchEditText, DataInquiryListActivity.this);
             }
 
             @Override
@@ -444,10 +535,25 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
                 HistoricalRecordBean historicalRecordBean = mHistoricalRecordAdapter.getObjects().get(position);
                 mSearchEditText.setText(historicalRecordBean.getSearchField());
                 mSearchField = historicalRecordBean.getSearchField();
-                mSearchEditText.clearFocus();
-                mFuzzyWholeLl.setVisibility(View.GONE);
-                progressDialog.show();
-                getSchemeData();
+
+                if (!TextUtils.isEmpty(mSearchField)) {
+                    mCondition = "";
+                    for (int i = 0; i < mfuzzySchemeConditionBeans.size(); i++) {
+                        mCondition = mCondition + "(" + mfuzzySchemeConditionBeans.get(i).getField()
+                                + " like \'%" + mSearchField + "%\') and ";
+                    }
+                    if (mCondition.length() >= 5) {
+                        mCondition = mCondition.substring(0, mCondition.length() - 5);
+                    }
+
+                    Log.d("fuzzyCondition", mCondition);
+
+                    mPageIndex = 1;
+                    mSearchEditText.clearFocus();
+                    mFuzzyWholeLl.setVisibility(View.GONE);
+                    progressDialog.show();
+                    getSchemeData();
+                }
             }
         });
     }
@@ -456,12 +562,11 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.data_inquiry_filter_iv:
+                if (mFuzzyWholeLl.getVisibility() == View.VISIBLE) {
+                    mFuzzyWholeLl.setVisibility(View.GONE);
+                }
+                mSearchEditText.clearFocus();
                 if (mAppSchemeConditions.size() > 0) {
-
-                    mSearchEditText.clearFocus();
-                    if (mFuzzyWholeLl.getVisibility() == View.VISIBLE) {
-                        mFuzzyWholeLl.setVisibility(View.GONE);
-                    }
                     if (mExactWholeLl.getVisibility() == View.VISIBLE) {
                         mExactOptionLl.startAnimation(mOutAnimation);
                     } else {
@@ -485,8 +590,78 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
                 mExactWholeLl.setVisibility(View.GONE);
                 break;
             case R.id.data_inquiry_list_option_reset_tv:
+                mAppSchemeConditions.clear();
+                try {
+                    List<SchemeConditionBean> conditionBeans = deepCopy(mResetSchemeConditionBeans);
+                    mAppSchemeConditions.addAll(conditionBeans);
+                    mDataInquirySchemeConditionAdapter.notifyDataSetChanged();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                } catch (ClassNotFoundException e) {
+                    e.printStackTrace();
+                }
                 break;
             case R.id.data_inquiry_list_option_confirm_tv:
+                mCondition = "";
+                for (int i = 0; i < mAppSchemeConditions.size(); i++) {
+                    SchemeConditionBean schemeConditionBean = mAppSchemeConditions.get(i);
+                    if ("S".equals(schemeConditionBean.getType()) && schemeConditionBean.getProperties().size() == 1) {
+                        if (!TextUtils.isEmpty(schemeConditionBean.getProperties().get(0).getDisplay())) {
+                            mCondition = mCondition + "(" + schemeConditionBean.getField()
+                                    + " = \'" + schemeConditionBean.getProperties().get(0).getDisplay() + "\')"
+                                    + " and ";
+                        }
+                    } else if ("N".equals(schemeConditionBean.getType()) && schemeConditionBean.getProperties().size() == 2) {
+                        if (!TextUtils.isEmpty(schemeConditionBean.getProperties().get(0).getDisplay())
+                                && !TextUtils.isEmpty(schemeConditionBean.getProperties().get(1).getDisplay())) {
+                            mCondition = mCondition + "(" + schemeConditionBean.getField()
+                                    + " >= " + schemeConditionBean.getProperties().get(0).getDisplay()
+                                    + " and " + schemeConditionBean.getField()
+                                    + " <= " + schemeConditionBean.getProperties().get(1).getDisplay() + ") and ";
+
+                        } else if (!TextUtils.isEmpty(schemeConditionBean.getProperties().get(0).getDisplay())) {
+                            mCondition = mCondition + "(" + schemeConditionBean.getField()
+                                    + " >= " + schemeConditionBean.getProperties().get(0).getDisplay() + ") and ";
+                        } else if (!TextUtils.isEmpty(schemeConditionBean.getProperties().get(1).getDisplay())) {
+                            mCondition = mCondition + "(" + schemeConditionBean.getField()
+                                    + " <= " + schemeConditionBean.getProperties().get(1).getDisplay() + ") and ";
+                        }
+
+                    } else if (("D".equals(schemeConditionBean.getType()) || "CD".equals(schemeConditionBean.getType())) && schemeConditionBean.getProperties().size() == 2) {
+                        mCondition = mCondition + "(" + schemeConditionBean.getField()
+                                + " >= to_date(\'" + schemeConditionBean.getProperties().get(0).getDisplay()
+                                + "\',\'yyyy-MM-dd\') and " + schemeConditionBean.getField()
+                                + " <= to_date(\'" + schemeConditionBean.getProperties().get(1).getDisplay()
+                                + "\',\'yyyy-MM-dd\')) and ";
+                    } else if ("CBG".equals(schemeConditionBean.getType()) || "C".equals(schemeConditionBean.getType())
+                            || "R".equals(schemeConditionBean.getType()) || "EC".equals(schemeConditionBean.getType())) {
+                        String gridCondition = "";
+                        int selectedCount = 0;
+                        for (int j = 0; j < schemeConditionBean.getProperties().size(); j++) {
+                            if (schemeConditionBean.getProperties().get(j).isState()) {
+                                selectedCount++;
+                                gridCondition = gridCondition + schemeConditionBean.getField() + " = \'"
+                                        + schemeConditionBean.getProperties().get(j).getValue() + "\' or ";
+                            }
+                        }
+                        if (selectedCount > 0) {
+                            gridCondition = gridCondition.substring(0, gridCondition.length() - 4);
+
+                            mCondition = mCondition + "(" + gridCondition + ") and ";
+                        }
+                    }
+                }
+
+                if (mCondition.length() >= 5) {
+                    mCondition = mCondition.substring(0, mCondition.length() - 5);
+                }
+
+                Log.d("exactCondition", mCondition);
+
+                mPageIndex = 1;
+                mExactWholeLl.setVisibility(View.GONE);
+                progressDialog.show();
+                getSchemeData();
                 break;
         }
     }
@@ -518,15 +693,28 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
         if (actionId == EditorInfo.IME_ACTION_SEARCH
                 || actionId == EditorInfo.IME_ACTION_SEND
                 || (event != null && event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
-            // TODO: 2017/8/18 condition
             String searchField = mSearchEditText.getText().toString().trim();
             if (!TextUtils.isEmpty(searchField)) {
-                mSearchField = searchField;
-                mSearchEditText.clearFocus();
-                mFuzzyWholeLl.setVisibility(View.GONE);
-                progressDialog.show();
-                getSchemeData();
+                mCondition = "";
+                for (int i = 0; i < mfuzzySchemeConditionBeans.size(); i++) {
+                    mCondition = mCondition + "(" + mfuzzySchemeConditionBeans.get(i).getField()
+                            + " like \'%" + searchField + "%\') and ";
+                }
+                if (mCondition.length() >= 5) {
+                    mCondition = mCondition.substring(0, mCondition.length() - 5);
+                }
+
+                Log.d("fuzzyCondition", mCondition);
+
+            } else {
+                mCondition = "1 = 1";
             }
+            mPageIndex = 1;
+            mSearchField = searchField;
+            mSearchEditText.clearFocus();
+            mFuzzyWholeLl.setVisibility(View.GONE);
+            progressDialog.show();
+            getSchemeData();
             return true;
         }
         return false;
@@ -553,11 +741,23 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
         }
     }
 
-    public static long optLongNotNull(JSONObject json, String key) {
+    public long optLongNotNull(JSONObject json, String key) {
         if (json.isNull(key)) {
             return 0;
         } else {
             return json.optLong(key, 0);
         }
     }
+
+    public <T> List<T> deepCopy(List<T> src) throws IOException, ClassNotFoundException {
+        ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
+        ObjectOutputStream out = new ObjectOutputStream(byteOut);
+        out.writeObject(src);
+
+        ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
+        ObjectInputStream in = new ObjectInputStream(byteIn);
+        @SuppressWarnings("unchecked")
+        List<T> dest = (List<T>) in.readObject();
+        return dest;
+    }
 }

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

@@ -1,9 +1,11 @@
 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;
@@ -21,11 +23,13 @@ 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;
@@ -33,8 +37,8 @@ public class PDFDownloadActivity extends BaseActivity implements View.OnClickLis
     private ProgressBar mDownloadProgressBar;
     private RelativeLayout mDownloadRelativeLayout;
     private LinearLayout mErrorLinearLayout;
-    private String downloadUrl = "";
-
+    private String downloadUrl = "", mReportName = "";
+    private String mCondition;
 
     private Handler mHandler = new Handler() {
         @Override
@@ -118,6 +122,22 @@ public class PDFDownloadActivity extends BaseActivity implements View.OnClickLis
     }
 
     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);
         mStateTextView = (TextView) findViewById(R.id.pdf_download_state_tv);
         mRemainTextView = (TextView) findViewById(R.id.pdf_download_remain_tv);
@@ -131,6 +151,7 @@ public class PDFDownloadActivity extends BaseActivity implements View.OnClickLis
     private void initEvents() {
         mExitTextView.setOnClickListener(this);
         mReloadTextView.setOnClickListener(this);
+        mDownloadRelativeLayout.setOnClickListener(this);
     }
 
     @Override
@@ -140,6 +161,7 @@ public class PDFDownloadActivity extends BaseActivity implements View.OnClickLis
                 onBackPressed();
                 break;
             case R.id.pdf_download_reload_tv:
+                mStateTextView.setText(R.string.str_loading);
                 mErrorLinearLayout.setVisibility(View.GONE);
                 PDFUtils.downloadPDF(downloadUrl, mHandler);
                 break;

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

@@ -4,19 +4,35 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.text.TextUtils;
+import android.util.Log;
 import android.view.View;
 import android.widget.TextView;
 
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.adapter.ReportQueryConditionAdapter;
 import com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.bean.GridMenuReportStatisticsBean;
+import com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.bean.ReportConditionBean;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 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.view.MyListView;
 
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -27,7 +43,9 @@ public class ReportQueryCriteriaActivity extends BaseActivity implements View.On
     private MyListView mOptionListView;
     private TextView mCancelTextView, mResetTextView, mConfirmTextView;
     private GridMenuReportStatisticsBean.ListBean mReportInfo;
-    private String mPdfUrl;
+    private String mCondition = "";
+    private List<ReportConditionBean> mReportConditionBeans, mResetReportConditionBeans;
+    private ReportQueryConditionAdapter mReportQueryConditionAdapter;
 
     private Handler mHandler = new Handler() {
         @Override
@@ -35,6 +53,87 @@ public class ReportQueryCriteriaActivity extends BaseActivity implements View.On
             switch (msg.what) {
                 case GET_OPTION_DATA:
                     progressDialog.dismiss();
+                    String result = msg.getData().getString("result");
+                    if (result != null) {
+                        LogUtil.prinlnLongMsg("querycriteria", msg.getData().getString("result"));
+                        try {
+                            JSONObject resultObject = new JSONObject(result);
+                            JSONArray conditionArray = resultObject.optJSONArray("listCondition");
+                            if (conditionArray != null) {
+                                String fuzzyHint = "";
+                                for (int i = 0; i < conditionArray.length(); i++) {
+                                    JSONObject conditionObject = conditionArray.optJSONObject(i);
+                                    if (conditionObject != null) {
+                                        ReportConditionBean reportConditionBean = new ReportConditionBean();
+                                        String field = optStringNotNull(conditionObject, "field");
+                                        String title = optStringNotNull(conditionObject, "title");
+                                        String type = optStringNotNull(conditionObject, "type");
+                                        String readOnly = optStringNotNull(conditionObject, "readOnly");
+
+                                        if (!conditionObject.isNull("properties")) {
+                                            JSONArray properties = conditionObject.optJSONArray("properties");
+                                            if (properties != null) {
+                                                List<ReportConditionBean.Property> propertyList = new ArrayList<>();
+                                                for (int j = 0; j < properties.length(); j++) {
+                                                    JSONObject propertyObject = properties.optJSONObject(j);
+                                                    ReportConditionBean.Property property = new ReportConditionBean.Property();
+                                                    String value = optStringNotNull(propertyObject, "value");
+                                                    String display = optStringNotNull(propertyObject, "display");
+
+                                                    property.setDisplay(display);
+                                                    property.setValue(value);
+                                                    property.setState(false);
+
+                                                    propertyList.add(property);
+                                                }
+                                                reportConditionBean.setProperties(propertyList);
+                                            }
+                                        } else {
+                                            ArrayList<ReportConditionBean.Property> properties = new ArrayList<>();
+                                            if ("S".equals(type)) {
+                                                ReportConditionBean.Property property = new ReportConditionBean.Property();
+                                                properties.add(property);
+                                            } else if ("N".equals(type)) {
+                                                for (int m = 0; m < 2; m++) {
+                                                    ReportConditionBean.Property property = new ReportConditionBean.Property();
+                                                    properties.add(property);
+                                                }
+                                            } else if ("D".equals(type) || "CD".equals(type)) {
+                                                for (int m = 0; m < 2; m++) {
+                                                    ReportConditionBean.Property property = new ReportConditionBean.Property();
+                                                    properties.add(property);
+                                                }
+                                            } else if ("CBG".equals(type) || "C".equals(type) || "R".equals(type)) {
+
+                                            }
+                                            reportConditionBean.setProperties(properties);
+                                        }
+
+                                        reportConditionBean.setField(field);
+                                        reportConditionBean.setTitle(title);
+                                        reportConditionBean.setType(type);
+                                        reportConditionBean.setReadOnly(readOnly);
+
+                                        mReportConditionBeans.add(reportConditionBean);
+                                    }
+                                }
+
+                                try {
+                                    mResetReportConditionBeans = deepCopy(mReportConditionBeans);
+                                } catch (IOException e) {
+                                    e.printStackTrace();
+                                } catch (ClassNotFoundException e) {
+                                    e.printStackTrace();
+                                }
+
+                                mReportQueryConditionAdapter.notifyDataSetChanged();
+
+                            }
+                        } catch (JSONException e) {
+                            e.printStackTrace();
+                        }
+
+                    }
                     break;
                 case Constants.APP_SOCKETIMEOUTEXCEPTION:
                     progressDialog.dismiss();
@@ -62,6 +161,10 @@ public class ReportQueryCriteriaActivity extends BaseActivity implements View.On
         mResetTextView = (TextView) findViewById(R.id.report_query_criteria_reset_btn);
         mConfirmTextView = (TextView) findViewById(R.id.report_query_criteria_confirm_btn);
 
+        mReportConditionBeans = new ArrayList<>();
+        mReportQueryConditionAdapter = new ReportQueryConditionAdapter(this, mReportConditionBeans);
+        mOptionListView.setAdapter(mReportQueryConditionAdapter);
+
         Intent intent = getIntent();
         if (intent != null) {
             mReportInfo = (GridMenuReportStatisticsBean.ListBean) intent.getSerializableExtra("reportinfo");
@@ -94,16 +197,109 @@ public class ReportQueryCriteriaActivity extends BaseActivity implements View.On
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.report_query_criteria_confirm_btn:
-                Intent intent = new Intent();
-                intent.setClass(this, PDFDownloadActivity.class);
+                mCondition = "";
+                for (int i = 0; i < mReportConditionBeans.size(); i++) {
+                    ReportConditionBean reportConditionBean = mReportConditionBeans.get(i);
+                    if ("S".equals(reportConditionBean.getType()) && reportConditionBean.getProperties().size() == 1) {
+                        if (!TextUtils.isEmpty(reportConditionBean.getProperties().get(0).getDisplay())) {
+                            mCondition = mCondition + "(" + reportConditionBean.getField()
+                                    + " = \'" + reportConditionBean.getProperties().get(0).getDisplay() + "\')"
+                                    + " and ";
+                        }
+                    } else if ("N".equals(reportConditionBean.getType()) && reportConditionBean.getProperties().size() == 2) {
+                        if (!TextUtils.isEmpty(reportConditionBean.getProperties().get(0).getDisplay())
+                                && !TextUtils.isEmpty(reportConditionBean.getProperties().get(1).getDisplay())) {
+                            mCondition = mCondition + "(" + reportConditionBean.getField()
+                                    + " >= " + reportConditionBean.getProperties().get(0).getDisplay()
+                                    + " and " + reportConditionBean.getField()
+                                    + " <= " + reportConditionBean.getProperties().get(1).getDisplay() + ") and ";
+
+                        } else if (!TextUtils.isEmpty(reportConditionBean.getProperties().get(0).getDisplay())) {
+                            mCondition = mCondition + "(" + reportConditionBean.getField()
+                                    + " >= " + reportConditionBean.getProperties().get(0).getDisplay() + ") and ";
+                        } else if (!TextUtils.isEmpty(reportConditionBean.getProperties().get(1).getDisplay())) {
+                            mCondition = mCondition + "(" + reportConditionBean.getField()
+                                    + " <= " + reportConditionBean.getProperties().get(1).getDisplay() + ") and ";
+                        }
 
-                startActivity(intent);
+                    } else if (("D".equals(reportConditionBean.getType()) || "CD".equals(reportConditionBean.getType())) && reportConditionBean.getProperties().size() == 2) {
+                        mCondition = mCondition + "(" + reportConditionBean.getField()
+                                + " >= to_date(\'" + reportConditionBean.getProperties().get(0).getDisplay()
+                                + "\',\'yyyy-MM-dd\') and " + reportConditionBean.getField()
+                                + " <= to_date(\'" + reportConditionBean.getProperties().get(1).getDisplay()
+                                + "\',\'yyyy-MM-dd\')) and ";
+                    } else if ("CBG".equals(reportConditionBean.getType()) || "C".equals(reportConditionBean.getType())
+                            || "R".equals(reportConditionBean.getType()) || "EC".equals(reportConditionBean.getType())) {
+                        String gridCondition = "";
+                        int selectedCount = 0;
+                        for (int j = 0; j < reportConditionBean.getProperties().size(); j++) {
+                            if (reportConditionBean.getProperties().get(j).isState()) {
+                                selectedCount++;
+                                gridCondition = gridCondition + reportConditionBean.getField() + " = \'"
+                                        + reportConditionBean.getProperties().get(j).getValue() + "\' or ";
+                            }
+                        }
+                        if (selectedCount > 0) {
+                            gridCondition = gridCondition.substring(0, gridCondition.length() - 4);
+
+                            mCondition = mCondition + "(" + gridCondition + ") and ";
+                        }
+                    }
+                }
+
+                if (mCondition.length() >= 5) {
+                    mCondition = mCondition.substring(0, mCondition.length() - 5);
+                }
+
+                Log.d("exactCondition", mCondition);
+
+                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);
+                }
                 break;
             case R.id.report_query_criteria_reset_btn:
-                // TODO: 2017/8/17 重置条件
+                mReportConditionBeans.clear();
+                try {
+                    List<ReportConditionBean> conditionBeans = deepCopy(mResetReportConditionBeans);
+                    mReportConditionBeans.addAll(conditionBeans);
+                    mReportQueryConditionAdapter.notifyDataSetChanged();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                } catch (ClassNotFoundException e) {
+                    e.printStackTrace();
+                }
                 break;
             case R.id.report_query_criteria_cancel_btn:
+                onBackPressed();
                 break;
         }
     }
+
+    public String optStringNotNull(JSONObject json, String key) {
+        if (json.isNull(key)) {
+            return "";
+        } else {
+            return json.optString(key, "");
+        }
+    }
+
+    public <T> List<T> deepCopy(List<T> src) throws IOException, ClassNotFoundException {
+        ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
+        ObjectOutputStream out = new ObjectOutputStream(byteOut);
+        out.writeObject(src);
+
+        ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
+        ObjectInputStream in = new ObjectInputStream(byteIn);
+        @SuppressWarnings("unchecked")
+        List<T> dest = (List<T>) in.readObject();
+        return dest;
+    }
 }

+ 12 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/adapter/DataInquirySchemeConditionAdapter.java

@@ -88,6 +88,7 @@ public class DataInquirySchemeConditionAdapter extends BaseAdapter {
                     public void afterTextChanged(Editable s) {
                         if (!strChanged && object.getProperties().size() == 1) {
                             object.getProperties().get(0).setDisplay(s.toString());
+                            object.getProperties().get(0).setValue(s.toString());
                         }
                     }
                 });
@@ -120,6 +121,7 @@ public class DataInquirySchemeConditionAdapter extends BaseAdapter {
                     public void afterTextChanged(Editable s) {
                         if (!numChanged1 && object.getProperties().size() == 2) {
                             object.getProperties().get(0).setDisplay(s.toString());
+                            object.getProperties().get(0).setValue(s.toString());
                         }
                     }
                 });
@@ -139,6 +141,7 @@ public class DataInquirySchemeConditionAdapter extends BaseAdapter {
                     public void afterTextChanged(Editable s) {
                         if (!numChanged2 && object.getProperties().size() == 2) {
                             object.getProperties().get(1).setDisplay(s.toString());
+                            object.getProperties().get(1).setValue(s.toString());
                         }
                     }
                 });
@@ -162,6 +165,12 @@ public class DataInquirySchemeConditionAdapter extends BaseAdapter {
 
                 holder.textview1.setText(getMonthFirstDay());
                 holder.textview2.setText(getMonthLastDay());
+
+                object.getProperties().get(0).setDisplay(getMonthFirstDay());
+                object.getProperties().get(0).setValue(getMonthFirstDay());
+                object.getProperties().get(1).setDisplay(getMonthLastDay());
+                object.getProperties().get(1).setValue(getMonthLastDay());
+
                 mProperties = object.getProperties();
 
                 holder.calendar1.setOnClickListener(new View.OnClickListener() {
@@ -170,6 +179,7 @@ public class DataInquirySchemeConditionAdapter extends BaseAdapter {
                         showDateDialog(holder.textview1);
                         if (object.getProperties().size() == 2) {
                             object.getProperties().get(0).setDisplay(holder.textview1.getText().toString());
+                            object.getProperties().get(0).setValue(holder.textview1.getText().toString());
                         }
                     }
                 });
@@ -180,12 +190,14 @@ public class DataInquirySchemeConditionAdapter extends BaseAdapter {
                         showDateDialog(holder.textview2);
                         if (object.getProperties().size() == 2) {
                             object.getProperties().get(1).setDisplay(holder.textview2.getText().toString());
+                            object.getProperties().get(1).setValue(holder.textview2.getText().toString());
                         }
                     }
                 });
                 break;
             case "CBG":
             case "C":
+            case "EC":
             case "R":
                 holder.stringEdittext.setVisibility(View.GONE);
                 holder.numEdittextLl.setVisibility(View.GONE);

+ 69 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/adapter/ItemGridReportQueryExactAdapter.java

@@ -0,0 +1,69 @@
+package com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.bean.ReportConditionBean;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ItemGridReportQueryExactAdapter extends BaseAdapter {
+    private List<ReportConditionBean.Property> objects = new ArrayList<ReportConditionBean.Property>();
+
+    private Context context;
+    private LayoutInflater layoutInflater;
+
+    public ItemGridReportQueryExactAdapter(Context context, List<ReportConditionBean.Property> objects) {
+        this.context = context;
+        this.layoutInflater = LayoutInflater.from(context);
+        this.objects = objects;
+    }
+
+    @Override
+    public int getCount() {
+        return objects.size();
+    }
+
+    @Override
+    public ReportConditionBean.Property getItem(int position) {
+        return objects.get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        if (convertView == null) {
+            convertView = layoutInflater.inflate(R.layout.item_grid_data_inquiry_exact, null);
+            convertView.setTag(new ViewHolder(convertView));
+        }
+        initializeViews((ReportConditionBean.Property) getItem(position), (ViewHolder) convertView.getTag());
+        return convertView;
+    }
+
+    private void initializeViews(ReportConditionBean.Property object, ViewHolder holder) {
+        holder.itemDataInquiryExactGridTv.setText(object.getDisplay());
+        if (object.isState()) {
+            holder.itemDataInquiryExactGridTv.setTextColor(context.getResources().getColor(R.color.blue));
+        } else {
+            holder.itemDataInquiryExactGridTv.setTextColor(context.getResources().getColor(android.R.color.black));
+        }
+    }
+
+    protected class ViewHolder {
+        private TextView itemDataInquiryExactGridTv;
+
+        public ViewHolder(View view) {
+            itemDataInquiryExactGridTv = (TextView) view.findViewById(R.id.item_data_inquiry_exact_grid_tv);
+        }
+    }
+}

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

@@ -0,0 +1,300 @@
+package com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.adapter;
+
+import android.app.Activity;
+import android.content.Context;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.bean.ReportConditionBean;
+import com.xzjmyk.pm.activity.view.MyGridView;
+import com.xzjmyk.pm.activity.view.wheel.DatePicker;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+public class ReportQueryConditionAdapter extends BaseAdapter {
+    private List<ReportConditionBean> objects = new ArrayList<ReportConditionBean>();
+
+    private Context context;
+    private LayoutInflater layoutInflater;
+    private boolean strChanged = true, numChanged1 = true, numChanged2 = true;
+
+    public ReportQueryConditionAdapter(Context context, List<ReportConditionBean> objects) {
+        this.context = context;
+        this.layoutInflater = LayoutInflater.from(context);
+        this.objects = objects;
+    }
+
+    @Override
+    public int getCount() {
+        return objects.size();
+    }
+
+    @Override
+    public ReportConditionBean getItem(int position) {
+        return objects.get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+//        if (convertView == null) {
+        convertView = layoutInflater.inflate(R.layout.item_list_data_inquiry_exact_query, null);
+        convertView.setTag(new ViewHolder(convertView));
+//        }
+        initializeViews((ReportConditionBean) getItem(position), (ViewHolder) convertView.getTag());
+        return convertView;
+    }
+
+    private void initializeViews(final ReportConditionBean object, final ViewHolder holder) {
+        holder.captionTv.setText(object.getTitle());
+
+        switch (object.getType()) {
+            case "S":
+                holder.stringEdittext.setVisibility(View.VISIBLE);
+                holder.numEdittextLl.setVisibility(View.GONE);
+                holder.textviewLl.setVisibility(View.GONE);
+                holder.gridview.setVisibility(View.GONE);
+                List<ReportConditionBean.Property> mProperties = object.getProperties();
+
+                holder.stringEdittext.addTextChangedListener(new TextWatcher() {
+                    @Override
+                    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+                    }
+
+                    @Override
+                    public void onTextChanged(CharSequence s, int start, int before, int count) {
+
+                    }
+
+                    @Override
+                    public void afterTextChanged(Editable s) {
+                        if (!strChanged && object.getProperties().size() == 1) {
+                            object.getProperties().get(0).setDisplay(s.toString());
+                            object.getProperties().get(0).setValue(s.toString());
+                        }
+                    }
+                });
+
+                strChanged = true;
+                if (mProperties != null && object.getProperties().size() == 1) {
+                    holder.stringEdittext.setText(mProperties.get(0).getDisplay());
+                    strChanged = false;
+                }
+                break;
+            case "N":
+                holder.stringEdittext.setVisibility(View.GONE);
+                holder.numEdittextLl.setVisibility(View.VISIBLE);
+                holder.textviewLl.setVisibility(View.GONE);
+                holder.gridview.setVisibility(View.GONE);
+                mProperties = object.getProperties();
+
+                holder.numEdittext1.addTextChangedListener(new TextWatcher() {
+                    @Override
+                    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+                    }
+
+                    @Override
+                    public void onTextChanged(CharSequence s, int start, int before, int count) {
+
+                    }
+
+                    @Override
+                    public void afterTextChanged(Editable s) {
+                        if (!numChanged1 && object.getProperties().size() == 2) {
+                            object.getProperties().get(0).setDisplay(s.toString());
+                            object.getProperties().get(0).setValue(s.toString());
+                        }
+                    }
+                });
+
+                holder.numEdittext2.addTextChangedListener(new TextWatcher() {
+                    @Override
+                    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+                    }
+
+                    @Override
+                    public void onTextChanged(CharSequence s, int start, int before, int count) {
+
+                    }
+
+                    @Override
+                    public void afterTextChanged(Editable s) {
+                        if (!numChanged2 && object.getProperties().size() == 2) {
+                            object.getProperties().get(1).setDisplay(s.toString());
+                            object.getProperties().get(1).setValue(s.toString());
+                        }
+                    }
+                });
+
+                numChanged1 = true;
+                numChanged2 = true;
+                if (mProperties != null && mProperties.size() == 2) {
+                    holder.numEdittext1.setText(mProperties.get(0).getDisplay());
+                    numChanged1 = false;
+
+                    holder.numEdittext2.setText(mProperties.get(1).getDisplay());
+                    numChanged2 = false;
+                }
+                break;
+            case "D":
+            case "CD":
+                holder.stringEdittext.setVisibility(View.GONE);
+                holder.numEdittextLl.setVisibility(View.GONE);
+                holder.textviewLl.setVisibility(View.VISIBLE);
+                holder.gridview.setVisibility(View.GONE);
+
+                holder.textview1.setText(getMonthFirstDay());
+                holder.textview2.setText(getMonthLastDay());
+
+                object.getProperties().get(0).setDisplay(getMonthFirstDay());
+                object.getProperties().get(0).setValue(getMonthFirstDay());
+                object.getProperties().get(1).setDisplay(getMonthLastDay());
+                object.getProperties().get(1).setValue(getMonthLastDay());
+
+                mProperties = object.getProperties();
+
+                holder.calendar1.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        showDateDialog(holder.textview1);
+                        if (object.getProperties().size() == 2) {
+                            object.getProperties().get(0).setDisplay(holder.textview1.getText().toString());
+                            object.getProperties().get(0).setValue(holder.textview1.getText().toString());
+                        }
+                    }
+                });
+
+                holder.calendar2.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        showDateDialog(holder.textview2);
+                        if (object.getProperties().size() == 2) {
+                            object.getProperties().get(1).setDisplay(holder.textview2.getText().toString());
+                            object.getProperties().get(1).setValue(holder.textview2.getText().toString());
+                        }
+                    }
+                });
+                break;
+            case "CBG":
+            case "C":
+            case "EC":
+            case "R":
+                holder.stringEdittext.setVisibility(View.GONE);
+                holder.numEdittextLl.setVisibility(View.GONE);
+                holder.textviewLl.setVisibility(View.GONE);
+                holder.gridview.setVisibility(View.VISIBLE);
+                mProperties = object.getProperties();
+
+                if (mProperties != null) {
+                    ItemGridReportQueryExactAdapter itemGridDataInquiryExactAdapter
+                            = new ItemGridReportQueryExactAdapter(context, mProperties);
+                    holder.gridview.setAdapter(itemGridDataInquiryExactAdapter);
+                }
+
+                holder.gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+                    @Override
+                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                        List<ReportConditionBean.Property> properties = object.getProperties();
+                        for (int i = 0; i < properties.size(); i++) {
+                            if (i == position) {
+                                properties.get(i).setState(!properties.get(i).isState());
+                            }
+                        }
+                        if (holder.gridview.getAdapter() != null) {
+                            ((ItemGridDataInquiryExactAdapter) holder.gridview.getAdapter()).notifyDataSetChanged();
+                        }
+                    }
+                });
+                break;
+        }
+    }
+
+    /**
+     * 得到本月的第一天
+     */
+    public static String getMonthFirstDay() {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.DAY_OF_MONTH, calendar
+                .getActualMinimum(Calendar.DAY_OF_MONTH));
+//        calendar.set( Calendar.DATE, 1);
+        SimpleDateFormat simpleFormate = new SimpleDateFormat("yyyy-MM-dd");
+        return simpleFormate.format(calendar.getTime());
+    }
+
+    /**
+     * 得到本月的最后一天
+     */
+    public static String getMonthLastDay() {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.DAY_OF_MONTH, calendar
+                .getActualMaximum(Calendar.DAY_OF_MONTH));
+//        calendar.set( Calendar.DATE, 1);
+//        calendar.roll(Calendar.DATE, - 1);
+        SimpleDateFormat simpleFormate = new SimpleDateFormat("yyyy-MM-dd");
+        return simpleFormate.format(calendar.getTime());
+    }
+
+    private void showDateDialog(final TextView tv) {
+        DatePicker picker = new DatePicker((Activity) context);
+        picker.setRange(1950, 2030);
+        picker.setSelectedItem(
+                Calendar.getInstance().get(Calendar.YEAR),
+                Calendar.getInstance().get(Calendar.MONTH) + 1,
+                Calendar.getInstance().get(Calendar.DAY_OF_MONTH));
+        picker.setOnDatePickListener(new DatePicker.OnYearMonthDayPickListener() {
+            @Override
+            public void onDatePicked(String year, String month, String day) {
+                tv.setText(year + "-" + month + "-" + day);
+            }
+        });
+        picker.show();
+    }
+
+    protected class ViewHolder {
+        private EditText stringEdittext;
+        private TextView captionTv;
+        private LinearLayout numEdittextLl;
+        private EditText numEdittext1;
+        private EditText numEdittext2;
+        private LinearLayout textviewLl;
+        private TextView textview1;
+        private ImageView calendar1;
+        private TextView textview2;
+        private ImageView calendar2;
+        private MyGridView gridview;
+
+        public ViewHolder(View view) {
+            stringEdittext = (EditText) view.findViewById(R.id.item_data_inquiry_exact_string_edittext);
+            captionTv = (TextView) view.findViewById(R.id.item_data_inquiry_exact_caption_tv);
+            numEdittextLl = (LinearLayout) view.findViewById(R.id.item_data_inquiry_exact_num_edittext_ll);
+            numEdittext1 = (EditText) view.findViewById(R.id.item_data_inquiry_num_exact_edittext1);
+            numEdittext2 = (EditText) view.findViewById(R.id.item_data_inquiry_num_exact_edittext2);
+            textviewLl = (LinearLayout) view.findViewById(R.id.item_data_inquiry_exact_textview_ll);
+            textview1 = (TextView) view.findViewById(R.id.item_data_inquiry_exact_textview1);
+            calendar1 = (ImageView) view.findViewById(R.id.item_data_inquiry_exact_calendar1);
+            textview2 = (TextView) view.findViewById(R.id.item_data_inquiry_exact_textview2);
+            calendar2 = (ImageView) view.findViewById(R.id.item_data_inquiry_exact_calendar2);
+            gridview = (MyGridView) view.findViewById(R.id.item_data_inquiry_exact_gridview);
+        }
+    }
+}

+ 85 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/bean/ReportConditionBean.java

@@ -0,0 +1,85 @@
+package com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.bean;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Created by RaoMeng on 2017/8/21.
+ */
+public class ReportConditionBean implements Serializable {
+    private String mField;
+    private String mTitle;
+    private String mType;
+    private String mReadOnly;
+    private List<Property> mProperties;
+
+    public String getField() {
+        return mField;
+    }
+
+    public void setField(String field) {
+        mField = field;
+    }
+
+    public String getTitle() {
+        return mTitle;
+    }
+
+    public void setTitle(String title) {
+        mTitle = title;
+    }
+
+    public String getType() {
+        return mType;
+    }
+
+    public void setType(String type) {
+        mType = type;
+    }
+
+    public String getReadOnly() {
+        return mReadOnly;
+    }
+
+    public void setReadOnly(String readOnly) {
+        mReadOnly = readOnly;
+    }
+
+    public List<Property> getProperties() {
+        return mProperties;
+    }
+
+    public void setProperties(List<Property> properties) {
+        mProperties = properties;
+    }
+
+    public static class Property implements Serializable {
+        private String mDisplay = "";
+        private String mValue = "";
+        private boolean mState = false;
+
+        public String getDisplay() {
+            return mDisplay;
+        }
+
+        public void setDisplay(String display) {
+            mDisplay = display;
+        }
+
+        public String getValue() {
+            return mValue;
+        }
+
+        public void setValue(String value) {
+            mValue = value;
+        }
+
+        public boolean isState() {
+            return mState;
+        }
+
+        public void setState(boolean state) {
+            mState = state;
+        }
+    }
+}

+ 5 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/bean/SchemeConditionBean.java

@@ -1,11 +1,12 @@
 package com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.bean;
 
+import java.io.Serializable;
 import java.util.List;
 
 /**
  * Created by RaoMeng on 2017/8/17.
  */
-public class SchemeConditionBean {
+public class SchemeConditionBean implements Serializable {
     private String mPosition;
     private String mCaption;
     private String mField;
@@ -79,9 +80,9 @@ public class SchemeConditionBean {
         mProperties = properties;
     }
 
-    public static class Property {
-        private String mDisplay;
-        private String mValue;
+    public static class Property implements Serializable {
+        private String mDisplay = "";
+        private String mValue = "";
         private boolean mState = false;
 
         public String getDisplay() {

+ 3 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/CommonUtil.java

@@ -1639,7 +1639,9 @@ public class CommonUtil {
                 public void run() {
                     InputMethodManager imm = (InputMethodManager) mContext
                             .getSystemService(Context.INPUT_METHOD_SERVICE);
-                    imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
+//                    if (imm.isActive(mEditText)){
+                        imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
+//                    }
                 }
             }, 100);
 

+ 1 - 1
WeiChat/src/main/res/anim/anim_search_popout.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <translate xmlns:android="http://schemas.android.com/apk/res/android"
-           android:duration="300"
+           android:duration="200"
            android:fromYDelta="0%"
            android:interpolator="@android:anim/accelerate_decelerate_interpolator"
            android:toYDelta="-100%">

+ 2 - 2
WeiChat/src/main/res/layout/activity_pdf_download.xml

@@ -60,9 +60,9 @@
                     android:id="@+id/pdf_download_remain_tv"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
+                    android:text="100"
                     android:textColor="@color/titleBlue"
-                    android:textSize="16sp"
-                    tools:text="80"/>
+                    android:textSize="16sp"/>
 
                 <TextView
                     android:layout_width="wrap_content"

+ 2 - 1
WeiChat/src/main/res/layout/item_list_data_inquiry_child.xml

@@ -3,7 +3,8 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:orientation="horizontal">
+    android:orientation="horizontal"
+    android:paddingLeft="10dp">
 
     <LinearLayout
         android:id="@+id/item_data_inquiry_child_ll1"

+ 2 - 1
WeiChat/src/main/res/layout/item_list_data_inquiry_exact_query.xml

@@ -101,7 +101,6 @@
         <LinearLayout
             android:layout_width="0dp"
             android:layout_height="36dp"
-            android:layout_marginRight="10dp"
             android:layout_weight="1"
             android:background="@drawable/shape_corner_white_bg"
             android:gravity="center_vertical">
@@ -118,6 +117,8 @@
                 android:id="@+id/item_data_inquiry_exact_calendar2"
                 android:layout_width="wrap_content"
                 android:layout_height="match_parent"
+                android:layout_marginLeft="6dp"
+                android:layout_marginRight="6dp"
                 android:src="@drawable/ic_blue_calendar"/>
         </LinearLayout>