Procházet zdrojové kódy

Merge branch 'feature' of https://gitlab.com/Arisono/SkWeiChat-Baidu into developer

# Conflicts:
#	WeiChat/build.gradle
#	app_modular/appcontact/src/main/java/com/uas/appcontact/manager/ContactsManager.java
#	app_modular/appcontact/src/main/java/com/uas/appcontact/ui/fragment/ContactsFragment.java
#	app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/MessagePresenter.java
#	app_modular/appworks/src/main/AndroidManifest.xml
#	version.gradle
Arison před 8 roky
rodič
revize
43c1540a5b
34 změnil soubory, kde provedl 3649 přidání a 1842 odebrání
  1. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/CaptureResultActivity.java
  2. 4 0
      app_core/common/src/main/java/com/core/api/wxapi/ApiPlatform.java
  3. 2 0
      app_core/common/src/main/java/com/core/base/BaseActivity.java
  4. 12 0
      app_core/common/src/main/java/com/core/base/EasyFragment.java
  5. 38 2
      app_core/common/src/main/java/com/core/model/Approval.java
  6. 3 0
      app_core/common/src/main/java/com/core/net/http/http/OAHttpHelper.java
  7. 27 0
      app_core/common/src/main/res/layout/bsetting_activity.xml
  8. 43 42
      app_modular/appcontact/src/main/java/com/uas/appcontact/manager/ContactsManager.java
  9. 18 10
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/fragment/ContactsFragment.java
  10. 2 0
      app_modular/appme/src/main/AndroidManifest.xml
  11. 18 4
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/BSettingActivity.java
  12. 8 3
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/CheckWagesActivity.java
  13. 3 5
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/SettingActivity.java
  14. 180 0
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/TableListActivity.java
  15. 498 0
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/TableSetActivity.java
  16. 40 1
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/WagesDetailsActivity.java
  17. 72 0
      app_modular/appme/src/main/java/com/uas/appme/settings/model/TableMode.java
  18. 160 0
      app_modular/appme/src/main/res/layout/table_item.xml
  19. 83 0
      app_modular/appme/src/main/res/layout/table_set_activity.xml
  20. 45 0
      app_modular/appmessages/src/main/java/com/modular/appmessages/activity/ApprovalActivity.java
  21. 625 591
      app_modular/appmessages/src/main/java/com/modular/appmessages/adapter/ApprovalAdapter.java
  22. 32 9
      app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/ApprovaPresenter.java
  23. 1180 1168
      app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/MessagePresenter.java
  24. 2 1
      app_modular/apputils/src/main/AndroidManifest.xml
  25. 315 0
      app_modular/apputils/src/main/java/com/modular/apputils/activity/SelectNetAcitivty.java
  26. 30 0
      app_modular/apputils/src/main/java/com/modular/apputils/adapter/BaseRecyclerAdapter.java
  27. 23 0
      app_modular/apputils/src/main/res/layout/acitivty_net_select.xml
  28. 16 0
      app_modular/apputils/src/main/res/layout/item_select_list.xml
  29. 28 0
      app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/DeviceManageActivity.java
  30. 61 0
      app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/adapter/DeviceManageAdapter.java
  31. 36 0
      app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/model/DeviceManage.java
  32. 8 5
      app_modular/appworks/src/main/java/com/uas/appworks/widget/SelectPlayPop.java
  33. 13 0
      app_modular/appworks/src/main/res/layout/activity_device_manage.xml
  34. 23 0
      app_modular/appworks/src/main/res/layout/item_devicemanage_adapter.xml

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/CaptureResultActivity.java

@@ -161,7 +161,7 @@ public class CaptureResultActivity extends Activity {
         }));*/
         String url = null;
         url = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_baseurl")+"common/checkQrcodeScan.action";
-//        url = "http://192.168.253.6/ERP/"+"common/checkQrcodeScan.action";
+//        url = "http://192.168.253.63:8080/ERP/"+"common/checkQrcodeScan.action";
         String em_code = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username");
         String sob = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master");
         String password = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "user_password");

+ 4 - 0
app_core/common/src/main/java/com/core/api/wxapi/ApiPlatform.java

@@ -83,4 +83,8 @@ public class ApiPlatform extends ApiBase implements ApiModel {
         super.list_workOvertime = mBaseUrl + "mobile/workOvertime/getWorkOvertime";
         super.list_feePlease = mBaseUrl + "mobile/feePlease/getFeePlease";
     }
+
+    public String getmBaseUrl() {
+        return mBaseUrl;
+    }
 }

+ 2 - 0
app_core/common/src/main/java/com/core/base/BaseActivity.java

@@ -26,6 +26,7 @@ import com.common.preferences.PreferenceUtils;
 import com.core.app.ActionBackActivity;
 import com.core.app.Constants;
 import com.core.app.MyApplication;
+import com.core.model.Approval;
 import com.core.net.volley.FastVolley;
 import com.core.utils.NotifyUtils;
 import com.core.widget.CustomProgressDialog;
@@ -312,4 +313,5 @@ public abstract class BaseActivity extends ActionBackActivity {
 			}
 		}
 	}
+
 }

+ 12 - 0
app_core/common/src/main/java/com/core/base/EasyFragment.java

@@ -28,6 +28,18 @@ public abstract class EasyFragment extends Fragment {
 	protected boolean isRunable;
 	protected Context ct;
 
+	protected boolean isVisible;
+	@Override
+	public void setUserVisibleHint(boolean isVisibleToUser) {
+		super.setUserVisibleHint(isVisibleToUser);
+
+		if(getUserVisibleHint()) {
+			isVisible = true;
+		} else {
+			isVisible = false;
+		}
+
+	}
 	/**
 	 * 是否缓存视图
 	 *

+ 38 - 2
app_core/common/src/main/java/com/core/model/Approval.java

@@ -37,7 +37,10 @@ public class Approval {
     private int type;
     private String idKey;
     private String caller;
+    private String gCaller;
+    private String coreKey;
     private String dfType;//返回的字段类型
+    private String dbFind;//是否dbfind的判断
     private String caption = "";//字幕,表示备注
     private String values = "";//字幕对应的值显示
     private String oldValues = "";//变更前的值
@@ -58,6 +61,13 @@ public class Approval {
         }
         this.oldValues = oldValues;
     }
+    public String getDbFind() {
+        return dbFind==null?"":dbFind;
+    }
+
+    public void setDbFind(String dbFind) {
+        this.dbFind = dbFind;
+    }
 
     public boolean isNeerInput() {
         return neerInput;
@@ -95,6 +105,22 @@ public class Approval {
         return values == null ? "" : values;
     }
 
+    public String getgCaller() {
+        return gCaller;
+    }
+
+    public void setgCaller(String gCaller) {
+        this.gCaller = gCaller;
+    }
+
+    public String getCoreKey() {
+        return coreKey;
+    }
+
+    public void setCoreKey(String coreKey) {
+        this.coreKey = coreKey;
+    }
+
     public String getNumber() {
         try {
             StringBuilder builder = new StringBuilder();
@@ -180,7 +206,7 @@ public class Approval {
     }
 
     /**
-     * @return 输入类型:0字符输入  1.数字输入  2.日期输入选择  3.下拉选择  4.多选选择
+     * @return 输入类型:0字符输入  1.数字输入  2.日期输入选择  3.下拉选择  4.dbfind
      */
     public int inputType() {
         if (isNumber())
@@ -189,6 +215,8 @@ public class Approval {
             return 2;
         } else if (isDftypeEQ("C", "YN", "B")) {
             return 3;
+        } else if (isDBFind()) {
+            return 4;
         }
         return 0;
     }
@@ -235,9 +263,17 @@ public class Approval {
     }
 
     public boolean isDftypeEQ(String... str) {
+        return isEQ(getDfType(),str);
+    }
+
+    public boolean isDBFind() {
+        return isEQ(getDbFind(),"T","AT","M","DF");
+    }
+
+    public boolean isEQ(String key, String... str) {
         if (str != null && str.length > 0) {
             for (String s : str) {
-                if (getDfType().equals(s))
+                if (key.equals(s))
                     return true;
             }
         }

+ 3 - 0
app_core/common/src/main/java/com/core/net/http/http/OAHttpHelper.java

@@ -5,6 +5,7 @@ import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
 
+import com.alibaba.fastjson.JSON;
 import com.common.LogUtil;
 import com.common.config.BaseConfig;
 import com.common.data.JSONUtil;
@@ -53,6 +54,8 @@ public class OAHttpHelper extends Handler {
     @Override
     public void handleMessage(Message msg) {
         try {
+            LogUtil.i("handleMessage");
+            LogUtil.i("msg="+ JSON.toJSONString(msg));
             OnHttpResultListener listener = (OnHttpResultListener) msg.getData().getSerializable("listener");
             if (listener == null) return;
             Bundle bundle = msg.getData();

+ 27 - 0
app_core/common/src/main/res/layout/bsetting_activity.xml

@@ -287,6 +287,33 @@
             android:background="@drawable/oa_next"
             android:contentDescription="@string/app_name" />
     </RelativeLayout>
+    <RelativeLayout
+        android:id="@+id/table_setting_rl"
+        style="@style/IMTbleLine"
+        android:background="@drawable/selector_me_menu_item_bg"
+        android:layout_alignParentTop="true"
+        android:layout_centerHorizontal="true">
+        <View
+            android:layout_alignParentBottom="true"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/line"
+            android:background="@color/item_line" />
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:gravity="center"
+            android:text="桌位设置"
+            android:textColor="@color/black"
+            android:textSize="14sp" />
+        <ImageView
+            android:layout_width="@dimen/next_width"
+            android:layout_height="@dimen/next_height"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true"
+            android:background="@drawable/oa_next"
+            android:contentDescription="@string/app_name" />
+    </RelativeLayout>
     <RelativeLayout
         android:id="@+id/business_introduction_rl"
         style="@style/IMTbleLine"

+ 43 - 42
app_modular/appcontact/src/main/java/com/uas/appcontact/manager/ContactsManager.java

@@ -7,13 +7,17 @@ import android.os.Looper;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
+import com.common.config.BaseConfig;
 import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
 import com.common.thread.ThreadUtil;
 import com.core.api.wxapi.ApiConfig;
+import com.core.api.wxapi.ApiModel;
 import com.core.api.wxapi.ApiPlatform;
 import com.core.api.wxapi.ApiUtils;
+import com.core.app.Constants;
 import com.core.app.MyApplication;
 import com.core.dao.DBManager;
 import com.core.model.EmployeesEntity;
@@ -23,6 +27,11 @@ import com.core.net.http.http.OAHttpHelper;
 import com.core.net.http.http.OnHttpResultListener;
 import com.core.net.http.http.Request;
 import com.core.utils.CommonUtil;
+import com.core.utils.ToastUtil;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.ResultListener;
+import com.me.network.app.http.rx.ResultSubscriber;
 
 import java.io.Serializable;
 import java.text.ParseException;
@@ -39,10 +48,8 @@ import java.util.Map;
  * 1.下载企业架构保存数据库统一路径
  * Created by Bitliker on 2017/8/30.
  */
-public class ContactsManager implements OnHttpResultListener {
-    private final int LOAD_COMPANY_WHAT = 1;
+public class ContactsManager {
     private static ContactsManager instance;
-
     public static ContactsManager getInstance() {
         if (instance == null) {
             synchronized (ContactsManager.class) {
@@ -58,7 +65,7 @@ public class ContactsManager implements OnHttpResultListener {
     }
 
     //获取通讯录数据。当数据库不存在时候,获取网络数据
-    public void loadContact(final OnEmployListener listener){
+    public void loadContact(final OnEmployListener listener) {
         ThreadUtil.getInstance().addLoopTask(new Runnable() {
             @Override
             public void run() {
@@ -86,48 +93,42 @@ public class ContactsManager implements OnHttpResultListener {
     /*获取网络企业架构数据*/
     public void loadContactByNet(final OnEmployListener listener) {
         String master = CommonUtil.getMaster();
-        Map<String, Object> param = new HashMap<>();
-        param.put("master", master);
-        param.put("lastdate", "");
-        Bundle bundle = new Bundle();
-        boolean isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
-        bundle.putBoolean("isB2b", isB2b);
-        if (listener != null)
-            bundle.putSerializable("OnEmployListener", listener);
-        String url = isB2b ? ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().getUsersInfo : "mobile/getAllHrorgEmps.action";
-        Request request = new Request.Bulider()
-                .setWhat(LOAD_COMPANY_WHAT)
-                .setUrl(url)
-                .setParam(param)
-                .setBundle(bundle)
-                .setMode(Request.Mode.GET)
-                .bulid();
-        OAHttpHelper.getInstance().requestHttp(request, this);
-    }
-
-
-    @Override
-    public void result(int what, boolean isJSON, String message, Bundle bundle) {
-        if (!isJSON) return;
-        switch (what) {
-            case LOAD_COMPANY_WHAT:
-                boolean isB2b = false;
-                OnEmployListener listener = null;
-                if (bundle != null) {
-                    isB2b = bundle.getBoolean("isB2b", false);
-                    listener = (OnEmployListener) bundle.getSerializable("OnEmployListener");
-                }
-                handEmployees(isB2b, JSON.parseObject(message), listener);
-                break;
+        ApiModel apiModel = ApiUtils.getApiModel();
+        final boolean isB2b = apiModel instanceof ApiPlatform;
+        String baseUrl = null;
+        if (isB2b) {
+            baseUrl = ((ApiPlatform) apiModel).getmBaseUrl();
+        } else {
+            baseUrl = CommonUtil.getAppBaseUrl(MyApplication.getInstance());
         }
-    }
+        String url = isB2b ? "mobile/approvalflow/getUsersInfo" : "mobile/getAllHrorgEmps.action";
+        String sessionId = CommonUtil.getSharedPreferences(BaseConfig.getContext(), "sessionId");
+        HttpClient httpClient = new HttpClient.Builder(baseUrl)
+                .add("master", CommonUtil.getMaster())
+                .add("sessionUser", CommonUtil.getEmcode())
+                .add("sessionId", sessionId)
+                .connectTimeout(5000)
+                .readTimeout(5000)
+                .isDebug(true).build();
+        httpClient.Api().send(new HttpClient.Builder()
+                .url(url)
+                .header("Cookie", "JSESSIONID=" + sessionId)
+                .add("master", master)
+                .add("lastdate", "")
+                .method(Method.GET)
+                .build(), new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                try {
+                    handEmployees(isB2b, JSON.parseObject(o.toString()), listener);
+                } catch (Exception e) {
+                    listener.callback(null);
+                }
+            }
+        }));
 
-    @Override
-    public void error(int what, String message, Bundle bundle) {
-             
     }
 
-
     private void handEmployees(final boolean isB2b, final JSONObject object, final OnEmployListener listener) {
         ThreadUtil.getInstance().addTask(new Runnable() {
             @Override

+ 18 - 10
app_modular/appcontact/src/main/java/com/uas/appcontact/ui/fragment/ContactsFragment.java

@@ -230,7 +230,7 @@ public class ContactsFragment extends EasyFragment
 
 
     void showLoading() {
-        if (!refreshListView.isRefreshing()) {
+        if (!refreshListView.isRefreshing() && isVisible) {
             progressDialog.show();
         }
     }//显示刷新
@@ -245,6 +245,12 @@ public class ContactsFragment extends EasyFragment
     }//关闭刷新
 
     private void loadData() {
+        if (allDatas != null) {
+            allDatas.clear();
+        }
+        if (showDatas != null) {
+            showDatas.clear();
+        }
         showLoading();
         ContactsManager.getInstance().loadContact(this);
     }
@@ -330,15 +336,17 @@ public class ContactsFragment extends EasyFragment
     @Override
     public void callback(List<EmployeesEntity> employees) {
         try {
-            dimssLoading();
-            final List<BaseSortModel<Friend>> friends = getFriendsByErpDB(employees);
-            ThreadUtil.getInstance().addTask(new Runnable() {
-                @Override
-                public void run() {
-                    handlerData(friends);
-                }
-            });
-
+            if (ListUtils.isEmpty(employees)) {
+                dimssLoading();
+            } else {
+                final List<BaseSortModel<Friend>> friends = getFriendsByErpDB(employees);
+                ThreadUtil.getInstance().addTask(new Runnable() {
+                    @Override
+                    public void run() {
+                        handlerData(friends);
+                    }
+                });
+            }
         } catch (Exception e) {
             dimssLoading();
         }

+ 2 - 0
app_modular/appme/src/main/AndroidManifest.xml

@@ -75,5 +75,7 @@
             />
         <activity android:name=".settings.activity.WagesDetailsActivity"
             />
+        <activity android:name=".settings.activity.TableSetActivity"/>
+        <activity android:name=".settings.activity.TableListActivity"/>
     </application>
 </manifest>

+ 18 - 4
app_modular/appme/src/main/java/com/uas/appme/settings/activity/BSettingActivity.java

@@ -31,6 +31,7 @@ public class BSettingActivity extends BaseActivity implements View.OnClickListen
     private String sc_industry = null;
     private String sc_industrycode = null;
     private RelativeLayout rTyperl;
+    private RelativeLayout tableSetRl;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -60,6 +61,15 @@ public class BSettingActivity extends BaseActivity implements View.OnClickListen
                 if (object == null) return;
                 sc_industry = array.getJSONObject(0).getString("sc_industry");
                 sc_industrycode = array.getJSONObject(0).getString("sc_industrycode");
+
+                if ("餐饮".equals(sc_industry)) {
+                    rTyperl.setVisibility(View.GONE);
+                    tableSetRl.setVisibility(View.VISIBLE);
+                }else {
+                    rTyperl.setVisibility(View.GONE);
+                    tableSetRl.setVisibility(View.GONE);
+                }
+
             }
         }));
 
@@ -99,6 +109,10 @@ public class BSettingActivity extends BaseActivity implements View.OnClickListen
         }else if (v.getId() == R.id.room_type_rl){
             startActivity(new Intent(ct,BusinessHoursSetting.class)
                     .putExtra("setType",4));
+        }else if (v.getId() == R.id.table_setting_rl){
+            startActivity(new Intent(ct,TableSetActivity.class)
+                    .putExtra("sc_industry",sc_industry)
+                    .putExtra("sc_industrycode",sc_industrycode));
         }
     }
 
@@ -115,9 +129,9 @@ public class BSettingActivity extends BaseActivity implements View.OnClickListen
         rTyperl = (RelativeLayout) findViewById(R.id.room_type_rl);
         rTyperl.setOnClickListener(this);
 
-        if ("餐饮".equals(sc_industry))
-            rTyperl.setVisibility(View.GONE);
-        else
-            rTyperl.setVisibility(View.GONE);
+        tableSetRl = (RelativeLayout) findViewById(R.id.table_setting_rl);
+        tableSetRl.setOnClickListener(this);
+
+
     }
 }

+ 8 - 3
app_modular/appme/src/main/java/com/uas/appme/settings/activity/CheckWagesActivity.java

@@ -9,6 +9,7 @@ import android.widget.TextView;
 import com.andreabaccega.widget.FormEditText;
 import com.common.data.DateFormatUtil;
 import com.common.data.ListUtils;
+import com.common.data.StringUtil;
 import com.core.base.BaseActivity;
 import com.core.utils.time.wheel.DatePicker;
 import com.uas.appme.R;
@@ -75,9 +76,13 @@ public class CheckWagesActivity extends BaseActivity implements View.OnClickList
         }else if (id == R.id.wages_code_btn){
 
         }else if (id == R.id.check_btn){
-            startActivity(new Intent(this,WagesDetailsActivity.class)
-            .putExtra("checkYear",checkYear)
-            .putExtra("checkMonth",checkMonth));
+            if (StringUtil.isEmpty(checkYear) || StringUtil.isEmpty(checkMonth)){
+                ToastMessage("请输入查询日期");
+                return;
+            }else
+                startActivity(new Intent(this,WagesDetailsActivity.class)
+                .putExtra("checkYear",checkYear)
+                .putExtra("checkMonth",checkMonth));
         }
     }
 }

+ 3 - 5
app_modular/appme/src/main/java/com/uas/appme/settings/activity/SettingActivity.java

@@ -271,7 +271,6 @@ public class SettingActivity extends BaseActivity implements View.OnClickListene
         }
 //        UserRoleUtils.checkUserRole(this,getRootView());
 
-        businessmen_setting_rl.setVisibility(View.GONE);
         doShowBSettingJudge();  //判断商家是不是管理员
     }
 
@@ -297,10 +296,9 @@ public class SettingActivity extends BaseActivity implements View.OnClickListene
                 try {
                     //{"result":"1","url":"http://113.105.74.140:8081/u/0/0/201710/o/48fda5af663f40f795f2dd49e2d8801f.jpg"}
                     if (o.toString().contains("result")) {
-//                        if (!CommonUtil.isReleaseVersion()) {
-//                            businessmen_setting_rl.setVisibility(View.VISIBLE);
-//                        }else
-                        if ("1".equals(JSON.parseObject(o.toString()).getString("result"))) {
+                        if (!CommonUtil.isReleaseVersion()) {
+                            businessmen_setting_rl.setVisibility(View.VISIBLE);
+                        }else if ("1".equals(JSON.parseObject(o.toString()).getString("result"))) {
                             businessmen_setting_rl.setVisibility(View.VISIBLE);
                         } else {
                             businessmen_setting_rl.setVisibility(View.GONE);

+ 180 - 0
app_modular/appme/src/main/java/com/uas/appme/settings/activity/TableListActivity.java

@@ -0,0 +1,180 @@
+package com.uas.appme.settings.activity;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.andreabaccega.widget.FormEditText;
+import com.common.LogUtil;
+import com.common.data.JSONUtil;
+import com.common.data.ListUtils;
+import com.core.app.Constants;
+import com.core.app.MyApplication;
+import com.core.base.BaseActivity;
+import com.core.utils.CommonUtil;
+import com.core.widget.EmptyLayout;
+import com.core.widget.MyListView;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.Result2Listener;
+import com.me.network.app.http.rx.ResultSubscriber;
+import com.uas.appme.R;
+import com.uas.appme.settings.model.TableMode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by FANGlh on 2017/11/22.
+ * function:
+ */
+
+public class TableListActivity extends BaseActivity {
+    private MyListView tableMylist;
+    private TableAdapter myAdapter;
+    private List<TableMode> modeList;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        getSupportActionBar().setTitle("桌位设置");
+        setContentView(R.layout.person_setting_list_activity);
+        initView();
+        initData();
+        initEvents();
+
+    }
+
+    private void initEvents() {
+        tableMylist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                Log.i("fanglh","18:47");
+                startActivityForResult(new Intent(ct, TableSetActivity.class)
+                                .putExtra("updateData", JSON.toJSONString(modeList.get(position)))
+                        ,20);
+                Log.i("fanglh","18:48");
+            }
+        });
+
+    }
+
+    private void initData() {
+        HttpClient httpClient = new HttpClient.Builder(Constants.IM_BASE_URL()).isDebug(true).build(true);
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("user/appDeskList")
+                .add("companyid", CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_uu"))
+                .add("token", MyApplication.getInstance().mAccessToken)
+                .method(Method.POST)
+                .build(),new ResultSubscriber<>(new Result2Listener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                if (!JSONUtil.validate(o.toString()) || o == null) return;
+                LogUtil.prinlnLongMsg("appDeskList", o.toString()+"");
+                try {
+                    JSONArray array = JSON.parseObject(o.toString()).getJSONArray("result");
+                    modeList = JSON.parseArray(array.toString(),TableMode.class);
+                    if (ListUtils.isEmpty(modeList)) mEmptyLayout.showEmpty();
+                    myAdapter.setModeList(modeList);
+                    myAdapter.notifyDataSetChanged();
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+
+            @Override
+            public void onFailure(Object t) {
+            }
+        }));
+    }
+    private EmptyLayout mEmptyLayout;
+    private void initView() {
+        tableMylist = (MyListView) findViewById(R.id.psetting_list);
+        myAdapter = new TableAdapter(this);
+        modeList = new ArrayList<>();
+
+        mEmptyLayout = new EmptyLayout(this, tableMylist);
+        mEmptyLayout.setShowEmptyButton(false);
+        mEmptyLayout.setShowErrorButton(false);
+        mEmptyLayout.setShowLoadingButton(false);
+
+        myAdapter.setModeList(modeList);
+        tableMylist.setAdapter(myAdapter);
+        myAdapter.notifyDataSetChanged();
+    }
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (requestCode == 20 && resultCode == 20) {
+            //TODO 重更新
+            initData();
+        }
+    }
+    private class TableAdapter extends BaseAdapter {
+        private List<TableMode> modeList;
+        private Context mContext;
+
+        public List<TableMode> getModeList() {return modeList;}
+        public void setModeList(List<TableMode> modeList) {this.modeList = modeList;}
+
+        public TableAdapter(Context mContext){
+            this.mContext = mContext;
+        }
+        @Override
+        public int getCount() {
+            return ListUtils.isEmpty(modeList) ? 0 : modeList.size();
+        }
+        @Override
+        public Object getItem(int position) {
+            return modeList.get(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+        @Override
+        public View getView(final int position, View convertView, ViewGroup parent) {
+            TableView tableView = null;
+            if (convertView == null){
+                tableView = new TableView();
+                convertView =  View.inflate(mContext, R.layout.table_item,null);
+                tableView.type_et = (FormEditText)convertView.findViewById(R.id.type_et);
+                tableView.deskcode_et = (FormEditText) convertView.findViewById(R.id.deskcode_et);
+                tableView.number_et = (FormEditText) convertView.findViewById(R.id.number_et);
+                tableView.remark_et = (FormEditText) convertView.findViewById(R.id.remark_et);
+                tableView.days_et = (FormEditText) convertView.findViewById(R.id.days_et);
+                convertView.setTag(tableView);
+                tableView.type_et.setFocusable(false);
+                tableView.type_et.setKeyListener(null);
+                tableView.deskcode_et.setFocusable(false);
+                tableView.deskcode_et.setKeyListener(null);
+                tableView.number_et.setFocusable(false);
+                tableView.number_et.setKeyListener(null);
+                tableView.remark_et.setFocusable(false);
+                tableView.remark_et.setKeyListener(null);
+
+            }else {
+                tableView = (TableView) convertView.getTag();
+            }
+            //showdata
+            tableView.type_et.setText(modeList.get(position).getAs_type()+"");
+            tableView.deskcode_et.setText(modeList.get(position).getAs_deskcode()+"");
+            tableView.number_et.setText(modeList.get(position).getAs_number()+"");
+            tableView.remark_et.setText(modeList.get(position).getAs_remark()+"");
+            tableView.days_et.setText(modeList.get(position).getAs_booknumber()+"");
+            return convertView;
+        }
+
+        class TableView{
+            FormEditText type_et,deskcode_et,number_et,remark_et,days_et;
+        }
+    }
+}

+ 498 - 0
app_modular/appme/src/main/java/com/uas/appme/settings/activity/TableSetActivity.java

@@ -0,0 +1,498 @@
+package com.uas.appme.settings.activity;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.DisplayMetrics;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.BaseAdapter;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.PopupWindow;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.alibaba.fastjson.JSON;
+import com.andreabaccega.widget.FormEditText;
+import com.common.LogUtil;
+import com.common.data.JSONUtil;
+import com.common.data.ListUtils;
+import com.common.data.StringUtil;
+import com.common.system.DisplayUtil;
+import com.core.app.Constants;
+import com.core.app.MyApplication;
+import com.core.base.BaseActivity;
+import com.core.utils.CommonUtil;
+import com.core.widget.MyListView;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.Result2Listener;
+import com.me.network.app.http.rx.ResultSubscriber;
+import com.uas.appme.R;
+import com.uas.appme.settings.model.TableMode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * Created by FANGlh on 2017/11/22.
+ * function:
+ */
+
+public class TableSetActivity extends BaseActivity implements View.OnClickListener {
+    private MyListView mComList;
+    private RelativeLayout mAddNewRl;
+    private Button mSaveBt;
+    private Button mDeleteBtn;
+    private String updateData;
+    private List<TableMode> tableList;
+    private String as_companyid;
+    private TableAdapter myAdapter;
+    private String as_id;
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.table_set_activity);
+        initView();
+        initData();
+    }
+
+    private void initData() {
+        updateData = getIntent().getStringExtra("updateData");
+        if(StringUtil.isEmpty(updateData)){
+            mSaveBt.setVisibility(View.VISIBLE);
+            mDeleteBtn.setVisibility(View.GONE);
+            TableMode model = new TableMode();
+            model.setAs_deskcode("");
+            model.setAs_number("");
+            model.setAs_type("大桌");
+            model.setAs_remark("");
+//            model.setAs_id("0");
+            model.setAs_companyid(as_companyid);
+            model.setAs_booknumber("");
+            tableList.add(model);
+            myAdapter.notifyDataSetChanged();
+        }else{
+            mAddNewRl.setVisibility(View.GONE);
+            mSaveBt.setText(getString(R.string.common_update_button));
+            mSaveBt.setVisibility(View.VISIBLE);
+            mDeleteBtn.setVisibility(View.VISIBLE);
+
+            as_id = JSON.parseObject(updateData).getString("as_id");
+            TableMode model = new TableMode();
+            model.setAs_id(as_id);
+            model.setAs_companyid(JSON.parseObject(updateData).getString("as_companyid"));
+            model.setAs_deskcode(JSON.parseObject(updateData).getString("as_deskcode"));
+            model.setAs_number(JSON.parseObject(updateData).getString("as_number"));
+            model.setAs_type(JSON.parseObject(updateData).getString("as_type"));
+            model.setAs_remark(JSON.parseObject(updateData).getString("as_remark"));
+            model.setAs_booknumber(JSON.parseObject(updateData).getString("as_booknumber"));
+            tableList.add(model);
+            myAdapter.notifyDataSetChanged();
+        }
+    }
+
+    private void initView() {
+        getSupportActionBar().setTitle("桌位设置");
+
+        mComList = (MyListView) findViewById(R.id.com_list);
+        mAddNewRl = (RelativeLayout) findViewById(R.id.add_new_rl);
+        mSaveBt = (Button) findViewById(R.id.save_bt);
+        mDeleteBtn = (Button) findViewById(R.id.delete_btn);
+        mAddNewRl.setOnClickListener(this);
+        mSaveBt.setOnClickListener(this);
+        mDeleteBtn.setOnClickListener(this);
+
+        myAdapter = new TableAdapter(this);
+        tableList = new ArrayList<>();
+        myAdapter.setModeList(tableList);
+        mComList.setAdapter(myAdapter);
+        as_companyid =  CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_uu");
+    }
+
+    @Override
+    public void onClick(View v) {
+        int id = v.getId();
+        LogUtil.prinlnLongMsg("fanglh", JSON.toJSONString(tableList));
+        if (id == R.id.add_new_rl){
+            if (!canAddOrSave()) return;
+                TableMode model = new TableMode();
+                model.setAs_deskcode("");
+                model.setAs_number("");
+                model.setAs_type("大桌");
+                model.setAs_remark("");
+                model.setAs_id("0");
+                model.setAs_companyid(as_companyid);
+                tableList.add(model);
+                myAdapter.notifyDataSetChanged();
+        }else if (id == R.id.save_bt){
+            if (!CommonUtil.isNetWorkConnected(this)) {
+                ToastMessage(getString(R.string.common_notlinknet));
+                return;
+            }
+            if (canAddOrSave()) {
+                if (!StringUtil.isEmpty(updateData) && !StringUtil.isEmpty(as_id))
+                    doUpdateOrDelete(0);
+                else
+                    doSaveToHttps();
+            }
+        }else if (id == R.id.delete_btn){
+            doUpdateOrDelete(1);
+        }
+    }
+
+    private void doUpdateOrDelete(final int type) {
+        TableMode udModel = new TableMode();
+        udModel.setAs_remark(tableList.get(0).getAs_remark());
+        udModel.setAs_type(tableList.get(0).getAs_type());
+        udModel.setAs_number(tableList.get(0).getAs_number());
+        udModel.setAs_deskcode(tableList.get(0).getAs_deskcode());
+        udModel.setAs_companyid(tableList.get(0).getAs_companyid());
+        udModel.setAs_id(tableList.get(0).getAs_id());
+        LogUtil.prinlnLongMsg("udModel",JSON.toJSONString(udModel));
+        HttpClient httpClient = new HttpClient.Builder(Constants.IM_BASE_URL()).isDebug(true).build(true);
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("user/appDeskUpdate")
+                .add("map",JSON.toJSONString(udModel))
+                .add("type",type)
+                .add("token",MyApplication.getInstance().mAccessToken)
+                .method(Method.POST)
+                .build(),new ResultSubscriber<>(new Result2Listener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                if (!JSONUtil.validate(o.toString()) || o == null) return;
+                LogUtil.prinlnLongMsg("appDeskUpdate", o.toString()+"");
+                if (o.toString().contains("result") && JSON.parseObject(o.toString()).getBooleanValue("result")) {
+                    if (type == 0)
+                        Toast.makeText(ct,getString(R.string.update_success),Toast.LENGTH_LONG).show();
+                    else if (type == 1)
+                        Toast.makeText(ct,getString(R.string.delete_succeed_notice1),Toast.LENGTH_LONG).show();
+
+                    setResult(20);
+                    finish();
+                }
+            }
+
+            @Override
+            public void onFailure(Object t) {
+            }
+        }));
+    }
+
+    private void doSaveToHttps() {
+
+        HttpClient httpClient = new HttpClient.Builder(Constants.IM_BASE_URL()).isDebug(true).build(true);
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("user/appBatchDesk")
+                .add("map",JSON.toJSONString(tableList))
+                .add("token",MyApplication.getInstance().mAccessToken)
+                .method(Method.POST)
+                .build(),new ResultSubscriber<>(new Result2Listener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                if (!JSONUtil.validate(o.toString()) || o == null) return;
+                LogUtil.prinlnLongMsg("appBatchDesk", o.toString()+"");
+                if (o.toString().contains("result") && JSON.parseObject(o.toString()).getBooleanValue("result")) {
+                    Toast.makeText(ct,getString(R.string.save_success),Toast.LENGTH_LONG).show();
+                    startActivity(new Intent(ct,TableListActivity.class));
+                    finish();
+                }else{
+                    ToastMessage("服务器异常请稍后再试");
+                }
+            }
+
+            @Override
+            public void onFailure(Object t) {
+            }
+        }));
+    }
+
+    private Boolean canAddOrSave(){
+        boolean canOrNot = false;
+        int c_size = tableList.size();
+        if (!StringUtil.isEmpty(tableList.get(c_size-1).getAs_deskcode()) &&
+                !StringUtil.isEmpty(tableList.get(c_size-1).getAs_remark()) &&
+                !StringUtil.isEmpty(tableList.get(c_size-1).getAs_number()) &&
+                !StringUtil.isEmpty(tableList.get(c_size-1).getAs_booknumber())){
+            canOrNot = true;
+        }else {
+            ToastMessage("请输全设置信息");
+            canOrNot = false;
+        }
+        return canOrNot;
+    }
+    private class TableAdapter extends BaseAdapter {
+       private List<TableMode> modeList;
+       private Context mContext;
+
+        public List<TableMode> getModeList() {return modeList;}
+        public void setModeList(List<TableMode> modeList) {this.modeList = modeList;}
+
+        public TableAdapter(Context mContext){
+            this.mContext = mContext;
+        }
+        @Override
+        public int getCount() {
+            return ListUtils.isEmpty(modeList) ? 0 : modeList.size();
+        }
+        @Override
+        public Object getItem(int position) {
+            return modeList.get(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+        @Override
+        public View getView(final int position, View convertView, ViewGroup parent) {
+            TableView tableView = null;
+            if (convertView == null){
+                tableView = new TableView();
+                convertView =  View.inflate(mContext, R.layout.table_item,null);
+                tableView.type_et = (FormEditText)convertView.findViewById(R.id.type_et);
+                tableView.deskcode_et = (FormEditText) convertView.findViewById(R.id.deskcode_et);
+                tableView.number_et = (FormEditText) convertView.findViewById(R.id.number_et);
+                tableView.remark_et = (FormEditText) convertView.findViewById(R.id.remark_et);
+                tableView.days_et = (FormEditText) convertView.findViewById(R.id.days_et);
+                convertView.setTag(tableView);
+                tableView.type_et.setFocusable(false);
+                tableView.type_et.setKeyListener(null);
+                tableView.deskcode_et.setFocusable(false);
+                tableView.deskcode_et.setKeyListener(null);
+                tableView.number_et.setFocusable(false);
+                tableView.number_et.setKeyListener(null);
+                tableView.remark_et.setFocusable(false);
+                tableView.remark_et.setKeyListener(null);
+                tableView.days_et.setFocusable(false);
+                tableView.days_et.setKeyListener(null);
+
+            }else {
+                tableView = (TableView) convertView.getTag();
+            }
+
+            //clickevent
+            tableView.type_et.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    showSelectType(position);
+                }
+            });
+            tableView.deskcode_et.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    doInput(1,position);
+                }
+            });
+            tableView.number_et.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    doInput(2,position);
+                }
+            });
+            tableView.remark_et.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    doInput(3,position);
+                }
+            });
+            tableView.days_et.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    doInput(4,position);
+                }
+            });
+
+            //showdata
+            tableView.type_et.setText(modeList.get(position).getAs_type()+"");
+            tableView.deskcode_et.setText(modeList.get(position).getAs_deskcode()+"");
+            tableView.number_et.setText(modeList.get(position).getAs_number()+"");
+            tableView.remark_et.setText(modeList.get(position).getAs_remark()+"");
+            tableView.days_et.setText(modeList.get(position).getAs_booknumber());
+            return convertView;
+        }
+
+        class TableView{
+            FormEditText type_et,deskcode_et,number_et,remark_et,days_et;
+        }
+    }
+    private PopupWindow popupWindow = null;
+    private void doInput(final int type, final int position) {
+        // 一个自定义的布局,作为显示的内容
+        View contentView = LayoutInflater.from(ct).inflate(
+                R.layout.item_edit_location_pop, null);
+
+        // 设置按钮的点击事件
+        final EditText editname_et = (EditText) contentView.findViewById(R.id.editname_et);
+        final EditText editname_et2 = (EditText) contentView.findViewById(R.id.editname_et2);
+        TextView title_tv = (TextView) contentView.findViewById(R.id.title_tv);
+        DisplayMetrics dm = getResources().getDisplayMetrics();
+        if (type == 1){
+            editname_et.setVisibility(View.VISIBLE);
+            editname_et2.setVisibility(View.GONE);
+            title_tv.setText("请输入桌位代码");
+            editname_et.setText(tableList.get(position).getAs_deskcode()+"");
+        } else if(type==2) {
+            editname_et.setVisibility(View.GONE);
+            editname_et2.setVisibility(View.VISIBLE);
+            title_tv.setText("请输入数量");
+            editname_et2.setHint(getString(R.string.common_input));
+            editname_et2.setText(tableList.get(position).getAs_number()+"");
+        } else if (type == 3){
+            editname_et.setVisibility(View.VISIBLE);
+            editname_et2.setVisibility(View.GONE);
+            title_tv.setText("请输入备注");
+            editname_et.setText(tableList.get(position).getAs_remark()+"");
+        }else if (type == 4){
+            editname_et.setVisibility(View.GONE);
+            editname_et2.setVisibility(View.VISIBLE);
+            title_tv.setText("请可被预约量/天");
+            editname_et2.setHint(getString(R.string.common_input));
+            editname_et2.setText(tableList.get(position).getAs_booknumber()+"");
+        }
+        int w_screen = dm.widthPixels;
+        int h_screen = dm.heightPixels;
+        w_screen = DisplayUtil.dip2px(this, 300);
+        h_screen = DisplayUtil.dip2px(this, 145);
+
+        contentView.findViewById(R.id.cancel_tv).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                popupWindow.dismiss();
+            }
+        });
+        contentView.findViewById(R.id.sure_tv).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                if (type==1){
+                    if (StringUtil.isEmpty(editname_et.getText().toString())){
+                        ToastMessage("请输入桌位代码");
+                        return;
+                    }else {
+                        tableList.get(position).setAs_deskcode(editname_et.getText().toString());
+                        myAdapter.notifyDataSetChanged();
+                    }
+                }else if (type==2){
+                    if (StringUtil.isEmpty(editname_et2.getText().toString())){
+                        ToastMessage("请输入数量");
+                        return;
+                    }else {
+                        tableList.get(position).setAs_number(editname_et2.getText().toString());
+                        myAdapter.notifyDataSetChanged();
+                    }
+                }else if (type == 3){
+                    if (StringUtil.isEmpty(editname_et.getText().toString())){
+                        ToastMessage("请输入备注");
+                        return;
+                    }else {
+                        tableList.get(position).setAs_remark(editname_et.getText().toString());
+                        myAdapter.notifyDataSetChanged();
+                    }
+                }else if (type == 4){
+                    if (StringUtil.isEmpty(editname_et2.getText().toString())){
+                        ToastMessage("请可被预约量/天");
+                        return;
+                    }else {
+                        tableList.get(position).setAs_booknumber(editname_et2.getText().toString());
+                        myAdapter.notifyDataSetChanged();
+                    }
+                }
+                popupWindow.dismiss();
+            }
+        });
+        popupWindow = new PopupWindow(contentView, w_screen, h_screen, true);
+        popupWindow.setTouchable(true);
+        popupWindow.setOutsideTouchable(false);
+        // 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
+        popupWindow.setBackgroundDrawable(getResources().getDrawable(com.uas.appworks.R.drawable.pop_round_bg));
+        // 设置好参数之后再show
+        popupWindow.showAtLocation(contentView, Gravity.CENTER, 0, 0);
+        setbg(0.4f);
+    }
+
+    private void showSelectType(final int position) {
+        // 1是男,0是女,2是全部
+        String[] sexs = new String[]{ "大桌", "中桌","小桌"};
+        int checkItem = 0;
+        new AlertDialog.Builder(this).setTitle("请选择桌位类型")
+                .setSingleChoiceItems(sexs, checkItem, new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        String ttype = null;
+                        if (which == 0) {
+                            ttype =  "大桌";
+                        }else if (which == 1){
+                            ttype =  "中桌";
+                        }else {
+                            ttype =  "小桌";
+                        }
+
+                        tableList.get(position).setAs_type(ttype);
+                        myAdapter.notifyDataSetChanged();
+                        dialog.dismiss();
+                    }
+                }).setCancelable(true).create().show();
+    }
+
+    private void setbg(float alpha) {
+        setBackgroundAlpha(this, alpha);
+        if (popupWindow == null) return;
+        popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                setBackgroundAlpha(TableSetActivity.this, 1f);
+            }
+        });
+    }
+    /**
+     * 设置页面的透明度
+     * 兼容华为手机(在个别华为手机上 设置透明度会不成功)
+     *
+     * @param bgAlpha 透明度   1表示不透明
+     */
+    public void setBackgroundAlpha(Activity activity, float bgAlpha) {
+        WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
+        lp.alpha = bgAlpha;
+        if (bgAlpha == 1) {
+            activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);//不移除该Flag的话,在有视频的页面上的视频会出现黑屏的bug
+        } else {
+            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);//此行代码主要是解决在华为手机上半透明效果无效的bug
+        }
+        activity.getWindow().setAttributes(lp);
+    }
+
+    @Override
+    public boolean onPrepareOptionsMenu(Menu menu) {
+        menu.clear();
+        if (StringUtil.isEmpty(updateData)) {
+            getMenuInflater().inflate(R.menu.bsetting_more, menu);
+        }
+        return super.onPrepareOptionsMenu(menu);
+    }
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.bsetting_more, menu);
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == R.id.booking_set_list){
+            startActivity(new Intent(ct,TableListActivity.class));
+        }
+        return super.onOptionsItemSelected(item);
+    }
+}

