raomeng 8 лет назад
Родитель
Сommit
8571ac182d
100 измененных файлов с 2129 добавлено и 574 удалено
  1. 2 2
      WeiChat/src/main/AndroidManifest.xml
  2. 21 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/MyApplication.java
  3. 4 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/broadcast/MsgBroadcast.java
  4. 1 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/FriendDao.java
  5. 13 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/UserDao.java
  6. 17 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java
  7. 3 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/account/LoginActivity.java
  8. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/account/RegisterSelectActivity.java
  9. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/base/BaseActivity.java
  10. 13 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/BasicInfoActivity.java
  11. 11 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/contact/ContactFragment.java
  12. 9 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/AppWebViewActivity.java
  13. 262 231
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/contanct/ContactsActivity.java
  14. 87 78
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/form/DataFormDetailActivity.java
  15. 48 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/form/SelectCalendarActivity.java
  16. 15 13
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/message/PersonalRegActivity.java
  17. 24 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/message/ProcessMsgActivity.java
  18. 10 11
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/ApprovalActivity.java
  19. 9 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SelectCollisionActivity.java
  20. 3 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/WorkActivity.java
  21. 125 12
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingDetailActivity.java
  22. 32 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingListActivity.java
  23. 21 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/booking/BookAdapter.java
  24. 8 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/ApprovalAdapter.java
  25. 24 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/SelectCollisionAdapter.java
  26. 60 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/db/dao/ContactsDao.java
  27. 4 13
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/WorksFragment.java
  28. 37 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/QSCModel.java
  29. 3 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/oa/Approval.java
  30. 12 7
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/ViewUtil.java
  31. 30 19
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/ApprovaPresenter.java
  32. 29 8
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/MessagePresenter.java
  33. 60 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/SelectCollisionPresenter.java
  34. 10 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/ContactsUtils.java
  35. 60 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/UserRoleUtils.java
  36. 10 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/oa/AutoErpService.java
  37. 3 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/oa/RecognizerDialogUtil.java
  38. 15 12
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/oa/http/DepositNoticeUtil.java
  39. 5 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java
  40. 6 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/SettingActivity.java
  41. 4 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java
  42. 26 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/platform/task/TaskAddErpActivity.java
  43. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/tool/ThreadUtil.java
  44. 179 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/QSComShowPpUtils.java
  45. 252 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/QSearchPpwindowUtils.java
  46. 5 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/xmpp/CoreService.java
  47. 5 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/xmpp/ListenerManager.java
  48. 36 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/xmpp/MyActivityManager.java
  49. 5 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/xmpp/XReconnectionManager.java
  50. 23 0
      WeiChat/src/main/res/drawable/bg_bule_btn1.xml
  51. 29 17
      WeiChat/src/main/res/layout/act_taskerp_add.xml
  52. 2 19
      WeiChat/src/main/res/layout/activity_approval.xml
  53. 3 3
      WeiChat/src/main/res/layout/activity_booking_detail.xml
  54. 55 43
      WeiChat/src/main/res/layout/activity_setting.xml
  55. 32 0
      WeiChat/src/main/res/layout/com_show_menu.xml
  56. 66 0
      WeiChat/src/main/res/layout/com_show_ppitem.xml
  57. 12 10
      WeiChat/src/main/res/layout/fragment_me.xml
  58. 1 1
      WeiChat/src/main/res/layout/item_approval_node.xml
  59. 1 0
      WeiChat/src/main/res/layout/item_approval_points.xml
  60. 3 2
      WeiChat/src/main/res/layout/item_approval_rv.xml
  61. 1 2
      WeiChat/src/main/res/layout/item_approval_title.xml
  62. 55 0
      WeiChat/src/main/res/layout/judge_qsearch_window.xml
  63. 7 3
      WeiChat/src/main/res/layout/personal_reg_activity.xml
  64. 1 1
      WeiChat/src/main/res/values/colors.xml
  65. 1 0
      WeiChat/src/main/res/values/strings.xml
  66. 0 0
      app_core/imageload/.gitignore
  67. 34 0
      app_core/imageload/build.gradle
  68. 25 0
      app_core/imageload/proguard-rules.pro
  69. 26 0
      app_core/imageload/src/androidTest/java/base/android/com/imageload/ExampleInstrumentedTest.java
  70. 2 0
      app_core/imageload/src/main/AndroidManifest.xml
  71. 3 0
      app_core/imageload/src/main/res/values/strings.xml
  72. 17 0
      app_core/imageload/src/test/java/base/android/com/imageload/ExampleUnitTest.java
  73. 0 0
      app_core/network/.gitignore
  74. 34 0
      app_core/network/build.gradle
  75. 25 0
      app_core/network/proguard-rules.pro
  76. 26 0
      app_core/network/src/androidTest/java/base/android/com/network/ExampleInstrumentedTest.java
  77. 2 0
      app_core/network/src/main/AndroidManifest.xml
  78. 3 0
      app_core/network/src/main/res/values/strings.xml
  79. 17 0
      app_core/network/src/test/java/base/android/com/network/ExampleUnitTest.java
  80. 0 0
      app_third/MPAndroidChart/.gitignore
  81. 0 0
      app_third/MPAndroidChart/build.gradle
  82. 0 0
      app_third/MPAndroidChart/proguard-rules.pro
  83. 0 0
      app_third/MPAndroidChart/src/main/AndroidManifest.xml
  84. 0 0
      app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/animation/ChartAnimator.java
  85. 0 0
      app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/animation/Easing.java
  86. 0 0
      app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/animation/EasingFunction.java
  87. 0 0
      app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/AbstractBuffer.java
  88. 0 0
      app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/BarBuffer.java
  89. 0 0
      app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/CandleBodyBuffer.java
  90. 0 0
      app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/CandleShadowBuffer.java
  91. 0 0
      app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/CircleBuffer.java
  92. 0 0
      app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/HorizontalBarBuffer.java
  93. 0 0
      app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/LineBuffer.java
  94. 0 0
      app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/ScatterBuffer.java
  95. 0 0
      app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/BarChart.java
  96. 0 0
      app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/BarLineChartBase.java
  97. 0 0
      app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/BubbleChart.java
  98. 0 0
      app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/CandleStickChart.java
  99. 0 0
      app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/Chart.java
  100. 0 0
      app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/CombinedChart.java

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

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.xzjmyk.pm.activity"
-    android:versionCode="109"
-    android:versionName="5.8.7">
+    android:versionCode="110"
+    android:versionName="5.8.8">
 
     <uses-sdk
         android:minSdkVersion="11"

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

@@ -1,11 +1,13 @@
 package com.xzjmyk.pm.activity;
 
+import android.app.Activity;
 import android.app.Application;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.graphics.Bitmap;
 import android.graphics.Bitmap.Config;
 import android.os.Build;
+import android.os.Bundle;
 import android.os.Environment;
 import android.os.Handler;
 import android.os.StrictMode;
@@ -49,6 +51,7 @@ import com.xzjmyk.pm.activity.util.SharedUtil;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.view.AuthImageDownloader;
 import com.xzjmyk.pm.activity.volley.FastVolley;
+import com.xzjmyk.pm.activity.xmpp.MyActivityManager;
 
 import org.apache.http.cookie.Cookie;
 
@@ -146,7 +149,24 @@ public class MyApplication extends Application {
         } catch (PackageManager.NameNotFoundException e) {
             e.printStackTrace();
         }
-
+        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
+            @Override
+            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {}
+            @Override
+            public void onActivityStarted(Activity activity) {}
+            @Override
+            public void onActivityResumed(Activity activity) {
+                MyActivityManager.getInstance().setCurrentActivity(activity);
+            }
+            @Override
+            public void onActivityPaused(Activity activity) {}
+            @Override
+            public void onActivityStopped(Activity activity) {}
+            @Override
+            public void onActivitySaveInstanceState(Activity activity, Bundle outState) {}
+            @Override
+            public void onActivityDestroyed(Activity activity) {}
+        });
     }
 
 

+ 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) {

+ 1 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/FriendDao.java

@@ -432,6 +432,7 @@ public class FriendDao {
                     .or().eq("type", XmppMessage.TYPE_ERP)
                     .prepare();
             friends = friendDao.query(preparedQuery);
+            
         } catch (SQLException e) {
             e.printStackTrace();
         }

+ 13 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/UserDao.java

@@ -2,8 +2,10 @@ package com.xzjmyk.pm.activity.db.dao;
 
 import android.util.Log;
 
+import com.j256.ormlite.android.AndroidDatabaseResults;
 import com.j256.ormlite.android.apptools.OpenHelperManager;
 import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
+import com.j256.ormlite.dao.CloseableIterator;
 import com.j256.ormlite.dao.Dao;
 import com.j256.ormlite.dao.DaoManager;
 import com.j256.ormlite.stmt.UpdateBuilder;
@@ -133,14 +135,24 @@ public class UserDao {
 			builder.updateColumnValue(columnName, value);
 			builder.where().idEq(userId);
 			userDao.update(builder.prepare());
-
+			
 			User user = userDao.queryForId(userId);
+			
 			Log.d("roamer", "user.sex:" + user.getSex());
 		} catch (SQLException e) {
 			e.printStackTrace();
+		}finally {
+			closeCursor();
+			userDao.closeableIterator().closeQuietly();
 		}
 	}
 
