Browse Source

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

Bitliker 8 years ago
parent
commit
de20946595

+ 4 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/broadcast/MsgBroadcast.java

@@ -6,6 +6,7 @@ import android.support.v4.content.LocalBroadcastManager;
 
 import com.xzjmyk.pm.activity.AppConfig;
 import com.xzjmyk.pm.activity.MyApplication;
+import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 
 /**
  * 用于聊天消息的广播,更新MainActivity Tab栏显示的未读数量 和 消息界面数据的更新
@@ -26,7 +27,9 @@ public class MsgBroadcast {
      * @return
      */
     public static void broadcastMsgUiUpdate(Context context) {
-        context.sendBroadcast(new Intent(ACTION_MSG_UI_UPDATE));
+        LogUtil.d("roamer","广播:ACTION_MSG_UI_UPDATE");
+       // context.sendBroadcast(new Intent(ACTION_MSG_UI_UPDATE));
+        LocalBroadcastManager.getInstance(MyApplication.getInstance()).sendBroadcast(new Intent(ACTION_MSG_UI_UPDATE));
     }
 
     public static void broadcastMsgNumReset(Context context) {

+ 3 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/account/LoginActivity.java

@@ -83,6 +83,9 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
         if (!MyApplication.getInstance().getBdLocationHelper().isLocationUpdate()) {
             MyApplication.getInstance().getBdLocationHelper().requestLocation();
         }
+        if (ViewUtil.mdProcessDialog!=null){
+            ViewUtil.mdProcessDialog.cancel();
+        }
     }
 
     @Override

+ 3 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/BasicInfoActivity.java

@@ -762,6 +762,9 @@ public class BasicInfoActivity extends BaseActivity implements NewFriendListener
                         model.setOwnerId(MyApplication.getInstance().mLoginUser.getUserId());
                         model.setWhichsys(CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_master"));
                         model.setType(1);
+                        if (StringUtils.isEmpty(model.getWhichsys())){
+                            model.setWhichsys("");
+                        }
                         ContactsDao.getInstance().update(model);
                         // 由陌生或者关注变为好友了,那么右上角更多操作可以显示了
                         initFriendMoreAction();

+ 11 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/contact/ContactFragment.java

@@ -50,6 +50,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.UserRoleUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.AutoErpService;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.CommonInterface;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.CompanyHandlerInfoUtil;
@@ -238,7 +239,15 @@ public class ContactFragment extends EasyFragment implements View.OnClickListene
         mPullToRefreshView.setOnRefreshListener(new PullToRefreshView.OnRefreshListener() {
             @Override
             public void onRefresh() {
-                loadFriendsNet();
+                if ("1".equals(UserRoleUtils.getUserRole())){
+                    mPullToRefreshView.setRefreshing(false, false);
+                    mcProgressDialog.dismiss();
+                   
+                }else{
+                    loadFriendsNet();
+                   
+                }
+                
             }
         });
         //item点击事件处理
@@ -276,7 +285,7 @@ public class ContactFragment extends EasyFragment implements View.OnClickListene
         adapter = new FriendSortAdapter(ct, showDatas);
         refreshListView.setAdapter(adapter);
         loadDataInThread();
-        mcProgressDialog.show();
+        //mcProgressDialog.show();
 
        
     }

+ 262 - 237
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/contanct/ContactsActivity.java

@@ -58,6 +58,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.OACheckUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.UserRoleUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.CommonInterface;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.CompanyHandlerInfoUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.http.OAHttpHelper;
@@ -81,7 +82,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
-public class ContactsActivity extends OABaseActivity implements ContactsAdapter.ResultItemsInface{
+public class ContactsActivity extends OABaseActivity implements ContactsAdapter.ResultItemsInface {
 
     @ViewInject(R.id.mList)
     private PullToRefreshListView mlist;
@@ -90,13 +91,13 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
 
     private boolean mBind;
     private CoreService mXmppService;
-    
+
     private ContactsAdapter adapter;
     private ContactsDao contactsDao;
     private EmptyLayout emptyLayout;
-    private List<ContactsModel> models=new ArrayList<>();
-    private List<ContactsModel> tmodels=new ArrayList<>();
-    private int type=0;//0默认情况。1 其它界面调用
+    private List<ContactsModel> models = new ArrayList<>();
+    private List<ContactsModel> tmodels = new ArrayList<>();
+    private int type = 0;//0默认情况。1 其它界面调用
     private String searchKey;
 
 
@@ -105,10 +106,10 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_contacts);
         ViewUtils.inject(this);
-        contactsDao=ContactsDao.getInstance();
-        
+        contactsDao = ContactsDao.getInstance();
+
         initView();
-        
+
         initData();
     }
 