+ 40 - 1
app_modular/appme/src/main/java/com/uas/appme/settings/activity/WagesDetailsActivity.java

@@ -13,9 +13,18 @@ import android.widget.LinearLayout;
 import android.widget.PopupWindow;
 import android.widget.Toast;
 
+import com.common.LogUtil;
+import com.common.data.JSONUtil;
+import com.common.data.StringUtil;
 import com.common.system.DisplayUtil;
+import com.core.app.Constants;
+import com.core.app.MyApplication;
 import com.core.base.BaseActivity;
 import com.core.widget.MyListView;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.ResultListener;
+import com.me.network.app.http.rx.ResultSubscriber;
 import com.uas.appme.R;
 import com.uas.appme.settings.handwritedemo.LinePathView;
 
@@ -40,18 +49,32 @@ public class WagesDetailsActivity extends BaseActivity implements View.OnClickLi
         super.onCreate(savedInstanceState);
         setContentView(R.layout.wages_details_activity);
         initView();
-        initData();
 
     }
 
     private void initData() {
+        HttpClient httpClient = new HttpClient.Builder(Constants.IM_BASE_URL()).isDebug(true).build(true);
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("mobile/salary/getEmSalary.action")
+                .add("emcode", MyApplication.getInstance().getLoginUserId())
+                .add("date",checkYear+checkMonth)
+                .method(Method.POST)
+                .build(),new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                if (!JSONUtil.validate(o.toString()) || o == null) return;
+                LogUtil.prinlnLongMsg("getEmSalary", o.toString()+"");
 
+            }
+        }));
     }
 
     private void initView() {
         checkYear = getIntent().getStringExtra("checkYear");
         checkMonth = getIntent().getStringExtra("checkMonth");
         String title = checkYear + "年" + checkMonth + "月"+"工资";
+        if (!StringUtil.isEmpty(checkYear) && !StringUtil.isEmpty(checkMonth))
+            initData();
         getSupportActionBar().setTitle(title);
 
         mWagesLv = (MyListView) findViewById(R.id.wages_lv);
@@ -102,6 +125,22 @@ public class WagesDetailsActivity extends BaseActivity implements View.OnClickLi
      }*/
     private void doSubmit(Bitmap pathBm) {
         Log.i("fanglh",plainpath+","+pathBm);
+
+        HttpClient httpClient = new HttpClient.Builder(Constants.IM_BASE_URL()).isDebug(true).build(true);
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("mobile/salary/salaryBack.action")
+                .add("emcode", MyApplication.getInstance().getLoginUserId())
+                .add("sl_id","sl_id")
+                .add("result",true)
+                .add("img","img")
+                .method(Method.POST)
+                .build(),new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                if (!JSONUtil.validate(o.toString()) || o == null) return;
+                LogUtil.prinlnLongMsg("salaryBack", o.toString()+"");
+            }
+        }));
     }
 
     private void showSiganWindow() {

+ 72 - 0
app_modular/appme/src/main/java/com/uas/appme/settings/model/TableMode.java

@@ -0,0 +1,72 @@
+package com.uas.appme.settings.model;
+
+/**
+ * Created by FANGlh on 2017/11/22.
+ * function:
+ */
+
+public class TableMode {
+    private String as_id;
+    private String as_type;
+    private String as_deskcode;
+    private String as_number;
+    private String as_booknumber;
+    private String as_remark;
+    private String as_companyid;
+
+    public String getAs_booknumber() {
+        return as_booknumber;
+    }
+
+    public void setAs_booknumber(String as_booknumber) {
+        this.as_booknumber = as_booknumber;
+    }
+
+    public String getAs_id() {
+        return as_id;
+    }
+
+    public void setAs_id(String as_id) {
+        this.as_id = as_id;
+    }
+
+    public String getAs_companyid() {
+        return as_companyid;
+    }
+
+    public void setAs_companyid(String as_companyid) {
+        this.as_companyid = as_companyid;
+    }
+
+    public String getAs_type() {
+        return as_type;
+    }
+
+    public void setAs_type(String as_type) {
+        this.as_type = as_type;
+    }
+
+    public String getAs_deskcode() {
+        return as_deskcode;
+    }
+
+    public void setAs_deskcode(String as_deskcode) {
+        this.as_deskcode = as_deskcode;
+    }
+
+    public String getAs_number() {
+        return as_number;
+    }
+
+    public void setAs_number(String as_number) {
+        this.as_number = as_number;
+    }
+
+    public String getAs_remark() {
+        return as_remark;
+    }
+
+    public void setAs_remark(String as_remark) {
+        this.as_remark = as_remark;
+    }
+}

+ 160 - 0
app_modular/appme/src/main/res/layout/table_item.xml

@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:descendantFocusability="blocksDescendants"
+    android:orientation="vertical">
+
+    <RelativeLayout
+        style="@style/IMTbleLine2"
+        android:layout_height="50dp"
+        android:background="@color/white"
+        android:layout_marginTop="10dp"
+        >
+        <TextView
+            style="@style/form_relative_left_text"
+            android:text="桌位类型"
+            android:layout_marginLeft="0dp"
+            android:textColor="@color/text_main"
+            android:textSize="15sp" />
+
+        <com.andreabaccega.widget.FormEditText xmlns:editTextFormExample="http://schemas.android.com/apk/res-auto"
+            android:id="@+id/type_et"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textColor="@color/dark_dark_grey"
+            android:padding="10dp"
+            android:hint="请选择(必选)"
+            android:layout_alignParentRight="true"
+            android:gravity="center_vertical|right"
+            android:background="@null"
+            android:textSize="15sp"
+            />
+    </RelativeLayout>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1px"
+        android:background="@color/item_line" />
+    <RelativeLayout
+        style="@style/IMTbleLine2"
+        android:layout_height="50dp"
+        android:background="@color/white">
+
+        <TextView
+            style="@style/form_relative_left_text"
+            android:text="桌位代码"
+            android:layout_marginLeft="0dp"
+            android:textColor="@color/text_main"
+            android:textSize="15sp" />
+
+        <com.andreabaccega.widget.FormEditText
+            android:id="@+id/deskcode_et"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textColor="@color/dark_dark_grey"
+            android:padding="10dp"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true"
+            android:background="@null"
+            android:hint="@string/common_input"
+            android:textSize="15sp"
+            android:gravity="center_vertical|right"
+            android:maxLength="10"
+            />
+    </RelativeLayout>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1px"
+        android:background="@color/item_line" />
+    <RelativeLayout
+        style="@style/IMTbleLine2"
+        android:layout_height="50dp"
+        android:background="@color/white">
+        <TextView
+            android:id="@+id/tel_tv"
+            style="@style/form_relative_left_text"
+            android:text="数量"
+            android:layout_marginLeft="0dp"
+            android:textColor="@color/text_main"
+            android:textSize="15sp"/>
+
+        <com.andreabaccega.widget.FormEditText
+            android:id="@+id/number_et"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textColor="@color/dark_dark_grey"
+            android:padding="10dp"
+            android:background="@null"
+            android:hint="@string/common_input"
+            android:textSize="15sp"
+            android:inputType="number"
+            android:gravity="center_vertical|right"
+            android:maxLength="4"
+            android:layout_alignParentTop="true"
+            android:layout_alignParentRight="true"
+            android:layout_alignParentEnd="true" />
+    </RelativeLayout>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1px"
+        android:background="@color/item_line" />
+    <RelativeLayout
+        style="@style/IMTbleLine2"
+        android:layout_height="50dp"
+        android:background="@color/white">
+        <TextView
+            style="@style/form_relative_left_text"
+            android:text="可被预约量/天"
+            android:layout_marginLeft="0dp"
+            android:textColor="@color/text_main"
+            android:textSize="15sp"/>
+
+        <com.andreabaccega.widget.FormEditText
+            android:id="@+id/days_et"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textColor="@color/dark_dark_grey"
+            android:padding="10dp"
+            android:background="@null"
+            android:hint="@string/common_input"
+            android:textSize="15sp"
+            android:inputType="number"
+            android:gravity="center_vertical|right"
+            android:maxLength="4"
+            android:layout_alignParentTop="true"
+            android:layout_alignParentRight="true"
+            android:layout_alignParentEnd="true" />
+    </RelativeLayout>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1px"
+        android:background="@color/item_line" />
+    <RelativeLayout
+        style="@style/IMTbleLine2"
+        android:minHeight="50dp"
+        android:layout_height="wrap_content"
+        android:background="@color/white">
+
+        <TextView
+            style="@style/form_relative_left_text"
+            android:text="备注"
+            android:layout_marginLeft="0dp"
+            android:textColor="@color/text_main"
+            android:textSize="15sp" />
+
+        <com.andreabaccega.widget.FormEditText
+            android:id="@+id/remark_et"
+            android:layout_width="200dp"
+            android:layout_height="wrap_content"
+            android:textColor="@color/dark_dark_grey"
+            android:padding="10dp"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true"
+            android:background="@null"
+            android:hint="@string/common_input"
+            android:textSize="15sp"
+            android:gravity="center_vertical|right"
+            android:maxLength="2"
+            />
+    </RelativeLayout>
+</LinearLayout>

+ 83 - 0
app_modular/appme/src/main/res/layout/table_set_activity.xml

@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:background="@color/base_bg">
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical">
+            <com.core.widget.MyListView
+                android:id="@+id/com_list"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:scrollbars="none"
+                android:paddingBottom="20dp">
+            </com.core.widget.MyListView>
+
+
+            <RelativeLayout
+                android:id="@+id/add_new_rl"
+                android:layout_width="match_parent"
+                style="@style/IMTbleLine2"
+                android:layout_height="40dp"
+                android:layout_marginLeft="25dp"
+                android:layout_marginRight="25dp"
+                >
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:text="+新增"
+                    android:textColor="#2F95DD"
+                    android:layout_height="wrap_content"
+                    android:layout_centerInParent="true"
+                    />
+
+            </RelativeLayout>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+
+                <Button
+                    android:id="@+id/save_bt"
+                    android:layout_width="0dp"
+                    android:layout_weight="1"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentBottom="true"
+                    android:layout_marginBottom="30dp"
+                    android:layout_marginLeft="20dp"
+                    android:layout_marginRight="20dp"
+                    android:layout_marginTop="50dp"
+                    android:background="@drawable/bg_bule_btn"
+                    android:padding="10dp"
+                    android:text="@string/save"
+                    android:textColor="@color/white"
+                    android:textSize="@dimen/text_main"
+                    />
+                <Button
+                    android:id="@+id/delete_btn"
+                    android:layout_width="0dp"
+                    android:layout_weight="1"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentBottom="true"
+                    android:layout_marginBottom="30dp"
+                    android:layout_marginLeft="20dp"
+                    android:layout_marginRight="20dp"
+                    android:layout_marginTop="50dp"
+                    android:background="@drawable/bg_bule_btn"
+                    android:padding="10dp"
+                    android:text="@string/delete"
+                    android:textColor="@color/white"
+                    android:textSize="@dimen/text_main"
+                    android:visibility="gone"/>
+
+            </LinearLayout>
+        </LinearLayout>
+        </ScrollView>
+
+</LinearLayout>

+ 45 - 0
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/ApprovalActivity.java

@@ -6,6 +6,7 @@ import android.support.annotation.NonNull;
 import android.support.v7.widget.DefaultItemAnimator;
 import android.support.v7.widget.RecyclerView;
 import android.text.Editable;
+import android.util.Log;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.Menu;
@@ -21,8 +22,12 @@ import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import com.afollestad.materialdialogs.MaterialDialog;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.andreabaccega.widget.FormEditText;
+import com.common.LogUtil;
+import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
 import com.common.preferences.PreferenceUtils;
@@ -49,10 +54,13 @@ import com.modular.appmessages.adapter.ApprovalAdapter;
 import com.modular.appmessages.adapter.CrashLinearLayoutManager;
 import com.modular.appmessages.presenter.ApprovaPresenter;
 import com.modular.appmessages.presenter.imp.IApproval;
+import com.modular.apputils.activity.SelectNetAcitivty;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -146,10 +154,36 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
             }
         } else if (0x25 == requestCode && 0x25 == resultCode) {
             mPresenter.initLoad();
+        } else if (90 == requestCode && 90 == resultCode) {
+            String json = data.getStringExtra("data");
+            try {
+                updateDbFindKey(json);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
         }
         super.onActivityResult(requestCode, resultCode, data);
     }
 