+	private void closeCursor() {
+		CloseableIterator<User> iterator =userDao.iterator();
+		AndroidDatabaseResults results= (AndroidDatabaseResults) iterator.getRawResults();
+		results.close();
+	}
+
 	/**
 	 * 该方法只适用于调用了获取用户资料接口,得到User对象,来更新本地数据库。<br/>
 	 * 在其他地方使用会造成不准确的后果<br/>

+ 17 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java

@@ -80,6 +80,7 @@ import com.xzjmyk.pm.activity.util.DateFormatUtil;
 import com.xzjmyk.pm.activity.util.DisplayUtil;
 import com.xzjmyk.pm.activity.util.PermissionUtil;
 import com.xzjmyk.pm.activity.util.PreferenceUtils;
+import com.xzjmyk.pm.activity.util.QSearchPpwindowUtils;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.view.DivideRadioGroup;
 import com.xzjmyk.pm.activity.volley.ArrayResult;
@@ -153,6 +154,7 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
     private ContactFragment mBusinessCircleFragment;
     public static String BAIDU_PUSH = "BAIDUPUSH";
     public static String UU_STEP = "UUSTEP";
+    public static String Q_SEARCH = "Q_SEARCH";
     private boolean mXmppBind;
     private CoreService mCoreService;
     private boolean isPause = true;// 界面是否暂停
@@ -582,6 +584,7 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
         LogUtil.d("OnCreate end:" + DateFormatUtil.getDateTimeStr());
     }
 
+
     private Handler handler = new Handler();
     private Runnable runnable = new MyRunnable();
     private Boolean firstRed = true;
@@ -603,7 +606,20 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
         }
         handler.post(runnable);
 
+        hiQuickSearch();
+    }
+
+    private void hiQuickSearch() {
+        int qs =  PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.Q_SEARCH);
+        if (CommonUtil.isReleaseVersion() || MainActivity.class == null || qs == 1) return;
+        handler.postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                 QSearchPpwindowUtils.qSearchWindows(MainActivity.this);
+            }
+        },4000);
     }
+
     public class MyRunnable implements Runnable {
 
         @Override
@@ -676,6 +692,7 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
         });
     }
 
+
     /**
      * 设置页面的透明度
      * 兼容华为手机(在个别华为手机上 设置透明度会不成功)
@@ -838,9 +855,6 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
     @Override
     protected void onStop() {
         super.onStop();
-        saveOfflineTime();
-
-
     }
 
     private void saveOfflineTime() {

+ 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

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/account/RegisterSelectActivity.java

@@ -23,7 +23,7 @@ public class RegisterSelectActivity extends BaseActivity {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_register_select);
         ViewUtils.inject(this);
-        getSupportActionBar().setTitle("用户注册");
+        getSupportActionBar().setTitle("用户注册");
         person_btn.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -37,7 +37,7 @@ public class RegisterSelectActivity extends BaseActivity {
             public void onClick(View v) {
                 ViewUtil.webLinks(mContext,
                         "https://account.ubtob.com/sso/register",
-                        getString(R.string.login_register));
+                        "企业注册");
             }
         });
     }

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/base/BaseActivity.java

@@ -105,7 +105,7 @@ public abstract class BaseActivity extends ActionBackActivity {
         }
     }
 
-    private View getRootView() {
+    public View getRootView() {
         return ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0);
     }
 

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

@@ -54,7 +54,10 @@ import com.xzjmyk.pm.activity.db.dao.NewFriendDao;
 import com.xzjmyk.pm.activity.helper.AvatarHelper;
 import com.xzjmyk.pm.activity.helper.FriendHelper;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.erp.db.dao.ContactsDao;
+import com.xzjmyk.pm.activity.ui.erp.model.contacts.ContactsModel;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 import com.xzjmyk.pm.activity.ui.message.ChatActivity;
 import com.xzjmyk.pm.activity.ui.platform.task.TaskAddB2BActivity;
@@ -753,6 +756,16 @@ public class BasicInfoActivity extends BaseActivity implements NewFriendListener
                         // 更新界面
                         do_next_tv.setText(R.string.send_msg);
                         do_next_tv.setOnClickListener(new SendMsgListener());
+                        
+                        ContactsModel model=new ContactsModel();
+                        model.setImid(mUser.getUserId());
+                        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();
 
        
     }

+ 9 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/AppWebViewActivity.java

@@ -11,7 +11,6 @@ import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.ApprovalActivity;
 import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
-import com.xzjmyk.pm.activity.util.PreferenceUtils;
 
 /**
  * Created by Bitliker on 2017/7/28.
@@ -28,7 +27,6 @@ public class AppWebViewActivity extends WebViewLoadActivity {
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         if (item.getItemId() == R.id.returnOld) {
-            PreferenceUtils.putBoolean("newapproval", true);
             Intent intent = new Intent(ct, ApprovalActivity.class);
             intent.putExtra("title", getIntent().getStringExtra("p"));
             int nodeId = getNodeId();
@@ -45,12 +43,18 @@ public class AppWebViewActivity extends WebViewLoadActivity {
     private int getNodeId() {
         int nodeId = -1;
         try {
-            LogUtil.i("url=" + url);
+
             if (!StringUtils.isEmpty(url)) {
                 String[] urls = url.split("nodeId=");
                 if (urls != null && urls.length > 1) {
-                    String node = urls[1].split("&")[0];
-                    nodeId = Integer.valueOf(node);
+                    String message = urls[1];
+                    int endItem = urls[1].indexOf("%");
+                    if (endItem < 0)
+                        endItem = urls[1].indexOf("&");
+                    if (endItem > 0) {
+                        message = message.substring(0, endItem);
+                    }
+                    nodeId = Integer.valueOf(message);
                 }
             }
         } catch (Exception e) {

+ 262 - 231
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,46 +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();
-                    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);
         }
     }
 
@@ -251,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());
@@ -281,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());
@@ -311,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());
@@ -340,7 +344,7 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                         model.setWhichsys("");
                         model.setCompany("");
                         tmodels.add(model);
-                        
+
                     }
                     contactsDao.save(tmodels);
                     getCaceData(false);
@@ -351,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;
@@ -404,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 {
@@ -431,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
@@ -451,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)) {
@@ -460,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){
@@ -471,13 +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));
-                            }else if (isfriend.equals("1")){
+                                // contactsDao.update(model,String.valueOf(_id));
+                            } else if (isfriend.equals("1")) {
                                 model.setType(1);//好友
                                 model.setImid(String.valueOf(_id));
                             }
@@ -488,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);
         }
     }
 
@@ -518,34 +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);
-                      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);
@@ -556,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) {
@@ -607,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());
@@ -629,7 +653,7 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                             tmodels.add(model);
                         }
                         loadLocalContacts();
-                    }else{
+                    } else {
                         loadLocalContacts();
                     }
                 } catch (Exception e) {
@@ -641,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
@@ -655,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());
@@ -677,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;
+            }
+        }
+    };
 }

+ 87 - 78
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/form/DataFormDetailActivity.java

@@ -1510,96 +1510,105 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
                 initData();
                 break;
             case 0x11:
-                Data model = data.getParcelableExtra("object");
-                id = data.getIntExtra("id", 0);
-                String startDate = data.getStringExtra("startDate");
-                String endDate = data.getStringExtra("endDate");
+                try {
+                    parseResultByField(data);
+                } catch (Exception e) {
+                   
+                }
+                break;
+        }
 
-                startDate = startDate + ":00";
-                endDate = endDate + ":00";
+    }
 
-                startDate_v = startDate;//赋值给全局变量
-                endDate_v = endDate;//赋值给全局变量
+    private void parseResultByField(Intent data) {
+        int id;Data model = data.getParcelableExtra("object");
+        id = data.getIntExtra("id", 0);
+        String startDate = data.getStringExtra("startDate");
+        String endDate = data.getStringExtra("endDate");
+
+        startDate = startDate + ":00";
+        endDate = endDate + ":00";
+
+        startDate_v = startDate;//赋值给全局变量
+        endDate_v = endDate;//赋值给全局变量
+
+        String field = data.getStringExtra("field");
+        LogUtil.d("id=" + id);
+        LogUtil.d("groupId=" + model.getGroupId());
+        if ("Ask4Leave".equals(caller)) {
+            //va_startime
+            //va_endtime
+            int va_alldays = 0;
+            int va_alltimes = 0;
+            List<Data> tempLists = mAdapter.getmListData().get(model.getGroupId()).getDatas();
+            for (int i = 0; i < tempLists.size(); i++) {
+                Data tempData = tempLists.get(i);
+                if (tempData.getField().equals("va_startime")) {
+                    va_alldays = i + 1;
+                }
+                if (tempData.getField().equals("va_endtime")) {
+                    va_alltimes = i + 1;
+                }
+            }
+            mAdapter.getmListData().get(model.getGroupId()).getDatas().get(va_alldays - 1).setValue(startDate);
+            mAdapter.getmListData().get(model.getGroupId()).getDatas().get(va_alltimes - 1).setValue(endDate);
+        }
+        if ("Workovertime".equals(caller)||"ExtraWork$".equals(caller)) {
+            int va_alldays = 0;
+            int va_alltimes = 0;
 
-                String field = data.getStringExtra("field");
-                LogUtil.d("id=" + id);
-                LogUtil.d("groupId=" + model.getGroupId());
-                if ("Ask4Leave".equals(caller)) {
-                    //va_startime
-                    //va_endtime
-                    int va_alldays = 0;
-                    int va_alltimes = 0;
-                    List<Data> tempLists = mAdapter.getmListData().get(model.getGroupId()).getDatas();
-                    for (int i = 0; i < tempLists.size(); i++) {
-                        Data tempData = tempLists.get(i);
-                        if (tempData.getField().equals("va_startime")) {
-                            va_alldays = i + 1;
-                        }
-                        if (tempData.getField().equals("va_endtime")) {
-                            va_alltimes = i + 1;
-                        }
-                    }
-                    mAdapter.getmListData().get(model.getGroupId()).getDatas().get(va_alldays - 1).setValue(startDate);
-                    mAdapter.getmListData().get(model.getGroupId()).getDatas().get(va_alltimes - 1).setValue(endDate);
+            List<Data> tempLists = mAdapter.getmListData().get(model.getGroupId()).getDatas();
+            for (int i = 0; i < tempLists.size(); i++) {
+                Data tempData = tempLists.get(i);
+                if (tempData.getField().equals("wod_startdate")) {
+                    va_alldays = i + 1;
                 }
-                if ("Workovertime".equals(caller)||"ExtraWork$".equals(caller)) {
-                    int va_alldays = 0;
-                    int va_alltimes = 0;
-
-                    List<Data> tempLists = mAdapter.getmListData().get(model.getGroupId()).getDatas();
-                    for (int i = 0; i < tempLists.size(); i++) {
-                        Data tempData = tempLists.get(i);
-                        if (tempData.getField().equals("wod_startdate")) {
-                            va_alldays = i + 1;
-                        }
-                        if (tempData.getField().equals("wod_enddate")) {
-                            va_alltimes = i + 1;
-                        }
-                    }
-                    mAdapter.getmListData().get(model.getGroupId()).getDatas().get(va_alldays - 1).setValue(startDate);
-                    mAdapter.getmListData().get(model.getGroupId()).getDatas().get(va_alltimes - 1).setValue(endDate);
+                if (tempData.getField().equals("wod_enddate")) {
+                    va_alltimes = i + 1;
+                }
+            }
+            mAdapter.getmListData().get(model.getGroupId()).getDatas().get(va_alldays - 1).setValue(startDate);
+            mAdapter.getmListData().get(model.getGroupId()).getDatas().get(va_alltimes - 1).setValue(endDate);
 
-                    distance(startDate, endDate, model.getGroupId());
+            distance(startDate, endDate, model.getGroupId());
 
-                }
+        }
 
 
-                if ("FeePlease!CCSQ".equals(caller)||"FeePlease!CCSQ!new".equals(caller)) {
-                    int va_alldays = 0;
-                    int va_alltimes = 0;
-                    //fp_preenddate
-                    //fp_prestartdate
-                    if ("fp_preenddate".equals(field) || "fp_prestartdate".equals(field)) {
-                        List<Data> tempLists = mAdapter.getmListData().get(model.getGroupId()).getDatas();
-                        for (int i = 0; i < tempLists.size(); i++) {
-                            Data tempData = tempLists.get(i);
-                            if (tempData.getField().equals("fp_preenddate")) {
-                                va_alldays = i + 1;
-                            }
-                            if (tempData.getField().equals("fp_prestartdate")) {
-                                va_alltimes = i + 1;
-                            }
-                        }
-                        mAdapter.getmListData().get(model.getGroupId()).getDatas().get(va_alltimes - 1).setValue(startDate);
-                        mAdapter.getmListData().get(model.getGroupId()).getDatas().get(va_alldays - 1).setValue(endDate);
+        if ("FeePlease!CCSQ".equals(caller)||"FeePlease!CCSQ!new".equals(caller)) {
+            int va_alldays = 0;
+            int va_alltimes = 0;
+            //fp_preenddate
+            //fp_prestartdate
+            if ("fp_preenddate".equals(field) || "fp_prestartdate".equals(field)) {
+                List<Data> tempLists = mAdapter.getmListData().get(model.getGroupId()).getDatas();
+                for (int i = 0; i < tempLists.size(); i++) {
+                    Data tempData = tempLists.get(i);
+                    if (tempData.getField().equals("fp_preenddate")) {
+                        va_alldays = i + 1;
                     }
-                    if ("fpd_date1".equals(field) || "fpd_date2".equals(field)) {
-                        List<Data> tempLists = mAdapter.getmListData().get(model.getGroupId()).getDatas();
-                        for (int i = 0; i < tempLists.size(); i++) {
-                            Data tempData = tempLists.get(i);
-                            if (tempData.getField().equals("fpd_date1")) {
-                                va_alldays = i + 1;
-                            }
-                            if (tempData.getField().equals("fpd_date2")) {
-                                va_alltimes = i + 1;
-                            }
-                        }
-                        mAdapter.getmListData().get(model.getGroupId()).getDatas().get(va_alldays - 1).setValue(startDate);
-                        mAdapter.getmListData().get(model.getGroupId()).getDatas().get(va_alltimes - 1).setValue(endDate);
+                    if (tempData.getField().equals("fp_prestartdate")) {
+                        va_alltimes = i + 1;
                     }
                 }
+                mAdapter.getmListData().get(model.getGroupId()).getDatas().get(va_alltimes - 1).setValue(startDate);
+                mAdapter.getmListData().get(model.getGroupId()).getDatas().get(va_alldays - 1).setValue(endDate);
+            }
+            if ("fpd_date1".equals(field) || "fpd_date2".equals(field)) {
+                List<Data> tempLists = mAdapter.getmListData().get(model.getGroupId()).getDatas();
+                for (int i = 0; i < tempLists.size(); i++) {
+                    Data tempData = tempLists.get(i);
+                    if (tempData.getField().equals("fpd_date1")) {
+                        va_alldays = i + 1;
+                    }
+                    if (tempData.getField().equals("fpd_date2")) {
+                        va_alltimes = i + 1;
+                    }
+                }
+                mAdapter.getmListData().get(model.getGroupId()).getDatas().get(va_alldays - 1).setValue(startDate);
+                mAdapter.getmListData().get(model.getGroupId()).getDatas().get(va_alltimes - 1).setValue(endDate);
+            }
         }
-
     }
 
     private void muiltCallerMainTain(Data vaules, String value) {

+ 48 - 6
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/form/SelectCalendarActivity.java

@@ -387,9 +387,11 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
                         //结束时间
                         v_date_end.setText( modle.tv_text.getText().toString());
                         end_hour_min = modle.tv_text.getText().toString();
+                       
                     }
                     return;
                 }
+                
                 if (StringUtils.isEmpty(currentSelectDate)) {
                     ToastMessage("请先选择日期,再选择时间段!");
                     return;
@@ -443,7 +445,7 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
                         Log.d("currentSelectDate4", currentSelectDate);
                         v_date_end.setText(currentSelectDate + " " + modle.tv_text.getText().toString());
                         end_hour_min = modle.tv_text.getText().toString();
-
+                       
                     }
                 }
             }
@@ -540,6 +542,7 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
                 Log.d("Slide_date88", yeas + "-" + month + "-" + day + " " + start_hour_min);
             } else {
                 v_date_end.setText(yeas + "-" + m + "-" + d + " " + end_hour_min);
+                
                 Log.d("Slide_date88", yeas + "-" + month + "-" + day + " " + end_hour_min);
             }
 
@@ -575,7 +578,7 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
             if (type == 0) {
                 mTimeData.addAll(timeAddMuilt("08:30", "18:30", minute));
             } else {
-                mTimeData.addAll(timeAddMuilt("08:00", "18:00", minute));
+                mTimeData.addAll(timeAddMuilt("08:00", "20:00", minute));
             }
         }
     }
@@ -767,11 +770,19 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
                     if (!StringUtils.isEmpty(v_date_start.getText().toString()) && !
                             StringUtils.isEmpty(v_date_end.getText().toString())) {
                         if (!checkDateStr(v_date_end.getText().toString() + " " + v_time_end.getText().toString())) {
-                            ToastMessage("结束时间 请选择具体时间点!");
+                            if(type==1){
+                                ToastMessage("不能预约过去时间!");
+                            }else {
+                                ToastMessage("结束时间 请选择具体时间点!");
+                            }
                             return;
                         }
                         if (!checkDateStr(v_date_start.getText().toString() + " " + v_time_start.getText().toString())) {
-                            ToastMessage("开始时间 请选择具体时间点!");
+                            if(type==1){
+                                ToastMessage("不能预约过去时间!");
+                            }else {
+                                ToastMessage("开始时间 请选择具体时间点!");
+                            }
                             return;
                         }
                         Intent intent = new Intent();
@@ -795,11 +806,19 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
                             return;
                         }
                         if (!checkDateStr(v_date_end.getText().toString())) {
-                            ToastMessage("结束时间 请选择具体时间点!");
+                            if(type==1){
+                                ToastMessage("不能预约过去时间!");
+                            }else {
+                                ToastMessage("结束时间 请选择具体时间点!");
+                            }
                             return;
                         }
                         if (!checkDateStr(v_date_start.getText().toString())) {
-                            ToastMessage("开始时间 请选择具体时间点!");
+                            if(type==1){
+                                ToastMessage("不能预约过去时间!");
+                            }else {
+                                ToastMessage("开始时间 请选择具体时间点!");
+                            }
                             return;
                         }
 
@@ -1063,6 +1082,23 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
         String today = DateFormatUtil.getDateStr();
         if (today.compareTo(currentSelectDate) > 0 && type == 1){
             ToastMessage("不能预约过去时间");
+            //按时间
+            currentSelectDate="";
+            // v_date_start.setText(DateFormatUtil.getStrDate4Date(date,"yyyy-MM-dd"));
+            //按时间请假:
+            if (startDate) {//按钮状态
+                //开始时间
+                v_date_start.setText(currentSelectDate);
+            } else {
+                //结束时间
+                v_date_end.setText(currentSelectDate);
+                if (type==1){
+                    startDate = true;
+                    ll_date_end.setEnabled(true);
+                    swichDateButton(startDate);
+                    v_date_start.setText(currentSelectDate);
+                }
+            }
             return;
         }else {
             if (swich) {
@@ -1083,6 +1119,12 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
                 } else {
                     //结束时间
                     v_date_end.setText(currentSelectDate);
+                   if (type==1){
+                       startDate = true;
+                       ll_date_end.setEnabled(true);
+                       swichDateButton(startDate);
+                       v_date_start.setText(currentSelectDate);
+                   }
                 }
             }
             //ToastMessage(currentSelectDate);

+ 15 - 13
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/message/PersonalRegActivity.java

@@ -41,9 +41,9 @@ import java.util.Map;
 
 public class PersonalRegActivity extends BaseActivity implements View.OnClickListener{
     @ViewInject(R.id.phone_et)
-    private EditText phone_et;
+    private FormEditText phone_et;
     @ViewInject(R.id.password_et)
-    private EditText password_et;
+    private FormEditText password_et;
     @ViewInject(R.id.name_et)
     private FormEditText name_et;
     @ViewInject(R.id.male_et)
@@ -130,26 +130,28 @@ public class PersonalRegActivity extends BaseActivity implements View.OnClickLis
     }
 
     private void registerJudge() {
-        if (StringUtils.isEmpty(phone_et.getText().toString())){
+      /*  if (StringUtils.isEmpty(phone_et.getText().toString())){
             ToastMessage(getString(R.string.input_phone_number));
             return;
-        }
+        }*/
 
-        if (StringUtils.isEmpty(password_et.getText().toString())){
+       /* if (!StringUtils.isEmpty(password_et.getText().toString())){
             ToastMessage(getString(R.string.please_input_password));
             return;
         }
-
-        md5_password = Md5Util.toMD5(password_et.getText().toString());
-        if (!name_et.testValidity()){
-            return;
-        }
-        if (StringUtils.isEmpty(name_et.getText().toString())){
+*/
+       /* if (StringUtils.isEmpty(name_et.getText().toString())){
             ToastMessage(getString(R.string.input_name));
             return;
+        }*/
+        if (phone_et.testValidity() && password_et.testValidity() && name_et.testValidity()){
+            if(!CommonUtil.isNetWorkConnected(this)){
+                ToastMessage(getString(R.string.common_notlinknet));
+            }else {
+                md5_password = Md5Util.toMD5(password_et.getText().toString());
+                doRegiter();
+            }
         }
-        
-        doRegiter();
 
     }
 

+ 24 - 4
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);
 
     }
 
@@ -580,7 +600,7 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                     }
                     ;
 //                    model.status.setText(jp_status);
-                    model.status.setTextColor(getResources().getColor(R.color.new_waitting_approvel));
+                    model.status.setTextColor(getResources().getColor(R.color.approvaling));
                     model.status.setText("等待我审批");
                     model.JP_NODEID = JP_NODEID;
                     model.typecode = jp_typecode;