@@ -125,49 +126,49 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
     };
 
     private void initView() {
-        
-        if (getIntent()!=null){
-            type=getIntent().getIntExtra("type",0);
-            String title=getIntent().getStringExtra("title");
-            if (!StringUtils.isEmpty(title)){
+
+        if (getIntent() != null) {
+            type = getIntent().getIntExtra("type", 0);
+            String title = getIntent().getStringExtra("title");
+            if (!StringUtils.isEmpty(title)) {
                 getSupportActionBar().setTitle(title);
-            }else{
+            } else {
                 getSupportActionBar().setTitle(getString(R.string.common_Contact_person));
             }
         }
         //设置为空显示列表
-        emptyLayout = new EmptyLayout(ct,mlist.getRefreshableView());
+        emptyLayout = new EmptyLayout(ct, mlist.getRefreshableView());
         emptyLayout.setShowLoadingButton(false);
         emptyLayout.setShowEmptyButton(false);
         emptyLayout.setShowErrorButton(false);
 //        emptyLayout.setEmptyViewRes(R.layout.book_empty_list);
-        
+
         mBind = activity.bindService(CoreService.getIntent(), mServiceConnection, activity.BIND_AUTO_CREATE);
         mlist.setMode(PullToRefreshBase.Mode.PULL_FROM_START);
         mlist.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() {
             @Override
             public void onRefresh(PullToRefreshBase<ListView> refreshView) {
-              ThreadPool.getThreadPool().addTask(new Runnable() {
-                  @Override
-                  public void run() {
-                      if (CommonUtil.isNetWorkConnected(MyApplication.getInstance())) {
-                          if (!ListUtils.isEmpty(tmodels)) {
-                              tmodels.clear();
-                          }
-                          contactsDao.delete();//删除缓存
-                          loadUUFriendForNet();//先加载UU好友---》企业架构人员----》本地通讯录
-                      }else{
-                          getCaceData(true);//先加载UU好友---》企业架构人员----》本地通讯录
-                      }
-                  }
-              });
+                ThreadPool.getThreadPool().addTask(new Runnable() {
+                    @Override
+                    public void run() {
+                        if (CommonUtil.isNetWorkConnected(MyApplication.getInstance())) {
+                            if (!ListUtils.isEmpty(tmodels)) {
+                                tmodels.clear();
+                            }
+                            contactsDao.delete();//删除缓存
+                            loadUUFriendForNet();//先加载UU好友---》企业架构人员----》本地通讯录
+                        } else {
+                            getCaceData(true);//先加载UU好友---》企业架构人员----》本地通讯录
+                        }
+                    }
+                });
             }
         });
         mlist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                ContactsAdapter.ViewHolder viewHolder= ( ContactsAdapter.ViewHolder) view.getTag();
-                if (type==0) {//默认情况
+                ContactsAdapter.ViewHolder viewHolder = (ContactsAdapter.ViewHolder) view.getTag();
+                if (type == 0) {//默认情况
                     if (viewHolder.model.getType() == 3) {
                         return;
                     }
@@ -183,18 +184,18 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                     //friend.setStatus();
                     intent.putExtra("friend", friend);
                     startActivity(intent);
-                }else if(type==1){ //获取对象界面
-                    if (viewHolder.model.getType() == 3){
+                } else if (type == 1) { //获取对象界面
+                    if (viewHolder.model.getType() == 3) {
                         //邀请注册  拿IMID
-                        Intent intent=new Intent();
-                        intent.putExtra("data",viewHolder.model);
-                        setResult(0x20,intent);
+                        Intent intent = new Intent();
+                        intent.putExtra("data", viewHolder.model);
+                        setResult(0x20, intent);
+                        finish();
+                    } else {
+                        Intent intent = new Intent();
+                        intent.putExtra("data", viewHolder.model);
+                        setResult(0x20, intent);
                         finish();
-                    }else{
-                     Intent intent=new Intent();
-                     intent.putExtra("data",viewHolder.model);
-                     setResult(0x20,intent);
-                     finish();
                     }
                 }
             }
@@ -203,48 +204,50 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
         voiceSearchView.addTextChangedListener(new EditChangeListener() {
             @Override
             public void afterTextChanged(Editable s) {
-               searchKey= s.toString();
-                if(!StringUtils.isEmpty(s.toString())){
+                searchKey = s.toString();
+                LogUtil.d("arison"," searchKey:"+searchKey);
+                if (!StringUtils.isEmpty(s.toString())) {
                     mlist.setMode(PullToRefreshBase.Mode.DISABLED);
-                 List<ContactsModel> cacheData=   contactsDao.find(s.toString());
-                if (adapter!=null){
-                    if (ListUtils.isEmpty(cacheData)){
-                        searchContactsByNet(s.toString());
-                        return;
-                    }
-                    models.clear();
-                    models.addAll(cacheData);
-                    adapter.notifyDataSetChanged();
-                    //查询需要优化
-                    getStateByPhones(cacheData);
-                    if (models.size()==0){
-                        emptyLayout.showEmpty();
+                    List<ContactsModel> cacheData = contactsDao.find(s.toString());
+                    if (adapter != null) {
+                        if (ListUtils.isEmpty(cacheData)) {
+                            LogUtil.d("arison","searchContactsByNet:"+searchKey);
+                            searchContactsByNet(s.toString());
+                            return;
+                        }
+                        models.clear();
+                        models.addAll(cacheData);
+                        adapter.notifyDataSetChanged();
+                        //查询需要优化
+                        getStateByPhones(cacheData);
+                        if (models.size() == 0) {
+                            emptyLayout.showEmpty();
+                        }
+                    } else {
+
                     }
-                }else{
-                    
-                }
-                }else{
+                } else {
                     mlist.setMode(PullToRefreshBase.Mode.PULL_FROM_START);
-                    getCaceData(true);
+                    getCaceData(false);
                 }
-             
+
             }
         });
-        
+
     }
 
     private void initData() {
-        if(!ListUtils.isEmpty(models)){
+        if (!ListUtils.isEmpty(models)) {
             models.clear();
         }
         showLoading();
-        adapter=new ContactsAdapter(this,models);
+        adapter = new ContactsAdapter(this, models);
         mlist.setAdapter(adapter);
         String[] permissions = {Manifest.permission.READ_CONTACTS};
         if (PermissionUtil.lacksPermissions(ct, permissions)) {
             PermissionUtil.requestPermission(this, PermissionUtil.DEFAULT_REQUEST, permissions);
         } else {
-            getCaceData(true);
+            getCaceData(false);
         }
     }
 
@@ -253,25 +256,24 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
         super.onRequestPermissionsResult(requestCode, permissions, grantResults);
         if (requestCode == PermissionUtil.DEFAULT_REQUEST) {
             if (grantResults.length != 1 || grantResults[0] != PackageManager.PERMISSION_GRANTED) {
-                ToastUtil.showToast(ct,R.string.not_system_permission);
+                ToastUtil.showToast(ct, R.string.not_system_permission);
             } else {
-                getCaceData(true);
+                getCaceData(false);
             }
         }
     }
 
-  
 
     //1
-    public void loadCompanyContacts(){
+    public void loadCompanyContacts() {
         ThreadPool.getThreadPool().addTask(new Runnable() {
             @Override
             public void run() {
                 List<EmployeesEntity> emdatas = getEmListByDB();
-                if (emdatas!=null){
-                    LogUtil.d("Test","企业架构人员不为空!");
-                    for (EmployeesEntity entity:emdatas){
-                        ContactsModel model=new ContactsModel();
+                if (emdatas != null) {
+                    LogUtil.d("Test", "企业架构人员不为空!");
+                    for (EmployeesEntity entity : emdatas) {
+                        ContactsModel model = new ContactsModel();
                         model.setImid(String.valueOf(entity.getEm_IMID()));
                         model.setType(2);
                         model.setOwnerId(MyApplication.getInstance().mLoginUser.getUserId());
@@ -283,25 +285,25 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                         tmodels.add(model);
                     }
                     //执行第二步
-                  loadLocalContacts();
-                }else{
+                    loadLocalContacts();
+                } else {
                     //联网取企业架构
                     loadUASFriendsNet();
                 }
             }
         });
     }
-    
+
     //2
-    public void loadIMContacts(){
+    public void loadIMContacts() {
         ThreadPool.getThreadPool().addTask(new Runnable() {
             @Override
             public void run() {
-                List<Friend>  friends = FriendDao.getInstance().getFriends(MyApplication.getInstance().mLoginUser.getUserId());
-                if (friends!=null){
-                    LogUtil.d("Test","IM好友不为空!");
-                    for (Friend entity:friends){
-                        ContactsModel model=new ContactsModel();
+                List<Friend> friends = FriendDao.getInstance().getFriends(MyApplication.getInstance().mLoginUser.getUserId());
+                if (friends != null) {
+                    LogUtil.d("Test", "IM好友不为空!");
+                    for (Friend entity : friends) {
+                        ContactsModel model = new ContactsModel();
                         model.setImid(String.valueOf(entity.getUserId()));
                         model.setType(1);
                         model.setName(entity.getShowName());
@@ -313,28 +315,28 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                         tmodels.add(model);
                     }
                     loadCompanyContacts();
-                }else{
+                } else {
                     //联网取UU好友数据
                     loadUUFriendForNet();
                 }
-           
+
             }
-            
+
         });
     }
 
     //3需要权限
-    public void loadLocalContacts(){
+    public void loadLocalContacts() {
         ThreadPool.getThreadPool().addTask(new Runnable() {
             @Override
             public void run() {
                 List<Contacts> contacts =
-                ContactsUtils.getContacts1();
-                if ( contacts !=null){
-                    for (Contacts entity: contacts ){
-                        ContactsModel model=new ContactsModel();
+                        ContactsUtils.getContacts1();
+                if (contacts != null) {
+                    for (Contacts entity : contacts) {
+                        ContactsModel model = new ContactsModel();
                         model.setImid("0");
-                        model.setName(StringUtils.isEmpty(entity.getName())?entity.getNickname():entity.getName());
+                        model.setName(StringUtils.isEmpty(entity.getName()) ? entity.getNickname() : entity.getName());
                         model.setType(3);
                         model.setEmail("");
                         model.setOwnerId(MyApplication.getInstance().mLoginUser.getUserId());
@@ -342,7 +344,7 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                         model.setWhichsys("");
                         model.setCompany("");
                         tmodels.add(model);
-                        
+
                     }
                     contactsDao.save(tmodels);
                     getCaceData(false);
@@ -353,52 +355,61 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
     }
 
     /**
-      * @desc:加载通讯录数据
-      * @author:Arison on 2017/7/19
-      */
-    public void getCaceData(final boolean isHasNet){
+     * @desc:加载通讯录数据
+     * @author:Arison on 2017/7/19
+     */
+    public void getCaceData(final boolean isHasNet) {
         ThreadPool.getThreadPool().addTask(new Runnable() {
             @Override
             public void run() {
-              final List<ContactsModel> lists=  getLocalContactsByDB();
-               if (!ListUtils.isEmpty(lists)&&!isHasNet){
-                   LogUtil.d("Test","缓存不为空!");
-                   getStateByPhones(lists);
-                   OAHttpHelper.getInstance().post(new Runnable() {
-                       @Override
-                       public void run() {
-                           //更新ui
-                           if (adapter!=null) {
-                               models.clear();
-                               models.addAll(lists);
-                               adapter.notifyDataSetChanged();
-                               if (adapter.getCount()==0)emptyLayout.showEmpty();
-                               mlist.onRefreshComplete();
-                               voiceSearchView.getSearch_edit().setHint(lists.size()+"位联系人");
-                               dimssLoading();
-                           }
-                       }
-                   });
-                   
-               }else{
-                   LogUtil.d("Test","-----------缓存为空!---------");
-                   tmodels.clear();
-                  loadIMContacts();
-               }
+                final List<ContactsModel> lists = getLocalContactsByDB();
+                LogUtil.d("Test", "!ListUtils.isEmpty(lists)=" + !ListUtils.isEmpty(lists));
+                boolean falg = !ListUtils.isEmpty(lists) && !isHasNet;
+                LogUtil.d("Test", "缓存不为空!" + falg);
+                if (falg) {
+                    LogUtil.d("Test", "缓存不为空!");
+                    getStateByPhones(lists);
+                    OAHttpHelper.getInstance().post(new Runnable() {
+                        @Override
+                        public void run() {
+                            //更新ui
+                            if (adapter != null) {
+                                models.clear();
+                                models.addAll(lists);
+                                adapter.notifyDataSetChanged();
+                                if (adapter.getCount() == 0) emptyLayout.showEmpty();
+                                mlist.onRefreshComplete();
+                                voiceSearchView.getSearch_edit().setHint(lists.size() + "位联系人");
+                                dimssLoading();
+                            }
+                        }
+                    });
+
+                } else {
+                    LogUtil.d("Test", "-----------缓存为空!---------");
+//                   tmodels.clear();
+//                   contactsDao.delete();
+//                  loadIMContacts();
+                    if (!ListUtils.isEmpty(tmodels)) {
+                        tmodels.clear();
+                    }
+                    contactsDao.delete();//删除缓存
+                    loadUUFriendForNet();//先加载UU好友---》企业架构人员----》本地通讯录
+                }
             }
         });
     }
-    
-    private List<ContactsModel> getLocalContactsByDB(){
-        if (StringUtils.isEmpty(searchKey)){
-            List<ContactsModel> models=contactsDao.find();
-           return  models;
-        }else{
-            return  contactsDao.find(searchKey);
+
+    private List<ContactsModel> getLocalContactsByDB() {
+        if (StringUtils.isEmpty(searchKey)) {
+            List<ContactsModel> models = contactsDao.find();
+            return models;
+        } else {
+            return contactsDao.find(searchKey);
         }
     }
 
-    private List<EmployeesEntity> getEmListByDB()  {
+    private List<EmployeesEntity> getEmListByDB() {
         DBManager manager = new DBManager();
         String master = CommonUtil.getMaster();
         List<EmployeesEntity> emList = null;
@@ -406,20 +417,20 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
             try {
                 emList = manager.select_getEmployee(new String[]{master}, "whichsys=?");
             } catch (Exception e) {
-                
+
             }
         }
         manager.closeDB();
         return emList;
     }
-    
-    
+
+
     @Deprecated
-    private void  getStateByPhones(final  List<ContactsModel> models){
+    private void getStateByPhones(final List<ContactsModel> models) {
         StringBuilder builder = new StringBuilder();
-        int i=0;
-        for (ContactsModel u:models) {
-            if (u.getType()==3) {
+        int i = 0;
+        for (ContactsModel u : models) {
+            if (u.getType() == 3) {
                 if (i == models.size() - 1) {
                     builder.append(u.getPhone());
                 } else {
@@ -433,14 +444,14 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
         params.put("token", MyApplication.getInstance().mAccessToken);
         params.put("userid", myUserId);
         params.put("telephones", builder.toString());
-        LogUtil.d("array myUserId="+myUserId);
-        LogUtil.d("array builder.toString="+builder.toString());
+        LogUtil.d("array myUserId=" + myUserId);
+        LogUtil.d("array builder.toString=" + builder.toString());
         StringJsonObjectRequest<String> request = new StringJsonObjectRequest<String>(
                 MyApplication.getInstance().getConfig().APP_QUER_YUSER, new Response.ErrorListener() {
             @Override
             public void onErrorResponse(VolleyError arg0) {
 //                ToastUtil.showErrorNet(MyApplication.getInstance());
-             //   showModel(models);
+                //   showModel(models);
             }
         }, new StringJsonObjectRequest.Listener<String>() {
             @Override
@@ -453,6 +464,7 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
         }, String.class, params);
         MyApplication.getInstance().getFastVolley().addDefaultRequest("Volley", request);
     }
+
     @Deprecated
     private void hanlderAppQueryuserInThread(String message) {
         if (new JsonValidator().validate(message)) {
@@ -462,7 +474,7 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
             String user = object.getString("user");
             JSONArray array = JSON.parseArray(user);
             LogUtil.i("array=" + array);
- 
+
             if (!ListUtils.isEmpty(array)) {
                 JSONObject o = null;
 //                for (ContactsModel model:models){
@@ -473,14 +485,14 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                     String telephone = OACheckUtil.getJson2Text(o, "telephone");
                     String isfriend = OACheckUtil.getJson2Text(o, "isfriend");
                     int _id = OACheckUtil.getJsonIntager(o, "_id");
-                    for (int j=0;j<models.size();j++) {
-                      ContactsModel  model=models.get(j);
+                    for (int j = 0; j < models.size(); j++) {
+                        ContactsModel model = models.get(j);
                         if (model.getPhone().equals(telephone)) {
-                            if (isfriend.equals("0")){
+                            if (isfriend.equals("0")) {
                                 model.setType(2);//非好友
                                 model.setImid(String.valueOf(_id));
-                               // contactsDao.update(model,String.valueOf(_id));
-                            }else if (isfriend.equals("1")){
+                                // contactsDao.update(model,String.valueOf(_id));
+                            } else if (isfriend.equals("1")) {
                                 model.setType(1);//好友
                                 model.setImid(String.valueOf(_id));
                             }
@@ -491,19 +503,19 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
             }
         }
         //计算全部数据完成
-       
+
     }
 
     @Override
-    public void onResultForItems(View view,ContactsModel model,int position) {
-        TextView textView=(TextView) view;
-        String add=MyApplication.getInstance().getString(R.string.add);
-        String invite=MyApplication.getInstance().getString(R.string.invite);
-        if (textView.getText().toString().equals(add)){
-            addUser(model,position);
+    public void onResultForItems(View view, ContactsModel model, int position) {
+        TextView textView = (TextView) view;
+        String add = MyApplication.getInstance().getString(R.string.add);
+        String invite = MyApplication.getInstance().getString(R.string.invite);
+        if (textView.getText().toString().equals(add)) {
+            addUser(model, position);
         }
-        if (textView.getText().toString().equals(invite)){
-            invite(model,position);
+        if (textView.getText().toString().equals(invite)) {
+            invite(model, position);
         }
     }
 
@@ -521,37 +533,37 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                 MyApplication.getInstance().getConfig().FRIENDS_ATTENTION_ADD, new Response.ErrorListener() {
             @Override
             public void onErrorResponse(VolleyError arg0) {
-                 dimssLoading();
+                dimssLoading();
                 ToastUtil.showErrorNet(activity);
             }
         }, new StringJsonObjectRequest.Listener<AddAttentionResult>() {
             @Override
             public void onResponse(ObjectResult<AddAttentionResult> result) {
-                 dimssLoading();
+                dimssLoading();
                 boolean success = Result.defaultParser(MyApplication.getInstance(), result, true);
                 String message = result.toString();
                 if (success) {
                     showToast(R.string.add_attention_succ, R.color.load_submit);
-                        // 添加为关注
-                        User mUser=new User();
-                        mUser.setUserId(String.valueOf(user.getImid()));//已经开通了UU IM的人
-                        mUser.setNickName(user.getName());//手机通讯录的名字
-                        // 发送推送的消息
-                        NewFriendMessage mess = NewFriendMessage.createWillSendMessage(
-                                MyApplication.getInstance().mLoginUser, XmppMessage.TYPE_FRIEND, null, mUser);
-                        mXmppService.sendNewFriendMessage(mUser.getUserId(), mess);
-                        // 添加为好友
-                        NewFriendDao.getInstance().ascensionNewFriend(mess, Friend.STATUS_FRIEND);
-                       
-                     
-                      ContactsModel tData=  models.get(position);
-                      if (StringUtils.isEmpty(tData.getWhichsys())){
-                          tData.setWhichsys("");
-                      }
-                      tData.setType(1);
-                      LogUtil.d("Test","tdata:"+JSON.toJSONString(tData));
-                      contactsDao.update(tData);
-                      adapter.notifyDataSetChanged();
+                    // 添加为关注
+                    User mUser = new User();
+                    mUser.setUserId(String.valueOf(user.getImid()));//已经开通了UU IM的人
+                    mUser.setNickName(user.getName());//手机通讯录的名字
+                    // 发送推送的消息
+                    NewFriendMessage mess = NewFriendMessage.createWillSendMessage(
+                            MyApplication.getInstance().mLoginUser, XmppMessage.TYPE_FRIEND, null, mUser);
+                    mXmppService.sendNewFriendMessage(mUser.getUserId(), mess);
+                    // 添加为好友
+                    NewFriendDao.getInstance().ascensionNewFriend(mess, Friend.STATUS_FRIEND);
+
+
+                    ContactsModel tData = models.get(position);
+                    if (StringUtils.isEmpty(tData.getWhichsys())) {
+                        tData.setWhichsys("");
+                    }
+                    tData.setType(1);
+                    LogUtil.d("Test", "tdata:" + JSON.toJSONString(tData));
+                    contactsDao.update(tData);
+                    adapter.notifyDataSetChanged();
                 }
             }
         }, AddAttentionResult.class, params);
@@ -562,22 +574,23 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
     private void invite(ContactsModel user, int position) {
         LogUtil.i("invite");
         final String name = CommonUtil.getName();
-        final String phone = user.getPhone().trim().replaceAll(" ","");
-        if (!com.xzjmyk.pm.activity.util.StringUtils.isMobileNumber(phone)) {
-            showToast("选择人员电话号码为空或是格式不正确", R.color.load_submit);
-            return;
-        }
+        final String phone = user.getPhone().trim().replaceAll(" ", "");
+        ;
+//        if (!com.xzjmyk.pm.activity.util.StringUtils.isMobileNumber(phone)) {
+//            showToast("选择人员电话号码为空或是格式不正确", R.color.load_submit);
+//            return;
+//        }
         StringJsonObjectRequest<AddAttentionResult> request = new StringJsonObjectRequest<AddAttentionResult>(
                 Request.Method.POST, "http://message.ubtob.com/sms/send", new Response.ErrorListener() {
             @Override
             public void onErrorResponse(VolleyError arg0) {
-               dimssLoading();
+                dimssLoading();
             }
         }, new StringJsonObjectRequest.Listener<AddAttentionResult>() {
             @Override
             public void onResponse(ObjectResult<AddAttentionResult> result) {
                 String message = result.toString();
-              showToast("短信发送成功", R.color.load_submit);
+                showToast("短信发送成功", R.color.load_submit);
                 LogUtil.i("message=" + message);
             }
         }, AddAttentionResult.class, null) {
@@ -613,17 +626,22 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
             public void result(@NonNull boolean success, @NonNull int what, @Nullable String message) {
                 try {
                     if (success) {
+                        String role = UserRoleUtils.getUserRole();
+                        if ("1".equals(role)) {
+                            //个人用户不需要加载企业架构
+                            loadLocalContacts();
+                        }
                         boolean isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
                         JSONObject object = JSON.parseObject(message);
-                        List<EmployeesEntity> emdatas=null;
+                        List<EmployeesEntity> emdatas = null;
                         if (isB2b) {
-                            emdatas =CompanyHandlerInfoUtil.getEmployeesByB2b(object);
+                            emdatas = CompanyHandlerInfoUtil.getEmployeesByB2b(object);
                         } else {
-                           emdatas = CompanyHandlerInfoUtil.getEmployeesByNet(object);
+                            emdatas = CompanyHandlerInfoUtil.getEmployeesByNet(object);
                         }
-                        if (ListUtils.isEmpty(emdatas))return;
-                        for (EmployeesEntity entity:emdatas){
-                            ContactsModel model=new ContactsModel();
+                        if (ListUtils.isEmpty(emdatas)) return;
+                        for (EmployeesEntity entity : emdatas) {
+                            ContactsModel model = new ContactsModel();
                             model.setImid(String.valueOf(entity.getEm_IMID()));
                             model.setType(2);
                             model.setOwnerId(MyApplication.getInstance().mLoginUser.getUserId());
@@ -635,7 +653,7 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                             tmodels.add(model);
                         }
                         loadLocalContacts();
-                    }else{
+                    } else {
                         loadLocalContacts();
                     }
                 } catch (Exception e) {
@@ -647,11 +665,12 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
 
 
     String HASHCODE = Integer.toHexString(this.hashCode()) + "@";
+
     private void loadUUFriendForNet() {
         HashMap<String, String> params = new HashMap<String, String>();
         params.put("access_token", MyApplication.getInstance().mAccessToken);
-        LogUtil.d("Test", "url:"+MyApplication.getInstance().getConfig().FRIENDS_ATTENTION_LIST);
-        LogUtil.d("Test","access_token"+MyApplication.getInstance().mAccessToken);
+        LogUtil.d("Test", "url:" + MyApplication.getInstance().getConfig().FRIENDS_ATTENTION_LIST);
+        LogUtil.d("Test", "access_token" + MyApplication.getInstance().mAccessToken);
         StringJsonArrayRequest<AttentionUser> request = new StringJsonArrayRequest<AttentionUser>(
                 MyApplication.getInstance().getConfig().FRIENDS_ATTENTION_LIST, new Response.ErrorListener() {
             @Override
@@ -661,17 +680,17 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
         }, new StringJsonArrayRequest.Listener<AttentionUser>() {
             @Override
             public void onResponse(ArrayResult<AttentionUser> result) {
-                LogUtil.d("Test","result:"+result);
+                LogUtil.d("Test", "result:" + result);
                 boolean success = Result.defaultParser(MyApplication.getInstance(), result, false);
                 if (success) {
                     FriendDao.getInstance().addAttentionUsers(OAHttpHelper.getInstance(), MyApplication.getInstance().mLoginUser.getUserId(), result.getData(),
                             new OnCompleteListener() {
                                 @Override
                                 public void onCompleted() {
-                                    List<Friend>  friends = FriendDao.getInstance().getFriends(MyApplication.getInstance().mLoginUser.getUserId());
-                                    if (!ListUtils.isEmpty(friends)){
-                                        for (Friend entity:friends){
-                                            ContactsModel model=new ContactsModel();
+                                    List<Friend> friends = FriendDao.getInstance().getFriends(MyApplication.getInstance().mLoginUser.getUserId());
+                                    if (!ListUtils.isEmpty(friends)) {
+                                        for (Friend entity : friends) {
+                                            ContactsModel model = new ContactsModel();
                                             model.setImid(String.valueOf(entity.getUserId()));
                                             model.setType(1);
                                             model.setName(entity.getShowName());
@@ -683,58 +702,64 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                                             tmodels.add(model);
                                         }
                                     }
-                                        loadUASFriendsNet();
+                                    loadUASFriendsNet();
                                 }
                             });
-                }else{
+                } else {
                     loadUASFriendsNet();
                 }
             }
         }, AttentionUser.class, params);
         MyApplication.getInstance().getFastVolley().addDefaultRequest(HASHCODE, request);
     }
-    
-    private void searchContactsByNet(String key){
+
+    private void searchContactsByNet(String key) {
         String url = Constants.IM_BASE_URL + "user/appSearch";
         Map<String, Object> params = new HashMap<>();
         params.put("token", MyApplication.getInstance().mAccessToken);
         params.put("name", key);
-      
+
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
         ViewUtil.httpSendRequest(ct, url, params, mHandler, headers, 0x01, null, null, "post");
     }
-    
-     private Handler mHandler=new Handler(){
-             @Override
-             public void handleMessage(Message msg) {
-                 switch (msg.what){
-                   case  0x01:
-                       String result=msg.getData().getString("result");
-                       String root=JSON.parseObject(result).getString("result");
-                       JSONArray array=JSON.parseArray(root);
-                       List<ContactsModel> xmodels=new ArrayList<>();
-                       for (int i=0;i<array.size();i++){
-                           ContactsModel model=new ContactsModel();
-                           model.setType(2);
-                           model.setOwnerId(MyApplication.getInstance().mLoginUser.getUserId());
-                           model.setImid(array.getJSONObject(i).getString("imid"));
-                           model.setName(array.getJSONObject(i).getString("nickname"));
-                           model.setPhone(array.getJSONObject(i).getString("telephone"));
-                           xmodels.add(model);
-                       }
-                       if (!ListUtils.isEmpty(models)){
-                           models.clear();
-                           models.addAll(xmodels);
-                           if (adapter!=null) {
-                               adapter.notifyDataSetChanged();
-                           }
-                           if (adapter.getCount()==0){
-                               emptyLayout.showEmpty();
-                           }
-                       }
-                     break;
-                 }
-             }
-         };
+
+    private Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case 0x01:
+                    try {
+                        String result = msg.getData().getString("result");
+                        String root = JSON.parseObject(result).getString("result");
+                        JSONArray array = JSON.parseArray(root);
+                        List<ContactsModel> xmodels = new ArrayList<>();
+                        for (int i = 0; i < array.size(); i++) {
+                            ContactsModel model = new ContactsModel();
+                            model.setType(2);
+                            model.setOwnerId(MyApplication.getInstance().mLoginUser.getUserId());
+                            model.setImid(array.getJSONObject(i).getString("imid"));
+                            model.setName(array.getJSONObject(i).getString("nickname"));
+                            model.setPhone(array.getJSONObject(i).getString("telephone"));
+                            xmodels.add(model);
+                        }
+                        if (!ListUtils.isEmpty(models)) {
+                            models.clear();
+                            models.addAll(xmodels);
+                        }else{
+                            models.addAll(xmodels); 
+                        }
+                        if (adapter != null) {
+                            adapter.notifyDataSetChanged();
+                        }
+                        if (adapter.getCount() == 0) {
+                            emptyLayout.showEmpty();
+                        }
+                    } catch (Exception e) {
+                       
+                    }
+                    break;
+            }
+        }
+    };
 }

+ 22 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/message/ProcessMsgActivity.java

@@ -127,6 +127,14 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                         tv_process_un_num.setVisibility(View.VISIBLE);
                         tv_process_un_num.setText(array.size() + "");
                     }
+
+                    if (wait_app){
+                        if ( mPosition < array.size()){
+                            mList.getRefreshableView().setSelection(mPosition);
+                        }else {
+                            mList.getRefreshableView().setSelection(array.size()-1);
+                        }
+                    }
                     progressDialog.dismiss();
                     break;
                 case SUSSCESS_already:
@@ -204,6 +212,8 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
             }
         }
     };
+    private boolean wait_app = false;
+    private int mPosition;
 
     private void getEmimids(JSONArray array) {
         if (!ListUtils.isEmpty(im_ids)) im_ids.clear();
@@ -324,7 +334,7 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
         mList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                int mPosition = (int) parent.getItemIdAtPosition(position);
+                mPosition = (int) parent.getItemIdAtPosition(position);
                 ProcessAdapter.ViewModel model = (ProcessAdapter.ViewModel) view.getTag();
                 currentId = position;
                 LogUtil.d(TAG, position + "");
@@ -372,6 +382,7 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                     Intent intent = new Intent(ct, ApprovalActivity.class);
                     intent.putExtra("imid", d_imids);
                     intent.putExtra("title", title);
+                    intent.putExtra("type",tab_type);
                     intent.putExtra("nodeid", Integer.valueOf(model.JP_NODEID));
                     startActivity(intent);
                 }
@@ -404,6 +415,15 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
 
     }
 
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+
+        if (resultCode == 170809){
+            wait_app = true;
+            loadProcessToDo(page);
+        }
+    }
 
     @Override
     public void onClick(View v) {
@@ -498,7 +518,7 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
     @Override
     protected void onResume() {
         super.onResume();
-        mList.setRefreshing(true);
+//        mList.setRefreshing(true);
 
     }
 

+ 114 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingDetailActivity.java

@@ -1,8 +1,11 @@
 package com.xzjmyk.pm.activity.ui.erp.activity.secretary;
 
+import android.content.ComponentName;
 import android.content.Intent;
+import android.content.ServiceConnection;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.IBinder;
 import android.os.Message;
 import android.util.Log;
 import android.view.Menu;
@@ -15,11 +18,17 @@ import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
+import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.bean.Friend;
+import com.xzjmyk.pm.activity.bean.message.ChatMessage;
+import com.xzjmyk.pm.activity.bean.message.XmppMessage;
 import com.xzjmyk.pm.activity.bean.oa.SelectEmUser;
+import com.xzjmyk.pm.activity.db.dao.ChatMessageDao;
+import com.xzjmyk.pm.activity.db.dao.FriendDao;
 import com.xzjmyk.pm.activity.helper.AvatarHelper;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.OABaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.SelectCollisionActivity;
@@ -33,11 +42,16 @@ import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.OAConfig;
 import com.xzjmyk.pm.activity.util.DateFormatUtil;
+import com.xzjmyk.pm.activity.util.TimeUtils;
+import com.xzjmyk.pm.activity.xmpp.CoreService;
+import com.xzjmyk.pm.activity.xmpp.ListenerManager;
+import com.xzjmyk.pm.activity.xmpp.listener.ChatMessageListener;
 
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 
 import de.hdodenhof.circleimageview.CircleImageView;
 
@@ -65,15 +79,28 @@ public class BookingDetailActivity extends OABaseActivity implements HttpImp,Vie
     private LinearLayout ll_bottom;
     BookingModel model;
     private boolean isMenuShuffle=false;
+    private CoreService mService;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_booking_detail);
-
+        bindService(CoreService.getIntent(), mConnection, BIND_AUTO_CREATE);
         initView();
     }
 
+    private ServiceConnection mConnection = new ServiceConnection() {
+        @Override
+        public void onServiceDisconnected(ComponentName name) {
+            mService = null;
+        }
+
+        @Override
+        public void onServiceConnected(ComponentName name, IBinder service) {
+            mService = ((CoreService.CoreServiceBinder) service).getService();
+
+        }
+    };
     private void initView() {
         getSupportActionBar().setTitle(getString(R.string.booking_title));
         rvTop = (RelativeLayout) findViewById(R.id.rv_top);
@@ -230,9 +257,17 @@ public class BookingDetailActivity extends OABaseActivity implements HttpImp,Vie
     }
     
     public void updateBookingState(Button button){
-      
         String map="{\"ab_confirmstatus \":\"已确认\",\"ab_bmanid\":\""+model.getAb_bmanid()+"\"}";
+        String time=model.getAb_starttime().substring(0,16)+"-"+model.getAb_endtime().substring(11,16);
        if (button.getText().equals("变更")){
+           if (MyApplication.getInstance().mLoginUser.getUserId().equals(model.getAb_bmanid())){
+               String content=model.getAb_bman()+"变更了您"+time+"的预约计划";
+               sendMessage(model.getAb_bmanid(),model.getAb_bman(),model.getAb_recordid(),content);
+           }else{
+               String content=model.getAb_recordman()+"变更了您"+time+"的预约计划";
+               sendMessage(model.getAb_recordid(),model.getAb_recordman(),model.getAb_bmanid(),content);
+           }
+          
            Bundle bundle=new Bundle();
            bundle.putParcelable("model",model);
            startActivity(new Intent(mContext,BookingAddActivity.class)
@@ -241,12 +276,23 @@ public class BookingDetailActivity extends OABaseActivity implements HttpImp,Vie
        }
         showLoading();
         if (button.getText().equals("确认")){
+            String content=model.getAb_bman()+"确认了您"+time+"的预约计划";
+            sendMessage(model.getAb_bmanid(),model.getAb_bman(),model.getAb_recordid(),content);
             map="{\"ab_confirmstatus \":\"已确认\",\"ab_bmanid\":\""+model.getAb_bmanid()+"\"}";
         }
         if (button.getText().equals("拒绝")){
+            String content=model.getAb_bman()+"拒绝了您"+time+"的预约计划";
+            sendMessage(model.getAb_bmanid(),model.getAb_bman(),model.getAb_recordid(),content);
             map="{\"ab_confirmstatus \":\"已拒绝\",\"ab_bmanid\":\""+model.getAb_bmanid()+"\"}";
         }
         if (button.getText().equals("取消")){
+            if (MyApplication.getInstance().mLoginUser.getUserId().equals(model.getAb_bmanid())){
+                String content=model.getAb_bman()+"取消了您"+time+"的预约计划";
+                sendMessage(model.getAb_bmanid(),model.getAb_bman(),model.getAb_recordid(),content);
+            }else{
+                String content=model.getAb_recordman()+"取消了您"+time+"的预约计划";
+                sendMessage(model.getAb_recordid(),model.getAb_recordman(),model.getAb_bmanid(),content);
+            }
             map="{\"ab_confirmstatus\":\"已取消\",\"ab_sharestatus\":\"未共享\",\"ab_bmanid\":\"" + model.getAb_bmanid() + "\"}";
         }
         String url = Constants.IM_BASE_URL + "user/appUpdateBooking";
@@ -342,4 +388,70 @@ public class BookingDetailActivity extends OABaseActivity implements HttpImp,Vie
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
         ViewUtil.httpSendRequest(ct, url, params, mHandler, headers, 0x02, null, null, "post");
     }
+
+
+
+    private void sendMessage( final String ownerId,String ownerName, final String objectId,  final String text) {
+        ChatMessage message = new ChatMessage();
+        message.setType(XmppMessage.TYPE_TEXT);
+        message.setContent(text);
+        message.setFromUserName(ownerName);
+        message.setFromUserId(ownerId);
+        message.setTimeSend(TimeUtils.sk_time_current_time());
+        if (interprect(ownerId,objectId,message)) {
+            return;
+        }
+        Log.i("wang", "send message:" + JSON.toJSONString(message));
+       // mHasSend = true;
+        Log.d("roamer", "开始发送消息,ChatBottomView的回调 sendmessage");
+        message.setPacketId(UUID.randomUUID().toString().replaceAll("-", ""));
+        ChatMessageDao.getInstance().saveNewSingleChatMessage(ownerId, objectId, message);
+        if (message.getType() == XmppMessage.TYPE_VOICE || message.getType() == XmppMessage.TYPE_IMAGE
+                || message.getType() == XmppMessage.TYPE_VIDEO || message.getType() == XmppMessage.TYPE_FILE) {
+            if (!message.isUpload()) {
+                Log.d("roamer", "去更新服务器的数据");
+               // UploadEngine.uploadImFile(mFriend.getUserId(), message, mUploadResponse);
+
+            } else {
+                Log.d("roamer", "sendChatMessage....");
+                mService.sendChatMessage(objectId, message);
+            }
+        } else {
+            Log.d("roamer", "sendChatMessage");
+            mService.sendChatMessage(objectId, message);
+
+        }
+    }
+
+    /**
+     * 拦截发送的消息
+     *
+     * @param message
+     */
+    public boolean interprect(String ownerId,String objectId,ChatMessage message) {
+        int len = 0;
+       List<Friend> mBlackList = FriendDao.getInstance().getAllBlacklists(ownerId);
+        if (mBlackList!=null) {
+            for (Friend friend : mBlackList) {
+                if (friend.getUserId().equals(objectId)) {
+                    Toast.makeText(mContext, "已经加入黑名单,无法发送消息", Toast.LENGTH_SHORT).show();
+                    len++;
+                }
+            }
+        }
+        Log.d("wang", "....kkkkk");
+        if (len != 0) {
+            // finish();
+            ListenerManager.getInstance().notifyMessageSendStateChange(ownerId, objectId,
+                    message.get_id(), ChatMessageListener.MESSAGE_SEND_FAILED);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        unbindService(mConnection);
+    }
 }

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/db/dao/ContactsDao.java

@@ -141,8 +141,8 @@ public class ContactsDao {
         String sql="(select min(id) from tbl_contacts where tf_phone=a.tf_phone) and (tf_phone<>'未填写' and tf_phone<>'')";
         Cursor cursor =db.rawQuery("select * from tbl_contacts a where id=" +
                 "(select min(id) from tbl_contacts where tf_phone=a.tf_phone and tf_ownerId=? ) and (tf_phone<> ? and tf_phone<> ?) " +
-                "and tf_name like ?   and (tf_whichSys=? or tf_whichSys=? ) ", 
-                new String[]{ownerId,"未填写"," ",key,master,""});
+                "and (tf_name like ? or tf_phone like ? ) and (tf_whichSys=? or tf_whichSys=? ) ", 
+                new String[]{ownerId,"未填写"," ",key,key,master,""});
         while (cursor.moveToNext()) {
             ContactsModel model=new ContactsModel();
             model.setName(cursor.getString(cursor.getColumnIndex("tf_name")));

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/ViewUtil.java

@@ -753,7 +753,7 @@ public class ViewUtil {
                         showDialogB2B(phone, password, sModel);
                     } else {
                         //个人用户
-                        
+//                        mdProcessDialog.cancel();
                         CommonUtil.setSharedPreferences(MyApplication.getInstance().getApplicationContext(), "spaceId", String.valueOf(sModel.get(0).getId()));
                         CommonUtil.setSharedPreferences(MyApplication.getInstance().getApplicationContext(), "companyName", String.valueOf(sModel.get(0).getName()));
                         CommonUtil.setSharedPreferences(MyApplication.getInstance().getApplicationContext(), "companyEnUu", String.valueOf(sModel.get(0).getEnuu()));

+ 29 - 8
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/MessagePresenter.java

@@ -31,7 +31,9 @@ import com.xzjmyk.pm.activity.ui.erp.model.MessageModel;
 import com.xzjmyk.pm.activity.ui.erp.presenter.imp.IMessageView;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.OACheckUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.UserRoleUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.http.OAHttpHelper;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.http.OnHttpResultListener;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.http.Request;
@@ -79,7 +81,8 @@ public class MessagePresenter implements OnHttpResultListener {
 
     private String filter;//搜索数据
     private int emnewsNum, subsNum, processNum, taskNum, bookingNum;//红点消息分类数量
-    private String[] RECEIVER_LIST = {ConnectivityManager.CONNECTIVITY_ACTION, AUTO_SIGIN_ALART, MsgBroadcast.ACTION_MSG_COMPANY_UPDATE, "com.app.home.update"};
+    private String[] RECEIVER_LIST = {ConnectivityManager.CONNECTIVITY_ACTION, 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) {
@@ -89,7 +92,8 @@ public class MessagePresenter implements OnHttpResultListener {
                 iMessageView.changeNet(CommonUtil.isNetWorkConnected(MyApplication.getInstance()));
             } else if (AUTO_SIGIN_ALART.equals(action)) {
                 loadNews(isB2b);//获取消息
-            } else if (action.equals("com.app.home.update") || action.equals(MsgBroadcast.ACTION_MSG_COMPANY_UPDATE)) {
+            } else if (action.equals("com.app.home.update") || action.equals(MsgBroadcast.ACTION_MSG_COMPANY_UPDATE)
+        ||action.equals(MsgBroadcast.ACTION_MSG_UI_UPDATE)) {
                 loadData();
             }
         }
@@ -114,16 +118,32 @@ public class MessagePresenter implements OnHttpResultListener {
     public void loadData() {
         isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
         if (isB2b) {
-            loadB2bNewsCount();
+            if ("1".equals(UserRoleUtils.getUserRole())){
+                //个人用户
+                loadBookingNewNum();//预约红点接口
+                saveErp2DB(null);
+            }else{
+                loadB2bNewsCount();
+            }
+           
         } else {
             SUB_READ_TIME = CommonUtil.getMaster() + "SUB_READ_TIME";//订阅好点击阅读时间
             subReadTime = PreferenceUtils.getString(SUB_READ_TIME);
-            loadTaskData();//获取任务接口
-            loadProcessToDo();//获取审批流接口
-            loadSubData();
-            loadBookingNewNum();//预约红点接口
+            if ("1".equals(UserRoleUtils.getUserRole())){
+                //个人用户
+                LogUtil.d("roamer","个人用户消息加载!");
+                loadBookingNewNum();//预约红点接口
+               
+            }else{
+                loadTaskData();//获取任务接口
+                loadProcessToDo();//获取审批流接口
+                loadSubData();
+                loadBookingNewNum();//预约红点接口
+                
+            }
+            loadNews(isB2b);//获取消息
         }
-        loadNews(isB2b);//获取消息
+        
     }
 
     private void loadB2bNewsCount() {
@@ -544,6 +564,7 @@ public class MessagePresenter implements OnHttpResultListener {
                 if (!ListUtils.isEmpty(models))
                     MessageDao.getInstance().createOrinstart(models, true);
                 final List<BaseSortModel<Friend>> chche = loadDataByImAsync();//loadDataByImAsync()
+                LogUtil.d("roamer","saveErp2DB:"+JSON.toJSONString(chche));
                 OAHttpHelper.getInstance().post(new Runnable() {
                     @Override
                     public void run() {

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

@@ -120,7 +120,11 @@ public class ContactsUtils {
                 
                 Contacts model = new Contacts();
                 if (!StringUtils.isEmpty(phoneNum)) {
-                    model.setPhone(phoneNum.replace(" ", "").replace("-", ""));
+                    String phone=  phoneNum.replace(" ", "").replace("-", "");
+                    if (phone.length()>=11) {
+                        phone = phone.substring(phone.length() - 11, phone.length());
+                    }
+                    model.setPhone(phone);
                 }else{
                     model.setPhone("0");
                 }

+ 5 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/UserRoleUtils.java

@@ -15,6 +15,11 @@ import com.xzjmyk.pm.activity.ui.message.MessageFragment;
 
 public class UserRoleUtils {
 
+    public static String getUserRole(){
+        String userRole= CommonUtil.getSharedPreferences(MyApplication.getInstance(),"userRole");
+        return userRole;
+    }
+
     public static void checkUserRole(Object fragment, View view) {
         String userRole= CommonUtil.getSharedPreferences(MyApplication.getInstance(),"userRole");
         try {

+ 5 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/xmpp/CoreService.java

@@ -8,6 +8,7 @@ import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.graphics.BitmapFactory;
 import android.os.Binder;
 import android.os.IBinder;
 import android.support.v7.app.NotificationCompat;
@@ -129,7 +130,10 @@ public class CoreService extends Service {
                 .setDefaults(Notification.DEFAULT_ALL)
                 //向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合
                 //Notification.DEFAULT_ALL  Notification.DEFAULT_SOUND 添加声音 // requires VIBRATE permission
-                .setSmallIcon(R.drawable.uuu);//设置通知小ICON
+                .setSmallIcon(R.drawable.uuu)//设置通知小ICON
+                .setLargeIcon(BitmapFactory.decodeResource(
+                getResources(), R.drawable.uuu));
+              
 
         if (!"不明确类型".equals(content)) {
             mNotificationManager.notify(notifyId, mBuilder.build());

+ 5 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/xmpp/ListenerManager.java

@@ -11,6 +11,7 @@ import com.xzjmyk.pm.activity.bean.message.NewFriendMessage;
 import com.xzjmyk.pm.activity.broadcast.MsgBroadcast;
 import com.xzjmyk.pm.activity.db.dao.ChatMessageDao;
 import com.xzjmyk.pm.activity.db.dao.FriendDao;
+import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 import com.xzjmyk.pm.activity.xmpp.listener.AuthStateListener;
 import com.xzjmyk.pm.activity.xmpp.listener.ChatMessageListener;
 import com.xzjmyk.pm.activity.xmpp.listener.MucListener;
@@ -130,13 +131,16 @@ public class ListenerManager {
 	}
 
 	public void notifyMessageSendStateChange(String loginUserId, String toUserId, final int msgId, final int messageState) {
+		LogUtil.d("roamer","loginUserId:"+loginUserId+" toUserId:"+toUserId+" msgId:"+ msgId+" messageState:"+ messageState);
+		ChatMessageDao.getInstance().updateMessageSendState(loginUserId, toUserId, msgId, messageState);
 		if (mChatMessageListeners.size() <= 0) {
+			LogUtil.d("roamer","mChatMessageListeners.size():"+mChatMessageListeners.size());
 			return;
 		}
-		ChatMessageDao.getInstance().updateMessageSendState(loginUserId, toUserId, msgId, messageState);
 		mHandler.post(new Runnable() {
 			public void run() {
 				for (ChatMessageListener listener : mChatMessageListeners) {
+					LogUtil.d("roamer","消息界面更新回调:onMessageSendStateChange()");
 					listener.onMessageSendStateChange(messageState, msgId);
 				}
 			}

+ 5 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/xmpp/XReconnectionManager.java

@@ -10,6 +10,7 @@ import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.bean.LoginAuto;
 import com.xzjmyk.pm.activity.helper.LoginHelper;
 import com.xzjmyk.pm.activity.sp.UserSp;
+import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 import com.xzjmyk.pm.activity.util.DeviceInfoUtil;
 import com.xzjmyk.pm.activity.volley.Result;
 
@@ -123,6 +124,7 @@ public class XReconnectionManager extends AbstractConnectionListener {
 					while (isReconnectionAllowed() && checkTokenStatus == 0) {
 						checkTokenStatus = syncCheckToken();
 						if (checkTokenStatus == 0) {// 表示检查失败,继续循环检查
+							LogUtil.d("Token","0:表示检查失败,继续循环检查");
 							try {
 								Thread.sleep(5000);
 							} catch (InterruptedException e) {
@@ -130,9 +132,11 @@ public class XReconnectionManager extends AbstractConnectionListener {
 							}
 						} else if (checkTokenStatus == 1) {// 表示检查成功Token过期(或出现不能继续请求Token状态的异常),停止重新登陆
 							doReconnecting = false;
+							LogUtil.d("Token","1:表示检查成功Token过期");
 							//TODO 关闭自动登录  可能出现账号异常情况
 //							conflict();
 						} else if (checkTokenStatus == 2) {// 2、表示检查成功,Token没有改变,可以继续下面的重新登陆
+							LogUtil.d("Token","2:表示检查成功,Token没有改变,可以继续下面的重新登陆");
 							break;
 						}
 					}
@@ -275,6 +279,7 @@ public class XReconnectionManager extends AbstractConnectionListener {
 					}
 
 					LoginAuto loginAuto = JSON.parseObject(jsonObject.getString(Result.DATA), LoginAuto.class);
+					LogUtil.d("Token","loginAuto:"+JSON.toJSONString(loginAuto));
 					if (loginAuto != null) {// 判断时候要继续重新登陆
 						int tokenExists = loginAuto.getTokenExists();// 1=令牌存在、0=令牌不存在
 						int serialStatus = loginAuto.getSerialStatus();// 1=没有设备号、2=设备号一致、3=设备号不一致

+ 58 - 61
WeiChat/src/main/res/layout/act_taskerp_add.xml

@@ -38,10 +38,12 @@
             android:layout_height="30dp">
             <TextView
                 android:layout_width="wrap_content"
-                android:layout_height="match_parent" 
-               android:gravity="bottom"
+                android:layout_height="match_parent"
+                android:gravity="bottom"
                 android:layout_marginLeft="10dp"
                 android:text="@string/task_detail"/>
+
+
             <ImageView
                 android:id="@+id/voice_search_iv"
                 android:background="@drawable/btn_yuyin_nor"
@@ -52,52 +54,6 @@
                 android:layout_height="20dp"
                 android:layout_marginTop="8dp"
                 />
-
-            <RelativeLayout
-                style="@style/form_relative_customer"
-                android:layout_height="90dp"
-                android:layout_alignParentLeft="true"
-                android:layout_alignParentStart="true"
-                android:layout_alignParentTop="true"
-                android:layout_marginTop="103dp"
-                android:background="@color/white">
-
-                <TextView
-                    android:id="@+id/tv_task_peoples"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_centerVertical="true"
-                    android:layout_marginLeft="10dp"
-                    android:text="@string/task_executor" />
-
-                <ScrollView
-                    android:layout_width="wrap_content"
-                    android:layout_height="match_parent"
-                    android:layout_marginBottom="5dp"
-                    android:layout_marginLeft="10dp"
-                    android:layout_marginTop="5dp"
-                    android:layout_toLeftOf="@+id/iv_find"
-                    android:layout_toRightOf="@+id/tv_task_peoples"
-                    android:scrollbars="none">
-
-                    <com.xzjmyk.pm.activity.view.TagGroup
-                        android:id="@+id/et_task_people"
-                        style="@style/TagGroup"
-                        android:layout_width="wrap_content"
-                        android:layout_height="fill_parent"
-                        android:background="@null" />
-                </ScrollView>
-
-                <ImageView
-                    android:id="@+id/iv_find"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_alignParentRight="true"
-                    android:layout_centerVertical="true"
-                    android:layout_marginRight="20dp"
-                    android:src="@drawable/icon_find_voice" />
-
-            </RelativeLayout>
         </RelativeLayout>
         <EditText
             android:id="@+id/et_task_detail"
@@ -109,6 +65,47 @@
             android:layout_marginBottom="10dp"
             android:hint="@string/common_input" />
 
+        <RelativeLayout
+            style="@style/form_relative_customer"
+            android:background="@color/white"
+            android:layout_height="90dp">
+
+            <TextView
+                android:id="@+id/tv_task_peoples"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:layout_marginLeft="10dp"
+                android:text="@string/task_executor" />
+
+            <ScrollView
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:layout_marginBottom="5dp"
+                android:layout_marginLeft="10dp"
+                android:layout_marginTop="5dp"
+                android:layout_toLeftOf="@+id/iv_find"
+                android:layout_toRightOf="@+id/tv_task_peoples"
+                android:scrollbars="none">
+
+                <com.xzjmyk.pm.activity.view.TagGroup
+                    android:id="@+id/et_task_people"
+                    style="@style/TagGroup"
+                    android:layout_width="wrap_content"
+                    android:layout_height="fill_parent"
+                    android:background="@null" />
+            </ScrollView>
+
+            <ImageView
+                android:id="@+id/iv_find"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:layout_marginRight="20dp"
+                android:src="@drawable/icon_find_voice" />
+
+        </RelativeLayout>
         <View
             android:layout_width="match_parent"
             android:layout_height="0.5dp"
@@ -167,13 +164,13 @@
                 android:hint="@string/common_select" />
 
         </RelativeLayout>
-<!--
-        <View
-            android:layout_width="match_parent"
-            android:layout_height="0.5dp"
-            android:layout_marginLeft="5dp"
-            android:layout_marginRight="5dp"
-            android:background="@color/light_grey" />-->
+        <!--
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="0.5dp"
+                    android:layout_marginLeft="5dp"
+                    android:layout_marginRight="5dp"
+                    android:background="@color/light_grey" />-->
         <!-- 语音 -->
         <LinearLayout
             android:id="@+id/lay_voice_layout"
@@ -285,12 +282,12 @@
 
         </RelativeLayout>
 
-       <!-- <View
-            android:layout_width="match_parent"
-            android:layout_height="0.5dp"
-            android:layout_marginLeft="5dp"
-            android:layout_marginRight="5dp"
-            android:background="@color/light_grey" />-->
+        <!-- <View
+             android:layout_width="match_parent"
+             android:layout_height="0.5dp"
+             android:layout_marginLeft="5dp"
+             android:layout_marginRight="5dp"
+             android:background="@color/light_grey" />-->
 
         <LinearLayout style="@style/form_linear_customer">
 

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

@@ -200,7 +200,7 @@
                 android:background="@drawable/selector_me_menu_item_bg">
 
                 <View
-                    android:id="@+id/view5"
+                 
                     android:layout_alignParentBottom="true"
                     android:layout_width="match_parent"
                     android:layout_height="@dimen/line"
@@ -239,7 +239,7 @@
                 style="@style/IMTbleLine"
                 android:background="@drawable/selector_me_menu_item_bg">
                 <View
-                    android:id="@+id/view5"
+                  
                     android:layout_alignParentBottom="true"
                     android:layout_width="match_parent"
                     android:layout_height="@dimen/line"