+    private void updateDbFindKey(String message) throws Exception {
+        if (!StringUtil.isEmpty(message) && JSONUtil.validateJSONObject(message)) {
+            JSONObject object = JSON.parseObject(message);
+            if (mAdapter != null) {
+                List<Approval> models = mAdapter.getDbFind();
+                for (Approval e : models) {
+                    if (e.isNeerInput() && (e.getType() == Approval.MAIN || e.getType() == Approval.DETAIL)) {
+                        for (Map.Entry<String, Object> map : object.entrySet()) {
+                            if (map.getKey().equals(e.getValuesKey()) && map.getValue() != null) {
+                                e.setValues(map.getValue().toString());
+                            }
+                        }
+                    }
+                }
+                mAdapter.notifyDataSetChanged();
+            }
+        }
+    }
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -196,6 +230,17 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
         mPresenter = new ApprovaPresenter(this, getIntent());
     }
 
+    public void toDbFind(Approval approval) {
+        startActivityForResult(new Intent(ct, SelectNetAcitivty.class)
+                        .putExtra("fieldKey", approval.getValuesKey())
+                        .putExtra("corekey", approval.getCoreKey())
+                        .putExtra("caller", approval.getCaller())
+                        .putExtra("gCaller", approval.getgCaller())
+                        .putExtra("isForm", approval.getType() == Approval.MAIN)
+                , 90);
+
+    }
+
     private void getEmnameByReturn(String text) {
         if (StringUtil.isEmpty(text)) return;
         Pattern pattern = Pattern.compile("(?<=\\()(.+?)(?=\\))");

+ 625 - 591
app_modular/appmessages/src/main/java/com/modular/appmessages/adapter/ApprovalAdapter.java

@@ -33,6 +33,8 @@ import com.core.utils.time.wheel.DatePicker;
 import com.core.widget.CustomProgressDialog;
 import com.core.widget.listener.EditChangeListener;
 import com.modular.appmessages.R;
+import com.modular.appmessages.activity.ApprovalActivity;
+import com.modular.apputils.activity.SelectNetAcitivty;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -43,597 +45,629 @@ import java.util.List;
  */
 
 public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
-	private OABaseActivity ct;
-	private List<Approval> approvals;
-	private List<Approval> historyNodes;
-	private boolean isApprovaling;
-
-	public ApprovalAdapter(OABaseActivity ct, List<Approval> approvals, List<Approval> historyNodes, boolean isApprovaling) {
-		this.isApprovaling = isApprovaling;
-		this.ct = ct;
-		this.approvals = approvals;
-		this.historyNodes = historyNodes;
-	}
-
-	public List<Approval> getApprovals() {
-		return approvals;
-	}
-
-	public void setApprovals(List<Approval> approvals) {
-		this.approvals = approvals;
-	}
-
-	@Override
-	public int getItemViewType(int position) {
-		return position;
-	}
-
-	@Override
-	public int getItemCount() {
-		return ListUtils.getSize(approvals);
-	}
-
-
-	@Override
-	public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-		switch (this.approvals.get(viewType).getType()) {
-			case Approval.TITLE:
-				return new TitleViewHolder(parent);
-			case Approval.MAIN://列表
-			case Approval.DETAIL:
-			case Approval.SETUPTASK:
-				return new BaseRVViewHodler(parent);
-			case Approval.ENCLOSURE://单行列表
-			case Approval.TAG:
-				return new TagViewHolder(parent);
-			case Approval.POINTS:
-				return new PointsViewHolder(parent);
-			case Approval.NODES:
-				return new NodeViewHolder(parent);
-			case Approval.NODES_TAG:
-				return new NodeTagViewHolder(parent);
-			default:
-				return new BaseRVViewHodler(parent);
-		}
-	}
-
-	@Override
-	public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
-		try {
-			if (holder instanceof TitleViewHolder) {
-				bindTitleView((TitleViewHolder) holder, position);
-			} else if (holder instanceof BaseRVViewHodler) {
-				bindBaseRVView((BaseRVViewHodler) holder, position);
-			} else if (holder instanceof TagViewHolder) {
-				bindTAGView((TagViewHolder) holder, position);
-			} else if (holder instanceof PointsViewHolder) {
-				bindPointsView((PointsViewHolder) holder, position);
-			} else if (holder instanceof NodeViewHolder) {
-				bindNodeView((NodeViewHolder) holder, position);
-			} else if (holder instanceof NodeTagViewHolder) {
-				bindNodeTagView((NodeTagViewHolder) holder, position);
-			}
-		} catch (Exception e) {
-
-		}
-	}
-
-	private void bindNodeTagView(final NodeTagViewHolder holder, final int position) {
-		View.OnClickListener listener = new View.OnClickListener() {
-			@Override
-			public void onClick(View v) {
-				boolean isNode = v.getId() == R.id.nodeTv;
-				if ((isNode && holder.nodeTag.getVisibility() == View.GONE) || (!isNode && holder.historyTag.getVisibility() == View.GONE)) {
-					List<Approval> newApprovals = new ArrayList<Approval>();
-					List<Approval> approvals1 = approvals.subList(0, position + 1);
-					List<Approval> approvals2 = approvals.subList(position + 1, approvals.size());
-					newApprovals.addAll(approvals1);
-					newApprovals.addAll(historyNodes);
-					historyNodes = approvals2;
-					if (newApprovals.get(position).getType() == Approval.NODES_TAG) {
-						newApprovals.get(position).setNeerInput(!isNode);
-					}
-					approvals = newApprovals;
-					notifyItemRangeChanged(position, approvals.size() - 1);
-				}
-			}
-		};
-		holder.historyTV.setOnClickListener(listener);
-		holder.nodeTv.setOnClickListener(listener);
-		if (approvals.get(position).isNeerInput()) {
-			holder.nodeTv.setTextColor(ct.getResources().getColor(R.color.text_main));
-			holder.historyTV.setTextColor(ct.getResources().getColor(R.color.titleBlue));
-			holder.nodeTag.setVisibility(View.GONE);
-			holder.historyTag.setVisibility(View.VISIBLE);
-		} else {
-			holder.nodeTv.setTextColor(ct.getResources().getColor(R.color.titleBlue));
-			holder.historyTV.setTextColor(ct.getResources().getColor(R.color.text_main));
-			holder.nodeTag.setVisibility(View.VISIBLE);
-			holder.historyTag.setVisibility(View.GONE);
-		}
-	}
-
-	private void bindNodeView(NodeViewHolder holder, int position) {
-		Approval approval = approvals.get(position);
-		if (position > 0 && approvals.get(position - 1).getType() == Approval.NODES_TAG || approvals.get(position - 1).getType() == Approval.NODES) {
-			holder.padding.setVisibility(View.GONE);
-		} else {
-			holder.padding.setVisibility(View.VISIBLE);
-		}
-		int textColor = R.color.hintColor;
-		int reId = R.drawable.weishenpi;
-		if (!StringUtil.isEmpty(approval.getIdKey())) {
-			holder.valuesTv.setText(approval.getIdKey());
-			if (approval.getIdKey().startsWith("待审批")) {
-				textColor = R.color.approvaling;
-				reId = R.drawable.daishenpi;
-			} else if (approval.getIdKey().startsWith("未通过") || approval.getIdKey().startsWith("结束") || approval.getIdKey().startsWith("不同意")) {
-				textColor = R.color.crimson;
-				reId = R.drawable.node_delete;
-			} else if (approval.getIdKey().startsWith("已审批") || approval.getIdKey().startsWith("变更") || approval.getIdKey().startsWith("同意")) {
-				reId = R.drawable.node_finished3;
-			}
-		} else {
-			holder.valuesTv.setText("");
-		}
-		holder.valuesTv.setTextColor(ct.getResources().getColor(textColor));
-		holder.keyTv.setText(approval.getCaption());
-		holder.statusIV.setImageResource(reId);
-		AvatarHelper.getInstance().display(String.valueOf(approval.getId()), holder.handIv, true, false);
-		if (reId == R.drawable.daishenpi && isApprovaling) {
-			holder.changeUser.setVisibility(View.VISIBLE);
-			holder.timeTv.setText("");
-			holder.changeUser.setOnClickListener(new View.OnClickListener() {
-				@Override
-				public void onClick(View v) {
-					if (onChangeClickListener != null)
-						onChangeClickListener.click();
-				}
-			});
+    private ApprovalActivity ct;
+    private List<Approval> approvals;
+    private List<Approval> historyNodes;
+    private boolean isApprovaling;
+    private int dbfindItem = -1;
+
+
+    public ApprovalAdapter(ApprovalActivity ct, List<Approval> approvals, List<Approval> historyNodes, boolean isApprovaling) {
+        this.isApprovaling = isApprovaling;
+        this.ct = ct;
+        this.approvals = approvals;
+        this.historyNodes = historyNodes;
+    }
+
+    public List<Approval> getDbFind() {
+        if (ListUtils.getSize(approvals) > dbfindItem && dbfindItem != -1) {
+            List<Approval> changeApproval = new ArrayList<>();
+            int type = approvals.get(dbfindItem).getType();
+            for (int i = dbfindItem; i >= 0; i--) {
+                if (type == approvals.get(i).getType()) {
+                    changeApproval.add(approvals.get(i));
+                } else {
+                    break;
+                }
+            }
+            for (int i = dbfindItem + 1; i < ListUtils.getSize(approvals); i++) {
+                if (type == approvals.get(i).getType()) {
+                    changeApproval.add(approvals.get(i));
+                } else {
+                    break;
+                }
+            }
+            return changeApproval;
+        } else {
+            return approvals;
+        }
+    }
+
+    public List<Approval> getApprovals() {
+        return approvals;
+    }
+
+    public void setApprovals(List<Approval> approvals) {
+        this.approvals = approvals;
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        return position;
+    }
+
+    @Override
+    public int getItemCount() {
+        return ListUtils.getSize(approvals);
+    }
+
+
+    @Override
+    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        switch (this.approvals.get(viewType).getType()) {
+            case Approval.TITLE:
+                return new TitleViewHolder(parent);
+            case Approval.MAIN://列表
+            case Approval.DETAIL:
+            case Approval.SETUPTASK:
+                return new BaseRVViewHodler(parent);
+            case Approval.ENCLOSURE://单行列表
+            case Approval.TAG:
+                return new TagViewHolder(parent);
+            case Approval.POINTS:
+                return new PointsViewHolder(parent);
+            case Approval.NODES:
+                return new NodeViewHolder(parent);
+            case Approval.NODES_TAG:
+                return new NodeTagViewHolder(parent);
+            default:
+                return new BaseRVViewHodler(parent);
+        }
+    }
+
+    @Override
+    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
+        try {
+            if (holder instanceof TitleViewHolder) {
+                bindTitleView((TitleViewHolder) holder, position);
+            } else if (holder instanceof BaseRVViewHodler) {
+                bindBaseRVView((BaseRVViewHodler) holder, position);
+            } else if (holder instanceof TagViewHolder) {
+                bindTAGView((TagViewHolder) holder, position);
+            } else if (holder instanceof PointsViewHolder) {
+                bindPointsView((PointsViewHolder) holder, position);
+            } else if (holder instanceof NodeViewHolder) {
+                bindNodeView((NodeViewHolder) holder, position);
+            } else if (holder instanceof NodeTagViewHolder) {
+                bindNodeTagView((NodeTagViewHolder) holder, position);
+            }
+        } catch (Exception e) {
+
+        }
+    }
+
+    private void bindNodeTagView(final NodeTagViewHolder holder, final int position) {
+        View.OnClickListener listener = new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                boolean isNode = v.getId() == R.id.nodeTv;
+                if ((isNode && holder.nodeTag.getVisibility() == View.GONE) || (!isNode && holder.historyTag.getVisibility() == View.GONE)) {
+                    List<Approval> newApprovals = new ArrayList<Approval>();
+                    List<Approval> approvals1 = approvals.subList(0, position + 1);
+                    List<Approval> approvals2 = approvals.subList(position + 1, approvals.size());
+                    newApprovals.addAll(approvals1);
+                    newApprovals.addAll(historyNodes);
+                    historyNodes = approvals2;
+                    if (newApprovals.get(position).getType() == Approval.NODES_TAG) {
+                        newApprovals.get(position).setNeerInput(!isNode);
+                    }
+                    approvals = newApprovals;
+                    notifyItemRangeChanged(position, approvals.size() - 1);
+                }
+            }
+        };
+        holder.historyTV.setOnClickListener(listener);
+        holder.nodeTv.setOnClickListener(listener);
+        if (approvals.get(position).isNeerInput()) {
+            holder.nodeTv.setTextColor(ct.getResources().getColor(R.color.text_main));
+            holder.historyTV.setTextColor(ct.getResources().getColor(R.color.titleBlue));
+            holder.nodeTag.setVisibility(View.GONE);
+            holder.historyTag.setVisibility(View.VISIBLE);
+        } else {
+            holder.nodeTv.setTextColor(ct.getResources().getColor(R.color.titleBlue));
+            holder.historyTV.setTextColor(ct.getResources().getColor(R.color.text_main));
+            holder.nodeTag.setVisibility(View.VISIBLE);
+            holder.historyTag.setVisibility(View.GONE);
+        }
+    }
+
+    private void bindNodeView(NodeViewHolder holder, int position) {
+        Approval approval = approvals.get(position);
+        if (position > 0 && approvals.get(position - 1).getType() == Approval.NODES_TAG || approvals.get(position - 1).getType() == Approval.NODES) {
+            holder.padding.setVisibility(View.GONE);
+        } else {
+            holder.padding.setVisibility(View.VISIBLE);
+        }
+        int textColor = R.color.hintColor;
+        int reId = R.drawable.weishenpi;
+        if (!StringUtil.isEmpty(approval.getIdKey())) {
+            holder.valuesTv.setText(approval.getIdKey());
+            if (approval.getIdKey().startsWith("待审批")) {
+                textColor = R.color.approvaling;
+                reId = R.drawable.daishenpi;
+            } else if (approval.getIdKey().startsWith("未通过") || approval.getIdKey().startsWith("结束") || approval.getIdKey().startsWith("不同意")) {
+                textColor = R.color.crimson;
+                reId = R.drawable.node_delete;
+            } else if (approval.getIdKey().startsWith("已审批") || approval.getIdKey().startsWith("变更") || approval.getIdKey().startsWith("同意")) {
+                reId = R.drawable.node_finished3;
+            }
+        } else {
+            holder.valuesTv.setText("");
+        }
+        holder.valuesTv.setTextColor(ct.getResources().getColor(textColor));
+        holder.keyTv.setText(approval.getCaption());
+        holder.statusIV.setImageResource(reId);
+        AvatarHelper.getInstance().display(String.valueOf(approval.getId()), holder.handIv, true, false);
+        if (reId == R.drawable.daishenpi && isApprovaling) {
+            holder.changeUser.setVisibility(View.VISIBLE);
+            holder.timeTv.setText("");
+            holder.changeUser.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    if (onChangeClickListener != null)
+                        onChangeClickListener.click();
+                }
+            });
 //            holder.timeTv.setTextColor(ct.getResources().getColor(R.color.titleBlue));