@@ -662,7 +682,7 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                         String codename = jsonArray.getJSONObject(position).getString("JP_NODENAME");
                         if (!StringUtils.isEmpty(status)) {
                             if (status.equals("待审批")) {
-                                model.status.setTextColor(getResources().getColor(R.color.new_waitting_approvel));
+                                model.status.setTextColor(getResources().getColor(R.color.approvaling));
                                 nodename = nodename == null ? "" : nodename;
                                 status = "等待" + nodename + "(" + codename + ")" + getString(R.string.approvel);
                             } else if (status.equals("未通过")) {

+ 10 - 11
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/ApprovalActivity.java

@@ -42,12 +42,11 @@ import com.xzjmyk.pm.activity.ui.erp.presenter.ApprovaPresenter;
 import com.xzjmyk.pm.activity.ui.erp.presenter.imp.IApproval;
 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.StringUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.OAConfig;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.RecognizerDialogUtil;
-import com.xzjmyk.pm.activity.util.PreferenceUtils;
+import com.xzjmyk.pm.activity.util.DisplayUtil;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -74,10 +73,9 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
         if (item.getItemId() == R.id.oa_approval_set && mAdapter != null && !ListUtils.isEmpty(mAdapter.getApprovals())) {
             mPresenter.trun2SetActivity(this, mAdapter.getApprovals());
         } else if (item.getItemId() == R.id.returnOld) {
-            PreferenceUtils.putBoolean("newapproval", false);
             Intent intent = new Intent(ct, AppWebViewActivity.class);
             String title = getIntent().getStringExtra("title");
-            String url = mPresenter.getUrl(title);
+            String url = mPresenter.getUrl(findViewById(R.id.takeOverTV).getVisibility() == View.VISIBLE ? "jsps/mobile/jprocand.jsp?nodeId=" : "", title);
             intent.putExtra("url", url);
             intent.putExtra("p", title);
             intent.putExtra("master", CommonUtil.getMaster());
@@ -138,7 +136,6 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
         findViewById(R.id.disagreeTV).setOnClickListener(this);
         findViewById(R.id.agreeTV).setOnClickListener(this);
         findViewById(R.id.takeOverTV).setOnClickListener(this);
-
         String title = getIntent().getStringExtra("title");
         opinionET.addTextChangedListener(new EditChangeListener() {
             @Override
@@ -312,7 +309,6 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
     }
 
     private void showCommonWordsIV() {
-        LogUtil.i("showCommonWordsIV");
         final PopupWindow window = new PopupWindow(ct);
         View view = LayoutInflater.from(ct).inflate(R.layout.item_list_pop, null);
         window.setContentView(view);
@@ -320,9 +316,11 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
         final String[] messages = {"非常好", "(赞)", "再接再厉", "加油"};
         contentLV.setAdapter(new PopListAdapter(messages));
         window.setTouchable(true);
+        window.setBackgroundDrawable(ct.getResources().getDrawable(R.drawable.pop_round_bg));
         window.getContentView().measure(0, 0);
-        window.setHeight(window.getContentView().getMeasuredHeight() + 150);
-        window.setWidth(window.getContentView().getMeasuredWidth());
+        window.setHeight(DisplayUtil.dip2px(this, 190));
+        window.setWidth(DisplayUtil.dip2px(this, 85));
+//        window.setAnimationStyle(R.style.MenuAnimationFade);
         window.setOutsideTouchable(false);
         window.setFocusable(true);
         //获取需要在其上方显示的控件的位置信息
@@ -335,7 +333,8 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                 String message = messages[position];
-                opinionET.setText(OACheckUtil.getIntagerByText(opinionET) + message);
+                opinionET.setText(OACheckUtil.getText(opinionET) + message);
+                window.dismiss();
             }
         });
     }
@@ -366,9 +365,9 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
         public View getView(int position, View convertView, ViewGroup parent) {
             ViewHolder holder = null;
             if (convertView == null) {
-                convertView = LayoutInflater.from(ct).inflate(R.layout.item_simple_text, null);
+                convertView = LayoutInflater.from(ct).inflate(R.layout.item_pop_list, null);
                 holder = new ViewHolder();
-                holder.tv_text = (TextView) convertView.findViewById(R.id.tv_text);
+                holder.tv_text = (TextView) convertView.findViewById(R.id.tv_item_name);
                 convertView.setTag(holder);
             } else {
                 holder = (ViewHolder) convertView.getTag();

+ 9 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SelectCollisionActivity.java

@@ -107,7 +107,7 @@ public class SelectCollisionActivity extends OABaseActivity implements ISelectAc
         sidebar.setOnTouchingLetterChangedListener(new SideBar.OnTouchingLetterChangedListener() {
             @Override
             public void onTouchingLetterChanged(String s) {
-                if (adapter == null || ListUtils.isEmpty(adapter.getListData())) return;
+                if (adapter == null || ListUtils.isEmpty(adapter.getListData()) || StringUtils.isEmpty(s)) return;
                 // 该字母首次出现的位置
                 if ("↑".equals(s)) {
                     listView.setSelection(0);
@@ -163,16 +163,22 @@ public class SelectCollisionActivity extends OABaseActivity implements ISelectAc
     @Override
     public void showModel(List<BaseSortModel<SelectEmUser>> models) {
         adapter = new SelectCollisionAdapter(models);
-        listView.setAdapter(adapter);
         if (ListUtils.isEmpty(models)) {
             emptyLayout.showEmpty();
             sidebar.setVisibility(View.GONE);
             select_rl.setVisibility(View.GONE);
         } else {
-            sidebar.setVisibility(View.VISIBLE);
+            if (selectBean.getTitle().equals(getString(R.string.select_share_friend))){
+                sidebar.setVisibility(View.GONE);
+                adapter.setBaseSortEnable(false);
+            }else {
+                adapter.setBaseSortEnable(true);
+                sidebar.setVisibility(View.VISIBLE);
+            }
             if (!selectBean.isSingleAble())
                 select_rl.setVisibility(View.VISIBLE);
         }
+        listView.setAdapter(adapter);
     }
 
 

+ 3 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/WorkActivity.java

@@ -34,6 +34,7 @@ import com.xzjmyk.pm.activity.ui.erp.presenter.WorkPresenter;
 import com.xzjmyk.pm.activity.ui.erp.presenter.imp.IWorkView;
 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.WifiReceiverUtil;
 import com.xzjmyk.pm.activity.ui.me.OfficeAddressSettingsActivity;
 import com.xzjmyk.pm.activity.ui.me.SignSeniorSettingActivity;
@@ -144,6 +145,8 @@ public class WorkActivity extends OABaseActivity implements View.OnClickListener
         findViewById(R.id.signin_btn).setOnClickListener(this);
         findViewById(R.id.unoffice_).setOnClickListener(this);
         date_tv.setOnClickListener(this);
+
+        
     }
 
     @Override

+ 125 - 12
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);
@@ -96,14 +123,10 @@ public class BookingDetailActivity extends OABaseActivity implements HttpImp,Vie
         Animation animation= AnimationUtils.loadAnimation(this, R.anim.anim_translate_bookingprogress);
         
         
-      
-       
-        
-        
         if (getIntent()!=null){
             model=getIntent().getExtras().getParcelable("model");
             boolean isShared=getIntent().getExtras().getBoolean("isShared");
-            tvTime.setText(model.getAb_starttime().substring(11,16)+"-"+
+            tvTime.setText(model.getAb_starttime().substring(0,10)+" "+model.getAb_starttime().substring(11,16)+"-"+
                     model.getAb_endtime().substring(11,16));
             tvAddress.setText(model.getAb_address());
             tvContent.setText(model.getAb_content());
@@ -125,6 +148,7 @@ public class BookingDetailActivity extends OABaseActivity implements HttpImp,Vie
                 ivResultInfo.startAnimation(animation);
                 if( MyApplication.getInstance().mLoginUser.getUserId().equals(model.getAb_recordid())){
                     ((Button)findViewById(R.id.bt_change)).setText("变更");
+                    ((Button)findViewById(R.id.bt_change)).setTextColor(getResources().getColor(R.color.white));
                     ((Button)findViewById(R.id.bt_cancle)).setText("取消");
                 }else{
                     ((Button)findViewById(R.id.bt_change)).setText("确认");
@@ -136,7 +160,7 @@ public class BookingDetailActivity extends OABaseActivity implements HttpImp,Vie
                 ivResultInfo.setImageDrawable(mContext. getResources().getDrawable(R.drawable.icon_queren1));
                 isMenuShuffle=true;
                 if (model.getAb_sharestatus().equals("已共享")){
-                    isMenuShuffle=false;
+                    isMenuShuffle=true;
                 }
                 if( MyApplication.getInstance().mLoginUser.getUserId().equals(model.getAb_recordid())){
                     ((Button)findViewById(R.id.bt_change)).setText("变更");
@@ -145,6 +169,10 @@ public class BookingDetailActivity extends OABaseActivity implements HttpImp,Vie
                   
                 }else{
                    // ll_bottom.setVisibility(View.VISIBLE);
+                    ((Button)findViewById(R.id.bt_change)).setText("变更");
+                    ((Button)findViewById(R.id.bt_cancle)).setText("取消");
+                    ((Button)findViewById(R.id.bt_change)).setVisibility(View.GONE);
+                    ll_bottom.setVisibility(View.VISIBLE);
                 }
             }
             if("已取消".equals(model.getAb_confirmstatus())){
@@ -216,7 +244,7 @@ public class BookingDetailActivity extends OABaseActivity implements HttpImp,Vie
             case R.id.app_about:
                Intent intent = new Intent(ct, SelectCollisionActivity.class);
                 SelectCollisionTurnBean bean = new SelectCollisionTurnBean()
-                        .setTitle(getString(R.string.select_doman))
+                        .setTitle(getString(R.string.select_share_friend))
                         .setSingleAble(false);
                 intent.putExtra(OAConfig.MODEL_DATA, bean);
                 startActivityForResult(intent, 0x02);
@@ -229,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)
@@ -240,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";
@@ -280,14 +327,14 @@ public class BookingDetailActivity extends OABaseActivity implements HttpImp,Vie
                          try {
                              if (JSON.parseObject(msg.getData().getString("result")).getString("result").equals("true")){
                                  ToastMessage(getString(R.string.make_adeal_success));
-                                 mMenu .findItem(R.id.app_about).setVisible(false);
+                                // mMenu .findItem(R.id.app_about).setVisible(false);
                              }else{
                                  ToastMessage(getString(R.string.make_adeal_failed));
-                                 mMenu .findItem(R.id.app_about).setVisible(true);
+                               //  mMenu .findItem(R.id.app_about).setVisible(true);
                              }
                          } catch (Exception e) {
                              ToastMessage(getString(R.string.make_adeal_failed));
-                             mMenu .findItem(R.id.app_about).setVisible(true);
+                            // mMenu .findItem(R.id.app_about).setVisible(true);
                          }
                          break;
                      case Constants.APP_SOCKETIMEOUTEXCEPTION:
@@ -341,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);
+    }
 }

+ 32 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingListActivity.java

@@ -231,6 +231,7 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
 
         viewPager.setCurrentItem(OACalenderViewPagerAdapter.MAX_NUM / 2);
         mAdapter = new BookAdapter(mContext, mDatas);
+        mAdapter.setCurrentDate(curDate);
         lv_book.setAdapter(mAdapter);
     }
 
@@ -325,6 +326,7 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
                             return;
                         }
                         if (tv_book_me.isSelected()) {
+                           
                             JSONArray jsonArray = JSON.parseArray(JSON.parseObject(result).getString("bookinglist"));
                             if (jsonArray != null) {
                                 Set<Integer> tags = new HashSet<>();
@@ -351,10 +353,38 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
                                         mDatas.add(model);
                                     }
                                 }
+
+                               if (DateFormatUtil.getStrDate4Date(curDate, "yyyy-MM-dd").equals(DateFormatUtil.getStrDate4Date(new Date(), "yyyy-MM-dd"))){
+                                   JSONArray tenArray = JSON.parseArray(JSON.parseObject(result).getString("tenlist"));
+                                   for (int i = 0; i < tenArray.size(); i++) {
+                                       JSONObject object = tenArray.getJSONObject(i);
+                                       BookingModel model = new BookingModel();
+                                       model.setAb_address(object.getString("ab_address"));
+                                       model.setAb_bman(object.getString("ab_bman"));
+                                       model.setAb_bmanid(object.getString("ab_bmanid"));
+                                       model.setAb_confirmstatus(object.getString("ab_confirmstatus"));
+                                       model.setAb_content(object.getString("ab_content"));
+                                       model.setAb_endtime(object.getString("ab_endtime"));
+                                       model.setAb_id(object.getString("ab_id"));
+                                       model.setAb_latitude(object.getString("ab_latitude"));
+                                       model.setAb_longitude(object.getString("ab_longitude"));
+                                       model.setAb_recorddate(object.getString("ab_recorddate"));
+                                       model.setAb_recordid(object.getString("ab_recordid"));
+                                       model.setAb_recordman(object.getString("ab_recordman"));
+                                       model.setAb_sharestatus(object.getString("ab_sharestatus"));
+                                       model.setAb_starttime(object.getString("ab_starttime"));
+                                       model.setAb_type(object.getString("ab_type"));
+                                       mDatas.add(model);
+                                   }
+                               }
+                                
+                                
                                 if (mAdapter != null) {
+                                    mAdapter.setCurrentDate(curDate);
                                     mAdapter.notifyDataSetChanged();
                                 } else {
                                     mAdapter = new BookAdapter(mContext, mDatas);
+                                    mAdapter.setCurrentDate(curDate);
                                     lv_book.setAdapter(mAdapter);
                                 }
                                 calendarView.setDecoratDays(tags);
@@ -394,9 +424,11 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
                                     }
                                 }
                                 if (mAdapter != null) {
+                                    mAdapter.setCurrentDate(curDate);
                                     mAdapter.notifyDataSetChanged();
                                 } else {
                                     mAdapter = new BookAdapter(mContext, mDatas);
+                                    mAdapter.setCurrentDate(curDate);
                                     lv_book.setAdapter(mAdapter);
                                 }
                                 calendarView.setDecoratDays(tags);

+ 21 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/booking/BookAdapter.java

@@ -10,8 +10,10 @@ import android.widget.TextView;
 
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.erp.model.book.BookingModel;
+import com.xzjmyk.pm.activity.util.DateFormatUtil;
 
 import java.util.ArrayList;