-		} else {
-			holder.changeUser.setVisibility(View.GONE);
-			holder.timeTv.setOnClickListener(null);
+        } else {
+            holder.changeUser.setVisibility(View.GONE);
+            holder.timeTv.setOnClickListener(null);
 //            holder.timeTv.setTextColor(ct.getResources().getColor(R.color.text_normal));
-			holder.timeTv.setText(approval.getValues());
-		}
-
-	}
-
-	private void bindPointsView(final PointsViewHolder holder, final int position) {
-		final Approval approval = approvals.get(position);
-		if (approvals.size() > position + 1) {
-			holder.line.setVisibility(View.VISIBLE);
-		} else {
-			holder.line.setVisibility(View.GONE);
-		}
-		holder.captionTV.setText(approval.getCaption());
-		if (approval.isNeerInput()) {
-			if (approval.isSelect()) {
-				if (approval.isMustInput()) {
-					holder.valueTv.setHint(R.string.common_select);
-				} else {
-					holder.valueTv.setHint(R.string.common_select_not_must);
-				}
-				setViewShowAble(false, holder.valueEt);
-				setViewShowAble(true, holder.valueTv);
-				holder.valueTv.setText(approval.getValues());
-				holder.valueTv.setOnClickListener(new View.OnClickListener() {
-					@Override
-					public void onClick(View v) {
-						if (approval.inputType() == 2) {
-							showTimeSelect(holder.valueTv, position);
-						} else {
-							selectItem(approval, position);
-						}
-					}
-				});
-			} else {
-				if (approval.isMustInput()) {
-					holder.valueEt.setHint(R.string.common_input);
-				} else {
-					holder.valueEt.setHint(R.string.common_input1);
-				}
-				if (approval.isDftypeEQ("N")) {
-					holder.valueEt.setInputType(InputType.TYPE_CLASS_NUMBER);
-				} else {
-					holder.valueEt.setInputType(InputType.TYPE_CLASS_TEXT);
-				}
-				setViewShowAble(true, holder.valueEt);
-				setViewShowAble(false, holder.valueTv);
-				holder.valueEt.setText(approval.getValues());
-				holder.valueEt.addTextChangedListener(new TextChangListener(holder, position));
-			}
-		} else {
-			setViewShowAble(false, holder.valueEt);
-			setViewShowAble(true, holder.valueTv);
-			holder.valueTv.setCompoundDrawables(null, null, null, null);
-			holder.valueTv.setText(approval.getValues());
-		}
-
-	}
-
-	private void bindTAGView(TagViewHolder holder, final int position) {
-		String name = approvals.get(position).getCaption();
-		if (approvals.get(position).getType() == Approval.ENCLOSURE) {//附件列表
-			holder.line.setVisibility(View.GONE);
-			holder.padding.setVisibility(View.GONE);
-			holder.nameTv.setText(Html.fromHtml("&nbsp&nbsp&nbsp&nbsp&nbsp " + "<u>" + name + "</u>"));
-			holder.nameTv.setOnClickListener(new View.OnClickListener() {
-				@Override
-				public void onClick(View v) {
-					gotoReadEnclosure(approvals.get(position));
-				}
-			});
-		} else {
-			if (ListUtils.getSize(approvals) > position + 1 && position > 0) {
-				if (approvals.get(position + 1).getType() == approvals.get(position - 1).getType()) {
-					holder.line.setVisibility(View.VISIBLE);
-					holder.padding.setVisibility(View.GONE);
-				} else {
-					holder.line.setVisibility(View.GONE);
-					holder.padding.setVisibility(View.VISIBLE);
-					if (name.trim().equals("附件")) {
-						holder.nameTv.setTextColor(ct.getResources().getColor(R.color.text_normal));
-					} else {
-						holder.nameTv.setTextColor(ct.getResources().getColor(R.color.titleBlue));
-					}
-				}
-			}
-			if (!StringUtil.isEmpty(name)) {
-				holder.nameTv.setVisibility(View.VISIBLE);
-				holder.nameTv.setText(name);
-			} else {
-				holder.nameTv.setVisibility(View.GONE);
-			}
-		}
-	}
-
-	private void gotoReadEnclosure(Approval approval) {
-		String url = approval.getIdKey();
-		final CustomProgressDialog progressDialog = CustomProgressDialog.createDialog(ct);
-		progressDialog.setTitile("正在下载");
-		progressDialog.setMessage("正在下载,请勿关闭程序");
-		LogUtil.i("gotoReadEnclosure");
-		if (!StringUtil.isEmpty(approval.getCaption())) {
-			if (isImage(approval.getCaption())) {
-				Intent intent = new Intent("com.modular.tool.SingleImagePreviewActivity");
-				intent.putExtra(AppConstant.EXTRA_IMAGE_URI, url);
-				ct.startActivity(intent);
-			} else {
-				OpenFilesUtils.downLoadFile(url, approval.getCaption(), new OpenFilesUtils.OnFileLoadListener() {
-					@Override
-					public void onLoadIng(int progress, int allProgress) {
-						if (progressDialog != null)
-							progressDialog.show();
-						LogUtil.i("TODO 下载进行中回调");
-					}
-
-					@Override
-					public void onSuccess(final File file) {
-						if (progressDialog != null)
-							progressDialog.dismiss();
-						try {
-							ct.requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, new Runnable() {
-								@Override
-								public void run() {
-									OpenFilesUtils.openCommonFils(ct, file);
-								}
-							}, new Runnable() {
-								@Override
-								public void run() {
-									ct.showToast(R.string.not_system_permission);
-								}
-							});
-						} catch (Exception e) {
-							
-						}
-					}
-					@Override
-					public void onFailure(String exception) {
-						LogUtil.i("exception=" + exception);
-						ToastUtil.showToast(ct, exception);
-					}
-				});
-			}
-		}
-	}
-
-	private void bindBaseRVView(final BaseRVViewHodler holder, final int position) {
-		final Approval approval = approvals.get(position);
-		holder.captionTV.setText(approval.getCaption());
-		holder.oldValueTv.setVisibility(View.GONE);
-		if (!StringUtil.isEmpty(approval.getValues())) {
-			if (holder.valueTv.getVisibility() == View.VISIBLE) {
-				holder.valueTv.setText(approval.getValues());
-			} else if (holder.valueEt.getVisibility() == View.VISIBLE) {
-				holder.valueEt.setText(approval.getValues());
-			}
-		}
-		if (approval.isNeerInput()) {
-			setViewShowAble(true, holder.valueEt);
-			setViewShowAble(false, holder.valueTv, holder.valueWeb);
-			holder.valueEt.setText(approval.getValues());
-			if (approval.isMustInput()) {
-				holder.valueEt.setHint(R.string.common_input);
-			} else {
-				holder.valueEt.setHint(R.string.common_input1);
-			}
-			//0字符输入  1.数字输入  2.日期输入选择  3.下拉选择  4.多选选择
-			switch (approval.inputType()) {
-				case 2:
-				case 3:
-				case 4:
-					if (approval.isMustInput()) {
-						holder.valueEt.setHint(R.string.common_select);
-					} else {
-						holder.valueEt.setHint(R.string.common_select_not_must);
-					}
-					holder.valueEt.setFocusable(true);
-					holder.valueEt.setFocusableInTouchMode(false);
-					holder.valueEt.setOnClickListener(new View.OnClickListener() {
-						@Override
-						public void onClick(View v) {
-							if (approval.inputType() == 2) {
-								showTimeSelect(holder.valueEt, position);
-							} else {
-								selectItem(approval, position);
-							}
-						}
-					});
-					break;
-				case 1:
-					holder.valueEt.setInputType(InputType.TYPE_CLASS_NUMBER);
-					holder.valueEt.addTextChangedListener(new TextChangListener(holder, position));
-					break;
-				default:
-					holder.valueEt.setInputType(InputType.TYPE_CLASS_TEXT);
-					holder.valueEt.addTextChangedListener(new TextChangListener(holder, position));
-			}
-		} else {
-			if (isWeb(approval.getValues())) {
-				setViewShowAble(true, holder.valueWeb);
-				setViewShowAble(false, holder.valueEt, holder.valueTv);
-				LogUtil.i(approval.getValues());
-				holder.valueWeb.loadDataWithBaseURL(null, approval.getValues(), "text/html", "utf-8", null);
-			} else {
-				setViewShowAble(true, holder.valueTv);
-				setViewShowAble(false, holder.valueEt, holder.valueWeb);
-				if (!StringUtil.isEmpty(approval.getOldValues())) {//存在变更
-					holder.oldValueTv.setVisibility(View.VISIBLE);
-					holder.oldValueTv.setText(approval.getOldValues());
-					holder.valueTv.setText(getOldValues(approval.getOldValues(), approval.getValues()));
-				} else {
-					if (approval.isNumber()) {
-						holder.valueTv.setText(approval.getNumber());
-					} else {
-						holder.valueTv.setText(Html.fromHtml(approval.getValues()));
-					}
-				}
-			}
-		}
-	}
-
-	private CharSequence getOldValues(String oldValues, String values) {
-		return Html.fromHtml("<font color='#f10813'>" + values + "</font>");
-	}
-
-	private boolean isWeb(String values) {
-		return values != null && values.length() > 100 && values.contains("<br>");
-	}
-
-	private void showTimeSelect(final TextView showView, final int position) {
-		DatePicker picker = new DatePicker(ct, DatePicker.YEAR_MONTH_DAY);
-		picker.setRange(2015, 2019, true);
-		picker.setSelectedItem(CalendarUtil.getYear(), CalendarUtil.getMonth(), CalendarUtil.getDay());
-		picker.setOnDatePickListener(new DatePicker.OnYearMonthDayPickListener() {
-			@Override
-			public void onDatePicked(String year, String month, String day) {
-				String time = year + "-" + month + "-" + day;
-				LogUtil.i("time=" + time);
-				showView.setText(time);
-				approvals.get(position).setValues(time);
-			}
-		});
-		picker.show();
-	}
-
-	private void selectItem(Approval approval, final int position) {
-		if (!ListUtils.isEmpty(approval.getDatas())) {
-			String[] items = new String[approval.getDatas().size()];
-			for (int i = 0; i < approval.getDatas().size(); i++) {
-				items[i] = approval.getDatas().get(i).display;
-			}
-			new MaterialDialog.Builder(ct)
-					.title(approval.getCaption())
-					.items(items)
-					.itemsCallbackSingleChoice(0, new MaterialDialog.ListCallbackSingleChoice() {
-						@Override
-						public boolean onSelection(MaterialDialog dialog, View view, int which, CharSequence text) {
-							if (!TextUtils.isEmpty(text)) {
-								approvals.get(position).setValues(text.toString());
-								notifyItemChanged(position);
-							}
-							return true;
-						}
-					}).positiveText(MyApplication.getInstance().getString(R.string.common_sure)).show();
-
-		}
-	}
-
-	private void bindTitleView(TitleViewHolder holder, int position) {
-		Approval approval = approvals.get(position);
-		holder.titleTv.setText(approval.getCaption());
-		AvatarHelper.getInstance().display(approval.getIdKey(), holder.handIv, true, false);
-		if (approval.getId() > 0) {
-			holder.statusIv.setVisibility(View.VISIBLE);
-			if (approval.getId() > 0)
-				holder.statusIv.setImageResource(approval.getId());
-		} else {
-			holder.statusIv.setVisibility(View.GONE);
-		}
-	}
-
-	private class TitleViewHolder extends RecyclerView.ViewHolder {
-		TextView titleTv;
-		ImageView handIv, statusIv;
-
-		public TitleViewHolder(ViewGroup parent) {
-			this(LayoutInflater.from(ct).inflate(R.layout.item_approval_title, parent, false));
-		}
-
-		public TitleViewHolder(View itemView) {
-			super(itemView);
-			titleTv = (TextView) itemView.findViewById(R.id.titleTv);
-			handIv = (ImageView) itemView.findViewById(R.id.handIv);
-			statusIv = (ImageView) itemView.findViewById(R.id.statusIv);
-		}
-	}
-
-	private class TagViewHolder extends RecyclerView.ViewHolder {
-		TextView nameTv;
-		View padding, line;
-
-		public TagViewHolder(ViewGroup parent) {
-			this(LayoutInflater.from(ct).inflate(R.layout.item_approval_tag, parent, false));
-		}
-
-		public TagViewHolder(View itemView) {
-			super(itemView);
-			nameTv = (TextView) itemView.findViewById(R.id.tagTv);
-			padding = itemView.findViewById(R.id.padding);
-			line = itemView.findViewById(R.id.line);
-		}
-	}
-
-	private class NodeViewHolder extends RecyclerView.ViewHolder {
-		ImageView handIv, statusIV, changeUser;
-		TextView timeTv, keyTv, valuesTv;
-		View padding;
-
-		public NodeViewHolder(ViewGroup parent) {
-			this(LayoutInflater.from(ct).inflate(R.layout.item_approval_node, parent, false));
-		}
-
-		public NodeViewHolder(View itemView) {
-			super(itemView);
-			timeTv = (TextView) itemView.findViewById(R.id.timeTv);
-			keyTv = (TextView) itemView.findViewById(R.id.keyTv);
-			valuesTv = (TextView) itemView.findViewById(R.id.valuesTv);
-			handIv = (ImageView) itemView.findViewById(R.id.handIv);
-			statusIV = (ImageView) itemView.findViewById(R.id.statusIV);
-			changeUser = (ImageView) itemView.findViewById(R.id.changeUser);
-			padding = itemView.findViewById(R.id.padding);
-			changeUser.setVisibility(View.GONE);
-		}
-	}
-
-	private class NodeTagViewHolder extends RecyclerView.ViewHolder {
-		TextView nodeTv, historyTV;
-		View nodeTag, historyTag;
-
-		public NodeTagViewHolder(ViewGroup parent) {
-			this(LayoutInflater.from(ct).inflate(R.layout.item_approval_node_tag, parent, false));
-		}
-
-		public NodeTagViewHolder(View itemView) {
-			super(itemView);
-			nodeTv = (TextView) itemView.findViewById(R.id.nodeTv);
-			historyTV = (TextView) itemView.findViewById(R.id.historyTV);
-			nodeTag = itemView.findViewById(R.id.nodeTag);
-			historyTag = itemView.findViewById(R.id.historyTag);
-			historyTag.setVisibility(View.GONE);
-		}
-	}
-
-	private class PointsViewHolder extends BaseViewHolder {
-		View line;
-
-		public PointsViewHolder(ViewGroup parent) {
-			this(LayoutInflater.from(ct).inflate(R.layout.item_approval_points, parent, false));
-		}
-
-		public PointsViewHolder(View itemView) {
-			super(itemView);
-			line = itemView.findViewById(R.id.line);
-
-		}
-	}
-
-	private class BaseViewHolder extends RecyclerView.ViewHolder {
-		TextView captionTV, valueTv;
-		EditText valueEt;
-		FrameLayout valuesFl;
-
-		public BaseViewHolder(View itemView) {
-			super(itemView);
-			captionTV = (TextView) itemView.findViewById(R.id.captionTV);
-			valueTv = (TextView) itemView.findViewById(R.id.valueTv);
-			valueEt = (EditText) itemView.findViewById(R.id.valueEt);
-			valuesFl = (FrameLayout) itemView.findViewById(R.id.valuesFl);
-
-		}
-	}
-
-	private class BaseRVViewHodler extends BaseViewHolder {
-		WebView valueWeb;
-		TextView oldValueTv;
-
-		public BaseRVViewHodler(ViewGroup parent) {
-			this(LayoutInflater.from(ct).inflate(R.layout.item_approval_rv, parent, false));
-		}
-
-		public BaseRVViewHodler(View itemView) {
-			super(itemView);
-			valueWeb = (WebView) itemView.findViewById(R.id.valueWeb);
-			oldValueTv = (TextView) itemView.findViewById(R.id.oldValueTv);
-			oldValueTv.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG); //删除线
-			oldValueTv.getPaint().setAntiAlias(true);// 抗锯齿
-		}
-	}
-
-	private void setViewShowAble(boolean showAble, View... views) {
-		if (views != null && views.length > 0) {
-			for (View v : views) {
-				v.setVisibility(showAble ? View.VISIBLE : View.GONE);
-			}
-		}
-	}
-
-	private class TextChangListener extends EditChangeListener {
-		BaseViewHolder hodler;
-		private int position;
-
-		public TextChangListener(BaseViewHolder hodler, int position) {
-			this.hodler = hodler;
-			this.position = position;
-		}
-
-		@Override
-		public void afterTextChanged(Editable s) {
-			if (this.position >= 0) {
-				if (this.hodler.valueEt != null && this.hodler.valueEt.getVisibility() == View.VISIBLE) {
-					String valueEt = this.hodler.valueEt.getText().toString();
-					approvals.get(this.position).setValues(valueEt == null ? "" : valueEt);
-				}
-			}
-		}
-	}
-
-	private OnChangeClickListener onChangeClickListener;
-
-	public void setOnChangeClickListener(OnChangeClickListener onChangeClickListener) {
-		this.onChangeClickListener = onChangeClickListener;
-	}
-
-	public interface OnChangeClickListener {
-		void click();
-	}
-
-
-	private boolean isImage(String name) {
-		return name.toUpperCase().endsWith("jpeg".toUpperCase())
-				|| name.toUpperCase().endsWith("jpg".toUpperCase())
-				|| name.toUpperCase().endsWith("png".toUpperCase());
-	}
+            holder.timeTv.setText(approval.getValues());
+        }
+
+    }
+
+    private void bindPointsView(final PointsViewHolder holder, final int position) {
+        final Approval approval = approvals.get(position);
+        if (approvals.size() > position + 1) {
+            holder.line.setVisibility(View.VISIBLE);
+        } else {
+            holder.line.setVisibility(View.GONE);
+        }
+        holder.captionTV.setText(approval.getCaption());
+        if (approval.isNeerInput()) {
+            if (approval.isSelect()) {
+                if (approval.isMustInput()) {
+                    holder.valueTv.setHint(R.string.common_select);
+                } else {
+                    holder.valueTv.setHint(R.string.common_select_not_must);
+                }
+                setViewShowAble(false, holder.valueEt);
+                setViewShowAble(true, holder.valueTv);
+                holder.valueTv.setText(approval.getValues());
+                holder.valueTv.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        if (approval.inputType() == 2) {
+                            showTimeSelect(holder.valueTv, position);
+                        } else {
+                            selectItem(approval, position);
+                        }
+                    }
+                });
+            } else {
+                if (approval.isMustInput()) {
+                    holder.valueEt.setHint(R.string.common_input);
+                } else {
+                    holder.valueEt.setHint(R.string.common_input1);
+                }
+                if (approval.isDftypeEQ("N")) {
+                    holder.valueEt.setInputType(InputType.TYPE_CLASS_NUMBER);
+                } else {
+                    holder.valueEt.setInputType(InputType.TYPE_CLASS_TEXT);
+                }
+                setViewShowAble(true, holder.valueEt);
+                setViewShowAble(false, holder.valueTv);
+                holder.valueEt.setText(approval.getValues());
+                holder.valueEt.addTextChangedListener(new TextChangListener(holder, position));
+            }
+        } else {
+            setViewShowAble(false, holder.valueEt);
+            setViewShowAble(true, holder.valueTv);
+            holder.valueTv.setCompoundDrawables(null, null, null, null);
+            holder.valueTv.setText(approval.getValues());
+        }
+
+    }
+
+    private void bindTAGView(TagViewHolder holder, final int position) {
+        String name = approvals.get(position).getCaption();
+        if (approvals.get(position).getType() == Approval.ENCLOSURE) {//附件列表
+            holder.line.setVisibility(View.GONE);
+            holder.padding.setVisibility(View.GONE);
+            holder.nameTv.setText(Html.fromHtml("&nbsp&nbsp&nbsp&nbsp&nbsp " + "<u>" + name + "</u>"));
+            holder.nameTv.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    gotoReadEnclosure(approvals.get(position));
+                }
+            });
+        } else {
+            if (ListUtils.getSize(approvals) > position + 1 && position > 0) {
+                if (approvals.get(position + 1).getType() == approvals.get(position - 1).getType()) {
+                    holder.line.setVisibility(View.VISIBLE);
+                    holder.padding.setVisibility(View.GONE);
+                } else {
+                    holder.line.setVisibility(View.GONE);
+                    holder.padding.setVisibility(View.VISIBLE);
+                    if (name.trim().equals("附件")) {
+                        holder.nameTv.setTextColor(ct.getResources().getColor(R.color.text_normal));
+                    } else {
+                        holder.nameTv.setTextColor(ct.getResources().getColor(R.color.titleBlue));
+                    }
+                }
+            }
+            if (!StringUtil.isEmpty(name)) {
+                holder.nameTv.setVisibility(View.VISIBLE);
+                holder.nameTv.setText(name);
+            } else {
+                holder.nameTv.setVisibility(View.GONE);
+            }
+        }
+    }
+
+    private void gotoReadEnclosure(Approval approval) {
+        String url = approval.getIdKey();
+        final CustomProgressDialog progressDialog = CustomProgressDialog.createDialog(ct);
+        progressDialog.setTitile("正在下载");
+        progressDialog.setMessage("正在下载,请勿关闭程序");
+        LogUtil.i("gotoReadEnclosure");
+        if (!StringUtil.isEmpty(approval.getCaption())) {
+            if (isImage(approval.getCaption())) {
+                Intent intent = new Intent("com.modular.tool.SingleImagePreviewActivity");
+                intent.putExtra(AppConstant.EXTRA_IMAGE_URI, url);
+                ct.startActivity(intent);
+            } else {
+                OpenFilesUtils.downLoadFile(url, approval.getCaption(), new OpenFilesUtils.OnFileLoadListener() {
+                    @Override
+                    public void onLoadIng(int progress, int allProgress) {
+                        if (progressDialog != null)
+                            progressDialog.show();
+                        LogUtil.i("TODO 下载进行中回调");
+                    }
+
+                    @Override
+                    public void onSuccess(final File file) {
+                        if (progressDialog != null)
+                            progressDialog.dismiss();
+                        try {
+                            ct.requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, new Runnable() {
+                                @Override
+                                public void run() {
+                                    OpenFilesUtils.openCommonFils(ct, file);
+                                }
+                            }, new Runnable() {
+                                @Override
+                                public void run() {
+                                    ct.showToast(R.string.not_system_permission);
+                                }
+                            });
+                        } catch (Exception e) {
+
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(String exception) {
+                        LogUtil.i("exception=" + exception);
+                        ToastUtil.showToast(ct, exception);
+                    }
+                });
+            }
+        }
+    }
+
+    private void bindBaseRVView(final BaseRVViewHodler holder, final int position) {
+        final Approval approval = approvals.get(position);
+        holder.captionTV.setText(approval.getCaption());
+        holder.oldValueTv.setVisibility(View.GONE);
+        if (!StringUtil.isEmpty(approval.getValues())) {
+            if (holder.valueTv.getVisibility() == View.VISIBLE) {
+                holder.valueTv.setText(approval.getValues());
+            } else if (holder.valueEt.getVisibility() == View.VISIBLE) {
+                holder.valueEt.setText(approval.getValues());
+            }
+        }
+        if (approval.isNeerInput()) {
+            setViewShowAble(true, holder.valueEt);
+            setViewShowAble(false, holder.valueTv, holder.valueWeb);
+            holder.valueEt.setText(approval.getValues());
+            if (approval.isMustInput()) {
+                holder.valueEt.setHint(R.string.common_input);
+            } else {
+                holder.valueEt.setHint(R.string.common_input1);
+            }
+            //0字符输入  1.数字输入  2.日期输入选择  3.下拉选择  4.多选选择
+            switch (approval.inputType()) {
+                case 2:
+                case 3:
+                case 4:
+                    if (approval.isMustInput()) {
+                        holder.valueEt.setHint(R.string.common_select);
+                    } else {
+                        holder.valueEt.setHint(R.string.common_select_not_must);
+                    }
+                    holder.valueEt.setFocusable(true);
+                    holder.valueEt.setFocusableInTouchMode(false);
+                    holder.valueEt.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View v) {
+                            int type = approval.inputType();
+                            if (type == 2) {
+                                showTimeSelect(holder.valueEt, position);
+                            } else if (type == 4) {
+                                ct.toDbFind(approval);
+                                dbfindItem = position;
+                            } else {
+                                selectItem(approval, position);
+                            }
+                        }
+                    });
+                    break;
+                case 1:
+                    holder.valueEt.setInputType(InputType.TYPE_CLASS_NUMBER);
+                    holder.valueEt.addTextChangedListener(new TextChangListener(holder, position));
+                    break;
+                default:
+                    holder.valueEt.setInputType(InputType.TYPE_CLASS_TEXT);
+                    holder.valueEt.addTextChangedListener(new TextChangListener(holder, position));
+            }
+        } else {
+            if (isWeb(approval.getValues())) {
+                setViewShowAble(true, holder.valueWeb);
+                setViewShowAble(false, holder.valueEt, holder.valueTv);
+                LogUtil.i(approval.getValues());
+                holder.valueWeb.loadDataWithBaseURL(null, approval.getValues(), "text/html", "utf-8", null);
+            } else {
+                setViewShowAble(true, holder.valueTv);
+                setViewShowAble(false, holder.valueEt, holder.valueWeb);
+                if (!StringUtil.isEmpty(approval.getOldValues())) {//存在变更
+                    holder.oldValueTv.setVisibility(View.VISIBLE);
+                    holder.oldValueTv.setText(approval.getOldValues());
+                    holder.valueTv.setText(getOldValues(approval.getOldValues(), approval.getValues()));
+                } else {
+                    if (approval.isNumber()) {
+                        holder.valueTv.setText(approval.getNumber());
+                    } else {
+                        holder.valueTv.setText(Html.fromHtml(approval.getValues()));
+                    }
+                }
+            }
+        }
+    }
+
+
+    private CharSequence getOldValues(String oldValues, String values) {
+        return Html.fromHtml("<font color='#f10813'>" + values + "</font>");
+    }
+
+    private boolean isWeb(String values) {
+        return values != null && values.length() > 100 && values.contains("<br>");
+    }
+
+    private void showTimeSelect(final TextView showView, final int position) {
+        DatePicker picker = new DatePicker(ct, DatePicker.YEAR_MONTH_DAY);
+        picker.setRange(2015, 2019, true);
+        picker.setSelectedItem(CalendarUtil.getYear(), CalendarUtil.getMonth(), CalendarUtil.getDay());
+        picker.setOnDatePickListener(new DatePicker.OnYearMonthDayPickListener() {
+            @Override
+            public void onDatePicked(String year, String month, String day) {
+                String time = year + "-" + month + "-" + day;
+                LogUtil.i("time=" + time);
+                showView.setText(time);
+                approvals.get(position).setValues(time);
+            }
+        });
+        picker.show();
+    }
+
+    private void selectItem(Approval approval, final int position) {
+        if (!ListUtils.isEmpty(approval.getDatas())) {
+            String[] items = new String[approval.getDatas().size()];
+            for (int i = 0; i < approval.getDatas().size(); i++) {
+                items[i] = approval.getDatas().get(i).display;
+            }
+            new MaterialDialog.Builder(ct)
+                    .title(approval.getCaption())
+                    .items(items)
+                    .itemsCallbackSingleChoice(0, new MaterialDialog.ListCallbackSingleChoice() {
+                        @Override
+                        public boolean onSelection(MaterialDialog dialog, View view, int which, CharSequence text) {
+                            if (!TextUtils.isEmpty(text)) {
+                                approvals.get(position).setValues(text.toString());
+                                notifyItemChanged(position);
+                            }
+                            return true;
+                        }
+                    }).positiveText(MyApplication.getInstance().getString(R.string.common_sure)).show();
+
+        }
+    }
+
+    private void bindTitleView(TitleViewHolder holder, int position) {
+        Approval approval = approvals.get(position);
+        holder.titleTv.setText(approval.getCaption());
+        AvatarHelper.getInstance().display(approval.getIdKey(), holder.handIv, true, false);
+        if (approval.getId() > 0) {
+            holder.statusIv.setVisibility(View.VISIBLE);
+            if (approval.getId() > 0)
+                holder.statusIv.setImageResource(approval.getId());
+        } else {
+            holder.statusIv.setVisibility(View.GONE);
+        }
+    }
+
+    private class TitleViewHolder extends RecyclerView.ViewHolder {
+        TextView titleTv;
+        ImageView handIv, statusIv;
+
+        public TitleViewHolder(ViewGroup parent) {
+            this(LayoutInflater.from(ct).inflate(R.layout.item_approval_title, parent, false));
+        }
+
+        public TitleViewHolder(View itemView) {
+            super(itemView);
+            titleTv = (TextView) itemView.findViewById(R.id.titleTv);
+            handIv = (ImageView) itemView.findViewById(R.id.handIv);
+            statusIv = (ImageView) itemView.findViewById(R.id.statusIv);
+        }
+    }
+
+    private class TagViewHolder extends RecyclerView.ViewHolder {
+        TextView nameTv;
+        View padding, line;
+
+        public TagViewHolder(ViewGroup parent) {
+            this(LayoutInflater.from(ct).inflate(R.layout.item_approval_tag, parent, false));
+        }
+
+        public TagViewHolder(View itemView) {
+            super(itemView);
+            nameTv = (TextView) itemView.findViewById(R.id.tagTv);
+            padding = itemView.findViewById(R.id.padding);
+            line = itemView.findViewById(R.id.line);
+        }
+    }
+
+    private class NodeViewHolder extends RecyclerView.ViewHolder {
+        ImageView handIv, statusIV, changeUser;
+        TextView timeTv, keyTv, valuesTv;
+        View padding;
+
+        public NodeViewHolder(ViewGroup parent) {
+            this(LayoutInflater.from(ct).inflate(R.layout.item_approval_node, parent, false));
+        }
+
+        public NodeViewHolder(View itemView) {
+            super(itemView);
+            timeTv = (TextView) itemView.findViewById(R.id.timeTv);
+            keyTv = (TextView) itemView.findViewById(R.id.keyTv);
+            valuesTv = (TextView) itemView.findViewById(R.id.valuesTv);
+            handIv = (ImageView) itemView.findViewById(R.id.handIv);
+            statusIV = (ImageView) itemView.findViewById(R.id.statusIV);
+            changeUser = (ImageView) itemView.findViewById(R.id.changeUser);
+            padding = itemView.findViewById(R.id.padding);
+            changeUser.setVisibility(View.GONE);
+        }
+    }
+
+    private class NodeTagViewHolder extends RecyclerView.ViewHolder {
+        TextView nodeTv, historyTV;
+        View nodeTag, historyTag;
+
+        public NodeTagViewHolder(ViewGroup parent) {
+            this(LayoutInflater.from(ct).inflate(R.layout.item_approval_node_tag, parent, false));
+        }
+
+        public NodeTagViewHolder(View itemView) {
+            super(itemView);
+            nodeTv = (TextView) itemView.findViewById(R.id.nodeTv);
+            historyTV = (TextView) itemView.findViewById(R.id.historyTV);
+            nodeTag = itemView.findViewById(R.id.nodeTag);
+            historyTag = itemView.findViewById(R.id.historyTag);
+            historyTag.setVisibility(View.GONE);
+        }
+    }
+
+    private class PointsViewHolder extends BaseViewHolder {
+        View line;
+
+        public PointsViewHolder(ViewGroup parent) {
+            this(LayoutInflater.from(ct).inflate(R.layout.item_approval_points, parent, false));
+        }
+
+        public PointsViewHolder(View itemView) {
+            super(itemView);
+            line = itemView.findViewById(R.id.line);
+
+        }
+    }
+
+    private class BaseViewHolder extends RecyclerView.ViewHolder {
+        TextView captionTV, valueTv;
+        EditText valueEt;
+        FrameLayout valuesFl;
+
+        public BaseViewHolder(View itemView) {
+            super(itemView);
+            captionTV = (TextView) itemView.findViewById(R.id.captionTV);
+            valueTv = (TextView) itemView.findViewById(R.id.valueTv);
+            valueEt = (EditText) itemView.findViewById(R.id.valueEt);
+            valuesFl = (FrameLayout) itemView.findViewById(R.id.valuesFl);
+
+        }
+    }
+
+    private class BaseRVViewHodler extends BaseViewHolder {
+        WebView valueWeb;
+        TextView oldValueTv;
+
+        public BaseRVViewHodler(ViewGroup parent) {
+            this(LayoutInflater.from(ct).inflate(R.layout.item_approval_rv, parent, false));
+        }
+
+        public BaseRVViewHodler(View itemView) {
+            super(itemView);
+            valueWeb = (WebView) itemView.findViewById(R.id.valueWeb);
+            oldValueTv = (TextView) itemView.findViewById(R.id.oldValueTv);
+            oldValueTv.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG); //删除线
+            oldValueTv.getPaint().setAntiAlias(true);// 抗锯齿
+        }
+    }
+
+    private void setViewShowAble(boolean showAble, View... views) {
+        if (views != null && views.length > 0) {
+            for (View v : views) {
+                v.setVisibility(showAble ? View.VISIBLE : View.GONE);
+            }
+        }
+    }
+
+    private class TextChangListener extends EditChangeListener {
+        BaseViewHolder hodler;
+        private int position;
+
+        public TextChangListener(BaseViewHolder hodler, int position) {
+            this.hodler = hodler;
+            this.position = position;
+        }
+
+        @Override
+        public void afterTextChanged(Editable s) {
+            if (this.position >= 0) {
+                if (this.hodler.valueEt != null && this.hodler.valueEt.getVisibility() == View.VISIBLE) {
+                    String valueEt = this.hodler.valueEt.getText().toString();
+                    approvals.get(this.position).setValues(valueEt == null ? "" : valueEt);
+                }
+            }
+        }
+    }
+
+    private OnChangeClickListener onChangeClickListener;
+
+    public void setOnChangeClickListener(OnChangeClickListener onChangeClickListener) {
+        this.onChangeClickListener = onChangeClickListener;
+    }
+
+    public interface OnChangeClickListener {
+        void click();
+    }
+
+
+    private boolean isImage(String name) {
+        return name.toUpperCase().endsWith("jpeg".toUpperCase())
+                || name.toUpperCase().endsWith("jpg".toUpperCase())
+                || name.toUpperCase().endsWith("png".toUpperCase());
+    }
 }

+ 32 - 9
app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/ApprovaPresenter.java

@@ -4,6 +4,7 @@ import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.Looper;
+import android.util.Log;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -160,6 +161,10 @@ public class ApprovaPresenter implements OnHttpResultListener {
         return master == null ? CommonUtil.getMaster() : master;
     }
 
+    public String getCaller() {
+        return record == null ? "" : record.caller;
+    }
+
     public void initLoad() {
         initLoad(record.nodeId);
     }
@@ -837,7 +842,22 @@ public class ApprovaPresenter implements OnHttpResultListener {
             String valueKey = JSONUtil.getText(config, "FD_FIELD", "DG_FIELD");
             JSONArray combostore = JSONUtil.getJSONArray(config, "COMBOSTORE");
             String type = JSONUtil.getText(config, "FD_TYPE", "DG_TYPE");
+            String dbFind = JSONUtil.getText(config, "FD_DBFIND", "DG_TYPE");
+            if (!isMain) {
+                String findTionName = JSONUtil.getText(config, "DG_FINDFUNCTIONNAME");
+                if (!StringUtil.isEmpty(findTionName)) {
+                    int hhitem = findTionName.indexOf('|');
+                    Log.i("gongpengming","findTionName="+findTionName);
+                    String gCaller = findTionName.substring(0, hhitem);
+                    Log.i("gongpengming","gCaller="+gCaller);
+                    String coreKey = findTionName.substring(hhitem+1, findTionName.length());
+                    Log.i("coreKey","coreKey="+coreKey);
+                    approval.setgCaller(gCaller);
+                    approval.setCoreKey(coreKey);
+                }
+            }
             //添加类型
+            approval.setDbFind(dbFind);
             approval.setDfType(type);
             approval.setCaption(caption);
             approval.setValuesKey(valueKey);
@@ -938,7 +958,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
             if ((!approval.isNeerInput() && StringUtil.isEmpty(approval.getValues())) || !showAble || approval.getValues().equals("null") || !showAble || approval.getValues().equals("(null)")) {
                 continue;//如果不是要输入的对象,同时显示值为空,需要隐藏去
             }
-            if (mergeAble) {
+            if (mergeAble && !approval.isDBFind()) {
                 String valueTagKey = JSONUtil.getText(config, "FD_LOGICTYPE", "DG_LOGICTYPE");//获取第二个值的key
                 if (!StringUtil.isEmpty(valueTagKey)) {
                     String valueTag = JSONUtil.getText(data, valueTagKey);
@@ -1484,33 +1504,36 @@ public class ApprovaPresenter implements OnHttpResultListener {
                     }
                 }
             }
-            Map<String, Object> formstore = putItem2Params(mainList);
+            Map<String, Object> formstore = putItem2Params(true, mainList);
             if (formstore == null)
                 return false;
             formStore.putAll(formstore);
 
             for (List<Approval> details : detailList) {
-                Map<String, Object> param = putItem2Params(details);
-                if (param == null)
-                    return false;
-                if (param.isEmpty() || param.keySet().size() <= 1) continue;
+                Map<String, Object> param = putItem2Params(false, details);
+                if (param == null || param.isEmpty() || param.keySet().size() <= 1)
+                    continue;
                 params.add(param);
             }
         }
         return true;
     }
 
-    private Map<String, Object> putItem2Params(List<Approval> approvals) {
+    private Map<String, Object> putItem2Params(boolean showTocat, List<Approval> approvals) {
         Map<String, Object> formstore = new HashMap<>();
         for (Approval approval : approvals) {
             if (approval.isNeerInput()) {
                 if (StringUtil.isEmpty(approval.getValues())) {
                     String message = StringUtil.getMessage(R.string.must_input_key) + " " + approval.getCaption() + " " + StringUtil.getMessage(R.string.is_must_input);
-                    iApproval.showToast(message);
+                    if (showTocat) {
+                        iApproval.showToast(message);
+                    }
                     return null;
                 } else if (StringUtil.isEmpty(approval.getValues())) {
                     String message = StringUtil.getMessage(R.string.must_input_key) + " " + approval.getCaption() + " " + StringUtil.getMessage(R.string.limit_unno_zijie);
-                    iApproval.showToast(message);
+                    if (showTocat) {
+                        iApproval.showToast(message);
+                    }
                     return null;
                 } else {
                     boolean isputed = false;

+ 1180 - 1168
app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/MessagePresenter.java

@@ -14,6 +14,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.common.LogUtil;
+import com.common.config.BaseConfig;
 import com.common.data.DateFormatUtil;
 import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
@@ -51,6 +52,7 @@ import com.modular.appmessages.activity.ProcessMsgActivity;
 import com.modular.appmessages.activity.RealTimeFormActivity;
 import com.modular.appmessages.activity.Subscription2Activity;
 import com.modular.appmessages.activity.UUHelperActivity;
+import com.modular.appmessages.activity.UUSportActivity;
 import com.modular.appmessages.db.SubsDao;
 import com.modular.appmessages.model.MessageHeader;
 import com.modular.appmessages.model.SubMessage;
@@ -74,1178 +76,1188 @@ import java.util.Map;
  */
 
 public class MessagePresenter implements OnHttpResultListener {
-    private final int LOAD_EMNEWS = 0x11;
-    private final int LOAD_SUBS = 0x12;
-    private final int LOAD_PROCESS = 0x13;
-    private final int LOAD_TASK = 0x14;
-    private final int LOAD_EMNEWS_DETAILS = 0x15;
-    private final int LOAD_B2B_COUNT = 0x16;//获取b2b的审批和任务数量
-    private final int LOAD_BOOKING = 0x17;//小秘书红点
-    private final int LOAD_REAL_TIME = 0x18;
-    private final int IS_COMPANY_ADMIN = 0x19;
-
-    public static final int REAL_TIME_FORM = 7;
-    public static final int BUSINESS_STATISTICS = 8;
-
-    private String SUB_READ_TIME;//订阅好点击阅读时间
-
-    private List<BaseSortModel<Friend>> mFriendList;
-    private Comparator<BaseSortModel<Friend>> erpComparator;
-    private IMessageView iMessageView;
-    private Activity ct;
-    private String subReadTime;//订阅号点击时间
-
-    private String filter;//搜索数据
-    private int emnewsNum, subsNum, processNum, taskNum, bookingNum, uuHelperNum;//红点消息分类数量
-    private String[] RECEIVER_LIST = {ConnectivityManager.CONNECTIVITY_ACTION, OAConfig.AUTO_SIGIN_ALART, MsgBroadcast.ACTION_MSG_COMPANY_UPDATE, "com.app.home.update"
-            , MsgBroadcast.ACTION_MSG_UI_UPDATE};
-    private BroadcastReceiver dataChangeReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            String action = intent.getAction();
-            if (StringUtil.isEmpty(action)) return;
-            LogUtil.i("MessagePresenter=" + action);
-            if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
-                iMessageView.changeNet(SystemUtil.isNetWorkConnected(MyApplication.getInstance()));
-            } else if (OAConfig.AUTO_SIGIN_ALART.equals(action)) {
-                loadNews(isB2b);//获取消息
-            } else if (action.equals("com.app.home.update") || action.equals(MsgBroadcast.ACTION_MSG_COMPANY_UPDATE)
-                    || action.equals(MsgBroadcast.ACTION_MSG_UI_UPDATE)) {
-                initHeaderModels();
-                loadData();
-            }
-        }
-    };
-    private boolean isB2b;
-
-
-    public MessagePresenter(Activity ct, IMessageView iMessageView, UnReaderListener unReaderListener) {
-        this.ct = ct;
-        this.unReaderListener = unReaderListener;
-        mFriendList = new ArrayList<>();
-        if (iMessageView == null)
-            new NullPointerException("IMessageView not be null");
-        this.iMessageView = iMessageView;
-        if (RECEIVER_LIST != null && RECEIVER_LIST.length > 0) {
-            IntentFilter dateFilter = new IntentFilter();
-            for (String f : RECEIVER_LIST)
-                dateFilter.addAction(f);
-            LocalBroadcastManager.getInstance(ct).registerReceiver(dataChangeReceiver, dateFilter);
-        }
-        initHeaderModels();
-    }
-
-    public void loadData() {
-        String role = CommonUtil.getUserRole();
-        isB2b = false;
-        if (role.equals("2")) {//Erp用户
-            SUB_READ_TIME = CommonUtil.getMaster() + "SUB_READ_TIME";//订阅好点击阅读时间
-            subReadTime = PreferenceUtils.getString(SUB_READ_TIME);
-            loadRealTime();//获取实时看板数据
-            loadTaskData();//获取任务接口
-            loadProcessToDo();//获取审批流接口
-            loadSubData();
-            loadNews(isB2b);//获取消息
-        } else if (role.equals("3")) {//B2b用户
-            isB2b = true;
-            loadB2bNewsCount();
-            loadNews(isB2b);//获取消息
-
-        }
-        isCompanyAdmin();
-        loadBookingNewNum(role);//预约红点接口
-    }
-
-    /**
-     * 判断当前用户是否为商家管理员
-     */
-    private void isCompanyAdmin() {
-        Map<String, Object> param = new HashMap<>();
-        param.put("companyid", CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_uu"));
-        param.put("userid", MyApplication.getInstance().mLoginUser.getUserId());
-        param.put("token", MyApplication.getInstance().mAccessToken);
-        param.put("sessionId", CommonUtil.getSharedPreferences(ct, "sessionId"));
-
-        Request request = new Request.Bulider()
-                .setParam(param)
-                .setUrl("user/appCompanyAdmin")
-                .setMode(Request.Mode.POST)
-                .setWhat(IS_COMPANY_ADMIN)
-                .bulid();
-        OAHttpHelper.getInstance().requestHttp(request, 1, this);
-    }
-
-    /**
-     * 获取实时看板数据
-     */
-    private void loadRealTime() {
-        Map<String, Object> param = new HashMap<>();
-        param.put("sessionId", CommonUtil.getSharedPreferences(ct, "sessionId"));
-
-        Request request = new Request.Bulider()
-                .setParam(param)
-                .setUrl("mobile/getRealTimeSubs.action")
-                .setMode(Request.Mode.GET)
-                .setWhat(LOAD_REAL_TIME)
-                .bulid();
-        OAHttpHelper.getInstance().requestHttp(request, this);
-    }
-
-    private void loadB2bNewsCount() {
-        String url = ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().getTaskCounts;
-        Request request = new Request.Bulider()
-                .setParam(new HashMap<String, Object>())
-                .setUrl(url)
-                .setMode(Request.Mode.GET)
-                .setWhat(LOAD_B2B_COUNT)
-                .bulid();
-        OAHttpHelper.getInstance().requestHttp(request, this);
-    }
-
-
-    /**
-     * 获取订阅号消息接口
-     */
-    private void loadSubData() {
-        //获取网络数据
-        Map<String, Object> param = new HashMap<>();
-        param.put("count", 100);
-        param.put("condition", "where to_char(createdate_,'yyyymmdd')='" + DateFormatUtil.long2Str("yyyyMMdd") + "'");
-        param.put("sessionId", CommonUtil.getSharedPreferences(ct, "sessionId"));
-
-        Request request = new Request.Bulider()
-                .setParam(param)
-                .setUrl("common/desktop/subs/getSubs.action")
-                .setMode(Request.Mode.GET)
-                .setWhat(LOAD_SUBS)
-                .bulid();
-        OAHttpHelper.getInstance().requestHttp(request, this);
-    }
-
-    /**
-     * 获取消息红点提醒接口
-     *
-     * @param isB2b
-     */
-    private void loadNews(boolean isB2b) {
-        Map<String, Object> param = new HashMap<>();
-        if (isB2b) {
-            param.put("venduu", CommonUtil.getSharedPreferences(MyApplication.getInstance().getApplicationContext(), "companyEnUu"));
-            param.put("vendUseruu", CommonUtil.getSharedPreferences(MyApplication.getInstance().getApplicationContext(), "b2b_uu"));
-        } else
-            param.put("emcode", CommonUtil.getEmcode());
-        String url = isB2b ? ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().releaseCount : "mobile/queryEmNews.action";
-        Request request = new Request.Bulider()
-                .setParam(param)
-                .setUrl(url)
-                .setMode(Request.Mode.GET)
-                .setWhat(LOAD_EMNEWS)
-                .bulid();
-        OAHttpHelper.getInstance().requestHttp(request, this);
-
-    }
-
-    /**
-     * 获取消息详细信息接口
-     *
-     * @param type     消息类型
-     * @param isReaded 是否是阅读全部,如果不是就是删除全部
-     */
-    private void loadEmNewsDetails(String type, boolean isReaded) {
-        if (isB2b) {
-            return;
-        }
-        Map<String, Object> param = new HashMap<>();
-        param.put("emcode", CommonUtil.getSharedPreferences(ct, "erp_username"));
-        param.put("type", type);
-        Bundle bundle = new Bundle();
-        bundle.putString("type", type);
-        bundle.putBoolean("isReaded", isReaded);
-
-        Request request = new Request.Bulider()
-                .setParam(param)
-                .setUrl("mobile/queryEmNewsDetails.action")
-                .setMode(Request.Mode.GET)
-                .setBundle(bundle)
-                .setWhat(LOAD_EMNEWS_DETAILS)
-                .bulid();
-        OAHttpHelper.getInstance().requestHttp(request, this);
-    }
-
-    private void postReadNews(String ids) {
-        Map<String, Object> param = new HashMap<>();
-        param.put("ids", ids);
-        String url = ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().countBack;
-        Request request = new Request.Bulider()
-                .setParam(param)
-                .setUrl(url)
-                .setMode(Request.Mode.POST)
-                .setBundle(null)
-                .setWhat(LOAD_EMNEWS_DETAILS)
-                .bulid();
-        OAHttpHelper.getInstance().requestHttp(request, this);
-    }
-
-    /**
-     * 获取获取任务接口
-     */
-    private void loadTaskData() {
-        //获取网络数据
-        Map<String, Object> param = new HashMap<>();
-        param.put("_noc", 1);
-        param.put("page", 1);
-        param.put("pageSize", 100);
-        param.put("status", "");
-        param.put("caller", "ResourceAssignment");
-        String em_code = CommonUtil.getSharedPreferences(ct, "erp_username");
-        String emName = CommonUtil.getSharedPreferences(ct, "erp_emname");
-        String condition =
-                "((ra_resourcecode='" + em_code + "' and  ra_status='进行中')" +
-                        " or ( recorder='" + emName + "' and ra_status='待确认'))" +
-                        " and nvl(class,' ')<>'projecttask'";
-        param.put("condition", condition);
-        Request request = new Request.Bulider()
-                .setParam(param)
-                .setUrl("common/datalist/data.action")
-                .setMode(Request.Mode.GET)
-                .setBundle(null)
-                .setWhat(LOAD_TASK)
-                .bulid();
-        OAHttpHelper.getInstance().requestHttp(request, this);
-
-    }
-
-    /**
-     * @desc:审批流接口
-     * @author:Arison on 2016/11/15
-     */
-    private void loadProcessToDo() {
-        Map<String, Object> param = new HashMap<>();
-        param.put("count", "1000");
-        param.put("page", 1);//默认获取第一页
-
-        Request request = new Request.Bulider()
-                .setParam(param)
-                .setUrl("common/desktop/process/toDo.action")
-                .setMode(Request.Mode.GET)
-                .setBundle(null)
-                .setWhat(LOAD_PROCESS)
-                .bulid();
-        OAHttpHelper.getInstance().requestHttp(request, this);
-    }
-
-
-    private void loadBookingNewNum(String role) {
-        Map<String, Object> param = new HashMap<>();
-        param.put("token", MyApplication.getInstance().mAccessToken);
-        param.put("userid", MyApplication.getInstance().mLoginUser.getUserId());//默认获取第一页
-        Bundle bundle = new Bundle();
-        bundle.putString("role", role);
-        Request request = new Request.Bulider()
-                .setParam(param)
-                .setUrl("user/appCount")
-                .setMode(Request.Mode.GET)
-                .setBundle(bundle)
-                .setWhat(LOAD_BOOKING)
-                .bulid();
-        OAHttpHelper.getInstance().requestHttp(request, 1, this);
-    }
-
-    @Override
-    public void result(int what, boolean isJSON, String message, Bundle bundle) {
-        if (!isJSON) {
-            //TODO 返回数据错误
-            return;
-        }
-        JSONObject object = JSON.parseObject(message);
-        switch (what) {
-            case LOAD_BOOKING:
-                //{"count":"1"}
-                bookingNum = Integer.valueOf(object.getString("count"));
-                iMessageView.updateHeaderView(2, Integer.valueOf(object.getString("count")), "", "");
-                updateForUnReader();
+	private final int LOAD_EMNEWS = 0x11;
+	private final int LOAD_SUBS = 0x12;
+	private final int LOAD_PROCESS = 0x13;
+	private final int LOAD_TASK = 0x14;
+	private final int LOAD_EMNEWS_DETAILS = 0x15;
+	private final int LOAD_B2B_COUNT = 0x16;//获取b2b的审批和任务数量
+	private final int LOAD_BOOKING = 0x17;//小秘书红点
+	private final int LOAD_REAL_TIME = 0x18;
+	private final int IS_COMPANY_ADMIN = 0x19;
+
+	public static final int REAL_TIME_FORM = 7;
+	public static final int BUSINESS_STATISTICS = 8;
+
+	private String SUB_READ_TIME;//订阅好点击阅读时间
+
+	private List<BaseSortModel<Friend>> mFriendList;
+	private Comparator<BaseSortModel<Friend>> erpComparator;
+	private IMessageView iMessageView;
+	private Activity ct;
+	private String subReadTime;//订阅号点击时间
+
+	private String filter;//搜索数据
+	private int emnewsNum, subsNum, processNum, taskNum, bookingNum, uuHelperNum;//红点消息分类数量
+	private String[] RECEIVER_LIST = {ConnectivityManager.CONNECTIVITY_ACTION, OAConfig.AUTO_SIGIN_ALART, MsgBroadcast.ACTION_MSG_COMPANY_UPDATE, "com.app.home.update"
+			, MsgBroadcast.ACTION_MSG_UI_UPDATE};
+	private BroadcastReceiver dataChangeReceiver = new BroadcastReceiver() {
+		@Override
+		public void onReceive(Context context, Intent intent) {
+			String action = intent.getAction();
+			if (StringUtil.isEmpty(action)) return;
+			LogUtil.i("MessagePresenter=" + action);
+			if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
+				iMessageView.changeNet(SystemUtil.isNetWorkConnected(MyApplication.getInstance()));
+			} else if (OAConfig.AUTO_SIGIN_ALART.equals(action)) {
+				loadNews(isB2b);//获取消息
+			} else if (action.equals("com.app.home.update") || action.equals(MsgBroadcast.ACTION_MSG_COMPANY_UPDATE)
+					|| action.equals(MsgBroadcast.ACTION_MSG_UI_UPDATE)) {
+				initHeaderModels();
+				loadData();
+			}
+		}
+	};
+	private boolean isB2b;
+
+
+	public MessagePresenter(Activity ct, IMessageView iMessageView, UnReaderListener unReaderListener) {
+		this.ct = ct;
+		this.unReaderListener = unReaderListener;
+		mFriendList = new ArrayList<>();
+		if (iMessageView == null)
+			new NullPointerException("IMessageView not be null");
+		this.iMessageView = iMessageView;
+		if (RECEIVER_LIST != null && RECEIVER_LIST.length > 0) {
+			IntentFilter dateFilter = new IntentFilter();
+			for (String f : RECEIVER_LIST)
+				dateFilter.addAction(f);
+			LocalBroadcastManager.getInstance(ct).registerReceiver(dataChangeReceiver, dateFilter);
+		}
+		initHeaderModels();
+	}
+
+	public void loadData() {
+		String role = CommonUtil.getUserRole();
+		isB2b = false;
+		if (role.equals("2")) {//Erp用户
+			SUB_READ_TIME = CommonUtil.getMaster() + "SUB_READ_TIME";//订阅好点击阅读时间
+			subReadTime = PreferenceUtils.getString(SUB_READ_TIME);
+			loadRealTime();//获取实时看板数据
+			loadTaskData();//获取任务接口
+			loadProcessToDo();//获取审批流接口
+			loadSubData();
+			loadNews(isB2b);//获取消息
+		} else if (role.equals("3")) {//B2b用户
+			isB2b = true;
+			loadB2bNewsCount();
+			loadNews(isB2b);//获取消息
+
+		}
+		isCompanyAdmin();
+		loadBookingNewNum(role);//预约红点接口
+	}
+
+	/**
+	 * 判断当前用户是否为商家管理员
+	 */
+	private void isCompanyAdmin() {
+		Map<String, Object> param = new HashMap<>();
+		param.put("companyid", CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_uu"));
+		param.put("userid", MyApplication.getInstance().mLoginUser.getUserId());
+		param.put("token", MyApplication.getInstance().mAccessToken);
+		param.put("sessionId", CommonUtil.getSharedPreferences(ct, "sessionId"));
+
+		Request request = new Request.Bulider()
+				.setParam(param)
+				.setUrl("user/appCompanyAdmin")
+				.setMode(Request.Mode.POST)
+				.setWhat(IS_COMPANY_ADMIN)
+				.bulid();
+		OAHttpHelper.getInstance().requestHttp(request, 1, this);
+	}
+
+	/**
+	 * 获取实时看板数据
+	 */
+	private void loadRealTime() {
+		Map<String, Object> param = new HashMap<>();
+		param.put("sessionId", CommonUtil.getSharedPreferences(ct, "sessionId"));
+
+		Request request = new Request.Bulider()
+				.setParam(param)
+				.setUrl("mobile/getRealTimeSubs.action")
+				.setMode(Request.Mode.GET)
+				.setWhat(LOAD_REAL_TIME)
+				.bulid();
+		OAHttpHelper.getInstance().requestHttp(request, this);
+	}
+
+	private void loadB2bNewsCount() {
+		String url = ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().getTaskCounts;
+		Request request = new Request.Bulider()
+				.setParam(new HashMap<String, Object>())
+				.setUrl(url)
+				.setMode(Request.Mode.GET)
+				.setWhat(LOAD_B2B_COUNT)
+				.bulid();
+		OAHttpHelper.getInstance().requestHttp(request, this);
+	}
+
+
+	/**
+	 * 获取订阅号消息接口
+	 */
+	private void loadSubData() {
+		//获取网络数据
+		Map<String, Object> param = new HashMap<>();
+		param.put("count", 100);
+		param.put("condition", "where to_char(createdate_,'yyyymmdd')='" + DateFormatUtil.long2Str("yyyyMMdd") + "'");
+		param.put("sessionId", CommonUtil.getSharedPreferences(ct, "sessionId"));
+
+		Request request = new Request.Bulider()
+				.setParam(param)
+				.setUrl("common/desktop/subs/getSubs.action")
+				.setMode(Request.Mode.GET)
+				.setWhat(LOAD_SUBS)
+				.bulid();
+		OAHttpHelper.getInstance().requestHttp(request, this);
+	}
+
+	/**
+	 * 获取消息红点提醒接口
+	 *
+	 * @param isB2b
+	 */
+	private void loadNews(boolean isB2b) {
+		Map<String, Object> param = new HashMap<>();
+		if (isB2b) {
+			param.put("venduu", CommonUtil.getSharedPreferences(MyApplication.getInstance().getApplicationContext(), "companyEnUu"));
+			param.put("vendUseruu", CommonUtil.getSharedPreferences(MyApplication.getInstance().getApplicationContext(), "b2b_uu"));
+		} else
+			param.put("emcode", CommonUtil.getEmcode());
+		String url = isB2b ? ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().releaseCount : "mobile/queryEmNews.action";
+		Request request = new Request.Bulider()
+				.setParam(param)
+				.setUrl(url)
+				.setMode(Request.Mode.GET)
+				.setWhat(LOAD_EMNEWS)
+				.bulid();
+		OAHttpHelper.getInstance().requestHttp(request, this);
+
+	}
+
+	/**
+	 * 获取消息详细信息接口
+	 *
+	 * @param type     消息类型
+	 * @param isReaded 是否是阅读全部,如果不是就是删除全部
+	 */
+	private void loadEmNewsDetails(String type, boolean isReaded) {
+		if (isB2b) {
+			return;
+		}
+		Map<String, Object> param = new HashMap<>();
+		param.put("emcode", CommonUtil.getSharedPreferences(ct, "erp_username"));
+		param.put("type", type);
+		Bundle bundle = new Bundle();
+		bundle.putString("type", type);
+		bundle.putBoolean("isReaded", isReaded);
+
+		Request request = new Request.Bulider()
+				.setParam(param)
+				.setUrl("mobile/queryEmNewsDetails.action")
+				.setMode(Request.Mode.GET)
+				.setBundle(bundle)
+				.setWhat(LOAD_EMNEWS_DETAILS)
+				.bulid();
+		OAHttpHelper.getInstance().requestHttp(request, this);
+	}
+
+	private void postReadNews(String ids) {
+		Map<String, Object> param = new HashMap<>();
+		param.put("ids", ids);
+		String url = ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().countBack;
+		Request request = new Request.Bulider()
+				.setParam(param)
+				.setUrl(url)
+				.setMode(Request.Mode.POST)
+				.setBundle(null)
+				.setWhat(LOAD_EMNEWS_DETAILS)
+				.bulid();
+		OAHttpHelper.getInstance().requestHttp(request, this);
+	}
+
+	/**
+	 * 获取获取任务接口
+	 */
+	private void loadTaskData() {
+		//获取网络数据
+		Map<String, Object> param = new HashMap<>();
+		param.put("_noc", 1);
+		param.put("page", 1);
+		param.put("pageSize", 100);
+		param.put("status", "");
+		param.put("caller", "ResourceAssignment");
+		String em_code = CommonUtil.getSharedPreferences(ct, "erp_username");
+		String emName = CommonUtil.getSharedPreferences(ct, "erp_emname");
+		String condition =
+				"((ra_resourcecode='" + em_code + "' and  ra_status='进行中')" +
+						" or ( recorder='" + emName + "' and ra_status='待确认'))" +
+						" and nvl(class,' ')<>'projecttask'";
+		param.put("condition", condition);
+		Request request = new Request.Bulider()
+				.setParam(param)
+				.setUrl("common/datalist/data.action")
+				.setMode(Request.Mode.GET)
+				.setBundle(null)
+				.setWhat(LOAD_TASK)
+				.bulid();
+		OAHttpHelper.getInstance().requestHttp(request, this);
+
+	}
+
+	/**
+	 * @desc:审批流接口
+	 * @author:Arison on 2016/11/15
+	 */
+	private void loadProcessToDo() {
+		Map<String, Object> param = new HashMap<>();
+		param.put("count", "1000");
+		param.put("page", 1);//默认获取第一页
+
+		Request request = new Request.Bulider()
+				.setParam(param)
+				.setUrl("common/desktop/process/toDo.action")
+				.setMode(Request.Mode.GET)
+				.setBundle(null)
+				.setWhat(LOAD_PROCESS)
+				.bulid();
+		OAHttpHelper.getInstance().requestHttp(request, this);
+	}
+
+
+	private void loadBookingNewNum(String role) {
+		Map<String, Object> param = new HashMap<>();
+		param.put("token", MyApplication.getInstance().mAccessToken);
+		param.put("userid", MyApplication.getInstance().mLoginUser.getUserId());//默认获取第一页
+		Bundle bundle = new Bundle();
+		bundle.putString("role", role);
+		Request request = new Request.Bulider()
+				.setParam(param)
+				.setUrl("user/appCount")
+				.setMode(Request.Mode.GET)
+				.setBundle(bundle)
+				.setWhat(LOAD_BOOKING)
+				.bulid();
+		OAHttpHelper.getInstance().requestHttp(request, 1, this);
+	}
+
+	@Override
+	public void result(int what, boolean isJSON, String message, Bundle bundle) {
+		if (!isJSON) {
+			//TODO 返回数据错误
+			return;
+		}
+		JSONObject object = JSON.parseObject(message);
+		switch (what) {
+			case LOAD_BOOKING:
+				//{"count":"1"}
+				bookingNum = Integer.valueOf(object.getString("count"));
+				iMessageView.updateHeaderView(2, Integer.valueOf(object.getString("count")), "", "");
+				updateForUnReader();
 //				iMessageView.showModel(null);  ///tODO 这个引起了闪一下的问题(可能存在会有刷新不过来的问题)
-                if (bundle != null) {
-                    String role = bundle.getString("role");
-                    if (role != null && role.equals("1")) {
-                        saveErp2DB(null);
-                    }
-                }
-                break;
-            case LOAD_EMNEWS:
-                if (!object.containsKey("listdata")) {
-                    handlerNewsFormErp(new JSONArray());
-                    return;
-                }
-                String ids = object.getString("ids");
-                if (!StringUtil.isEmpty(ids))
-                    postReadNews(ids);
-                JSONArray array = object.getJSONArray("listdata");
-                handlerNewsFormErp(array);
-                break;
-            case LOAD_SUBS://获取订阅号接口
-                handlerSub(object);
-                break;
-            case LOAD_PROCESS://获取审批流接口
-                handlerProcess(object);
-                break;
-            case LOAD_TASK://获取任务接口
-                handlerTask(object);
-                break;
-            case LOAD_EMNEWS_DETAILS:
-                String type = bundle.getString("type");
-                boolean isReaded = bundle.getBoolean("isReaded");
-                JSONArray msgsArray = object.getJSONArray("listdata");
-                if (!ListUtils.isEmpty(msgsArray)) {
-                    handleMsgsArray(type, msgsArray);
-                }
-                handlerEndOfReadOrDelete(type, isReaded);
-                break;
-            case LOAD_B2B_COUNT:
-                if (object.containsKey("processcount")) {
-                    processNum = JSONUtil.getInt(object, "processcount");
-                    String title = JSONUtil.getText(object, "lastProcess");
-                    long time = JSONUtil.getTime(object, "lastProcessTime") / 1000;
-                    if (time == 0) time = System.currentTimeMillis() / 1000;
-                    iMessageView.updateHeaderView(4, processNum, title, TimeUtils.getFriendlyTimeDesc(ct, (int) time));
-                    updateForUnReader();
-                }
-                if (object.containsKey("taskcount")) {
-                    taskNum = JSONUtil.getInt(object, "taskcount");
-                    String title = JSONUtil.getText(object, "lasttask");
-                    long time = JSONUtil.getTime(object, "lasttaskTime") / 1000;
-                    if (time == 0) time = System.currentTimeMillis() / 1000;
-                    String taskTime = TimeUtils.getFriendlyTimeDesc(ct, (int) time);
-                    iMessageView.updateHeaderView(5, taskNum, title, taskTime);
-                    updateForUnReader();
-                }
-
-                break;
-            case LOAD_REAL_TIME:
-                JSONArray subsArray = object.getJSONArray("subs");
-                if (subsArray != null && subsArray.size() > 0) {
-                    CommonUtil.setSharedPreferences(MyApplication.getInstance().getApplicationContext()
-                            , Constants.REAL_TIME_CACHE, subsArray.toString());
-                    int size = subsArray.size();
-                    iMessageView.updateHeaderView(REAL_TIME_FORM, size, "", "");
-                } else {
-                    iMessageView.updateHeaderView(REAL_TIME_FORM, 0, "", "");
-                }
-                break;
-            case IS_COMPANY_ADMIN:
-                String result = JSONUtil.getText(object, "result");
-                if ("0".equals(result)) {
-                    iMessageView.updateHeaderView(BUSINESS_STATISTICS, 0, "", "");
-                } else if ("1".equals(result)) {
-                    iMessageView.updateHeaderView(BUSINESS_STATISTICS, 1, "", "");
-                }
-            default:
-                break;
-        }
-    }
-
-
-    @Override
-    public void error(int what, String message, Bundle bundle) {
-
-    }
-
-
-    /**
-     * 处理获取网络获取到的数据,先更新本地数据库,再加载本地数据库
-     *
-     * @param msgsArray
-     */
-    private void handleMsgsArray(String type, JSONArray msgsArray) {
-        JSONObject object = null;
-        final List<MessageModel> models = new ArrayList<>();
-        MessageModel model = null;
-        for (int i = 0; i < msgsArray.size(); i++) {
-            try {
-                object = msgsArray.getJSONObject(i);
-                model = new MessageModel();
-                model.setId(object.getInteger("id"));
-                model.setTitle(object.getString("mTitle"));
-                model.setSubTitle(object.getString("subTitle"));
-                model.setTime(DateFormatUtil.long2Str(JSONUtil.getTime(object, "createTime"), "yyyy-MM-dd HH:mm"));
-                model.setHierarchy(1);
-                model.setType(type);
-                model.setCount(1);
-                models.add(model);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-        ThreadUtil.getInstance().addTask(new Runnable() {
-            @Override
-            public void run() {
-                MessageDao.getInstance().createOrinstart(models);
-            }
-        });
-    }
-
-    /**
-     * 处理任务相关数据
-     *
-     * @param object
-     */
-    private void handlerTask(JSONObject object) {
-        taskNum = 0;
-        String subTitle = null;
-        String time = null;
-        if (object != null && object.containsKey("data")) {
-            JSONArray array = object.getJSONArray("data");
-            taskNum = array.size();
-            if (!ListUtils.isEmpty(array)) {
-                subTitle = array.getJSONObject(0).getString("ra_taskname");
-                time = array.getJSONObject(0).getString("ra_startdate");
-            } else {
-                subTitle = "";
-                time = "";
-            }
-        }
-        String taskTime = TimeUtils.getFriendlyTimeDesc(ct, (int) (TimeUtils.f_str_2_long(time) / 1000));
-        iMessageView.updateHeaderView(5, taskNum, subTitle, taskTime);
-        updateForUnReader();
-    }
-
-    /**
-     * 处理审批了相关数据
-     *
-     * @param object
-     */
-    private void handlerProcess(JSONObject object) {
-        JSONArray itemArray = object.getJSONArray("data");
-        if (!ListUtils.isEmpty(itemArray))
-            itemArray = ApprovalUtil.sortJsonArray(itemArray);
-        String subTitle = null;
-        long time = 0;
-        if (!ListUtils.isEmpty(itemArray)) {
-            processNum = itemArray.size();
-            if (processNum > 0) {
-                subTitle = itemArray.getJSONObject(0).getString("JP_LAUNCHERNAME") + "的"
-                        + itemArray.getJSONObject(0).getString("JP_NAME");
-                time = JSONUtil.getTime(itemArray.getJSONObject(0), "JP_LAUNCHTIME", "JP_REMINDDATE");
-            }
-        } else {
-            processNum = 0;
-        }
-        String taskTime = TimeUtils.getFriendlyTimeDesc(ct, (int) (time / 1000));
-        iMessageView.updateHeaderView(4, processNum, subTitle, taskTime);
-        updateForUnReader();
-    }
-
-    private void handlerSub(final JSONObject object) {
-        if (!StringUtil.isEmpty(subReadTime) && subReadTime.compareTo(DateFormatUtil.long2Str(DateFormatUtil.YMD)) >= 0) {
-            showsubsNum(0, "", "");
-            return;
-        }
-        List<SubscriptionMessage> messages = null;
-        int num = 0;
-        if (object.containsKey("data")) {
-            messages = JSON.parseArray(object.getJSONArray("data").toJSONString(), SubscriptionMessage.class);
-            if (ListUtils.isEmpty(messages)) {
-                showsubsNum(0, "", "");
-                return;
-            }
-            for (SubscriptionMessage e : messages) {
-                if (e.getSTATUS_() == 0)
-                    num += 1;
-            }
-        }
-        showsubsNum(num, messages.get(0).getTITLE_(), messages.get(0).getCREATEDATE_());
-    }
-
-    private void showsubsNum(int num, String title, String time) {
-        subsNum = num;
-        updateForUnReader();
-        iMessageView.updateHeaderView(6, num, num > 0 ? title : "", time);
-    }
-
-    private void saveSubs2Db(JSONObject o) throws Exception {
-        JSONArray array = o.getJSONArray("data");
-        if (ListUtils.isEmpty(array)) return;
-        SubMessage message = null;
-        JSONObject object = null;
-        List<SubMessage> chche = new ArrayList<>();
-        message = new SubMessage();
-        message.setDate(DateFormatUtil.long2Str(DateFormatUtil.YMD));
-        message.setRead(true);
-        message.setStatus(0);
-        chche.add(message);
-        for (int i = 0; i < array.size(); i++) {
-            object = array.getJSONObject(i);
-            message = new SubMessage();
-            message.setCreateTime(object.getLong("CREATEDATE_"));
-            int status = object.getInteger("STATUS_");
-            message.setStatus(i == 0 ? 1 : 2);
-            message.setTitle(object.getString("TITLE_"));
-            message.setSubTitle(object.getString("SUMDATA_"));
-            message.setRead(status == 0 ? false : true);
-            message.setId(object.getInteger("ID_"));
-            message.setNumId(object.getInteger("NUM_ID_"));
-            message.setInstanceId(object.getInteger("INSTANCE_ID_"));
-            if (message.getCreateTime() == 0) continue;
-            message.setDate(TimeUtils.s_long_2_str(message.getCreateTime()));
-            chche.add(message);
-        }
-        if (ListUtils.isEmpty(chche)) return;
-        SubsDao.getInstance().createOrUpdata(chche);
-    }
-
-    /**
-     * 处理消息红点消息
-     *
-     * @param array
-     */
-    private void handlerNewsFormErp(JSONArray array) {
-        if (ListUtils.isEmpty(array)) {
-            saveErp2DB(null);
-            return;
-        }
-        JSONObject object = null;
-        List<MessageModel> models = new ArrayList<>();
-        MessageModel model = null;
-        for (int i = 0; i < array.size(); i++) {
-            object = array.getJSONObject(i);
-            model = new MessageModel();
-            model.setTitle(object.getString("mTitle"));
-            model.setSubTitle(object.getString("lastMessage"));
-            model.setTime(DateFormatUtil.long2Str(JSONUtil.getTime(object, "lastTime"), "yyyy-MM-dd HH:mm"));
-            model.setType(object.getString("type"));
-            if (object.containsKey("count") && object.get("count") != null)
-                model.setCount(object.getInteger("count"));
-            if (StringUtil.isEmpty(model.getTitle()) || StringUtil.isEmpty(model.getSubTitle()))
-                continue;
+				if (bundle != null) {
+					String role = bundle.getString("role");
+					if (role != null && role.equals("1")) {
+						saveErp2DB(null);
+					}
+				}
+				break;
+			case LOAD_EMNEWS:
+				if (!object.containsKey("listdata")) {
+					handlerNewsFormErp(new JSONArray());
+					return;
+				}
+				String ids = object.getString("ids");
+				if (!StringUtil.isEmpty(ids))
+					postReadNews(ids);
+				JSONArray array = object.getJSONArray("listdata");
+				handlerNewsFormErp(array);
+				break;
+			case LOAD_SUBS://获取订阅号接口
+				handlerSub(object);
+				break;
+			case LOAD_PROCESS://获取审批流接口
+				handlerProcess(object);
+				break;
+			case LOAD_TASK://获取任务接口
+				handlerTask(object);
+				break;
+			case LOAD_EMNEWS_DETAILS:
+				String type = bundle.getString("type");
+				boolean isReaded = bundle.getBoolean("isReaded");
+				JSONArray msgsArray = object.getJSONArray("listdata");
+				if (!ListUtils.isEmpty(msgsArray)) {
+					handleMsgsArray(type, msgsArray);
+				}
+				handlerEndOfReadOrDelete(type, isReaded);
+				break;
+			case LOAD_B2B_COUNT:
+				if (object.containsKey("processcount")) {
+					processNum = JSONUtil.getInt(object, "processcount");
+					String title = JSONUtil.getText(object, "lastProcess");
+					long time = JSONUtil.getTime(object, "lastProcessTime") / 1000;
+					if (time == 0) time = System.currentTimeMillis() / 1000;
+					iMessageView.updateHeaderView(4, processNum, title, TimeUtils.getFriendlyTimeDesc(ct, (int) time));
+					updateForUnReader();
+				}
+				if (object.containsKey("taskcount")) {
+					taskNum = JSONUtil.getInt(object, "taskcount");
+					String title = JSONUtil.getText(object, "lasttask");
+					long time = JSONUtil.getTime(object, "lasttaskTime") / 1000;
+					if (time == 0) time = System.currentTimeMillis() / 1000;
+					String taskTime = TimeUtils.getFriendlyTimeDesc(ct, (int) time);
+					iMessageView.updateHeaderView(5, taskNum, title, taskTime);
+					updateForUnReader();
+				}
+
+				break;
+			case LOAD_REAL_TIME:
+				JSONArray subsArray = object.getJSONArray("subs");
+				if (subsArray != null && subsArray.size() > 0) {
+					CommonUtil.setSharedPreferences(MyApplication.getInstance().getApplicationContext()
+							, Constants.REAL_TIME_CACHE, subsArray.toString());
+					int size = subsArray.size();
+					iMessageView.updateHeaderView(REAL_TIME_FORM, size, "", "");
+				} else {
+					iMessageView.updateHeaderView(REAL_TIME_FORM, 0, "", "");
+				}
+				break;
+			case IS_COMPANY_ADMIN:
+				String result = JSONUtil.getText(object, "result");
+				if ("0".equals(result)) {
+					iMessageView.updateHeaderView(BUSINESS_STATISTICS, 0, "", "");
+				} else if ("1".equals(result)) {
+					iMessageView.updateHeaderView(BUSINESS_STATISTICS, 1, "", "");
+				}
+			default:
+				break;
+		}
+	}
+
+
+	@Override
+	public void error(int what, String message, Bundle bundle) {
+
+	}
+
+
+	/**
+	 * 处理获取网络获取到的数据,先更新本地数据库,再加载本地数据库
+	 *
+	 * @param msgsArray
+	 */
+	private void handleMsgsArray(String type, JSONArray msgsArray) {
+		JSONObject object = null;
+		final List<MessageModel> models = new ArrayList<>();
+		MessageModel model = null;
+		for (int i = 0; i < msgsArray.size(); i++) {
+			try {
+				object = msgsArray.getJSONObject(i);
+				model = new MessageModel();
+				model.setId(object.getInteger("id"));
+				model.setTitle(object.getString("title"));
+				model.setSubTitle(object.getString("subTitle"));
+				model.setTime(DateFormatUtil.long2Str(JSONUtil.getTime(object, "createTime"), "yyyy-MM-dd HH:mm"));
+				model.setHierarchy(1);
+				model.setType(type);
+				model.setCount(1);
+				models.add(model);
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+		ThreadUtil.getInstance().addTask(new Runnable() {
+			@Override
+			public void run() {
+				MessageDao.getInstance().createOrinstart(models);
+			}
+		});
+	}
+
+	/**
+	 * 处理任务相关数据
+	 *
+	 * @param object
+	 */
+	private void handlerTask(JSONObject object) {
+		taskNum = 0;
+		String subTitle = null;
+		String time = null;
+		if (object != null && object.containsKey("data")) {
+			JSONArray array = object.getJSONArray("data");
+			taskNum = array.size();
+			if (!ListUtils.isEmpty(array)) {
+				subTitle = array.getJSONObject(0).getString("ra_taskname");
+				time = array.getJSONObject(0).getString("ra_startdate");
+			} else {
+				subTitle = "";
+				time = "";
+			}
+		}
+		String taskTime = TimeUtils.getFriendlyTimeDesc(ct, (int) (TimeUtils.f_str_2_long(time) / 1000));
+		iMessageView.updateHeaderView(5, taskNum, subTitle, taskTime);
+		updateForUnReader();
+	}
+
+	/**
+	 * 处理审批了相关数据
+	 *
+	 * @param object
+	 */
+	private void handlerProcess(JSONObject object) {
+		JSONArray itemArray = object.getJSONArray("data");
+		if (!ListUtils.isEmpty(itemArray))
+			itemArray = ApprovalUtil.sortJsonArray(itemArray);
+		String subTitle = null;
+		long time = 0;
+		if (!ListUtils.isEmpty(itemArray)) {
+			processNum = itemArray.size();
+			if (processNum > 0) {
+				subTitle = itemArray.getJSONObject(0).getString("JP_LAUNCHERNAME") + "的"
+						+ itemArray.getJSONObject(0).getString("JP_NAME");
+				time = JSONUtil.getTime(itemArray.getJSONObject(0), "JP_LAUNCHTIME", "JP_REMINDDATE");
+			}
+		} else {
+			processNum = 0;
+		}
+		String taskTime = TimeUtils.getFriendlyTimeDesc(ct, (int) (time / 1000));
+		iMessageView.updateHeaderView(4, processNum, subTitle, taskTime);
+		updateForUnReader();
+	}
+
+	private void handlerSub(final JSONObject object) {
+		if (!StringUtil.isEmpty(subReadTime) && subReadTime.compareTo(DateFormatUtil.long2Str(DateFormatUtil.YMD)) >= 0) {
+			showsubsNum(0, "", "");
+			return;
+		}
+		List<SubscriptionMessage> messages = null;
+		int num = 0;
+		if (object.containsKey("data")) {
+			messages = JSON.parseArray(object.getJSONArray("data").toJSONString(), SubscriptionMessage.class);
+			if (ListUtils.isEmpty(messages)) {
+				showsubsNum(0, "", "");
+				return;
+			}
+			for (SubscriptionMessage e : messages) {
+				if (e.getSTATUS_() == 0)
+					num += 1;
+			}
+		}
+		showsubsNum(num, messages.get(0).getTITLE_(), messages.get(0).getCREATEDATE_());
+	}
+
+	private void showsubsNum(int num, String title, String time) {
+		subsNum = num;
+		updateForUnReader();
+		iMessageView.updateHeaderView(6, num, num > 0 ? title : "", time);
+	}
+
+	private void saveSubs2Db(JSONObject o) throws Exception {
+		JSONArray array = o.getJSONArray("data");
+		if (ListUtils.isEmpty(array)) return;
+		SubMessage message = null;
+		JSONObject object = null;
+		List<SubMessage> chche = new ArrayList<>();
+		message = new SubMessage();
+		message.setDate(DateFormatUtil.long2Str(DateFormatUtil.YMD));
+		message.setRead(true);
+		message.setStatus(0);
+		chche.add(message);
+		for (int i = 0; i < array.size(); i++) {
+			object = array.getJSONObject(i);
+			message = new SubMessage();
+			message.setCreateTime(object.getLong("CREATEDATE_"));
+			int status = object.getInteger("STATUS_");
+			message.setStatus(i == 0 ? 1 : 2);
+			message.setTitle(object.getString("TITLE_"));
+			message.setSubTitle(object.getString("SUMDATA_"));
+			message.setRead(status == 0 ? false : true);
+			message.setId(object.getInteger("ID_"));
+			message.setNumId(object.getInteger("NUM_ID_"));
+			message.setInstanceId(object.getInteger("INSTANCE_ID_"));
+			if (message.getCreateTime() == 0) continue;
+			message.setDate(TimeUtils.s_long_2_str(message.getCreateTime()));
+			chche.add(message);
+		}
+		if (ListUtils.isEmpty(chche)) return;
+		SubsDao.getInstance().createOrUpdata(chche);
+	}
+
+	/**
+	 * 处理消息红点消息
+	 *
+	 * @param array
+	 */
+	private void handlerNewsFormErp(JSONArray array) {
+		if (ListUtils.isEmpty(array)) {
+			saveErp2DB(null);
+			return;
+		}
+		JSONObject object = null;
+		List<MessageModel> models = new ArrayList<>();
+		MessageModel model = null;
+		for (int i = 0; i < array.size(); i++) {
+			object = array.getJSONObject(i);
+			model = new MessageModel();
+			model.setTitle(object.getString("title"));
+			model.setSubTitle(object.getString("lastMessage"));
+			model.setTime(DateFormatUtil.long2Str(JSONUtil.getTime(object, "lastTime"), "yyyy-MM-dd HH:mm"));
+			model.setType(object.getString("type"));
+			if (object.containsKey("count") && object.get("count") != null)
+				model.setCount(object.getInteger("count"));
+			if (StringUtil.isEmpty(model.getTitle()) || StringUtil.isEmpty(model.getSubTitle()))
+				continue;
 //            if (model.getSubTitle().length() > 100)
 //                model.setSubTitle(model.getSubTitle().substring(0, 18));
-            models.add(model);
-        }
-        saveErp2DB(models);
-    }
-
-    /**
-     * 保存erp数据到数据库
-     *
-     * @param models
-     */
-    private void saveErp2DB(final List<MessageModel> models) {
-        LogUtil.i("saveErp2DB");
-        new Thread(new Runnable() {
-            @Override
-            public void run() {
-                if (!ListUtils.isEmpty(models))
-                    MessageDao.getInstance().createOrinstart(models, true);
-                final List<BaseSortModel<Friend>> chche = loadDataByImAsync();//loadDataByImAsync()
-                OAHttpHelper.getInstance().post(new Runnable() {
-                    @Override
-                    public void run() {
-                        if (mFriendList == null) mFriendList = new ArrayList<>();
-                        mFriendList.clear();
-                        if (chche != null)
-                            mFriendList.addAll(chche);
-                        showByEndIm();
-                    }
-                });
-            }
-        }).start();
-    }
-
-    /**
-     * 通过返回数据,转变成相对应列表数据
-     *
-     * @param lastTime
-     * @return
-     */
-    private int getErpTime(String lastTime) {
-        if (StringUtil.isEmpty(lastTime)) {
-            return 0;
-        } else {
-            return (int) (DateFormatUtil.str2Long(lastTime, "yyyy-MM-dd HH:mm") / 1000);
-        }
-    }
-
-    /**
-     * 获取索引,用于排序
-     *
-     * @param mode
-     */
-    private final void setSortCondition(BaseSortModel<Friend> mode) throws Exception {
-        Friend friend = mode.getBean();
-        if (friend == null) {
-            return;
-        }
-        String name = friend.getShowName();
-        String wholeSpell = PingYinUtil.getPingYin(name);
-        if (!TextUtils.isEmpty(wholeSpell)) {
-            String firstLetter = Character.toString(wholeSpell.charAt(0));
-            mode.setWholeSpell(wholeSpell);
-            mode.setFirstLetter(firstLetter);
-            mode.setSimpleSpell(PingYinUtil.converterToFirstSpell(name));
-        } else {// 如果全拼为空,理论上是一种错误情况,因为这代表着昵称为空
-            mode.setWholeSpell("#");
-            mode.setFirstLetter("#");
-            mode.setSimpleSpell("#");
-        }
-    }
-
-
-    /**
-     * 异步请求加载新的筛选条件的数据
-     * <p/>
-     * 是下拉刷新,还是上拉加载
-     */
-    private List<BaseSortModel<Friend>> loadDataByImAsync() {
-        try {
-            String mLoginUserId = MyApplication.getInstance().mLoginUser.getUserId();
-            List<Friend> friends = FriendDao.getInstance().getNearlyFriendMsg(mLoginUserId);
-            List<MessageModel> model = MessageDao.getInstance().queryFirstFloor();
-            List<UUHelperModel> uuHelperModels = UUHelperDao.getInstance().getAllModels();
-            setFriendName(friends, mLoginUserId);
-            return handlerErpAndIm(friends, model, uuHelperModels);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-
-    private void showByEndIm() {
-        iMessageView.clearSearch();
-        iMessageView.showModel(mFriendList);
-        updateForUnReader();
-    }
-
-    /**
-     * 整合erp和im消息内容
-     *
-     * @param friends
-     * @param models
-     */
-    private List<BaseSortModel<Friend>> handlerErpAndIm(List<Friend> friends, List<MessageModel> models, List<UUHelperModel> uuHelperItems) throws Exception {
-        if (friends == null) friends = new ArrayList<>();
-        List<BaseSortModel<Friend>> chche = new ArrayList<>();
-        emnewsNum = 0;
-        //处理消息数据库的数据
-        if (!ListUtils.isEmpty(models)) {
-            for (MessageModel m : models) {
-                Friend friend = new Friend();
-                friend.setNickName(m.getTitle());
-                friend.setContent(m.getSubTitle());
-                friend.setTimeSend(getErpTime(m.getTime()));
-                friend.setType(XmppMessage.TYPE_ERP);
-                friend.setDescription(m.getType());
-                friend.set_id(m.getId());
-                friend.setClickNum(m.getCount());
-                friend.setPhone(m.getReadTime());
-                int count = m.isReaded() ? 0 : m.getCount();
-                emnewsNum += count;
-                friend.setUnReadNum(count);
-                friends.add(friend);
-            }
-        }
-        if (!ListUtils.isEmpty(uuHelperItems)) {
-            Friend friend = new Friend();
-            friend.setNickName("UU 助手");
-            friend.setType(XmppMessage.TYPE_UUHELPER);
-            UUHelperModel lastModel = null;
-            int unReadUnm = 0;
-            for (UUHelperModel model : uuHelperItems) {
-                if (!model.isReaded()) {
-                    lastModel = model;
-                    unReadUnm++;
-                }
-            }
-            friend.setClickNum(unReadUnm);
-            uuHelperNum = unReadUnm;
-            friend.setUnReadNum(unReadUnm);
-            if (lastModel != null) {
-                friend.set_id(lastModel.getId());
-                friend.setTimeSend((int) (lastModel.getTimeSend() / 1000));
-                friend.setContent(lastModel.getTitle());
-            } else {
-                friend.setContent("");
-            }
-            friends.add(friend);
-        }
-        //处理im数据库和消息列表合并后的数据
-        if (friends != null && friends.size() > 0) {
-            for (int i = 0; i < friends.size(); i++) {
-                BaseSortModel<Friend> mode = new BaseSortModel<>();
-                mode.setBean(friends.get(i));
-                setSortCondition(mode);
-                chche.add(mode);
-            }
-        }
-        if (erpComparator == null) {
-            erpComparator = new Comparator<BaseSortModel<Friend>>() {
-                public int compare(BaseSortModel<Friend> s1, BaseSortModel<Friend> s2) {
-                    return (s1.getBean().getTimeSend() - s2.getBean().getTimeSend());
-                }
-            };
-        }
-        Collections.sort(chche, erpComparator);
-        return chche;
-    }
-
-    private void setFriendName(List<Friend> friends, String id) {
-        List<Friend> f = FriendDao.getInstance().getFriends(id);
-        if (friends == null) return;
-        for (int i = 0; i < friends.size(); i++) {
-            for (int j = 0; j < f.size(); j++) {
-                if (friends.get(i).get_id() == f.get(j).get_id()) {
-                    friends.get(i).setNickName(f.get(j).getNickName());
-                    friends.get(i).setRemarkName(f.get(j).getRemarkName());
-                    break;
-                }
-            }
-        }
-    }
-
-    /**
-     * 删除该类型文件
-     *
-     * @param position
-     */
-    public void deleteListByType(int position) {
-        if (ListUtils.isEmpty(mFriendList) || mFriendList.size() < position || position < 0) return;
-        Friend friend = mFriendList.get(position).getBean();
-        if (friend.getType() == XmppMessage.TYPE_ERP) {
-            if (!"kpi".equals(friend.getDescription()))
-                loadEmNewsDetails(friend.getDescription(), false);
-            else {
-                MessageDao.getInstance().deleteBytype(friend.getDescription());
-                loadData();
-            }
-        } else if (friend.getType() == XmppMessage.TYPE_UUHELPER) {
-            UUHelperDao.getInstance().deleteData(-1);
-            if (!ListUtils.isEmpty(mFriendList) && mFriendList.size() > position) {
-                mFriendList.remove(position);
-                iMessageView.showModel(mFriendList);
-            }
-        } else {
-            deleteByIm(friend, position);
-        }
-    }
-
-    /**
-     * 阅读该类型文件
-     *
-     * @param position
-     */
-    public void readerAllByType(int position) {
-        if (ListUtils.isEmpty(mFriendList) || mFriendList.size() < position) return;
-        Friend friend = mFriendList.get(position).getBean();
-        if (friend.getType() == XmppMessage.TYPE_ERP) {
-            loadEmNewsDetails(friend.getDescription(), true);
+			models.add(model);
+		}
+		saveErp2DB(models);
+	}
+
+	/**
+	 * 保存erp数据到数据库
+	 *
+	 * @param models
+	 */
+	private void saveErp2DB(final List<MessageModel> models) {
+		LogUtil.i("saveErp2DB");
+		new Thread(new Runnable() {
+			@Override
+			public void run() {
+				if (!ListUtils.isEmpty(models))
+					MessageDao.getInstance().createOrinstart(models, true);
+				final List<BaseSortModel<Friend>> chche = loadDataByImAsync();//loadDataByImAsync()
+				OAHttpHelper.getInstance().post(new Runnable() {
+					@Override
+					public void run() {
+						if (mFriendList == null) mFriendList = new ArrayList<>();
+						mFriendList.clear();
+						if (chche != null)
+							mFriendList.addAll(chche);
+						showByEndIm();
+					}
+				});
+			}
+		}).start();
+	}
+
+	/**
+	 * 通过返回数据,转变成相对应列表数据
+	 *
+	 * @param lastTime
+	 * @return
+	 */
+	private int getErpTime(String lastTime) {
+		if (StringUtil.isEmpty(lastTime)) {
+			return 0;
+		} else {
+			return (int) (DateFormatUtil.str2Long(lastTime, "yyyy-MM-dd HH:mm") / 1000);
+		}
+	}
+
+	/**
+	 * 获取索引,用于排序
+	 *
+	 * @param mode
+	 */
+	private final void setSortCondition(BaseSortModel<Friend> mode) throws Exception {
+		Friend friend = mode.getBean();
+		if (friend == null) {
+			return;
+		}
+		String name = friend.getShowName();
+		String wholeSpell = PingYinUtil.getPingYin(name);
+		if (!TextUtils.isEmpty(wholeSpell)) {
+			String firstLetter = Character.toString(wholeSpell.charAt(0));
+			mode.setWholeSpell(wholeSpell);
+			mode.setFirstLetter(firstLetter);
+			mode.setSimpleSpell(PingYinUtil.converterToFirstSpell(name));
+		} else {// 如果全拼为空,理论上是一种错误情况,因为这代表着昵称为空
+			mode.setWholeSpell("#");
+			mode.setFirstLetter("#");
+			mode.setSimpleSpell("#");
+		}
+	}
+
+
+	/**
+	 * 异步请求加载新的筛选条件的数据
+	 * <p/>
+	 * 是下拉刷新,还是上拉加载
+	 */
+	private List<BaseSortModel<Friend>> loadDataByImAsync() {
+		try {
+			String mLoginUserId = MyApplication.getInstance().mLoginUser.getUserId();
+			List<Friend> friends = FriendDao.getInstance().getNearlyFriendMsg(mLoginUserId);
+			List<MessageModel> model = MessageDao.getInstance().queryFirstFloor();
+			List<UUHelperModel> uuHelperModels = UUHelperDao.getInstance().getAllModels();
+			setFriendName(friends, mLoginUserId);
+			return handlerErpAndIm(friends, model, uuHelperModels);
+		} catch (Exception e) {
+			e.printStackTrace();
+			return null;
+		}
+	}
+
+	private void showByEndIm() {
+		iMessageView.clearSearch();
+		iMessageView.showModel(mFriendList);
+		updateForUnReader();
+	}
+
+	/**
+	 * 整合erp和im消息内容
+	 *
+	 * @param friends
+	 * @param models
+	 */
+	private List<BaseSortModel<Friend>> handlerErpAndIm(List<Friend> friends, List<MessageModel> models, List<UUHelperModel> uuHelperItems) throws Exception {
+		if (friends == null) friends = new ArrayList<>();
+		List<BaseSortModel<Friend>> chche = new ArrayList<>();
+		emnewsNum = 0;
+		//处理消息数据库的数据
+		if (!ListUtils.isEmpty(models)) {
+			for (MessageModel m : models) {
+				Friend friend = new Friend();
+				friend.setNickName(m.getTitle());
+				friend.setContent(m.getSubTitle());
+				friend.setTimeSend(getErpTime(m.getTime()));
+				friend.setType(XmppMessage.TYPE_ERP);
+				friend.setDescription(m.getType());
+				friend.set_id(m.getId());
+				friend.setClickNum(m.getCount());
+				friend.setPhone(m.getReadTime());
+				int count = m.isReaded() ? 0 : m.getCount();
+				emnewsNum += count;
+				friend.setUnReadNum(count);
+				friends.add(friend);
+			}
+		}
+		if (!ListUtils.isEmpty(uuHelperItems)) {
+			Friend friend = new Friend();
+			friend.setNickName("UU 助手");
+			friend.setType(XmppMessage.TYPE_UUHELPER);
+			UUHelperModel lastModel = null;
+			int unReadUnm = 0;
+			for (UUHelperModel model : uuHelperItems) {
+				if (!model.isReaded()) {
+					lastModel = model;
+					unReadUnm++;
+				}
+			}
+			friend.setClickNum(unReadUnm);
+			uuHelperNum = unReadUnm;
+			friend.setUnReadNum(unReadUnm);
+			if (lastModel != null) {
+				friend.set_id(lastModel.getId());
+				friend.setTimeSend((int) (lastModel.getTimeSend() / 1000));
+				friend.setContent(lastModel.getTitle());
+			} else {
+				friend.setContent("");
+			}
+			friends.add(friend);
+		}
+		//处理im数据库和消息列表合并后的数据
+		if (friends != null && friends.size() > 0) {
+			for (int i = 0; i < friends.size(); i++) {
+				BaseSortModel<Friend> mode = new BaseSortModel<>();
+				mode.setBean(friends.get(i));
+				setSortCondition(mode);
+				chche.add(mode);
+			}
+		}
+		if (erpComparator == null) {
+			erpComparator = new Comparator<BaseSortModel<Friend>>() {
+				public int compare(BaseSortModel<Friend> s1, BaseSortModel<Friend> s2) {
+					return (s1.getBean().getTimeSend() - s2.getBean().getTimeSend());
+				}
+			};
+		}
+		Collections.sort(chche, erpComparator);
+		return chche;
+	}
+
+	private void setFriendName(List<Friend> friends, String id) {
+		List<Friend> f = FriendDao.getInstance().getFriends(id);
+		if (friends == null) return;
+		for (int i = 0; i < friends.size(); i++) {
+			for (int j = 0; j < f.size(); j++) {
+				if (friends.get(i).get_id() == f.get(j).get_id()) {
+					friends.get(i).setNickName(f.get(j).getNickName());
+					friends.get(i).setRemarkName(f.get(j).getRemarkName());
+					break;
+				}
+			}
+		}
+	}
+
+	/**
+	 * 删除该类型文件
+	 *
+	 * @param position
+	 */
+	public void deleteListByType(int position) {
+		if (ListUtils.isEmpty(mFriendList) || mFriendList.size() < position || position < 0) return;
+		Friend friend = mFriendList.get(position).getBean();
+		if (friend.getType() == XmppMessage.TYPE_ERP) {
+			if (!"kpi".equals(friend.getDescription()))
+				loadEmNewsDetails(friend.getDescription(), false);
+			else {
+				MessageDao.getInstance().deleteBytype(friend.getDescription());
+				loadData();
+			}
+		} else if (friend.getType() == XmppMessage.TYPE_UUHELPER) {
+			UUHelperDao.getInstance().deleteData(-1);
+			if (!ListUtils.isEmpty(mFriendList) && mFriendList.size() > position) {
+				mFriendList.remove(position);
+				iMessageView.showModel(mFriendList);
+			}
+		} else {
+			deleteByIm(friend, position);
+		}
+	}
+
+	/**
+	 * 阅读该类型文件
+	 *
+	 * @param position
+	 */
+	public void readerAllByType(int position) {
+		if (ListUtils.isEmpty(mFriendList) || mFriendList.size() < position) return;
+		Friend friend = mFriendList.get(position).getBean();
+		if (friend.getType() == XmppMessage.TYPE_ERP) {
+			loadEmNewsDetails(friend.getDescription(), true);
 //            MessageDao.getInstance().upStatusByType(friend.getDescription(), true);
 //            loadData();
-        } else if (friend.getType() == XmppMessage.TYPE_UUHELPER) {
-            UUHelperDao.getInstance().updateRead(true);
-        } else {
-            if (friend.getUnReadNum() > 0) {
-                MsgBroadcast.broadcastMsgNumUpdate(ct, false, friend.getUnReadNum());
-                friend.setUnReadNum(0);
-                iMessageView.showModel(mFriendList);
-            }
-        }
-    }
-
-    /**
-     * 设置未阅读该类型文件
-     *
-     * @param position
-     */
-    public void unReaderAllByType(int position) {
-        if (ListUtils.isEmpty(mFriendList) || mFriendList.size() < position) return;
-        Friend friend = mFriendList.get(position).getBean();
-        if (friend.getType() == XmppMessage.TYPE_ERP) {
-            MessageDao.getInstance().upStatusByType(friend.getDescription(), false);
-        } else if (friend.getType() == XmppMessage.TYPE_UUHELPER) {
-            UUHelperDao.getInstance().updateRead(false);
-        } else {
-            if (friend.getUnReadNum() > 0) {
-                MsgBroadcast.broadcastMsgNumUpdate(ct, false, friend.getUnReadNum());
-                friend.setUnReadNum(0);
-                iMessageView.showModel(mFriendList);
-            }
-        }
-    }
-
-    private void handlerEndOfReadOrDelete(String type, boolean isReaded) {
-        if (isReaded) {
-            MessageDao.getInstance().upStatusByType(type, true);
-        } else {
-            MessageDao.getInstance().deleteBytype(type);
-        }
-        loadData();
-    }
-
-    /**
-     * 计算搜索显示新的内容
-     *
-     * @param
-     */
-    public void search(String filter) {
-        this.filter = filter;
-        List<BaseSortModel<Friend>> chcheShow = new ArrayList<>();
-        if (!ListUtils.isEmpty(mFriendList)) {
-            for (int i = 0; i < mFriendList.size(); i++) {
-                BaseSortModel<Friend> mode = mFriendList.get(i);
-                // 获取筛选的数据
-                if (canShowbyFilter(mode)) {
-                    chcheShow.add(mode);
-                }
-
-            }
-        }
-        iMessageView.showModel(chcheShow);
-    }
-
-    private boolean canShowbyFilter(BaseSortModel<Friend> mode) {
-        if (TextUtils.isEmpty(filter) || mode.getSimpleSpell().startsWith(filter) || mode.getWholeSpell().startsWith(filter)
-                || mode.getBean().getShowName().startsWith(filter)) return true;
-        return false;
-
-    }
-
-
-    private void deleteByIm(Friend friend, int position) {
-        String mLoginUserId = MyApplication.getInstance().mLoginUser.getUserId();
-        if (friend.getRoomFlag() == 0) {
-            if (friend.getUnReadNum() > 0) {
-                MsgBroadcast.broadcastMsgNumUpdate(ct, false, friend.getUnReadNum());
-            }
-            BaseSortModel<Friend> mode = mFriendList.get(position);
-            mFriendList.remove(mode);
-            // 如果是普通的人,从好友表中删除最后一条消息的记录,这样就不会查出来了
-            FriendDao.getInstance().resetFriendMessage(mLoginUserId, friend.getUserId());
-            // 消息表中删除
-            ChatMessageDao.getInstance().deleteMessageTable(mLoginUserId, friend.getUserId());
-        } else {
-            deleteFriend(mLoginUserId, mFriendList.get(position));
-        }
-        iMessageView.showModel(mFriendList);
-    }
-
-    private void deleteFriend(final String loginUserId, final BaseSortModel<Friend> sortFriend) {
-        Friend friend = sortFriend.getBean();
-        if (friend.getUnReadNum() > 0) {
-            MsgBroadcast.broadcastMsgNumUpdate(ct, false, friend.getUnReadNum());
-        }
-        mFriendList.remove(sortFriend);
-        // 删除这个房间
-        FriendDao.getInstance().deleteFriend(loginUserId, friend.getUserId());
-        // 消息表中删除
-        ChatMessageDao.getInstance().deleteMessageTable(loginUserId, friend.getUserId());
-        if (this.unReaderListener != null) {
-            this.unReaderListener.exitMucChat(friend.getUserId());
-        }
-    }
-
-    /**
-     * 计算调转到那个界面
-     *
-     * @param mContext
-     * @param position
-     */
-    public void turn2NextAct(Activity mContext, int position) throws Exception {
-        Friend friend = mFriendList.get(position).getBean();
-        if (friend == null) {
-            return;
-        }
-        if (friend.getType() == XmppMessage.TYPE_ERP) {
-            //消息
-            turn2ERp(friend);
-            return;
-        } else if (friend.getType() == XmppMessage.TYPE_UUHELPER) {
-            ct.startActivity(new Intent(ct, UUHelperActivity.class));
-            UUHelperDao.getInstance().updateRead(true);
-            return;
-        }
-        if (friend.getRoomFlag() == 0) {
-            if (friend.getUserId().equals(Friend.ID_NEW_FRIEND_MESSAGE)) {// 新朋友消息
-                mContext.startActivity(new Intent("com.modular.appcontact.NewFriendActivity"));
-            } else {
-                Intent intent = new Intent("com.modular.message.ChatActivity");
-                intent.putExtra(AppConstant.FRIEND, friend);
-                mContext.startActivity(intent);
-            }
-        } else {
-            Intent intent = new Intent("com.modular.message.MucChatActivity");
-            intent.putExtra(AppConstant.EXTRA_USER_ID, friend.getUserId());
-            intent.putExtra(AppConstant.EXTRA_NICK_NAME, friend.getNickName());
-            intent.putExtra(AppConstant.EXTRA_IS_GROUP_CHAT, true);
-            mContext.startActivity(intent);
-        }
-        //将红点去除
-        if (friend.getUnReadNum() > 0) {
-            MsgBroadcast.broadcastMsgNumUpdate(mContext, false, friend.getUnReadNum());
-            friend.setUnReadNum(0);
-        }
-    }
-
-    /**
-     * 调转到对应ERP相关知会里面去
-     *
-     * @param friend
-     */
-    private void turn2ERp(Friend friend) {
-        String description = friend.getDescription();
-        if (StringUtil.isEmpty(description)) return;
-        Intent intent = new Intent(ct, MsgsSecondCommonActivity.class);
-        intent.putExtra("type", description);
-        intent.putExtra("mTitle", friend.getNickName());
-        intent.putExtra("newmsgs", friend.getClickNum());
-        intent.putExtra("emcode", CommonUtil.getSharedPreferences(ct, "erp_username"));
-        if ("kpi".equals(description.trim()))
-            intent.putExtra("readTime", TimeUtils.f_long_2_str(System.currentTimeMillis()));
-        else
-            intent.putExtra("readTime", friend.getPhone());
-        ct.startActivity(intent);
-        MessageDao.getInstance().upStatus(friend.get_id(), friend.getDescription(), true);
-    }
-
-
-    /*跟新未读红点信息*/
-    private void updateForUnReader() {
-        int num = subsNum + processNum + uuHelperNum + emnewsNum + taskNum + bookingNum;
-        if (this.unReaderListener != null) {
-            this.unReaderListener.setUnReader(num);
-        }
-    }
-
-
-    public void setSubReadTime(String subReadTime) {
-        PreferenceUtils.putString(SUB_READ_TIME, subReadTime);
-        subsNum = 0;
-        updateForUnReader();
-        //TODO 判断订阅有没有新消息没读
-        iMessageView.updateHeaderView(6, subsNum, "", "");
-        this.subReadTime = subReadTime;
-    }
-
-    public void onDestroyView(Context mContext) {
-        try {
-            mContext.unregisterReceiver(dataChangeReceiver);
-        } catch (Exception e) {
-
-        }
-    }
-
-    private UnReaderListener unReaderListener;
-
-    public interface UnReaderListener {
-        void setUnReader(int number);
-
-        void exitMucChat(String userId);
-    }
-
-
-    private void initHeaderModels() {
-        List<MessageHeader> models = new ArrayList<>();
-        MessageHeader model = null;
-        String role = CommonUtil.getUserRole();
-        LogUtil.i("role=" + role);
-        if (role.equals("1")) {//个人用户
-            models.addAll(getPersonalHeader());
-        } else if (role.equals("3")) {//b2b用户
-            models.addAll(getB2bHeader());
-        } else {
-            models.addAll(getErpHeader());
-        }
-        if (PreferenceUtils.getInt("UUSTEP", -1) == 1) {
-            //显示UU运动
-            model = new MessageHeader(StringUtil.getMessage(R.string.set_sport));
-            model.setIcon(R.drawable.uu_run);
-            model.setSubDoc("");
-            model.setRedKey(Constants.MESSAGE_RUN);
-            model.setType(3);
-            model.setTag("");
-            models.add(model);
-        }
-        iMessageView.updateHeader(models);
-    }
-
-    private List<MessageHeader> getErpHeader() {
-        List<MessageHeader> models = new ArrayList<>();
-        MessageHeader model = new MessageHeader(StringUtil.getMessage(R.string.msg_approval));
-        model.setIcon(R.drawable.home_image_01_u);
-        model.setSubDoc("");
-        model.setRedKey("");
-        model.setType(4);
-        model.setTag("");
-        models.add(model);
-
-        model = new MessageHeader(StringUtil.getMessage(R.string.msg_work));
-        model.setIcon(R.drawable.daibangongzuo);
-        model.setSubDoc("");
-        model.setRedKey("");
-        model.setType(5);
-        model.setTag("");
-        models.add(model);
-
-        model = new MessageHeader(StringUtil.getMessage(R.string.msg_subscribe));
-        model.setIcon(R.drawable.tingyue);
-        model.setSubDoc("");
-        model.setRedKey(Constants.MESSAGE_DINGYUE);
-        model.setRedMessage(StringUtil.getMessage(R.string.msg_subscribe_data));
-        model.setType(6);
-        model.setTag("");
-        models.add(model);
-
-
-        model = new MessageHeader(StringUtil.getMessage(R.string.booking_menu));
-        model.setIcon(R.drawable.icon_yuyue3);
-        model.setSubDoc("");
-        model.setRedKey(Constants.MESSAGE_YUYUE);
-        model.setType(2);
-        model.setTag("");
-        models.add(model);
-        return models;
-    }
-
-    private List<MessageHeader> getB2bHeader() {
-        List<MessageHeader> models = new ArrayList<>();
-        MessageHeader model = new MessageHeader(StringUtil.getMessage(R.string.msg_approval));
-        model.setIcon(R.drawable.home_image_01_u);
-        model.setSubDoc("");
-        model.setRedKey("");
-        model.setType(4);
-        model.setTag("");
-        models.add(model);
-
-        model = new MessageHeader(StringUtil.getMessage(R.string.msg_work));
-        model.setIcon(R.drawable.daibangongzuo);
-        model.setSubDoc("");
-        model.setRedKey("");
-        model.setType(5);
-        model.setTag("");
-        models.add(model);
-
-        model = new MessageHeader(StringUtil.getMessage(R.string.booking_menu));
-        model.setIcon(R.drawable.icon_yuyue3);
-        model.setSubDoc("");
-        model.setRedKey(Constants.MESSAGE_YUYUE);
-        model.setType(2);
-        model.setTag("");
-        models.add(model);
-        return models;
-    }
-
-    private List<MessageHeader> getPersonalHeader() {
-        List<MessageHeader> models = new ArrayList<>();
-        MessageHeader model = new MessageHeader(StringUtil.getMessage(R.string.booking_menu));
-        model.setIcon(R.drawable.icon_yuyue3);
-        model.setSubDoc("");
-        model.setRedKey(Constants.MESSAGE_YUYUE);
-        model.setType(2);
-        model.setTag("");
-        models.add(model);
-
-        model = new MessageHeader("餐饮");
-        model.setIcon(R.drawable.icon_food);
-        model.setSubDoc("美味齐全");
-        model.setRedKey(Constants.MESSAGE_FOOD);
-        model.setType(1);
-        model.setTag("10003");
-        models.add(model);
-
-        model = new MessageHeader("美容美发");
-        model.setIcon(R.drawable.icon_hair);
-        model.setSubDoc("时尚潮流");
-        model.setRedKey(Constants.MESSAGE_HAIR);
-        model.setType(1);
-        model.setTag("10004");
-        models.add(model);
-
-        model = new MessageHeader("KTV");
-        model.setIcon(R.drawable.icon_ktv);
-        model.setSubDoc("音乐节");
-        model.setRedKey(Constants.MESSAGE_KTV);
-        model.setType(1);
-        model.setTag("10006");
-        models.add(model);
-
-        model = new MessageHeader("运动健身");
-        model.setIcon(R.drawable.icon_sport);
-        model.setSubDoc("hi起来");
-        model.setRedKey(Constants.MESSAGE_SPORT);
-        model.setType(1);
-        model.setTag("10002");
-        models.add(model);
-
-        model = new MessageHeader("会所");
-        model.setIcon(R.drawable.icon_club);
-        model.setSubDoc("预约有优惠");
-        model.setRedKey(Constants.MESSAGE_CLUB);
-        model.setType(1);
-        model.setTag("10005");
-        models.add(model);
-
-        model = new MessageHeader("医院挂号");
-        model.setIcon(R.drawable.icon_hospital);
-        model.setSubDoc("您的健康助手");
-        model.setRedKey(Constants.MESSAGE_HOSPITAL);
-        model.setType(1);
-        model.setTag("10001");
-        models.add(model);
-        return models;
-    }
-
-
-    public void turn2ActByHeader(Activity ct, MessageHeader model) {
-        Intent intent = null;
-        switch (model.getType()) {
-            case 1://个人版本的服务预约预约类型
-                SBMenuModel menuModel = new SBMenuModel();
-                menuModel.setUrl("");
-                menuModel.setCode(model.getTag());
-                menuModel.setIcon(model.getIcon());
-                menuModel.setDesc(model.getSubDoc());
-                menuModel.setTitle(model.getName());
-                intent = new Intent(ct, BServiceListActivity.class);
-                intent.putExtra("SBMenuModel", menuModel);
-                ct.startActivity(intent);
-                break;
-            case 2://服务预约主页
-                ct.startActivity(new Intent("com.modular.booking.BookingListActivity"));
-                break;
-            case 3://uu运动
+		} else if (friend.getType() == XmppMessage.TYPE_UUHELPER) {
+			UUHelperDao.getInstance().updateRead(true);
+		} else {
+			if (friend.getUnReadNum() > 0) {
+				MsgBroadcast.broadcastMsgNumUpdate(ct, false, friend.getUnReadNum());
+				friend.setUnReadNum(0);
+				iMessageView.showModel(mFriendList);
+			}
+		}
+	}
+
+	/**
+	 * 设置未阅读该类型文件
+	 *
+	 * @param position
+	 */
+	public void unReaderAllByType(int position) {
+		if (ListUtils.isEmpty(mFriendList) || mFriendList.size() < position) return;
+		Friend friend = mFriendList.get(position).getBean();
+		if (friend.getType() == XmppMessage.TYPE_ERP) {
+			MessageDao.getInstance().upStatusByType(friend.getDescription(), false);
+		} else if (friend.getType() == XmppMessage.TYPE_UUHELPER) {
+			UUHelperDao.getInstance().updateRead(false);
+		} else {
+			if (friend.getUnReadNum() > 0) {
+				MsgBroadcast.broadcastMsgNumUpdate(ct, false, friend.getUnReadNum());
+				friend.setUnReadNum(0);
+				iMessageView.showModel(mFriendList);
+			}
+		}
+	}
+
+	private void handlerEndOfReadOrDelete(String type, boolean isReaded) {
+		if (isReaded) {
+			MessageDao.getInstance().upStatusByType(type, true);
+		} else {
+			MessageDao.getInstance().deleteBytype(type);
+		}
+		loadData();
+	}
+
+	/**
+	 * 计算搜索显示新的内容
+	 *
+	 * @param
+	 */
+	public void search(String filter) {
+		this.filter = filter;
+		List<BaseSortModel<Friend>> chcheShow = new ArrayList<>();
+		if (!ListUtils.isEmpty(mFriendList)) {
+			for (int i = 0; i < mFriendList.size(); i++) {
+				BaseSortModel<Friend> mode = mFriendList.get(i);
+				// 获取筛选的数据
+				if (canShowbyFilter(mode)) {
+					chcheShow.add(mode);
+				}
+
+			}
+		}
+		iMessageView.showModel(chcheShow);
+	}
+
+	private boolean canShowbyFilter(BaseSortModel<Friend> mode) {
+		if (TextUtils.isEmpty(filter) || mode.getSimpleSpell().startsWith(filter) || mode.getWholeSpell().startsWith(filter)
+				|| mode.getBean().getShowName().startsWith(filter)) return true;
+		return false;
+
+	}
+
+
+	private void deleteByIm(Friend friend, int position) {
+		String mLoginUserId = MyApplication.getInstance().mLoginUser.getUserId();
+		if (friend.getRoomFlag() == 0) {
+			if (friend.getUnReadNum() > 0) {
+				MsgBroadcast.broadcastMsgNumUpdate(ct, false, friend.getUnReadNum());
+			}
+			BaseSortModel<Friend> mode = mFriendList.get(position);
+			mFriendList.remove(mode);
+			// 如果是普通的人,从好友表中删除最后一条消息的记录,这样就不会查出来了
+			FriendDao.getInstance().resetFriendMessage(mLoginUserId, friend.getUserId());
+			// 消息表中删除
+			ChatMessageDao.getInstance().deleteMessageTable(mLoginUserId, friend.getUserId());
+		} else {
+			deleteFriend(mLoginUserId, mFriendList.get(position));
+		}
+		iMessageView.showModel(mFriendList);
+	}
+
+	private void deleteFriend(final String loginUserId, final BaseSortModel<Friend> sortFriend) {
+		Friend friend = sortFriend.getBean();
+		if (friend.getUnReadNum() > 0) {
+			MsgBroadcast.broadcastMsgNumUpdate(ct, false, friend.getUnReadNum());
+		}
+		mFriendList.remove(sortFriend);
+		// 删除这个房间
+		FriendDao.getInstance().deleteFriend(loginUserId, friend.getUserId());
+		// 消息表中删除
+		ChatMessageDao.getInstance().deleteMessageTable(loginUserId, friend.getUserId());
+		if (this.unReaderListener != null) {
+			this.unReaderListener.exitMucChat(friend.getUserId());
+		}
+	}
+
+	/**
+	 * 计算调转到那个界面
+	 *
+	 * @param mContext
+	 * @param position
+	 */
+	public void turn2NextAct(Activity mContext, int position) throws Exception {
+		Friend friend = mFriendList.get(position).getBean();
+		if (friend == null) {
+			return;
+		}
+		if (friend.getType() == XmppMessage.TYPE_ERP) {
+			//消息
+			turn2ERp(friend);
+			return;
+		} else if (friend.getType() == XmppMessage.TYPE_UUHELPER) {
+			ct.startActivity(new Intent(ct, UUHelperActivity.class));
+			UUHelperDao.getInstance().updateRead(true);
+			return;
+		}
+		if (friend.getRoomFlag() == 0) {
+			if (friend.getUserId().equals(Friend.ID_NEW_FRIEND_MESSAGE)) {// 新朋友消息
+				mContext.startActivity(new Intent("com.modular.appcontact.NewFriendActivity"));
+			} else {
+				Intent intent = new Intent("com.modular.message.ChatActivity");
+				intent.putExtra(AppConstant.FRIEND, friend);
+				mContext.startActivity(intent);
+			}
+		} else {
+			Intent intent = new Intent("com.modular.message.MucChatActivity");
+			intent.putExtra(AppConstant.EXTRA_USER_ID, friend.getUserId());
+			intent.putExtra(AppConstant.EXTRA_NICK_NAME, friend.getNickName());
+			intent.putExtra(AppConstant.EXTRA_IS_GROUP_CHAT, true);
+			mContext.startActivity(intent);
+		}
+		//将红点去除
+		if (friend.getUnReadNum() > 0) {
+			MsgBroadcast.broadcastMsgNumUpdate(mContext, false, friend.getUnReadNum());
+			friend.setUnReadNum(0);
+		}
+	}
+
+	/**
+	 * 调转到对应ERP相关知会里面去
+	 *
+	 * @param friend
+	 */
+	private void turn2ERp(Friend friend) {
+		String description = friend.getDescription();
+		if (StringUtil.isEmpty(description)) return;
+		Intent intent = new Intent(ct, MsgsSecondCommonActivity.class);
+		intent.putExtra("type", description);
+		intent.putExtra("title", friend.getNickName());
+		intent.putExtra("newmsgs", friend.getClickNum());
+		intent.putExtra("emcode", CommonUtil.getSharedPreferences(ct, "erp_username"));
+		if ("kpi".equals(description.trim()))
+			intent.putExtra("readTime", TimeUtils.f_long_2_str(System.currentTimeMillis()));
+		else
+			intent.putExtra("readTime", friend.getPhone());
+		ct.startActivity(intent);
+		MessageDao.getInstance().upStatus(friend.get_id(), friend.getDescription(), true);
+	}
+
+
+	/*跟新未读红点信息*/
+	private void updateForUnReader() {
+		int num = subsNum + processNum + uuHelperNum + emnewsNum + taskNum + bookingNum;
+		if (this.unReaderListener != null) {
+			this.unReaderListener.setUnReader(num);
+		}
+	}
+
+
+	public void setSubReadTime(String subReadTime) {
+		PreferenceUtils.putString(SUB_READ_TIME, subReadTime);
+		subsNum = 0;
+		updateForUnReader();
+		//TODO 判断订阅有没有新消息没读
+		iMessageView.updateHeaderView(6, subsNum, "", "");
+		this.subReadTime = subReadTime;
+	}
+
+	public void onDestroyView(Context mContext) {
+		try {
+			mContext.unregisterReceiver(dataChangeReceiver);
+		} catch (Exception e) {
+
+		}
+	}
+
+	private UnReaderListener unReaderListener;
+
+	public interface UnReaderListener {
+		void setUnReader(int number);
+
+		void exitMucChat(String userId);
+	}
+
+
+	private void initHeaderModels() {
+		List<MessageHeader> models = new ArrayList<>();
+		MessageHeader model = null;
+		String role = CommonUtil.getUserRole();
+		LogUtil.i("role=" + role);
+		if (role.equals("1")) {//个人用户
+			models.addAll(getPersonalHeader());
+		} else if (role.equals("3")) {//b2b用户
+			models.addAll(getB2bHeader());
+		} else {
+			models.addAll(getErpHeader());
+		}
+		if (PreferenceUtils.getInt("UUSTEP", -1) == 1) {
+			//显示UU运动
+			model = new MessageHeader(StringUtil.getMessage(R.string.set_sport));
+			model.setIcon(R.drawable.uu_run);
+			model.setSubDoc("");
+			model.setRedKey(Constants.MESSAGE_RUN);
+			model.setType(3);
+			model.setTag("");
+			models.add(model);
+		}
+
+
+//			model = new MessageHeader("一元捐");
+//			model.setIcon(R.drawable.uu_run);
+//			model.setSubDoc("");
+//			model.setRedKey(Constants.MESSAGE_RUN);
+//			model.setType(9);
+//			model.setTag("");
+//			models.add(model);
+
+		iMessageView.updateHeader(models);
+	}
+
+	private List<MessageHeader> getErpHeader() {
+		List<MessageHeader> models = new ArrayList<>();
+		MessageHeader model = new MessageHeader(StringUtil.getMessage(R.string.msg_approval));
+		model.setIcon(R.drawable.home_image_01_u);
+		model.setSubDoc("");
+		model.setRedKey("");
+		model.setType(4);
+		model.setTag("");
+		models.add(model);
+
+		model = new MessageHeader(StringUtil.getMessage(R.string.msg_work));
+		model.setIcon(R.drawable.daibangongzuo);
+		model.setSubDoc("");
+		model.setRedKey("");
+		model.setType(5);
+		model.setTag("");
+		models.add(model);
+
+		model = new MessageHeader(StringUtil.getMessage(R.string.msg_subscribe));
+		model.setIcon(R.drawable.tingyue);
+		model.setSubDoc("");
+		model.setRedKey(Constants.MESSAGE_DINGYUE);
+		model.setRedMessage(StringUtil.getMessage(R.string.msg_subscribe_data));
+		model.setType(6);
+		model.setTag("");
+		models.add(model);
+
+
+		model = new MessageHeader(StringUtil.getMessage(R.string.booking_menu));
+		model.setIcon(R.drawable.icon_yuyue3);
+		model.setSubDoc("");
+		model.setRedKey(Constants.MESSAGE_YUYUE);
+		model.setType(2);
+		model.setTag("");
+		models.add(model);
+		return models;
+	}
+
+	private List<MessageHeader> getB2bHeader() {
+		List<MessageHeader> models = new ArrayList<>();
+		MessageHeader model = new MessageHeader(StringUtil.getMessage(R.string.msg_approval));
+		model.setIcon(R.drawable.home_image_01_u);
+		model.setSubDoc("");
+		model.setRedKey("");
+		model.setType(4);
+		model.setTag("");
+		models.add(model);
+
+		model = new MessageHeader(StringUtil.getMessage(R.string.msg_work));
+		model.setIcon(R.drawable.daibangongzuo);
+		model.setSubDoc("");
+		model.setRedKey("");
+		model.setType(5);
+		model.setTag("");
+		models.add(model);
+
+		model = new MessageHeader(StringUtil.getMessage(R.string.booking_menu));
+		model.setIcon(R.drawable.icon_yuyue3);
+		model.setSubDoc("");
+		model.setRedKey(Constants.MESSAGE_YUYUE);
+		model.setType(2);
+		model.setTag("");
+		models.add(model);
+		return models;
+	}
+
+	private List<MessageHeader> getPersonalHeader() {
+		List<MessageHeader> models = new ArrayList<>();
+		MessageHeader model = new MessageHeader(StringUtil.getMessage(R.string.booking_menu));
+		model.setIcon(R.drawable.icon_yuyue3);
+		model.setSubDoc("");
+		model.setRedKey(Constants.MESSAGE_YUYUE);
+		model.setType(2);
+		model.setTag("");
+		models.add(model);
+
+		model = new MessageHeader("餐饮");
+		model.setIcon(R.drawable.icon_food);
+		model.setSubDoc("美味齐全");
+		model.setRedKey(Constants.MESSAGE_FOOD);
+		model.setType(1);
+		model.setTag("10003");
+		models.add(model);
+
+		model = new MessageHeader("美容美发");
+		model.setIcon(R.drawable.icon_hair);
+		model.setSubDoc("时尚潮流");
+		model.setRedKey(Constants.MESSAGE_HAIR);
+		model.setType(1);
+		model.setTag("10004");
+		models.add(model);
+
+		model = new MessageHeader("KTV");
+		model.setIcon(R.drawable.icon_ktv);
+		model.setSubDoc("音乐节");
+		model.setRedKey(Constants.MESSAGE_KTV);
+		model.setType(1);
+		model.setTag("10006");
+		models.add(model);
+
+		model = new MessageHeader("运动健身");
+		model.setIcon(R.drawable.icon_sport);
+		model.setSubDoc("hi起来");
+		model.setRedKey(Constants.MESSAGE_SPORT);
+		model.setType(1);
+		model.setTag("10002");
+		models.add(model);
+
+		model = new MessageHeader("会所");
+		model.setIcon(R.drawable.icon_club);
+		model.setSubDoc("预约有优惠");
+		model.setRedKey(Constants.MESSAGE_CLUB);
+		model.setType(1);
+		model.setTag("10005");
+		models.add(model);
+
+		model = new MessageHeader("医院挂号");
+		model.setIcon(R.drawable.icon_hospital);
+		model.setSubDoc("您的健康助手");
+		model.setRedKey(Constants.MESSAGE_HOSPITAL);
+		model.setType(1);
+		model.setTag("10001");
+		models.add(model);
+		return models;
+	}
+
+
+	public void turn2ActByHeader(Activity ct, MessageHeader model) {
+		Intent intent = null;
+		switch (model.getType()) {
+			case 1://个人版本的服务预约预约类型
+				SBMenuModel menuModel = new SBMenuModel();
+				menuModel.setUrl("");
+				menuModel.setCode(model.getTag());
+				menuModel.setIcon(model.getIcon());
+				menuModel.setDesc(model.getSubDoc());
+				menuModel.setTitle(model.getName());
+				intent = new Intent(ct, BServiceListActivity.class);
+				intent.putExtra("SBMenuModel", menuModel);
+				ct.startActivity(intent);
+				break;
+			case 2://服务预约主页
+				ct.startActivity(new Intent("com.modular.booking.BookingListActivity"));
+				break;
+			case 3://uu运动
 //				ct.startActivity(new Intent(ct, UUSportActivity.class));
-                ct.startActivity(new Intent("com.modular.appme.UURanking"));
-                break;
-            case 4://我的审批
-                if (isB2b) {
-                    ct.startActivity(new Intent(ct, ProcessB2BActivity.class));
-                } else {
-                    ct.startActivity(new Intent(ct, ProcessMsgActivity.class));
-                }
-                break;
-            case 5://待办工作
-                if (isB2b) {
-                    ct.startActivity(new Intent("com.modular.task.TaskB2BActivity"));
-                } else {
-                    ct.startActivity(new Intent("com.modular.task.TaskActivity"));
-                }
-                break;
-            case 6:
-                setSubReadTime(DateFormatUtil.long2Str(DateFormatUtil.YMD));
-                ct.startActivity(new Intent(ct, Subscription2Activity.class));
-                break;
-            case REAL_TIME_FORM:
-                intent = new Intent(ct, RealTimeFormActivity.class);
-                ct.startActivity(intent);
-                break;
-            case BUSINESS_STATISTICS:
-                intent = new Intent(ct, BusinessTargetsActivity.class);
-                ct.startActivity(intent);
-                break;
-            case 9:
-                intent = new Intent(ct, CharitableActivity.class);
-                ct.startActivity(intent);
-                break;
-            default:
-                break;
-        }
-    }
+				ct.startActivity(new Intent("com.modular.appme.UURanking"));
+				break;
+			case 4:
+				if (isB2b) {
+					ct.startActivity(new Intent(ct, ProcessB2BActivity.class));
+				} else {
+					ct.startActivity(new Intent(ct, ProcessMsgActivity.class));
+				}
+				break;
+			case 5:
+				if (isB2b) {
+					ct.startActivity(new Intent("com.modular.task.TaskB2BActivity"));
+				} else {
+					ct.startActivity(new Intent("com.modular.task.TaskActivity"));
+				}
+				break;
+			case 6:
+				setSubReadTime(DateFormatUtil.long2Str(DateFormatUtil.YMD));
+				ct.startActivity(new Intent(ct, Subscription2Activity.class));
+				break;
+			case REAL_TIME_FORM:
+				intent = new Intent(ct, RealTimeFormActivity.class);
+				ct.startActivity(intent);
+				break;
+			case BUSINESS_STATISTICS:
+				intent = new Intent(ct, BusinessTargetsActivity.class);
+				ct.startActivity(intent);
+				break;
+			case 9:
+				intent = new Intent(ct, CharitableActivity.class);
+				ct.startActivity(intent);
+				break;
+			default:
+				break;
+		}
+	}
 }

+ 2 - 1
app_modular/apputils/src/main/AndroidManifest.xml

@@ -6,7 +6,8 @@
         android:label="@string/app_name"
         android:supportsRtl="true">
         <activity android:name=".activity.SingleImagePreviewActivity"></activity>
-
+        <activity android:name=".activity.SelectNetAcitivty"
+            android:label="搜索字段"/>
 
 
         <!-- alipay sdk begin -->

+ 315 - 0
app_modular/apputils/src/main/java/com/modular/apputils/activity/SelectNetAcitivty.java

@@ -0,0 +1,315 @@
+package com.modular.apputils.activity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v7.widget.DefaultItemAnimator;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.text.Editable;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.CheckBox;
+import android.widget.ListAdapter;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
+import com.common.config.BaseConfig;
+import com.common.data.JSONUtil;
+import com.common.data.ListUtils;
+import com.common.data.StringUtil;
+import com.core.app.MyApplication;
+import com.core.base.OABaseActivity;
+import com.core.net.http.http.OAHttpHelper;
+import com.core.net.http.http.OnHttpResultListener;
+import com.core.net.http.http.Request;
+import com.core.utils.CommonUtil;
+import com.core.utils.ToastUtil;
+import com.core.widget.EmptyLayout;
+import com.core.widget.VoiceSearchView;
+import com.core.widget.listener.EditChangeListener;
+import com.handmark.pulltorefresh.library.PullToRefreshBase;
+import com.handmark.pulltorefresh.library.PullToRefreshListView;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.ResultListener;
+import com.me.network.app.http.rx.ResultSubscriber;
+import com.modular.apputils.R;
+
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by Bitlike on 2017/11/27.
+ */
+
+public class SelectNetAcitivty extends OABaseActivity {
+    private HttpClient httpClient;
+    private String lastKey;
+    private int page = 1;
+
+
+    //intent
+    private String caller;//传进来的主表caller
+    private String gCaller;//传进来的附表caller,当是明细表时候存在
+    private String fieldKey;
+    private String corekey;
+
+
+    private PullToRefreshListView refreshListView;
+    private EmptyLayout mEmptyLayout;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.acitivty_net_select);
+        initView();
+    }
+
+    private void initView() {
+        VoiceSearchView voiceSearchView = (VoiceSearchView) findViewById(R.id.voiceSearchView);
+        refreshListView = (PullToRefreshListView) findViewById(R.id.refreshListView);
+        refreshListView.setMode(PullToRefreshBase.Mode.BOTH);
+        mEmptyLayout = new EmptyLayout(this, refreshListView.getRefreshableView());
+        mEmptyLayout.setShowLoadingButton(false);
+        mEmptyLayout.setShowEmptyButton(false);
+        mEmptyLayout.setShowErrorButton(false);
+        mEmptyLayout.setEmptyMessage("请输入条件查询");
+        voiceSearchView.addTextChangedListener(new EditChangeListener() {
+            @Override
+            public void afterTextChanged(Editable editable) {
+                lastKey = editable.toString();
+                loadSearch(page = 1, lastKey);
+            }
+        });
+        refreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
+            @Override
+            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
+                loadSearch(page = 1, lastKey);
+            }
+
+            @Override
+            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
+                loadSearch(++page, lastKey);
+
+            }
+        });
+        Intent intent = getIntent();
+        if (intent != null) {
+            fieldKey = intent.getStringExtra("fieldKey");
+            caller = intent.getStringExtra("caller");
+            gCaller = intent.getStringExtra("gCaller");
+            corekey = intent.getStringExtra("corekey");
+        }
+        String baseUrl = CommonUtil.getAppBaseUrl(this);
+        String sessionId = CommonUtil.getSharedPreferences(this, "sessionId");
+        Log.i("gongpengming", "baseUrl=" + baseUrl);
+        httpClient = new HttpClient.Builder(baseUrl)
+                .isDebug(true)
+//                .header("Cookie", "JSESSIONID=" + sessionId)
+                .add("master", CommonUtil.getMaster())
+                .add("sessionUser", CommonUtil.getEmcode())
+                .add("sessionId", sessionId)
+                .connectTimeout(5000)
+                .readTimeout(5000)
+                .build();
+        loadSearch(page = 1, lastKey = "");
+        showLoading();
+    }
+
+    private void loadSearch(int page, final String keyWork) {
+        String condition = null;
+        if (StringUtil.isEmpty(keyWork)) {
+            condition = "1=1";
+        } else {
+            condition = "upper(" + (StringUtil.isEmpty(corekey) ? fieldKey : corekey) + ") like '%" + keyWork.toUpperCase() + "%'";
+        }
+        HttpClient.Builder builder = new HttpClient.Builder();
+        boolean isForm = StringUtil.isEmpty(gCaller);
+        builder.url("mobile/common/dbfind.action")
+                .add("which", isForm ? "form" : "grid")
+                .add("caller", isForm ? caller : gCaller)
+                .add("field", fieldKey)
+                .header("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(this, "sessionId"))
+                .add("condition", condition)
+                .add("ob", "")
+                .add("_config", "")
+                .add("page", page)
+                .add("pageSize", 20)
+                .method(Method.GET);
+        if (!isForm) {
+            builder.add("gridField", fieldKey)
+                    .add("gridCaller", caller);//主从(单据caller   副从表传 本身的caller)
+        }
+        httpClient.Api().send(builder.build(), new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                if (!lastKey.equals(keyWork)) return;
+                try {
+                    handleData(o.toString());
+                    dimssLoading();
+                } catch (Exception e) {
+                    dimssLoading();
+                    if (mAdapter == null || ListUtils.isEmpty(mAdapter.models)) {
+                        mEmptyLayout.showEmpty();
+                    }
+                }
+                refreshListView.onRefreshComplete();
+            }
+        }));
+    }
+
+    private ListAdapter mAdapter = null;
+
+    private void handleData(String messgae) throws Exception {
+        LogUtil.prinlnLongMsg("gongpengming", "messgae=" + messgae);
+        JSONObject object = JSON.parseObject(messgae);
+        JSONArray dbfinds = JSONUtil.getJSONArray(object, "dbfinds","gridDbfinds");
+        String dataStr = JSONUtil.getText(object, "data");
+        JSONArray data = JSON.parseArray(dataStr);
+        setData2Adapter(data, dbfinds);
+    }
+
+    private void setData2Adapter(JSONArray data, JSONArray dbfinds) throws Exception {
+        Map<String, String> configMap = new HashMap<>();
+        //获取配置
+        JSONObject config = null;
+        String fieldKeyLike = null;
+        for (int i = 0; i < dbfinds.size(); i++) {
+            config = dbfinds.getJSONObject(i);
+            String dbGridField = JSONUtil.getText(config, "dbGridField","ds_dbfindfield");
+            String field = JSONUtil.getText(config, "field","ds_gridfield");
+            if (!StringUtil.isEmpty(dbGridField) && !StringUtil.isEmpty(field)) {
+                if (field.equals(fieldKey)) {
+                    fieldKeyLike = dbGridField;
+                }
+                configMap.put(dbGridField, field);
+            }
+        }
+        JSONObject o = null;
+        Bean b = null;
+        List<Bean> models = new ArrayList<>();
+        Map<String, String> jsonMap = null;
+        for (int i = 0; i < data.size(); i++) {
+            o = data.getJSONObject(i);
+            b = new Bean();
+            b.name = JSONUtil.getText(o, fieldKeyLike);
+            jsonMap = new HashMap<>();
+            for (Map.Entry<String, String> e : configMap.entrySet()) {
+                jsonMap.put(e.getValue(), JSONUtil.getText(o, e.getKey()));
+            }
+            b.json = JSONUtil.map2JSON(jsonMap);
+            if (!StringUtil.isEmpty(b.name))
+                models.add(b);
+        }
+        if (mAdapter == null) {
+            mAdapter = new ListAdapter(models);
+            refreshListView.setAdapter(mAdapter);
+            refreshListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+                @Override
+                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
+                    if (mAdapter != null) {
+                        Bean model = mAdapter.getModels((int) l);
+                        setResult(90, new Intent().putExtra("data", model.json));
+                        finish();
+
+                    }
+                }
+            });
+            if (ListUtils.isEmpty(models)) {
+                mEmptyLayout.showEmpty();
+            }
+        } else {
+            if (page == 1) {
+                mAdapter.setModels(models);
+                if (ListUtils.isEmpty(models)) {
+                    mEmptyLayout.showEmpty();
+                }
+            } else {
+                mAdapter.addModls(models);
+            }
+        }
+    }
+
+
+    class ListAdapter extends BaseAdapter {
+        private List<Bean> models;
+
+        public Bean getModels(int item) {
+            if (ListUtils.getSize(models) > item) {
+                return models.get(item);
+            }
+            return null;
+        }
+
+        public ListAdapter(List<Bean> models) {
+            this.models = models;
+        }
+
+        public void setModels(List<Bean> models) {
+            this.models = models;
+            notifyDataSetChanged();
+        }
+
+        private void addModls(List<Bean> models) {
+            if (this.models == null) {
+                this.models = new ArrayList<>();
+            }
+            this.models.addAll(models);
+            notifyDataSetChanged();
+        }
+
+        @Override
+        public int getCount() {
+            return ListUtils.getSize(this.models);
+        }
+
+        @Override
+        public Object getItem(int i) {
+            return models.get(i);
+        }
+
+        @Override
+        public long getItemId(int i) {
+            return i;
+        }
+
+        @Override
+        public View getView(int i, View view, ViewGroup viewGroup) {
+            ViewHoler holer = null;
+            if (view == null) {
+                holer = new ViewHoler();
+                view = LayoutInflater.from(ct).inflate(R.layout.select_list_item, null);
+                holer.name_tv = (TextView) view.findViewById(R.id.name_tv);
+                holer.select_scb = (CheckBox) view.findViewById(R.id.select_scb);
+                holer.select_scb.setVisibility(View.GONE);
+                view.setTag(holer);
+            } else {
+                holer = (ViewHoler) view.getTag();
+            }
+            Bean bean = models.get(i);
+            holer.name_tv.setText(bean.name);
+            return view;
+        }
+
+        class ViewHoler {
+            TextView name_tv;
+            CheckBox select_scb;
+        }
+    }
+
+    private class Bean {
+        String name;
+        String json;
+    }
+}