+import java.util.Date;
 
 /**
  * Created by Arison on 2017/6/23.
@@ -21,6 +23,16 @@ public class BookAdapter extends BaseAdapter {
     
     private Context ct;
     private int type=1;
+    private Date currentDate;
+
+    public Date getCurrentDate() {
+        return currentDate;
+    }
+
+    public void setCurrentDate(Date currentDate) {
+        this.currentDate = currentDate;
+    }
+
     private ArrayList<BookingModel> datas=new ArrayList<>();
     
     public BookAdapter(Context ct,ArrayList<BookingModel> data){
@@ -71,8 +83,15 @@ public class BookAdapter extends BaseAdapter {
         try {
             BookingModel model=datas.get(position);
             holder.model=model;
-            holder.title_tv.setText(model.getAb_starttime().substring(11,16)+"-"+
-            model.getAb_endtime().substring(11,16));
+
+            if (DateFormatUtil.getStrDate4Date(currentDate, "yyyy-MM-dd").equals(DateFormatUtil.getStrDate4Date(new Date(), "yyyy-MM-dd"))){
+                holder.title_tv.setText(model.getAb_starttime().substring(0,10)+" "+model.getAb_starttime().substring(11,16)+"-"+
+                        model.getAb_endtime().substring(11,16));
+            }else{
+                holder.title_tv.setText(model.getAb_starttime().substring(11,16)+"-"+
+                        model.getAb_endtime().substring(11,16));
+            }
+          
            
             holder.status_tv.setText(model.getAb_confirmstatus());
            

+ 8 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/ApprovalAdapter.java

@@ -212,10 +212,10 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
 
     private void bindTAGView(TagViewHolder holder, final int position) {
         String name = approvals.get(position).getCaption();
-        if (approvals.get(position).getType() == Approval.ENCLOSURE) {
+        if (approvals.get(position).getType() == Approval.ENCLOSURE) {//附件列表
             holder.line.setVisibility(View.GONE);
             holder.padding.setVisibility(View.GONE);
-            holder.nameTv.setText(Html.fromHtml("<u>" + name + "</u>"));
+            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) {
@@ -230,6 +230,11 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
                 } 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));
+                    }
                 }
             }
             holder.nameTv.setText(name);
@@ -324,7 +329,7 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
             } else {
                 setViewShowAble(true, holder.valueTv);
                 setViewShowAble(false, holder.valueEt, holder.valueWeb);
-                holder.valueTv.setText(approval.getValues());
+                holder.valueTv.setText(Html.fromHtml(approval.getValues()));
             }
         }
     }

+ 24 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/SelectCollisionAdapter.java

@@ -24,6 +24,11 @@ import java.util.List;
 
 public class SelectCollisionAdapter extends BaseAdapter {
     private List<BaseSortModel<SelectEmUser>> listData;
+    boolean BaseSortEnable=true;//默认是分类展示
+    
+    public void setBaseSortEnable(boolean baseSortEnable) {
+        BaseSortEnable = baseSortEnable;
+    }
 
     public SelectCollisionAdapter(List<BaseSortModel<SelectEmUser>> listData) {
         this.listData = listData;
@@ -70,10 +75,28 @@ public class SelectCollisionAdapter extends BaseAdapter {
         } else {
             holder = (ViewHolder) convertView.getTag();
         }
-        onBindViewHolder(holder, position);
+        if (BaseSortEnable){
+            onBindViewHolder(holder, position);
+        }else{
+            onBindViewHolderBy(holder, position);
+        }
+       
         return convertView;
 
     }
+    
+    public void onBindViewHolderBy(ViewHolder holder, final int position){
+        final BaseSortModel<SelectEmUser> model = listData.get(position);
+        holder.cb.setChecked(model.isClick());
+        holder.tag_tv.setVisibility(View.GONE);
+        holder.tag_view.setVisibility(View.GONE);
+        AvatarHelper.getInstance().display(model.getBean().getImId() + "", holder.head_img, true, false);//设定为每次刷新都会去删除缓存重新获取数据
+        holder.name_tv.setText(model.getBean().getEmName());
+        holder.sub_tv.setText((StringUtils.isEmpty(model.getBean().getDepart()) ? "" : (model.getBean().getDepart() + ">"))
+                + " " + (StringUtils.isEmpty(model.getBean().getPosition()) ? "" : model.getBean().getPosition()));
+        holder.cb.setFocusable(false);
+        holder.cb.setClickable(false);
+    }
 
     public void onBindViewHolder(ViewHolder holder, final int position) {
         final BaseSortModel<SelectEmUser> model = listData.get(position);

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

@@ -59,6 +59,10 @@ public class ContactsDao {
     
 
     //select * from tbl_contacts a where id=(select min(id) from tbl_contacts where tf_phone=a.tf_phone) and (tf_phone<>'未填写' and tf_phone<>'') and tf_ownerId='' and (tf_whichSys="" or tf_whichSys="" )
+    /**
+      * @desc:UU+企业架构+本地通讯录  已去重
+      * @author:Arison on 2017/8/1
+      */
     public  List<ContactsModel> find(){
         SQLiteDatabase db=  DatabaseManager.getInstance().openDatabase();
         String master= CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_master");
@@ -88,6 +92,39 @@ public class ContactsDao {
         return models;
     }
 
+    /**
+      * @desc:UU好友+企业架构人员  已去重
+      * @author:Arison on 2017/8/1
+      */
+    public  List<ContactsModel> findByShare(){
+        SQLiteDatabase db=  DatabaseManager.getInstance().openDatabase();
+        String master= CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_master");
+        if (StringUtils.isEmpty(master)) {
+            master="";
+        }
+        String ownerId=MyApplication.getInstance().mLoginUser.getUserId();
+        LogUtil.d("Test","master:"+master+" ownerId:"+ownerId);
+        List<ContactsModel> models=new ArrayList<>();
+        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_whichSys=? or tf_whichSys=? ) and tf_type<> ? ", new String[]{ownerId,"未填写"," ",master,"","3"});
+        while (cursor.moveToNext()) {
+            ContactsModel model=new ContactsModel();
+            model.setName(cursor.getString(cursor.getColumnIndex("tf_name")));
+            model.setCompany(cursor.getString(cursor.getColumnIndex("tf_company")));
+            model.setWhichsys(cursor.getString(cursor.getColumnIndex("tf_whichSys")));
+            model.setPhone(cursor.getString(cursor.getColumnIndex("tf_phone")));
+            model.setEmail(cursor.getString(cursor.getColumnIndex("tf_email")));
+            model.setType(cursor.getInt(cursor.getColumnIndex("tf_type")));
+            model.setImid(cursor.getString(cursor.getColumnIndex("tf_imId")));
+            model.setOwnerId(cursor.getString(cursor.getColumnIndex("tf_ownerId")));
+            models.add(model);
+        }
+        cursor.close();
+        DatabaseManager.getInstance().closeDatabase();
+        return models;
+    }
+
     public  List<ContactsModel> find(String key){
         SQLiteDatabase db=  DatabaseManager.getInstance().openDatabase();
         String master= CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_master");
@@ -104,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")));
@@ -127,13 +164,30 @@ public class ContactsDao {
     public  void update(ContactsModel model){
         SQLiteDatabase db=  DatabaseManager.getInstance().openDatabase();
         String sql = "update tbl_contacts"
-                + " set tf_type=?"
+                + " set tf_type=? , tf_imId=? "
+                + " where tf_ownerId=? and tf_whichSys=? and tf_imId=?;";
+        SQLiteStatement sta = db.compileStatement(sql);
+        sta.bindLong(1, model.getType());
+        sta.bindString(2, model.getImid());
+        sta.bindString(3, model.getOwnerId());
+        sta.bindString(4, model.getWhichsys());
+        sta.bindString(5, model.getImid());
+        long row=  sta.executeInsert();
+        DatabaseManager.getInstance().closeDatabase();
+    }
+
+    //针对本地通讯录  model的字段为空
+    public  void update(ContactsModel model,String imId){
+        SQLiteDatabase db=  DatabaseManager.getInstance().openDatabase();
+        String sql = "update tbl_contacts"
+                + " set tf_type=? , tf_imId=? "
                 + " where tf_ownerId=? and tf_whichSys=? and tf_imId=?;";
         SQLiteStatement sta = db.compileStatement(sql);
         sta.bindLong(1, model.getType());
-        sta.bindString(2, model.getOwnerId());
-        sta.bindString(3, model.getWhichsys());
-        sta.bindString(4, model.getImid());
+        sta.bindString(2, imId);
+        sta.bindString(3, model.getOwnerId());
+        sta.bindString(4, model.getWhichsys());
+        sta.bindString(5, model.getImid());
         long row=  sta.executeInsert();
         DatabaseManager.getInstance().closeDatabase();
     }

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

@@ -12,7 +12,7 @@ import android.widget.TextView;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
-import com.xzjmyk.pm.activity.ui.base.XutilsFragment;
+import com.xzjmyk.pm.activity.ui.base.EasyFragment;
 import com.xzjmyk.pm.activity.ui.erp.activity.ErpMenActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.crm.ClientActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.OAActivity;
@@ -21,6 +21,7 @@ import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.UserRoleUtils;
 import com.xzjmyk.pm.activity.util.ToastUtil;
 import com.xzjmyk.pm.activity.wxapi.ApiPlatform;
 import com.xzjmyk.pm.activity.wxapi.ApiUtils;
@@ -29,7 +30,7 @@ import com.xzjmyk.pm.activity.wxapi.ApiUtils;
  * @desc:工作
  * @author:Administrator on 2016/1/30 16:15
  */
-public class WorksFragment extends XutilsFragment implements View.OnClickListener {
+public class WorksFragment extends EasyFragment implements View.OnClickListener {
     private static final String HASHCODE = "WorksFragment";
     private static final String TIME_MILL = "TIMEMILL";
     private String TAG = "WorksFragment";
@@ -98,22 +99,12 @@ public class WorksFragment extends XutilsFragment implements View.OnClickListene
             tv_business_num.setVisibility(View.GONE);
             tv_desc_business.setVisibility(View.GONE);
             iv_business_desc.setVisibility(View.GONE);
-          
         }
-        
- 
         show_new_function_ll.setOnClickListener(this);
-      //  int new_function_notice = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.NEW_FUNCTION_NOTICE);
-//        if (new_function_notice == 1) {
-//            show_new_function_ll.setVisibility(View.INVISIBLE);
-//        } else {
-//            //TODO 发布版本先隐藏
-//            show_new_function_ll.setVisibility(View.INVISIBLE);
-//        }
-
         if (platform){
             my_client_rl.setVisibility(View.GONE);
         }
+        UserRoleUtils.checkUserRole(this,getmRootView());
     }
 
     @Override

+ 37 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/QSCModel.java

@@ -0,0 +1,37 @@
+package com.xzjmyk.pm.activity.ui.erp.model;
+
+/**
+ * Created by FANGlh on 2017/8/7.
+ * function:
+ */
+
+public class QSCModel  {
+
+    String key1;
+    String key2;
+    String key3;
+
+    public String getKey1() {
+        return key1;
+    }
+
+    public void setKey1(String key1) {
+        this.key1 = key1;
+    }
+
+    public String getKey2() {
+        return key2;
+    }
+
+    public void setKey2(String key2) {
+        this.key2 = key2;
+    }
+
+    public String getKey3() {
+        return key3;
+    }
+
+    public void setKey3(String key3) {
+        this.key3 = key3;
+    }
+}

+ 3 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/oa/Approval.java

@@ -137,11 +137,11 @@ public class Approval {
      * @return 输入类型:0字符输入  1.数字输入  2.日期输入选择  3.下拉选择  4.多选选择
      */
     public int inputType() {
-        if (dfType.equals("N"))
+        if (isDftypeEQ("floatcolumn8", "N"))
             return 1;
-        else if ("D".equals(dfType) || "DT".equals(dfType)) {
+        else if (isDftypeEQ("DT", "D")) {
             return 2;
-        } else if ("C".equals(dfType) || "YN".equals(dfType) || "B".equals(dfType)) {
+        } else if (isDftypeEQ("C", "YN", "B")) {
             return 3;
         }
         return 0;

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

@@ -711,7 +711,7 @@ public class ViewUtil {
      */
     private static void showDialogCompany(String json, String phone, String password) {
         List<LoginEntity> logMsg = JSON.parseArray(json, LoginEntity.class);
-        erpEntities = new ArrayList<LoginEntity>();
+        erpEntities = new ArrayList<>();
         LoginEntity logB2b = null;
         if (logMsg != null && !logMsg.isEmpty()) {
             for (int i = 0; i < logMsg.size(); i++) {
@@ -752,13 +752,15 @@ 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()));
                         LoginB2BTask(phone, password, sModel.get(0).getId());//登录B2B
                     }
                 }else{
+                    CommonUtil.setSharedPreferences(MyApplication.getInstance().getApplicationContext(), "userRole", "1");
                     if (ct!=null) {
                         ct.startActivity(new Intent(ct, MainActivity.class));
                     }
@@ -849,14 +851,14 @@ public class ViewUtil {
                     HttpUtil.Response result = httpSendTask(url, params, headers, request);
                     LogUtil.prinlnLongMsg("result", "http 发送请求-----------------------------------------");
                     LogUtil.prinlnLongMsg("result", "url:" + url);
-                    LogUtil.prinlnLongMsg("resultParams", "parms:" + params.toString());
+                    LogUtil.prinlnLongMsg("result", "parms:" + params.toString());
                     if (result != null)
-                        LogUtil.prinlnLongMsg("resultResponse", result.toString());
-                    else LogUtil.prinlnLongMsg("resultResponse", "result == null");
+                        LogUtil.prinlnLongMsg("result", result.getResponseText());
+                    else LogUtil.prinlnLongMsg("result", "result == null");
                     if (result != null) {
-                        Log.i("result", "statusCode:" + result.getStatusCode());
+                        Log.i("result", "result:" + result.getStatusCode());
                         // Log.i("result", "statusCode:" +result.getResponseText());
-                        LogUtil.prinlnLongMsg("resultText", result.getResponseText());
+                        LogUtil.prinlnLongMsg("result", result.getResponseText());
                         Log.i("result", "http 接收响应-----------------------------------------");
                         if (result.getStatusCode() == 200) {
                             finalBundle.putString("result", result.getResponseText());
@@ -1060,5 +1062,8 @@ public class ViewUtil {
         CommonUtil.clearSharedPreferences(ct, "b2b_uu");
         CommonUtil.clearSharedPreferences(ct, "Master_ch");
         CommonUtil.clearSharedPreferences(ct, "erp_emname");
+        CommonUtil.clearSharedPreferences(ct, "userRole");
+        
+        
     }
 }

+ 30 - 19
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/ApprovaPresenter.java

@@ -119,10 +119,12 @@ public class ApprovaPresenter implements OnHttpResultListener {
         }
     }
 
-    public String getUrl(String title) {
+    public String getUrl(String baseUrl, String title) {
+        if (StringUtils.isEmpty(baseUrl))
+            baseUrl = "jsps/mobile/process.jsp?nodeId=";
         LogUtil.i("title=" + title);
         String endStatus = (StringUtils.isEmpty(title) || title.equals(OACheckUtil.getString(R.string.title_approval)) ? "" : "%26_do=1");
-        return "jsps/mobile/process.jsp?nodeId=" + record.nodeId + endStatus;
+        return baseUrl + record.nodeId + endStatus;
     }
 
     public void initLoad() {
@@ -144,10 +146,10 @@ public class ApprovaPresenter implements OnHttpResultListener {
     }
 
     public void loadProcessUpdate(String nodeLog, List<Approval> approvals) {
-        StringBuilder points = new StringBuilder();
-        if (!inputAllPoints(points, approvals))
+        StringBuilder pointsBuilder = new StringBuilder();
+        if (!inputAllPoints(pointsBuilder, approvals))
             return;
-        chchePoints = points.toString();
+        chchePoints = pointsBuilder.toString();
         LogUtil.i("chchePoints=" + chchePoints);
         String url = "common/processUpdate.action";
         Map<String, Object> param = new HashMap<>();
@@ -310,7 +312,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         Map<String, Object> param = new HashMap<>();
         param.put("caller", record.caller);
         param.put("id", record.id);
-//        param.put("isprocess", 1);
+        param.put("isprocess", 1);
         Request.Bulider bulider = new Request.Bulider()
                 .setUrl(url)
                 .setWhat(LOAD_FORMAND_GRIDDATA)
@@ -639,8 +641,10 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 String caller = null;
                 JSONArray otherGriddata = null;
                 JSONArray otherGridconfigs = null;
+                String name = null;
                 for (int i = 0; i < othergrids.size(); i++) {
                     o = othergrids.getJSONObject(i);
+                    name = OACheckUtil.getJson2Text(o, "name");
                     caller = OACheckUtil.getJson2Text(o, "caller");
                     otherGriddata = OACheckUtil.getJsonArray(o, "griddata");
                     otherGridconfigs = OACheckUtil.getJsonArray(o, "gridconfigs");
@@ -649,8 +653,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
                             //获取到单个明细表单
                             final List<Approval> detailedApproval = formandGriddata(otherGriddata.getJSONObject(j), otherGridconfigs, caller, false);
                             Approval approval = new Approval(Approval.TAG);
-                            approval.setCaption(getString(R.string.subtabulation) + " " + (i + 1) + " " +
-                                    getString(R.string.serial_number) + (j + 1));
+                            approval.setCaption(name + " " + getString(R.string.serial_number) + (j + 1));
                             detailedApproval.add(0, approval);
                             detailedList.addAll(detailedApproval);
                         }
@@ -682,9 +685,9 @@ public class ApprovaPresenter implements OnHttpResultListener {
             String type = getJson2Text(config, "FD_TYPE", "DG_TYPE");
             //添加类型
             approval.setDfType(type);
-            int isdefault = OACheckUtil.getJsonIntager(config, "MFD_ISDEFAULT", "MDG_ISDEFAULT");
+//            int isdefault = OACheckUtil.getJsonIntager(config, "MFD_ISDEFAULT", "MDG_ISDEFAULT");
             int appwidth = OACheckUtil.getJsonIntager(config, "FD_APPWIDTH", "DG_APPWIDTH");
-            if (isMain && caption.equals("附件")) {
+            if (isMain && approval.isDftypeEQ("MF")) {
                 final String fb_attach = valueKey;
                 OAHttpHelper.getInstance().post(new Runnable() {
                     @Override
@@ -694,12 +697,12 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 });
             }
             //获取Id
-            if (!StringUtils.isEmpty(caption) && caption.equals("ID")) {
+            if (!StringUtils.isEmpty(caption) && (caption.equals("ID") || caption.equals("id"))) {
                 idTag = valueKey;
                 id = OACheckUtil.getJsonIntager(data, valueKey);
             }
-            if (isdefault != -1
-                    || approval.isDftypeEQ("H")
+            if (approval.isDftypeEQ("H")
+//                    || isdefault != -1
                     || appwidth == 0
                     || (!isMain && OACheckUtil.getJsonIntager(config, "DG_WIDTH") == 0)
                     || OACheckUtil.isEmpty(valueKey)
@@ -960,8 +963,12 @@ public class ApprovaPresenter implements OnHttpResultListener {
                                 approval.getDatas().add(new Approval.Data(v, v));
                         }
                     }
-                    if (!StringUtils.isEmpty(neer))
+                    if (!StringUtils.isEmpty(neer)) {
                         approval.setMustInput(neer.startsWith("Y"));
+                        if (neer.contains("@A")) {
+                            approval.setDfType("@A");
+                        }
+                    }
                 }
                 if (datas != null && datas.length > 0) {
                     for (String data : datas) {
@@ -1008,18 +1015,16 @@ public class ApprovaPresenter implements OnHttpResultListener {
             iApproval.showToast("正在提交请求,请不要重复提交", R.color.load_submit);
             return false;
         }
-        return false;
+        return true;
     }
 
     //判断要点
     private boolean inputAllPoints(StringBuilder customDes, List<Approval> approvals) {
         if (!ListUtils.isEmpty(approvals)) {
-            LogUtil.i("show Presenter pointsList .....");
             for (Approval approval : approvals) {
                 if (approval.getType() == Approval.POINTS) {
                     if (approval.isMustInput() && StringUtils.isEmpty(approval.getValues())) {
                         String message = OACheckUtil.getString(R.string.approval_points) + " " + approval.getCaption() + " " + OACheckUtil.getString(R.string.is_must_input);
-                        LogUtil.i("message=" + message);
                         iApproval.showToast(message, R.color.load_submit);
                         return false;
                     }
@@ -1030,7 +1035,12 @@ public class ApprovaPresenter implements OnHttpResultListener {
                             iApproval.showToast(message, R.color.load_submit);
                             return false;
                         }
-                        customDes.append(approval.getCaption() + "(" + approval.getValues() + ");");
+                        if (approval.isDftypeEQ("@A")) {
+                            customDes.append(approval.getCaption() + "(" + approval.getValues() + ")" + "@A@;");
+                        } else {
+                            customDes.append(approval.getCaption() + "(" + approval.getValues() + ");");
+                        }
+
                     }
                 }
             }
@@ -1060,11 +1070,12 @@ public class ApprovaPresenter implements OnHttpResultListener {
             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()) continue;
+                if (param.isEmpty() || param.keySet().size() <= 1) continue;
                 params.add(param);
             }
         }

+ 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() {

+ 60 - 6
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/SelectCollisionPresenter.java

@@ -1,5 +1,6 @@
 package com.xzjmyk.pm.activity.ui.erp.presenter;
 
+import android.app.Activity;
 import android.content.Intent;
 import android.os.Looper;
 import android.support.annotation.NonNull;
@@ -17,8 +18,10 @@ import com.xzjmyk.pm.activity.sortlist.BaseSortModel;
 import com.xzjmyk.pm.activity.sortlist.PingYinUtil;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.db.DBManager;
+import com.xzjmyk.pm.activity.ui.erp.db.dao.ContactsDao;
 import com.xzjmyk.pm.activity.ui.erp.entity.EmployeesEntity;
 import com.xzjmyk.pm.activity.ui.erp.entity.SelectCollisionTurnBean;
+import com.xzjmyk.pm.activity.ui.erp.model.contacts.ContactsModel;
 import com.xzjmyk.pm.activity.ui.erp.presenter.imp.ISelectActiveView;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
@@ -41,12 +44,13 @@ public class SelectCollisionPresenter {
     private ISelectActiveView iSelectActiveView;
     private List<BaseSortModel<SelectEmUser>> allList;
     private BaseComparator<SelectEmUser> mBaseComparator;
-
+    private Activity mActivity;
     private SelectCollisionTurnBean selectBean;
 
     public SelectCollisionPresenter(ISelectActiveView iSelectActiveView) {
         if (iSelectActiveView == null) new NullPointerException("iSelectActiveView is Null");
         this.iSelectActiveView = iSelectActiveView;
+        this.mActivity= (Activity) iSelectActiveView;
     }
 
 
@@ -64,10 +68,19 @@ public class SelectCollisionPresenter {
         List<SelectEmUser> selects = selectBean.getSelectList();
         if (!StringUtils.isEmpty(selectBean.getSureText()))
             iSelectActiveView.showSureText(selectBean.getSureText());
-        if (ListUtils.isEmpty(selects))
-            loadDataInThread();
-        else
+        if (ListUtils.isEmpty(selects)) {
+            if(selectBean.getTitle().equals(mActivity.getString(R.string.select_share_friend))){//分享好友
+                //企业架构+UU好友
+                loadShareFriendInThread();
+            }else{
+                //企业架构
+                loadDataInThread();
+            }
+            
+        }
+        else {
             setUser2Sort(selects, true);
+        }
     }
 
     public void changeChecked(boolean b, List<BaseSortModel<SelectEmUser>> listData) {
@@ -139,6 +152,22 @@ public class SelectCollisionPresenter {
         }
         return chche;
     }
+    
+    
+    private void loadShareFriendInThread(){
+        iSelectActiveView.showLoading();
+        ThreadPool.getThreadPool().addTask(new Runnable() {
+            @Override
+            public void run() {
+              List<ContactsModel> models=  ContactsDao.getInstance().findByShare();
+              if (!ListUtils.isEmpty(models)){
+                  handlerLoadShareData(models);
+              }else{
+                  //联网加载
+              }
+            }
+        });
+    }
 
     /*开启线程获取数据*/
     private void loadDataInThread() {
@@ -206,6 +235,25 @@ public class SelectCollisionPresenter {
             iSelectActiveView.showToast(message, R.color.load_warning);
     }
 
+    
+    private void handlerLoadShareData(List<ContactsModel> employees){
+        if (ListUtils.isEmpty(employees)) return;//TODO 请求下来时候数据为空
+        List<SelectEmUser> users = new ArrayList<>();
+        SelectEmUser user = null;
+        for (ContactsModel e : employees) {
+            user = new SelectEmUser();
+            //user.setDefaultorid(e.getEm_defaultorid());
+           // user.setDepart(e.getEM_DEPART());
+            user.setEmName(e.getName());
+            user.setImId(Integer.valueOf(e.getImid()));
+           // user.setEmCode(e.getEM_CODE());
+           // user.setPosition(e.getEM_POSITION());
+           // user.setEmId(e.getEM_ID());
+            users.add(user);
+        }
+        setUser2Sort(users, false);
+    }
+    
     private void handlerLoadData(List<EmployeesEntity> employees) {
        
         if (ListUtils.isEmpty(employees)) return;//TODO 请求下来时候数据为空
@@ -237,10 +285,16 @@ public class SelectCollisionPresenter {
                 if (isClickAll) numSelect++;
             }
             mode.setBean(e);
-            setSortCondition(mode);
+            //判断界面类型决定是否排序
+            if (!selectBean.getTitle().equals(mActivity.getString(R.string.select_share_friend))) {
+                setSortCondition(mode);
+            }
             allList.add(mode);
         }
-        Collections.sort(allList, mBaseComparator);
+        if (!selectBean.getTitle().equals(mActivity.getString(R.string.select_share_friend))) {
+            Collections.sort(allList, mBaseComparator);
+        }
+      
         //计算全部数据完成
        OAHttpHelper.getInstance().post(new Runnable() {
            @Override

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

@@ -117,9 +117,17 @@ public class ContactsUtils {
                 contactsId = cursor.getString(0);
                 phoneNum = cursor.getString(1);
                 name = cursor.getString(2);
-
+                
                 Contacts model = new Contacts();
-                model.setPhone(phoneNum);
+                if (!StringUtils.isEmpty(phoneNum)) {
+                    String phone=  phoneNum.replace(" ", "").replace("-", "");
+                    if (phone.length()>=11) {
+                        phone = phone.substring(phone.length() - 11, phone.length());
+                    }
+                    model.setPhone(phone);
+                }else{
+                    model.setPhone("0");
+                }
                 model.setName(name);
                 model.setId(Integer.valueOf(contactsId));
                 contacts.add(model);

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

@@ -0,0 +1,60 @@
+package com.xzjmyk.pm.activity.ui.erp.util;
+
+import android.view.View;
+
+import com.xzjmyk.pm.activity.MyApplication;
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.ui.erp.fragment.WorksFragment;
+import com.xzjmyk.pm.activity.ui.me.MeFragment;
+import com.xzjmyk.pm.activity.ui.me.SettingActivity;
+import com.xzjmyk.pm.activity.ui.message.MessageFragment;
+
+/**
+ * Created by Arison on 2017/8/7.
+ */
+
+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 {
+            if (!StringUtils.isEmpty(userRole)){
+                if (userRole.equals("1")){//个人用户
+                    if (fragment instanceof MessageFragment){
+                        view.findViewById(R.id.schedule_rl).setVisibility(View.GONE);//审批流
+                        view.findViewById(R.id.waitting_work_rl).setVisibility(View.GONE);//待办工作
+                        view.findViewById(R.id.subscribe_rl).setVisibility(View.GONE);//我的订阅
+                    }
+                    if (fragment instanceof WorksFragment){
+                        view.findViewById(R.id.rl_uas_sys).setVisibility(View.GONE);
+                        view.findViewById(R.id.my_client_rl).setVisibility(View.GONE);
+                        view.findViewById(R.id.setting_rl).setVisibility(View.GONE);
+                    }
+                    if (fragment instanceof MeFragment){
+                        view.findViewById(R.id.rl_company_change).setVisibility(View.GONE);
+                        view.findViewById(R.id.rl_master_change).setVisibility(View.GONE);
+                    }
+                    if (fragment instanceof SettingActivity){
+                        view.findViewById(R.id.sign_in_rl).setVisibility(View.GONE);
+                        view.findViewById(R.id.sign_out_rl).setVisibility(View.GONE);
+                    }
+                }
+                if (userRole.equals("2")){//uas用户
+    
+                }
+                if(userRole.equals("3")){//平台用户
+    
+                }
+            }else{
+    
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 10 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/oa/AutoErpService.java

@@ -130,10 +130,15 @@ public class AutoErpService extends Service {
         public void onReceive(Context context, Intent intent) {
             try {
                 if (intent == null || StringUtils.isEmpty(intent.getAction())) return;
-                else if (intent.getAction().equals(UPDATA_ERP_CHANGE) || intent.getAction().equals(MsgBroadcast.ACTION_MSG_COMPANY_UPDATE)) {//账套变更,重新刷新数据,初始化任务
-                    log(UPDATA_ERP_CHANGE);
-                    CommonInterface.getInstance().judgeManager(null);
-                    init();
+                else if (intent.getAction().equals(UPDATA_ERP_CHANGE)
+                        || intent.getAction().equals(MsgBroadcast.ACTION_MSG_COMPANY_UPDATE)) {//账套变更,重新刷新数据,初始化任务
+                    log(intent.getAction());
+                    String falg = intent.getStringExtra("falg");
+                    LogUtil.i("falg=" + falg);
+                    if (StringUtils.isEmpty(falg) || falg.equals("home")) {
+                        CommonInterface.getInstance().judgeManager(null);
+                        init();
+                    }
                 } else if (intent.getAction().equals(CHANGE_WORK_TASK)) {//自动打卡任务变更
                     log(CHANGE_WORK_TASK);
                     canWork = intent.getBooleanExtra(CHANGE_WORK_TASK, true);//获取是否开启任务
@@ -314,7 +319,7 @@ public class AutoErpService extends Service {
                         isDNoticeRuning = true;
                         LogUtil.i("startDNoticeTask Runnable");
                         int i = DNOTICE_ITER - 1;
-                        Log.i("dnoticeIter",dnoticeIter+"");
+                        Log.i("dnoticeIter", dnoticeIter + "");
 
                         if (dnoticeIter == i) {
                             LogUtil.i("dnoticeIter == i");

+ 3 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/oa/RecognizerDialogUtil.java

@@ -5,6 +5,7 @@ import android.content.Context;
 import com.iflytek.cloud.SpeechConstant;
 import com.iflytek.cloud.ui.RecognizerDialog;
 import com.iflytek.cloud.ui.RecognizerDialogListener;
+import com.xzjmyk.pm.activity.MyApplication;
 
 /**
  * Created by Bitliker on 2017/6/12.
@@ -13,6 +14,8 @@ import com.iflytek.cloud.ui.RecognizerDialogListener;
 public class RecognizerDialogUtil {
 
     public static void showRecognizerDialog(Context context, RecognizerDialogListener recognizerDialogListener) {
+        if (context == null)
+            context = MyApplication.getInstance();
         RecognizerDialog dialog = new RecognizerDialog(context, null);
         dialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
         dialog.setParameter(SpeechConstant.ACCENT, "mandarin");

+ 15 - 12
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/oa/http/DepositNoticeUtil.java

@@ -65,7 +65,8 @@ public class DepositNoticeUtil {
                 case 0x01:
                     if (!StringUtils.isEmpty(result)) {
                         if (JSON.parseObject(result).getString("resultMsg") != null) {
-                            Toast.makeText(MyApplication.getInstance(), JSON.parseObject(result).getString("resultMsg"), Toast.LENGTH_LONG).show();
+                            //先不提示
+//                            Toast.makeText(MyApplication.getInstance(), JSON.parseObject(result).getString("resultMsg"), Toast.LENGTH_LONG).show();
                             return;
                         } else {
                             if (!ListUtils.isEmpty(mSureBookModel))
@@ -123,20 +124,21 @@ public class DepositNoticeUtil {
 
     /**
      * 判断model里面的数据是否符合提醒条件
+     *
      * @param models
      */
     public static void isNoticeTimeInMainLooper(List<SureBookModel> models) {
         for (SureBookModel model : models) {
             LatLng latLng = new LatLng(Double.valueOf(model.getAb_latitude()), Double.valueOf(model.getAb_longitude()));
             float distance = BaiduMapUtil.getInstence().autoDistance(latLng);
-            if (distance == -1f){
+            if (distance == -1f) {
                 LogUtil.i("distance == -1f");
                 continue;
             }
-            if (model.getAb_starttime().compareTo(TimeUtils.f_long_2_str(System.currentTimeMillis())) > 0){
+            if (model.getAb_starttime().compareTo(TimeUtils.f_long_2_str(System.currentTimeMillis())) > 0) {
                 setNoticeTime(model.getAb_starttime(), latLng, distance);
             }
-            LogUtil.prinlnLongMsg("startTime,current_T",model.getAb_starttime()+","+TimeUtils.f_long_2_str(System.currentTimeMillis()));
+            LogUtil.prinlnLongMsg("startTime,current_T", model.getAb_starttime() + "," + TimeUtils.f_long_2_str(System.currentTimeMillis()));
 
         }
     }
@@ -148,6 +150,7 @@ public class DepositNoticeUtil {
     /**
      * 对于符合当前条件的预约,进行提前预约时间计算得出:开始提醒的具体时间点startNoticeTime
      * 然后:startNoticeTime <= 当前时间则开始进行通知提醒
+     *
      * @param startTime
      * @param location
      * @param dis
@@ -165,7 +168,7 @@ public class DepositNoticeUtil {
                                 if (dis != 0) {
                                     minTime = (int) (TimeUtils.f_str_2_long(startTime) - (dis / 3) * 1000 - 15 * 60 * 1000);
                                 } else {
-                                    minTime = (int) (TimeUtils.f_str_2_long(startTime) - 800 * 1000-15 * 60 * 1000);
+                                    minTime = (int) (TimeUtils.f_str_2_long(startTime) - 800 * 1000 - 15 * 60 * 1000);
                                 }
                             } else {
                                 for (DrivingRouteLine e : list) {
@@ -174,18 +177,18 @@ public class DepositNoticeUtil {
                                     }
                                 }
                             }
-                            long startNoticeTime = TimeUtils.f_str_2_long(startTime) - minTime * 1000-15 * 60 * 1000;
+                            long startNoticeTime = TimeUtils.f_str_2_long(startTime) - minTime * 1000 - 15 * 60 * 1000;
                             if (startNoticeTime <= System.currentTimeMillis()) {
                                 //TODO 提醒
-                                Log.i("notificationManage","开始提醒");
+                                Log.i("notificationManage", "开始提醒");
                                 notificationManage.sendNotification(MyApplication.getInstance(),
                                         "您有预约计划即将开始!", BookingListActivity.class);
-                            }else{
-                                Log.i("notificationManage","提醒时间不符合");
+                            } else {
+                                Log.i("notificationManage", "提醒时间不符合");
                             }
-                            LogUtil.i("minTime="+minTime);
-                            LogUtil.i("startNoticeTime="+TimeUtils.f_long_2_str(startNoticeTime));
-                            LogUtil.i("System.currentTimeMillis()="+TimeUtils.f_long_2_str( System.currentTimeMillis()));
+                            LogUtil.i("minTime=" + minTime);
+                            LogUtil.i("startNoticeTime=" + TimeUtils.f_long_2_str(startNoticeTime));
+                            LogUtil.i("System.currentTimeMillis()=" + TimeUtils.f_long_2_str(System.currentTimeMillis()));
                         } catch (Exception e) {
                             if (e != null)
                                 Log.i("setStartime Exception=", e.getMessage() + "");

+ 5 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java

@@ -45,6 +45,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.FlexJsonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.JsonValidator;
 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.UserRoleUtils;
 import com.xzjmyk.pm.activity.ui.erp.view.MasterDialog;
 import com.xzjmyk.pm.activity.ui.tool.SingleImagePreviewActivity;
 import com.xzjmyk.pm.activity.util.PermissionUtil;
@@ -180,6 +181,7 @@ public class MeFragment extends EasyFragment implements View.OnClickListener {
                         String sessionId = results.get("sessionId").toString();
                         String master = msg.getData().getString("master");
                         String master_ch = msg.getData().getString("master_ch");
+                        CommonUtil.setSharedPreferences(ct, "erp_uu", String.valueOf(results.get("uu")));
                         CommonUtil.setSharedPreferences(ct, "sessionId", sessionId);
                         CommonUtil.setSharedPreferences(ct, "erp_master", master);
                         CommonUtil.setSharedPreferences(ct, "Master_ch", master_ch);
@@ -252,7 +254,7 @@ public class MeFragment extends EasyFragment implements View.OnClickListener {
     private void initView() {
         ct = getActivity();
         findViewById(R.id.my_data_rl).setOnClickListener(this);
-        findViewById(my_friend_rl).setOnClickListener(this);
+        findViewById(R.id.my_friend_rl).setOnClickListener(this);
         findViewById(R.id.my_space_rl).setOnClickListener(this);
         findViewById(R.id.local_video_rl).setOnClickListener(this);
         findViewById(R.id.setting_rl).setOnClickListener(this);
@@ -329,6 +331,8 @@ public class MeFragment extends EasyFragment implements View.OnClickListener {
         CommonUtil.clearSharedPreferences(ct, "seting");
         CommonUtil.clearSharedPreferences(ct, "seting_1");
         doHITask(); // TODO 测试按钮
+
+        UserRoleUtils.checkUserRole(this,getmRootView());
     }
 
     private void doHITask() {

+ 6 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/SettingActivity.java

@@ -41,7 +41,7 @@ import com.xzjmyk.pm.activity.db.dao.VideoFileDao;
 import com.xzjmyk.pm.activity.helper.LoginHelper;
 import com.xzjmyk.pm.activity.sp.UserSp;
 import com.xzjmyk.pm.activity.ui.MainActivity;
-import com.xzjmyk.pm.activity.ui.base.ActionBackActivity;
+import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.me.FeedbackActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.FlightsActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.MissionSetActivity;
@@ -52,6 +52,7 @@ import com.xzjmyk.pm.activity.ui.erp.entity.InAndExitTimeEntity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
+import com.xzjmyk.pm.activity.ui.erp.util.UserRoleUtils;
 import com.xzjmyk.pm.activity.ui.erp.view.SwitchView;
 import com.xzjmyk.pm.activity.ui.tool.WebViewActivity;
 import com.xzjmyk.pm.activity.util.DisplayUtil;
@@ -70,7 +71,7 @@ import java.io.File;
 /**
  * 设置
  */
-public class SettingActivity extends ActionBackActivity implements View.OnClickListener {
+public class SettingActivity extends BaseActivity implements View.OnClickListener {
 
     private Button mExitBtn;
     private TextView mCacheTv;
@@ -103,7 +104,7 @@ public class SettingActivity extends ActionBackActivity implements View.OnClickL
 
     @ViewInject(R.id.tv_help_new)
     private TextView tv_help_new;
-  
+
 
     @ViewInject(R.id.language_us_rl)
     private RelativeLayout language_us_rl;
@@ -271,6 +272,7 @@ public class SettingActivity extends ActionBackActivity implements View.OnClickL
         } else {
             language_us_rl.setVisibility(View.VISIBLE);
         }
+        UserRoleUtils.checkUserRole(this,getRootView());
     }
 
     private boolean isServiceRunning(String servicename) { // 判断某个服务是否已经运行
@@ -374,7 +376,7 @@ public class SettingActivity extends ActionBackActivity implements View.OnClickL
             break;
             case R.id.about_us_rl:// 关于我们
                 startActivity(new Intent(mContext, AboutActivity.class));
-              
+
                 break;
             case R.id.share_rl:
                 share();

+ 4 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java

@@ -37,6 +37,7 @@ 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.LogUtil;
 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.view.VoiceSearchView;
 import com.xzjmyk.pm.activity.ui.platform.task.TaskB2BActivity;
 import com.xzjmyk.pm.activity.util.DateFormatUtil;
@@ -229,9 +230,12 @@ public class MessageFragment extends EasyFragment implements IMessageView,   Vie
             subscribe_rl.setVisibility(View.VISIBLE);
 //            news_notice_rl.setVisibility(View.GONE);
         }
+        UserRoleUtils.checkUserRole(this,view);
         return view;
     }
 
+  
+
     private void showPopupWindow() {
         if (setWindow == null) initPopupWindow();
         setWindow.showAtLocation(mContext.getWindow().getDecorView().

+ 26 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/platform/task/TaskAddErpActivity.java

@@ -15,11 +15,15 @@ import android.widget.TextView;
 import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
+import com.iflytek.cloud.RecognizerResult;
+import com.iflytek.cloud.SpeechError;
+import com.iflytek.cloud.ui.RecognizerDialogListener;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.AppConstant;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.audio.voicerecognition.JsonParser;
 import com.xzjmyk.pm.activity.bean.oa.SelectEmUser;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.form.SelectCalendarActivity;
@@ -31,6 +35,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 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.oa.OAConfig;
+import com.xzjmyk.pm.activity.ui.erp.util.oa.RecognizerDialogUtil;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.view.TagGroup;
 import com.xzjmyk.pm.activity.view.wheel.DateTimePicker;
@@ -45,7 +50,7 @@ import java.util.Map;
  * Created by FANGlh on 2017/3/30.
  * function:erp添加任务界面同步于b2b任务添加界面
  */
-public class TaskAddErpActivity extends BaseActivity implements View.OnClickListener {
+public class TaskAddErpActivity extends BaseActivity implements View.OnClickListener,RecognizerDialogListener {
     private static final int TASK_ADD_ERP = 0x330;
     @ViewInject(R.id.et_title)
     private EditText et_title;
@@ -59,6 +64,8 @@ public class TaskAddErpActivity extends BaseActivity implements View.OnClickList
     private TextView et_startime;
     @ViewInject(R.id.et_endtime)
     private TextView et_endtime;
+    @ViewInject(R.id.voice_search_iv)
+    private ImageView voice_search_iv;
 
     private String[] tagValues;
     private int save = 0;
@@ -108,6 +115,13 @@ public class TaskAddErpActivity extends BaseActivity implements View.OnClickList
         String current_time = TimeUtils.f_long_2_str(System.currentTimeMillis());
         et_startime.setText(current_time);
         et_endtime.setText(current_time);
+
+        voice_search_iv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                RecognizerDialogUtil.showRecognizerDialog(ct,TaskAddErpActivity.this);
+            }
+        });
     }
 
     @Override
@@ -341,4 +355,15 @@ public class TaskAddErpActivity extends BaseActivity implements View.OnClickList
             }
         }
     };
+
+    @Override
+    public void onResult(RecognizerResult recognizerResult, boolean b) {
+        String text = JsonParser.parseIatResult(recognizerResult.getResultString());
+        et_task_detail.setText(et_task_detail.getText().toString() + CommonUtil.getPlaintext(text));
+    }
+
+    @Override
+    public void onError(SpeechError speechError) {
+
+    }
 }

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/tool/ThreadUtil.java

@@ -9,6 +9,7 @@ import java.util.concurrent.Executors;
  */
 public class ThreadUtil {
     private static ThreadUtil instance = null;
+    ExecutorService cachedThreadPool =  Executors.newCachedThreadPool();
 
     public static ThreadUtil getInstance() {
         if (instance == null) {
@@ -26,13 +27,12 @@ public class ThreadUtil {
      * @param runnable
      */
     public void addLoopTask(Runnable runnable) {
-        ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
+//        ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
         cachedThreadPool.execute(runnable);
     }
 
     //普通线程
     public void addTask(Runnable runnable) {
-        ExecutorService cachedThreadPool = Executors.newFixedThreadPool(10);
         cachedThreadPool.execute(runnable);
     }
 

+ 179 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/QSComShowPpUtils.java

@@ -0,0 +1,179 @@
+package com.xzjmyk.pm.activity.util;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.PopupWindow;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONException;
+import com.alibaba.fastjson.JSONObject;
+import com.xzjmyk.pm.activity.MyApplication;
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.ui.erp.activity.secretary.BookingDetailActivity;
+import com.xzjmyk.pm.activity.ui.erp.model.QSCModel;
+import com.xzjmyk.pm.activity.ui.erp.model.book.BookingModel;
+import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
+import com.xzjmyk.pm.activity.view.MyListView;
+import com.xzjmyk.pm.activity.xmpp.MyActivityManager;
+
+import java.util.ArrayList;
+
+/**
+ * Created by FANGlh on 2017/8/7.
+ * function:
+ */
+
+public class QSComShowPpUtils {
+    public QSComShowPpUtils() {
+    }
+    public static void qSComShowPp(final int code, ArrayList<QSCModel> qscModelsList, final String realList){
+        View contentView = LayoutInflater.from(MyActivityManager.getCurrentActivity()).inflate(R.layout.com_show_menu, null);
+        DisplayMetrics dm =MyActivityManager.getCurrentActivity().getResources().getDisplayMetrics();
+        int w_screen = dm.widthPixels;
+        int h_screen = dm.heightPixels;
+        w_screen = DisplayUtil.dip2px(MyActivityManager.getCurrentActivity(), 350);
+        h_screen = DisplayUtil.dip2px(MyActivityManager.getCurrentActivity(), 400);
+        final PopupWindow popupWindow = new PopupWindow(contentView, w_screen, h_screen, true);
+        popupWindow.setTouchable(true);
+        popupWindow.setOutsideTouchable(false);
+        // 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
+        popupWindow.setBackgroundDrawable( MyActivityManager.getCurrentActivity().getResources().getDrawable(R.drawable.pop_round_bg));
+        // 设置好参数之后再show
+        popupWindow.showAtLocation(contentView, Gravity.CENTER, 0, 0);
+        QSearchPpwindowUtils.setbg(MyActivityManager.getCurrentActivity(),popupWindow,0.4f);
+        TextView title_tv = (TextView) contentView.findViewById(R.id.title);
+        initTitle(code,title_tv);
+
+        MyListView mlist = (MyListView) contentView.findViewById(R.id.qs_common_mlist);
+
+        mlist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+//                enterItemJudge(code,position,realList,view);
+                popupWindow.dismiss();
+            }
+        });
+        LogUtil.prinlnLongMsg("qscModelsList1",JSON.toJSONString(qscModelsList));
+        Log.d("CurrentActivity()",MyActivityManager.getCurrentActivity()+"null");
+
+        ComShowAdapter mAdapter = new ComShowAdapter(MyApplication.getInstance());
+        mAdapter.setModels(qscModelsList);
+        mlist.setAdapter(mAdapter);
+    }
+
+    private static void initTitle(int code, TextView title_tv) {
+        String title = "";
+        switch (code){
+            case 0x01:
+                title = "我的预约";
+                break;
+
+            default:
+        }
+        title_tv.setText(title+"");
+    }
+
+    private static void enterItemJudge(int code, int position, String realList, View view) {
+        switch (code){
+            case 0x01:
+                try {
+                    JSONArray array = JSON.parseArray(realList);
+                    JSONObject object = array.getJSONObject(position);
+                    BookingModel model = new BookingModel();
+                    model.setAb_address(object.getString("ab_address"));
+                    model.setAb_bman(object.getString("ab_bman"));
+                    model.setAb_bmanid(object.getString("ab_bmanid"));
+                    model.setAb_confirmstatus(object.getString("ab_confirmstatus"));
+                    model.setAb_content(object.getString("ab_content"));
+                    model.setAb_endtime(object.getString("ab_endtime"));
+                    model.setAb_id(object.getString("ab_id"));
+                    model.setAb_latitude(object.getString("ab_latitude"));
+                    model.setAb_longitude(object.getString("ab_longitude"));
+                    model.setAb_recorddate(object.getString("ab_recorddate"));
+                    model.setAb_recordid(object.getString("ab_recordid"));
+                    model.setAb_recordman(object.getString("ab_recordman"));
+                    model.setAb_sharestatus(object.getString("ab_sharestatus"));
+                    model.setAb_starttime(object.getString("ab_starttime"));
+                    model.setAb_type(object.getString("ab_type"));
+                    Bundle bundle = new Bundle();
+                    bundle.putParcelable("model", model);
+                    bundle.putBoolean("isShared", true);
+                    MyActivityManager.getCurrentActivity().startActivity(
+                            new Intent(MyActivityManager.getCurrentActivity(), BookingDetailActivity.class)
+                            .putExtras(bundle)
+                    );
+                }catch (JSONException e){
+                    e.printStackTrace();
+                }catch (Exception e) {
+                    e.printStackTrace();
+                }
+                break;
+            case 0x02:
+                break;
+                default:
+        }
+    }
+
+    private static class ComShowAdapter extends BaseAdapter{
+        private ArrayList<QSCModel> models;
+        private Context mContext;
+        public ComShowAdapter(Context mContext){
+            this.mContext = mContext;
+        }
+        public ArrayList<QSCModel> getModels() {
+            return models;
+        }
+        public void setModels(ArrayList<QSCModel> models) {
+            this.models = models;
+            LogUtil.prinlnLongMsg("qscModelsList2",JSON.toJSONString(models)+"null?");
+        }
+        @Override
+        public int getCount() {
+            return ListUtils.isEmpty(getModels()) ? 0 : getModels().size();
+        }
+        @Override
+        public Object getItem(int position) {
+            return models.get(position);
+        }
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            QsViewHolder viewHolder = null;
+            if (convertView == null){
+                viewHolder = new QsViewHolder();
+                convertView = View.inflate(mContext,R.layout.com_show_ppitem,null);
+                viewHolder.key1 = (TextView) convertView.findViewById(R.id.key1Tv);
+                viewHolder.key2 = (TextView) convertView.findViewById(R.id.key2Tv);
+                viewHolder.key3 = (TextView) convertView.findViewById(R.id.key3Tv);
+                convertView.setTag(viewHolder);
+            }else {
+                viewHolder = (QsViewHolder) convertView.getTag();
+            }
+
+            viewHolder.key1.setText(getModels().get(position).getKey1()+"");
+            viewHolder.key2.setText(getModels().get(position).getKey2()+"");
+            viewHolder.key3.setText(getModels().get(position).getKey3()+"");
+            return convertView;
+        }
+        class QsViewHolder {
+            TextView key1;
+            TextView key2;
+            TextView key3;
+        }
+    }
+}

+ 252 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/QSearchPpwindowUtils.java

@@ -0,0 +1,252 @@
+package com.xzjmyk.pm.activity.util;
+
+import android.app.Activity;
+import android.os.Handler;
+import android.os.Message;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.PopupWindow;
+import android.widget.Toast;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.iflytek.cloud.RecognizerResult;
+import com.iflytek.cloud.SpeechError;
+import com.iflytek.cloud.ui.RecognizerDialogListener;
+import com.xzjmyk.pm.activity.MyApplication;
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.audio.voicerecognition.JsonParser;
+import com.xzjmyk.pm.activity.ui.MainActivity;
+import com.xzjmyk.pm.activity.ui.erp.model.QSCModel;
+import com.xzjmyk.pm.activity.ui.erp.model.book.BookingModel;
+import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.Constants;
+import com.xzjmyk.pm.activity.ui.erp.util.JsonValidator;
+import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.oa.RecognizerDialogUtil;
+import com.xzjmyk.pm.activity.xmpp.MyActivityManager;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Created by FANGlh on 2017/8/4.
+ * function:
+ */
+
+public class QSearchPpwindowUtils{
+    public QSearchPpwindowUtils() {
+    }
+
+    public static void qSearchWindows(final Activity activity){
+        final boolean[] isqSearch = {true};
+        View contentView = LayoutInflater.from(activity).inflate(R.layout.judge_qsearch_window, null);
+        DisplayMetrics dm = MyApplication.getInstance().getResources().getDisplayMetrics();
+        int w_screen = dm.widthPixels;
+        int h_screen = dm.heightPixels;
+        w_screen = DisplayUtil.dip2px(activity, 250);
+        h_screen = DisplayUtil.dip2px(activity, 150);
+        final PopupWindow  popupWindow = new PopupWindow(contentView, w_screen, h_screen, true);
+        popupWindow.setTouchable(true);
+        popupWindow.setOutsideTouchable(false);
+        // 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
+        popupWindow.setBackgroundDrawable( MyApplication.getInstance().getResources().getDrawable(R.drawable.pop_round_bg));
+        // 设置好参数之后再show
+        popupWindow.showAtLocation(contentView, Gravity.CENTER, 0, 0);
+        setbg(activity,popupWindow,0.4f);
+        contentView.findViewById(R.id.next_tv).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                popupWindow.dismiss();  //下次进入再说
+                isqSearch[0] = false;
+            }
+        });
+        contentView.findViewById(R.id.no_tv).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                PreferenceUtils.putInt(MainActivity.Q_SEARCH, 1);
+                popupWindow.dismiss();  //不再提示
+                isqSearch[0] = false;
+            }
+        });
+        new android.os.Handler().postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                if (isqSearch[0]&&activity!=null&&!activity.isFinishing()){
+                    RecognizerDialogUtil.showRecognizerDialog(activity,new RecognizerDialogListener() {
+                        @Override
+                        public void onResult(RecognizerResult recognizerResult, boolean b) {
+                            String text = JsonParser.parseIatResult(recognizerResult.getResultString());
+                            if (!StringUtils.isEmpty(text)){
+                                handlerQSearch(activity,CommonUtil.getPlaintext(text));  //处理好的语音进行刷选判断逻辑
+                            }
+                        }
+                        @Override
+                        public void onError(SpeechError speechError) {
+                        }
+                    });
+//                    handlerQSearch(activity,"预约你");
+                    popupWindow.dismiss();
+                }
+            }
+        },6000);
+    }
+
+    private static void handlerQSearch(Activity activity, String text) {
+        Log.i("handlerQSearch",text+"");
+        String url=null;
+        Map<String,Object> params = new HashMap<>();
+
+        if (text.contains("预约")){
+            url =   Constants.IM_BASE_URL + "user/appBookingList";
+            params.put("token", MyApplication.getInstance().mAccessToken);
+            params.put("userid", MyApplication.getInstance().mLoginUser.getUserId());
+            params.put("telephone",MyApplication.getInstance().mLoginUser.getTelephone());
+            params.put("yearmonth", DateFormatUtil.getStrDate4Date(new Date(System.currentTimeMillis()), "yyyyMM"));
+        }else {
+            Toast.makeText(MyActivityManager.getCurrentActivity(),"导航"+text+"功能未实现",Toast.LENGTH_LONG).show();
+        }
+        CommonHttp(activity,url,params);
+
+    }
+    private static void CommonHttp(Activity activity, String comurl, Map<String, Object> params) {
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(activity, "sessionId"));
+        ViewUtil.httpSendRequest(activity, comurl, params, cHandler, headers, 0x01, null, null, "get");
+    }
+
+
+    private static Handler cHandler = new Handler(){
+        @Override
+        public void handleMessage(Message msg) {
+            super.handleMessage(msg);
+            String result = msg.getData().getString("result");
+            switch(msg.what){
+                case 0x01:
+                    if (!StringUtils.isEmpty(result)){
+                        Log.i("0x01result", result);
+//                        QSearchDatasUtils.handleBookDatas(result);
+                        handleBookDatas(0x01,result);
+                    }
+                    break;
+                case 0x02:
+                    break;
+                case 0x03:
+                    break;
+                case 0x04:
+                    break;
+                case 0x05:
+                    break;
+                case 0x06:
+                    break;
+                case 0x07:
+                    break;
+                case Constants.APP_SOCKETIMEOUTEXCEPTION:
+                    if (new JsonValidator().validate(result)) {
+                        ToastMessage(JSON.parseObject(result).getString("exceptionInfo"));
+                    } else {
+                        ToastMessage(result);
+                    }
+                    break;
+            }
+        }
+    };
+
+    private static void handleBookDatas(int handleCode, String result) {
+        try {
+            final ArrayList<BookingModel> BookingModelList = new ArrayList<>();
+            final ArrayList<QSCModel>  qscModelsList = new ArrayList<>();
+            if (JSON.parseObject(result).getString("resultMsg") != null) {
+                return;
+            }
+            JSONArray jsonArray = JSON.parseArray(JSON.parseObject(result).getString("bookinglist"));
+            if (jsonArray != null) {
+                Set<Integer> tags = new HashSet<>();
+                for (int i = 0; i < jsonArray.size(); i++) {
+                    JSONObject object = jsonArray.getJSONObject(i);
+                    BookingModel model = new BookingModel();
+                    QSCModel qscModel = new QSCModel();
+                    model.setAb_address(object.getString("ab_address"));
+                    model.setAb_bman(object.getString("ab_bman"));
+                    model.setAb_bmanid(object.getString("ab_bmanid"));
+                    model.setAb_confirmstatus(object.getString("ab_confirmstatus"));
+                    model.setAb_content(object.getString("ab_content"));
+                    model.setAb_endtime(object.getString("ab_endtime"));
+                    model.setAb_id(object.getString("ab_id"));
+                    model.setAb_latitude(object.getString("ab_latitude"));
+                    model.setAb_longitude(object.getString("ab_longitude"));
+                    model.setAb_recorddate(object.getString("ab_recorddate"));
+                    model.setAb_recordid(object.getString("ab_recordid"));
+                    model.setAb_recordman(object.getString("ab_recordman"));
+                    model.setAb_sharestatus(object.getString("ab_sharestatus"));
+                    model.setAb_starttime(object.getString("ab_starttime"));
+                    model.setAb_type(object.getString("ab_type"));
+                    tags.add(Integer.valueOf(model.getAb_starttime().substring(8, 10)));
+
+                    qscModel.setKey1(object.getString("ab_recordman"));
+                    qscModel.setKey2(object.getString("ab_starttime"));
+                    qscModel.setKey3(object.getString("ab_content"));
+//                    if (model.getAb_starttime().contains(DateFormatUtil.getStrDate4Date(new Date(System.currentTimeMillis()), "yyyy-MM-dd"))) {
+                        BookingModelList.add(model);
+                        qscModelsList.add(qscModel);
+//                    }
+
+                    if (i == jsonArray.size() - 1){
+                        LogUtil.prinlnLongMsg("qscModelsList",JSON.toJSONString(qscModelsList));
+                        LogUtil.prinlnLongMsg("BookingModelList",JSON.toJSONString(BookingModelList));
+                        QSComShowPpUtils.qSComShowPp(0x01,qscModelsList,BookingModelList.toString());
+
+                    }
+
+                }
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
+
+
+    public static void ToastMessage(String message) {
+        ViewUtil.ToastMessage(MyApplication.getInstance(), message);
+    }
+    public  static void setbg(final Activity activity , PopupWindow popupWindow, float alpha) {
+        setBackgroundAlpha(activity, alpha);
+        if (popupWindow == null) return;
+        popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                setBackgroundAlpha(activity, 1f);
+            }
+        });
+    }
+    /**
+     * 设置页面的透明度
+     * 兼容华为手机(在个别华为手机上 设置透明度会不成功)
+     *
+     * @param bgAlpha 透明度   1表示不透明
+     */
+    public static 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);
+    }
+}

+ 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);
 				}
 			}

+ 36 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/xmpp/MyActivityManager.java

@@ -0,0 +1,36 @@
+package com.xzjmyk.pm.activity.xmpp;
+
+import android.app.Activity;
+
+import java.lang.ref.WeakReference;
+
+/**
+ * Created by FANGlh on 2017/8/7.
+ * function:
+ */
+
+public class MyActivityManager {
+    private static MyActivityManager sInstance = new MyActivityManager();
+    private static WeakReference<Activity> sCurrentActivityWeakRef;
+
+
+    private MyActivityManager() {
+
+    }
+
+    public static MyActivityManager getInstance() {
+        return sInstance;
+    }
+
+    public static Activity getCurrentActivity() {
+        Activity currentActivity = null;
+        if (sCurrentActivityWeakRef != null) {
+            currentActivity = sCurrentActivityWeakRef.get();
+        }
+        return currentActivity;
+    }
+
+    public void setCurrentActivity(Activity activity) {
+        sCurrentActivityWeakRef = new WeakReference<Activity>(activity);
+    }
+}

+ 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=设备号不一致

+ 23 - 0
WeiChat/src/main/res/drawable/bg_bule_btn1.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true">
+        <shape>
+            <solid android:color="@color/btn_orange_press" />
+
+            <padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0.5dp" />
+        </shape>
+    </item>
+    <item android:state_enabled="false">
+        <shape>
+            <solid android:color="@color/btn_orange_press" />
+       
+            <padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0.5dp" />
+        </shape>
+    </item>
+    <item>
+        <shape>
+            <solid android:color="@color/titleBlue" />
+            <padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0.5dp" />
+        </shape>
+    </item>
+</selector>

+ 29 - 17
WeiChat/src/main/res/layout/act_taskerp_add.xml

@@ -38,11 +38,23 @@
             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"/>
-            </RelativeLayout>
+
+
+            <ImageView
+                android:id="@+id/voice_search_iv"
+                android:background="@drawable/btn_yuyin_nor"
+                android:visibility="visible"
+                android:layout_marginRight="20dp"
+                android:layout_alignParentRight="true"
+                android:layout_width="20dp"
+                android:layout_height="20dp"
+                android:layout_marginTop="8dp"
+                />
+        </RelativeLayout>
         <EditText
             android:id="@+id/et_task_detail"
             android:background="@color/white"
@@ -52,7 +64,7 @@
             android:paddingLeft="10dp"
             android:layout_marginBottom="10dp"
             android:hint="@string/common_input" />
-        
+
         <RelativeLayout
             style="@style/form_relative_customer"
             android:background="@color/white"
@@ -152,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"
@@ -270,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 - 19
WeiChat/src/main/res/layout/activity_approval.xml

@@ -81,7 +81,7 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_above="@id/operationLL"
-        android:layout_marginBottom="10dp"
+        android:layout_marginBottom="@dimen/paddingApp"
         android:layout_marginTop="@dimen/paddingApp"
         android:background="@color/base_bg">
 
@@ -136,6 +136,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_above="@id/opinionRL"
+        android:background="@color/base_bg"
         android:focusableInTouchMode="true">
 
         <android.support.v7.widget.RecyclerView
@@ -148,22 +149,4 @@
             android:background="@color/base_bg"
             android:focusableInTouchMode="false"/>
     </RelativeLayout>
-    <LinearLayout
-        android:background="@color/bg_main"
-        android:id="@+id/cWll"
-        android:layout_width="100dp"
-        android:layout_height="wrap_content"
-        android:orientation="vertical"
-        android:layout_alignParentRight="true"
-        android:layout_above="@+id/opinionRL"
-        android:layout_marginRight="10dp"
-        android:visibility="gone"
-        >
-        <ListView
-            android:id="@+id/cWlist"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:dividerHeight="1dp">
-        </ListView>
-    </LinearLayout>
 </RelativeLayout>

+ 3 - 3
WeiChat/src/main/res/layout/activity_booking_detail.xml

@@ -198,17 +198,17 @@
        
         <Button
             android:id="@+id/bt_change"
-            android:layout_width="0dp"
+            android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_weight="1"
-            android:background="@drawable/select_weixin_list_item"
+            android:background="@drawable/bg_bule_btn1"
             android:text="@string/booking_change" />
 
         <View style="@style/app_line_v_1dp"></View>
 
         <Button
             android:id="@+id/bt_cancle"
-            android:layout_width="0dp"
+            android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_alignParentEnd="true"
             android:layout_alignParentRight="true"

+ 55 - 43
WeiChat/src/main/res/layout/activity_setting.xml

@@ -84,6 +84,13 @@
                 android:background="@drawable/selector_me_menu_item_bg"
                 android:visibility="gone">
 
+                <View
+                    android:id="@+id/view2"
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/line"
+                    android:layout_alignParentBottom="true"
+                    android:background="@color/item_line" />
+
                 <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -103,17 +110,19 @@
                     android:contentDescription="@string/app_name" />
             </RelativeLayout>
 
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="@dimen/line"
-                android:background="@color/item_line" />
-
             <RelativeLayout
                 android:id="@+id/uu_step_rl"
                 style="@style/IMTbleLine1"
                 android:background="@drawable/selector_me_menu_item_bg"
                 android:visibility="visible">
 
+                <View
+                    android:id="@+id/view3"
+                    android:layout_alignParentBottom="true"
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/line"
+                    android:background="@color/item_line" />
+
                 <TextView
                     android:id="@+id/uu_step_text"
                     android:layout_width="wrap_content"
@@ -154,16 +163,19 @@
 
             </RelativeLayout>
 
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="@dimen/line"
-                android:background="@color/item_line" />
             <!--设置关闭推送-->
             <RelativeLayout
                 android:id="@+id/close_push_rl"
                 style="@style/IMTbleLine1"
                 android:background="@drawable/selector_me_menu_item_bg">
 
+                <View
+                    android:id="@+id/view4"
+                    android:layout_alignParentBottom="true"
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/line"
+                    android:background="@color/item_line" />
+
                 <TextView
                     android:id="@+id/push_setting_text"
                     android:layout_width="wrap_content"
@@ -181,15 +193,19 @@
                     android:layout_alignParentRight="true"
                     android:layout_centerVertical="true" />
             </RelativeLayout>
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="@dimen/line"
-                android:background="@color/item_line" />
 
             <RelativeLayout
                 android:id="@+id/sign_in_rl"
                 style="@style/IMTbleLine"
                 android:background="@drawable/selector_me_menu_item_bg">
+
+                <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"
@@ -217,15 +233,17 @@
                     android:textColor="@android:color/white"
                     android:textSize="10.0dip" />
             </RelativeLayout>
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="@dimen/line"
-                android:background="@color/item_line" />
 
             <RelativeLayout
                 android:id="@+id/sign_out_rl"
                 style="@style/IMTbleLine"
                 android:background="@drawable/selector_me_menu_item_bg">
+                <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"
@@ -253,15 +271,16 @@
                     android:textColor="@android:color/white"
                     android:textSize="10.0dip" />
             </RelativeLayout>
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="@dimen/line"
-                android:background="@color/item_line" />
 
             <RelativeLayout
                 android:id="@+id/booking_set_rl"
                 style="@style/IMTbleLine"
                 android:background="@drawable/selector_me_menu_item_bg">
+                <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"
@@ -290,16 +309,16 @@
                     android:textSize="10.0dip" />
             </RelativeLayout>
             <!--清除缓存-->
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="@dimen/line"
-                android:background="@color/item_line" />
 
             <RelativeLayout
                 android:id="@+id/clear_cache_rl"
                 style="@style/IMTbleLine"
                 android:background="@drawable/selector_me_menu_item_bg">
-
+                <View
+                    android:layout_alignParentBottom="true"
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/line"
+                    android:background="@color/item_line" />
                 <TextView
                     android:id="@+id/cache_text"
                     android:layout_width="wrap_content"
@@ -328,11 +347,6 @@
                     android:contentDescription="@string/app_name" />
             </RelativeLayout>
 
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="@dimen/line"
-                android:background="@color/item_line" />
-
             <RelativeLayout
                 android:id="@+id/use_help_rl"
                 style="@style/IMTbleLine"
@@ -415,7 +429,11 @@
                 android:id="@+id/about_us_rl"
                 style="@style/IMTbleLine"
                 android:background="@drawable/selector_me_menu_item_bg">
-
+                <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"
@@ -435,11 +453,6 @@
                     android:contentDescription="@string/app_name" />
             </RelativeLayout>
 
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="@dimen/line"
-                android:background="@color/item_line" />
-
             <RelativeLayout
                 android:id="@+id/share_rl"
                 style="@style/IMTbleLine"
@@ -470,7 +483,11 @@
                 style="@style/IMTbleLine"
                 android:background="@drawable/selector_me_menu_item_bg"
                 android:clickable="true">
-
+                <View
+                    android:layout_alignParentBottom="true"
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/line"
+                    android:background="@color/item_line" />
                 <TextView
                     android:id="@+id/version_text"
                     android:layout_width="wrap_content"
@@ -499,11 +516,6 @@
                     android:contentDescription="@string/app_name" />
             </RelativeLayout>
 
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="@dimen/line"
-                android:background="@color/item_line" />
-
             <Button
                 android:id="@+id/exit_btn"
                 android:layout_width="match_parent"

+ 32 - 0
WeiChat/src/main/res/layout/com_show_menu.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="350dp"
+    android:layout_height="400dp"
+    android:background="@color/bg_main"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@+id/title"
+        android:padding="10dp"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="tltle"
+        android:background="@color/bg_main"
+        android:visibility="visible"
+        android:gravity="center_horizontal"
+        />
+    <com.xzjmyk.pm.activity.ui.erp.view.CustomerScrollView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:fillViewport="true"
+        android:scrollbars="none">
+       <com.xzjmyk.pm.activity.view.MyListView
+           android:id="@+id/qs_common_mlist"
+           android:layout_width="match_parent"
+           android:layout_height="wrap_content"
+           android:visibility="visible"
+           android:background="#ebe9e9">
+
+       </com.xzjmyk.pm.activity.view.MyListView>
+    </com.xzjmyk.pm.activity.ui.erp.view.CustomerScrollView>
+</LinearLayout>

+ 66 - 0
WeiChat/src/main/res/layout/com_show_ppitem.xml

@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/selector_me_menu_item_bg">
+    <ImageView
+        android:visibility="gone"
+        android:id="@+id/photo_img"
+        android:layout_width="40dp"
+        android:layout_height="40dp"
+        android:contentDescription="@string/app_name"
+        android:layout_marginLeft="10dp"
+        android:layout_marginTop="12dp"
+        android:src="@drawable/common_header_boy" />
+    <de.hdodenhof.circleimageview.CircleImageView
+        android:visibility="gone"
+        android:id="@+id/photo_me"
+        android:layout_width="40dp"
+        android:layout_height="40dp"
+        android:contentDescription="@string/app_name"
+        android:layout_marginLeft="10dp"
+        android:layout_marginTop="12dp"
+        android:src="@drawable/common_header_boy"/>
+    <LinearLayout
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@drawable/selector_me_menu_item_bg">
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent">
+            <TextView
+                android:id="@+id/key1Tv"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_margin="10dp"
+                android:textSize="15sp"
+                android:text="采购单-2013212"
+                android:maxLength="12"
+                android:singleLine="true"
+                android:ellipsize="end"
+                android:textColor="@color/light_gray"/>
+
+            <TextView
+                android:id="@+id/key2Tv"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_margin="10dp"
+                android:layout_alignParentRight="true"
+                android:text="2016-10-09 09:11"
+                android:textColor="@color/light_gray"/>
+        </RelativeLayout>
+
+        <TextView
+            android:id="@+id/key3Tv"
+            android:layout_marginLeft="10dp"
+            android:layout_marginBottom="10dp"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="状态"
+            android:textColor="@color/light_gray"
+            android:autoText="false"
+            />
+    </LinearLayout>
+</LinearLayout>

+ 12 - 10
WeiChat/src/main/res/layout/fragment_me.xml

@@ -232,14 +232,13 @@
             android:layout_height="@dimen/line"
             android:background="@color/item_line" />
 
-
         <View
             android:layout_width="match_parent"
             android:layout_height="@dimen/line"
             android:layout_marginLeft="10dp"
             android:layout_marginRight="10dp"
-            android:layout_marginTop="7dp"
-            android:background="@color/item_line" />
+            android:layout_marginTop="7dp" />
+    
         <!--公司-->
         <!--账套-->
         <RelativeLayout
@@ -247,6 +246,15 @@
             style="@style/IMTbleLine_UP_Me"
             android:background="@drawable/selector_me_menu_item_bg">
 
+            <View
+                android:id="@+id/view"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/line"
+                android:layout_marginLeft="10dp"
+                android:layout_marginRight="10dp"
+                android:layout_alignParentBottom="true"
+                android:background="@color/item_line" />
+
             <TextView
                 android:id="@+id/company_text"
                 android:layout_width="wrap_content"
@@ -278,13 +286,6 @@
                 android:contentDescription="@string/app_name" />
         </RelativeLayout>
 
-        <View
-            android:layout_width="match_parent"
-            android:layout_height="@dimen/line"
-            android:layout_marginLeft="10dp"
-            android:layout_marginRight="10dp"
-            android:background="@color/item_line" />
-
         <RelativeLayout
             android:id="@+id/rl_master_change"
             style="@style/IMTbleLine_UP_Me"
@@ -326,6 +327,7 @@
             android:layout_height="@dimen/line"
             android:layout_marginLeft="10dp"
             android:layout_marginRight="10dp"
+            android:visibility="gone"
             android:background="@color/item_line" />
 
         <RelativeLayout

+ 1 - 1
WeiChat/src/main/res/layout/item_approval_node.xml

@@ -13,7 +13,7 @@
     <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:padding="8dp">
+        android:padding="@dimen/paddingApp">
 
         <ImageView
             android:id="@+id/statusIV"

+ 1 - 0
WeiChat/src/main/res/layout/item_approval_points.xml

@@ -7,6 +7,7 @@
     <LinearLayout
         android:id="@+id/context_ll"
         style="@style/approvalStyle"
+        android:paddingLeft="@dimen/paddingApp"
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
 

+ 3 - 2
WeiChat/src/main/res/layout/item_approval_rv.xml

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
               style="@style/approvalStyle"
+              android:paddingLeft="@dimen/paddingApp"
               android:layout_width="match_parent"
               android:layout_height="wrap_content">
 
@@ -9,14 +10,14 @@
         style="@style/approvalItemStyle"
         android:layout_width="0dp"
         android:layout_marginRight="10dp"
+        android:layout_height="wrap_content"
         android:layout_weight="1"/>
 
     <FrameLayout
         android:id="@+id/valuesFl"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
-        android:layout_marginRight="10dp"
-        android:layout_weight="2">
+        android:layout_weight="3">
 
         <EditText
             android:id="@+id/valueEt"

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

@@ -10,12 +10,11 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:background="@color/base_bg"
-        android:padding="10dp">
+        android:padding="@dimen/paddingApp">
 
         <com.xzjmyk.pm.activity.ui.erp.view.CircleImageView
             android:id="@+id/handIv"
             android:layout_width="50dp"
-
             android:layout_height="50dp"/>
 
         <ImageView

+ 55 - 0
WeiChat/src/main/res/layout/judge_qsearch_window.xml

@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="250dp"
+    android:layout_height="150dp"
+    android:orientation="vertical"
+    android:layout_gravity="center"
+    android:background="@drawable/pop_round_bg">
+
+
+   <!-- <TextView
+        android:padding="5dp"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:text="即将进行语音快速搜索,请在语音框出来后说中文"
+        android:textColor="@color/black"
+        android:textSize="15sp"/>-->
+    <TextView
+        android:padding="5dp"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:text="语音导航即将开始,请在语音框出来后说“预约” "
+        android:textColor="@color/black"
+        android:textSize="15sp"/>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="0.3dp"
+        android:background="@color/button_invalid"/>
+    <TextView
+        android:id="@+id/next_tv"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="2"
+        android:gravity="center"
+        android:textColor="@color/blue"
+        android:text="下次进入再说"
+        android:minHeight="45dp"
+        android:textSize="15sp"/>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="0.3dp"
+        android:background="@color/button_invalid"/>
+    <TextView
+        android:id="@+id/no_tv"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="2"
+        android:gravity="center"
+        android:textColor="@color/red"
+        android:text="不再提示"
+        android:minHeight="45dp"
+        android:textSize="15sp"/>
+
+</LinearLayout>

+ 7 - 3
WeiChat/src/main/res/layout/personal_reg_activity.xml

@@ -38,7 +38,7 @@
                 android:layout_width="@dimen/line"
                 android:layout_height="30dp"
                 android:background="@color/white"/>
-            <EditText
+            <com.andreabaccega.widget.FormEditText
                 android:id="@+id/phone_et"
                 android:layout_width="match_parent"
                 android:layout_height="40dp"
@@ -50,6 +50,8 @@
                 android:textSize="15sp"
                 android:inputType="number"
                 android:maxLength="11"
+                whatever:customRegexp="^((13[1-9])|(15[^4])|(18[0,2,3,5-9])|(17[0-8])|(147))\\d{8}$"
+                whatever:testErrorString="请输入正确的手机号"
                 />
         </LinearLayout>
         <LinearLayout
@@ -73,7 +75,7 @@
                 android:layout_width="@dimen/line"
                 android:layout_height="30dp"
                 android:background="@color/white"/>
-            <EditText
+            <com.andreabaccega.widget.FormEditText
                 android:id="@+id/password_et"
                 android:layout_width="match_parent"
                 android:layout_height="40dp"
@@ -84,7 +86,9 @@
                 android:textColorHint="@color/white"
                 android:textSize="15sp"
                 android:inputType="textPassword"
-                android:maxLength="6"
+                android:maxLength="12"
+                whatever:customRegexp="^[0-9a-zA-Z]{6,12}$"
+                whatever:testErrorString="请输入6-12位密码(仅限数字+字母组合)"
                 />
         </LinearLayout>
     <LinearLayout

+ 1 - 1
WeiChat/src/main/res/values/colors.xml

@@ -256,7 +256,7 @@
     <color name="darkgreen">#006400</color> <!-- 暗绿色 -->
     <color name="blue">#0000FF</color> <!-- 蓝色 -->
     <!--标题栏颜色-->
-    <color name="titleBlue">#3C97D7</color> <!-- 青蓝色 -->
+    <color name="titleBlue">#BF2F95DD</color> <!-- 青蓝色 -->
     <color name="titleCustomer">#DF8339</color>
     <color name="titleVisit">#6FB660</color>
     <color name="titleTask">#D0A233</color>

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

@@ -1837,6 +1837,7 @@
     <string name="booking_times">时间段:</string>
 
     <string name="booking_add">预约计划</string>
+    <string name="select_share_friend">分享好友</string>
 
     <!--关于新审批流的,后期会添加到四个文件中-->
     <string name="title_approval">审批单据</string>

+ 0 - 0
MPAndroidChart/.gitignore → app_core/imageload/.gitignore


+ 34 - 0
app_core/imageload/build.gradle

@@ -0,0 +1,34 @@
+apply plugin: 'com.android.library'
+
+
+android {
+    compileSdkVersion 24
+    buildToolsVersion "25.0.0"
+
+
+    defaultConfig {
+        minSdkVersion 9
+        targetSdkVersion 24
+        versionCode 1
+        versionName "1.0"
+
+        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+
+    }
+    buildTypes {
+        release {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+    }
+}
+
+dependencies {
+    compile fileTree(dir: 'libs', include: ['*.jar'])
+    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
+        exclude group: 'com.android.support', module: 'support-annotations'
+    })
+
+    compile 'com.android.support:appcompat-v7:25.3.1'
+    testCompile 'junit:junit:4.12'
+}

+ 25 - 0
app_core/imageload/proguard-rules.pro

@@ -0,0 +1,25 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in C:\Android\sdk/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile

+ 26 - 0
app_core/imageload/src/androidTest/java/base/android/com/imageload/ExampleInstrumentedTest.java

@@ -0,0 +1,26 @@
+package base.android.com.imageload;
+
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumentation test, which will execute on an Android device.
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+    @Test
+    public void useAppContext() throws Exception {
+        // Context of the app under test.
+        Context appContext = InstrumentationRegistry.getTargetContext();
+
+        assertEquals("base.android.com.imageload.test", appContext.getPackageName());
+    }
+}

+ 2 - 0
app_core/imageload/src/main/AndroidManifest.xml

@@ -0,0 +1,2 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="base.android.com.imageload" />

+ 3 - 0
app_core/imageload/src/main/res/values/strings.xml

@@ -0,0 +1,3 @@
+<resources>
+    <string name="app_name">imageload</string>
+</resources>

+ 17 - 0
app_core/imageload/src/test/java/base/android/com/imageload/ExampleUnitTest.java

@@ -0,0 +1,17 @@
+package base.android.com.imageload;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+public class ExampleUnitTest {
+    @Test
+    public void addition_isCorrect() throws Exception {
+        assertEquals(4, 2 + 2);
+    }
+}

+ 0 - 0
libbdupdatesdk/.gitignore → app_core/network/.gitignore


+ 34 - 0
app_core/network/build.gradle

@@ -0,0 +1,34 @@
+apply plugin: 'com.android.library'
+
+
+android {
+    compileSdkVersion 24
+    buildToolsVersion "25.0.0"
+
+
+    defaultConfig {
+        minSdkVersion 9
+        targetSdkVersion 24
+        versionCode 1
+        versionName "1.0"
+
+        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+
+    }
+    buildTypes {
+        release {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+    }
+}
+
+dependencies {
+    compile fileTree(dir: 'libs', include: ['*.jar'])
+    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
+        exclude group: 'com.android.support', module: 'support-annotations'
+    })
+
+    compile 'com.android.support:appcompat-v7:25.3.1'
+    testCompile 'junit:junit:4.12'
+}

+ 25 - 0
app_core/network/proguard-rules.pro

@@ -0,0 +1,25 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in C:\Android\sdk/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile

+ 26 - 0
app_core/network/src/androidTest/java/base/android/com/network/ExampleInstrumentedTest.java

@@ -0,0 +1,26 @@
+package base.android.com.network;
+
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumentation test, which will execute on an Android device.
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+    @Test
+    public void useAppContext() throws Exception {
+        // Context of the app under test.
+        Context appContext = InstrumentationRegistry.getTargetContext();
+
+        assertEquals("base.android.com.network.test", appContext.getPackageName());
+    }
+}

+ 2 - 0
app_core/network/src/main/AndroidManifest.xml

@@ -0,0 +1,2 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="base.android.com.network" />

+ 3 - 0
app_core/network/src/main/res/values/strings.xml

@@ -0,0 +1,3 @@
+<resources>
+    <string name="app_name">network</string>
+</resources>

+ 17 - 0
app_core/network/src/test/java/base/android/com/network/ExampleUnitTest.java

@@ -0,0 +1,17 @@
+package base.android.com.network;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+public class ExampleUnitTest {
+    @Test
+    public void addition_isCorrect() throws Exception {
+        assertEquals(4, 2 + 2);
+    }
+}

+ 0 - 0
libedittextformlibrary/.gitignore → app_third/MPAndroidChart/.gitignore


+ 0 - 0
MPAndroidChart/build.gradle → app_third/MPAndroidChart/build.gradle


+ 0 - 0
MPAndroidChart/proguard-rules.pro → app_third/MPAndroidChart/proguard-rules.pro


+ 0 - 0
MPAndroidChart/src/main/AndroidManifest.xml → app_third/MPAndroidChart/src/main/AndroidManifest.xml


+ 0 - 0
MPAndroidChart/src/main/java/com/github/mikephil/charting/animation/ChartAnimator.java → app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/animation/ChartAnimator.java


+ 0 - 0
MPAndroidChart/src/main/java/com/github/mikephil/charting/animation/Easing.java → app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/animation/Easing.java


+ 0 - 0
MPAndroidChart/src/main/java/com/github/mikephil/charting/animation/EasingFunction.java → app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/animation/EasingFunction.java


+ 0 - 0
MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/AbstractBuffer.java → app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/AbstractBuffer.java


+ 0 - 0
MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/BarBuffer.java → app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/BarBuffer.java


+ 0 - 0
MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/CandleBodyBuffer.java → app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/CandleBodyBuffer.java


+ 0 - 0
MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/CandleShadowBuffer.java → app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/CandleShadowBuffer.java


+ 0 - 0
MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/CircleBuffer.java → app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/CircleBuffer.java


+ 0 - 0
MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/HorizontalBarBuffer.java → app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/HorizontalBarBuffer.java


+ 0 - 0
MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/LineBuffer.java → app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/LineBuffer.java


+ 0 - 0
MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/ScatterBuffer.java → app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/buffer/ScatterBuffer.java


+ 0 - 0
MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/BarChart.java → app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/BarChart.java


+ 0 - 0
MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/BarLineChartBase.java → app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/BarLineChartBase.java


+ 0 - 0
MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/BubbleChart.java → app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/BubbleChart.java


+ 0 - 0
MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/CandleStickChart.java → app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/CandleStickChart.java


+ 0 - 0
MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/Chart.java → app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/Chart.java


+ 0 - 0
MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/CombinedChart.java → app_third/MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/CombinedChart.java


Некоторые файлы не были показаны из-за большого количества измененных файлов