+ 30 - 0
app_modular/apputils/src/main/java/com/modular/apputils/adapter/BaseRecyclerAdapter.java

@@ -0,0 +1,30 @@
+package com.modular.apputils.adapter;
+
+import android.content.Context;
+import android.support.v7.widget.RecyclerView;
+import android.view.ViewGroup;
+
+/**
+ * Created by Bitlike on 2017/11/22.
+ */
+
+public class BaseRecyclerAdapter extends RecyclerView.Adapter {
+    private Context context;
+    private int layoutId;
+
+
+    @Override
+    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        return null;
+    }
+
+    @Override
+    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
+
+    }
+
+    @Override
+    public int getItemCount() {
+        return 0;
+    }
+}

+ 23 - 0
app_modular/apputils/src/main/res/layout/acitivty_net_select.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:focusableInTouchMode="true"
+    android:orientation="vertical">
+
+    <com.core.widget.VoiceSearchView
+        android:id="@+id/voiceSearchView"
+        android:layout_width="match_parent"
+        android:focusableInTouchMode="false"
+        android:layout_height="48dp" />
+
+    <com.handmark.pulltorefresh.library.PullToRefreshListView
+        android:id="@+id/refreshListView"
+        style="@style/ListViewBasic"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:divider="@color/item_line"
+        android:dividerHeight="@dimen/line"
+        android:scrollbars="none"
+        android:scrollingCache="false" />
+</LinearLayout>

+ 16 - 0
app_modular/apputils/src/main/res/layout/item_select_list.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/selector_me_menu_item_bg"
+    android:padding="8dp">
+    <TextView
+        android:id="@+id/name_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerVertical="true"
+        android:padding="10dp"
+        android:text="fsdkdlasfkladm"
+        android:textColor="@color/text_main"
+        android:textSize="@dimen/text_main" />
+</RelativeLayout>

+ 28 - 0
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/DeviceManageActivity.java

@@ -0,0 +1,28 @@
+package com.uas.appworks.CRM.erp.activity;
+
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.support.v7.widget.RecyclerView;
+
+import com.core.base.BaseActivity;
+import com.uas.appworks.R;
+
+public class DeviceManageActivity extends BaseActivity {
+
+    private RecyclerView contantRv;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_device_manage);
+        initView();
+    }
+
+    private void initView() {
+        contantRv = (RecyclerView)  findViewById(R.id.contantRv);
+
+
+
+
+    }
+}

+ 61 - 0
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/adapter/DeviceManageAdapter.java

@@ -0,0 +1,61 @@
+package com.uas.appworks.CRM.erp.adapter;
+
+import android.content.Context;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.common.data.ListUtils;
+import com.nostra13.universalimageloader.core.ImageLoader;
+import com.uas.appworks.CRM.erp.model.DeviceManage;
+import com.uas.appworks.R;
+
+import java.util.List;
+
+/**
+ * Created by Bitlike on 2017/11/22.
+ */
+
+public class DeviceManageAdapter extends RecyclerView.Adapter<DeviceManageAdapter.ViewHolder> {
+
+    private Context ct;
+    private List<DeviceManage> models;
+
+
+    public DeviceManageAdapter(Context ct, List<DeviceManage> models) {
+        this.ct = ct;
+        this.models = models;
+    }
+
+    @Override
+    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        return new ViewHolder(LayoutInflater.from(ct).inflate(R.layout.item_devicemanage_adapter, parent, false));
+    }
+
+    @Override
+    public void onBindViewHolder(ViewHolder holder, int position) {
+        DeviceManage model=models.get(position);
+        holder.contentTv.setText(model.getName());
+        holder.contentTv.setText(model.getName());
+
+    }
+
+    @Override
+    public int getItemCount() {
+        return ListUtils.getSize(models);
+    }
+
+    class ViewHolder extends RecyclerView.ViewHolder {
+        TextView contentTv;
+        ImageView contentImag;
+
+        public ViewHolder(View itemView) {
+            super(itemView);
+            contentImag=(ImageView)itemView.findViewById(R.id.contentImag);
+            contentTv=(TextView)itemView.findViewById(R.id.contentTv);
+        }
+    }
+}

+ 36 - 0
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/model/DeviceManage.java

@@ -0,0 +1,36 @@
+package com.uas.appworks.CRM.erp.model;
+
+/**
+ * Created by Bitlike on 2017/11/22.
+ */
+
+public class DeviceManage {
+    private int id;
+    private int reId;
+    private String name;
+
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getReId() {
+        return reId;
+    }
+
+    public void setReId(int reId) {
+        this.reId = reId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}

+ 8 - 5
app_modular/appworks/src/main/java/com/uas/appworks/widget/SelectPlayPop.java

@@ -41,7 +41,7 @@ public class SelectPlayPop {
         View view = LayoutInflater.from(ct).inflate(R.layout.pop_play_select, null);
         window.setContentView(view);
         window.getContentView().measure(0, 0);
-        int height = DisplayUtil.dip2px(ct, 270);
+        int height = DisplayUtil.dip2px(ct, 290);
         window.setHeight(height);
         window.setWidth(DisplayUtil.getSreechWidth(ct));
         initView(ct, window, view, model, onSureListener);
@@ -79,10 +79,13 @@ public class SelectPlayPop {
                     String payStr = editable.toString();
                     double num = Double.valueOf(payStr);
                     payNumTv.setText(StringUtil.getMessage(R.string.new_select_pay) + " " + num);
-                    int position = payStr.length() - payStr.indexOf(".") - 1;
-                    LogUtil.i("position=" + position);
-                    if (position > 2) {
-                        payNumTv.setText(R.string.input_two_double);
+                    int dd = payStr.indexOf(".");
+                    int ll = payStr.length();
+                    if (dd != -1) {
+                        int position = ll - dd - 1;
+                        if (position > 2) {
+                            payNumTv.setText(R.string.input_two_double);
+                        }
                     }
                 } catch (Exception e) {
 

+ 13 - 0
app_modular/appworks/src/main/res/layout/activity_device_manage.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/base_bg"
+    tools:context="com.uas.appworks.CRM.erp.activity.DeviceManageActivity">
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/contantRv"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
+</RelativeLayout>

+ 23 - 0
app_modular/appworks/src/main/res/layout/item_devicemanage_adapter.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:padding="@dimen/padding">
+
+
+    <de.hdodenhof.circleimageview.CircleImageView
+        android:id="@+id/contentImag"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerHorizontal="true"
+        android:src="@drawable/uuu" />
+
+    <TextView
+        android:id="@+id/contentTv"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/contentImag"
+        android:layout_marginTop="@dimen/padding"
+        android:gravity="center_horizontal"
+        android:text="name" />
+</RelativeLayout>