소스 검색

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

FANGLH 8 년 전
부모
커밋
2b895bfa77
90개의 변경된 파일2373개의 추가작업 그리고 1086개의 파일을 삭제
  1. 4 1
      WeiChat/build.gradle
  2. 32 18
      WeiChat/src/main/AndroidManifest.xml
  3. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java
  4. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/InformActivity.java
  5. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/ScheduleActivity.java
  6. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/WebViewCommActivity.java
  7. 4 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/Constants.java
  8. 103 54
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/activity/DataInquiryActivity.java
  9. 88 30
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/activity/DataInquiryListActivity.java
  10. 4 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/activity/PDFDownloadActivity.java
  11. 98 48
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/activity/ReportStatisticsActivity.java
  12. 42 16
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/adapter/DataInquirySchemeConditionAdapter.java
  13. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingAddActivity.java
  14. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingDetailActivity.java
  15. 3 15
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingListActivity.java
  16. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/booking/BookAdapter.java
  17. 0 174
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/AllProcess.java
  18. 28 36
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java
  19. 5 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/platform/task/TaskActivity.java
  20. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/platform/task/TaskB2BActivity.java
  21. 2 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/tool/WebViewActivity.java
  22. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/dialog/QSComShowPpUtils.java
  23. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/dialog/QSearchPpwindowUtils.java
  24. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/im/UserRoleUtils.java
  25. 0 25
      WeiChat/src/main/java/com/xzjmyk/pm/activity/view/VpCalenderView.java
  26. 137 2
      WeiChat/src/main/res/layout/activity_booking_list.xml
  27. 1 1
      WeiChat/src/main/res/layout/activity_data_inquiry.xml
  28. 1 1
      WeiChat/src/main/res/layout/fragment_message.xml
  29. 2 2
      WeiChat/src/main/res/layout/fragment_new_message.xml
  30. 2 0
      app_core/common/src/main/java/com/common/data/DateFormatUtil.java
  31. 2 0
      app_core/common/src/main/java/com/core/app/AppConstant.java
  32. 30 16
      app_core/common/src/main/java/com/core/app/Constants.java
  33. 121 0
      app_core/common/src/main/java/com/core/dao/UUHelperDao.java
  34. 3 1
      app_core/common/src/main/java/com/core/db/DBOpenHelper.java
  35. 16 0
      app_core/common/src/main/java/com/core/db/DatabaseTables.java
  36. 127 0
      app_core/common/src/main/java/com/core/model/UUHelperModel.java
  37. 1 0
      app_core/common/src/main/java/com/core/model/XmppMessage.java
  38. 4 1
      app_core/common/src/main/java/com/core/utils/CommonUtil.java
  39. 2 1
      app_core/common/src/main/java/com/core/utils/IntentUtils.java
  40. 26 0
      app_core/common/src/main/java/com/core/utils/NotificationManage.java
  41. 60 26
      app_core/common/src/main/java/com/core/utils/time/wheel/OASigninPicker.java
  42. 1 1
      app_core/common/src/main/java/com/core/widget/DrawableCenterTextView.java
  43. 39 11
      app_core/common/src/main/java/com/core/xmpp/XChatManager.java
  44. 17 10
      app_core/common/src/main/java/com/core/xmpp/XmppConnectionManager.java
  45. 27 0
      app_core/common/src/main/java/com/core/xmpp/model/ChatMessage.java
  46. 136 2
      app_core/common/src/main/res/layout/activity_booking_list.xml
  47. 1 1
      app_core/common/src/main/res/layout/fragment_message.xml
  48. 2 2
      app_core/common/src/main/res/layout/fragment_new_message.xml
  49. 1 0
      app_modular/appbooking/.gitignore
  50. 29 0
      app_modular/appbooking/build.gradle
  51. 25 0
      app_modular/appbooking/proguard-rules.pro
  52. 26 0
      app_modular/appbooking/src/androidTest/java/base/android/com/appbooking/ExampleInstrumentedTest.java
  53. 10 0
      app_modular/appbooking/src/main/AndroidManifest.xml
  54. 19 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BbookingAddActivity.java
  55. 15 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/shares/SharesListActivity.java
  56. 122 0
      app_modular/appbooking/src/main/java/com/modular/booking/adapter/BookAdapter.java
  57. 1 1
      app_modular/appbooking/src/main/java/com/modular/booking/model/BookingModel.java
  58. 1 1
      app_modular/appbooking/src/main/java/com/modular/booking/model/SureBookModel.java
  59. 9 0
      app_modular/appbooking/src/main/res/layout/activity_bbooking_add.xml
  60. 12 0
      app_modular/appbooking/src/main/res/layout/activity_shares_list.xml
  61. 10 0
      app_modular/appbooking/src/main/res/values/strings.xml
  62. 17 0
      app_modular/appbooking/src/test/java/base/android/com/appbooking/ExampleUnitTest.java
  63. 6 1
      app_modular/appcontact/src/main/AndroidManifest.xml
  64. 0 462
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/fragment/ContactFragment.java
  65. 1 1
      app_modular/applogin/src/main/java/com/modular/login/LoginActivity.java
  66. 6 1
      app_modular/appme/src/main/AndroidManifest.xml
  67. 1 0
      app_modular/appmessages/build.gradle
  68. 19 9
      app_modular/appmessages/src/main/AndroidManifest.xml
  69. 13 8
      app_modular/appmessages/src/main/java/com/modular/appmessages/activity/AppWebViewActivity.java
  70. 1 0
      app_modular/appmessages/src/main/java/com/modular/appmessages/activity/ApprovalActivity.java
  71. 2 2
      app_modular/appmessages/src/main/java/com/modular/appmessages/activity/MsgsSecondCommonActivity.java
  72. 122 0
      app_modular/appmessages/src/main/java/com/modular/appmessages/activity/UUHelperActivity.java
  73. 17 18
      app_modular/appmessages/src/main/java/com/modular/appmessages/adapter/ApprovalAdapter.java
  74. 8 4
      app_modular/appmessages/src/main/java/com/modular/appmessages/adapter/MessageAdapter.java
  75. 1 1
      app_modular/appmessages/src/main/java/com/modular/appmessages/adapter/NewSchedultAdapter.java
  76. 1 1
      app_modular/appmessages/src/main/java/com/modular/appmessages/adapter/SchedultAdapter.java
  77. 216 0
      app_modular/appmessages/src/main/java/com/modular/appmessages/adapter/UUHelperAdapter.java
  78. 1 1
      app_modular/appmessages/src/main/java/com/modular/appmessages/model/AllProcess.java
  79. 97 60
      app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/MessagePresenter.java
  80. 1 1
      app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/imp/IMessageView.java
  81. 102 0
      app_modular/appmessages/src/main/java/com/modular/appmessages/ui/MessageHeaderView.java
  82. 10 0
      app_modular/appmessages/src/main/res/drawable/rl_circular_bg.xml
  83. 9 0
      app_modular/appmessages/src/main/res/drawable/text_angle_hint_bg.xml
  84. 10 0
      app_modular/appmessages/src/main/res/drawable/text_hint_bg.xml
  85. 75 0
      app_modular/appmessages/src/main/res/layout/activity_uuhelper.xml
  86. 68 0
      app_modular/appmessages/src/main/res/layout/incule_item_message.xml
  87. 33 0
      app_modular/appmessages/src/main/res/layout/item_uuhelper.xml
  88. 67 0
      app_modular/appmessages/src/main/res/layout/item_uuhelper_item.xml
  89. 3 0
      build.gradle
  90. 3 1
      settings.gradle

+ 4 - 1
WeiChat/build.gradle

@@ -106,6 +106,8 @@ dependencies {
     compile deps.stickyListHeaders
     compile deps.stickyGridHeaders
     compile deps.materialDialogs
+    compile deps.okhttp
+    
     androidTestCompile deps.leakcanaryNp
     debugCompile deps.leakcanary
     releaseCompile deps.leakcanaryNp
@@ -119,7 +121,8 @@ dependencies {
     compile project(':appcontact')
     compile project(':appme')
     compile project(':appworks')
-    compile 'com.squareup.okhttp3:okhttp:3.8.1'
+    compile project(":appbooking")
+  
     compile project(':android-pdf-viewer')
 }
 

+ 32 - 18
WeiChat/src/main/AndroidManifest.xml

@@ -246,7 +246,12 @@
             </intent-filter>
         </activity>
 
-        <activity android:name=".ui.erp.activity.WebViewLoadActivity" />
+        <activity android:name=".ui.erp.activity.WebViewLoadActivity">
+            <intent-filter>
+                <action android:name="com.modular.main.WebViewLoadActivity" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
         <activity android:name=".ui.erp.activity.NewsDetailActivity" />
         <activity android:name=".ui.erp.activity.NewsTwoActivity" />
         <activity android:name=".ui.erp.activity.NoticesActivity" />
@@ -402,7 +407,12 @@
         </activity>
         <activity
             android:name=".ui.tool.WebViewActivity"
-            android:screenOrientation="portrait" />
+            android:screenOrientation="portrait">
+            <intent-filter>
+                <action android:name="com.modular.main.WebViewActivity" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
         <activity
             android:name=".ui.tool.MemoryFileManagement"
             android:screenOrientation="portrait" />
@@ -563,20 +573,20 @@
             android:configChanges="orientation|keyboardHidden"
             android:label="@string/oaoutplan_title"
             android:theme="@style/OAThemeOutOffice"
-            android:windowSoftInputMode="adjustUnspecified|stateHidden" >
+            android:windowSoftInputMode="adjustUnspecified|stateHidden">
             <intent-filter>
-                <action android:name="com.modualr.appworks.OutofficeActivity"/>
-                <category android:name="android.intent.category.DEFAULT"/>
+                <action android:name="com.modualr.appworks.OutofficeActivity" />
+                <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
 
         <activity
             android:name=".ui.erp.activity.oa.OARegisterActivity"
             android:label="@string/meet_signin"
-            android:theme="@style/OAThemeMeet" >
+            android:theme="@style/OAThemeMeet">
             <intent-filter>
-                <action android:name="com.modular.metting.appworks.OARegisterActivity"/>
-                <category android:name="android.intent.category.DEFAULT"/>
+                <action android:name="com.modular.metting.appworks.OARegisterActivity" />
+                <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
 
@@ -645,7 +655,7 @@
             android:name=".ui.erp.activity.crm.ContactManAddActivity"
             android:configChanges="orientation|keyboardHidden"
             android:windowSoftInputMode="adjustUnspecified|stateHidden" />
-      =
+        =
         <activity
             android:name=".ui.erp.activity.oa.UserSelectActivity"
             android:label="@string/select_user" />
@@ -842,7 +852,6 @@
         <!-- 动态表单 -->
 
 
-
         <service
             android:name=".util.oa.AutoErpService"
             android:enabled="true"
@@ -864,10 +873,10 @@
         <activity
             android:name=".ui.erp.activity.oa.SelectRemarkActivity"
             android:label="@string/activity_visit_aims"
-            android:windowSoftInputMode="stateUnspecified|adjustNothing" >
+            android:windowSoftInputMode="stateUnspecified|adjustNothing">
             <intent-filter>
-                <action android:name="com.modular.appworks.SelectRemarkActivity"/>
-                <category android:name="android.intent.category.DEFAULT"/>
+                <action android:name="com.modular.appworks.SelectRemarkActivity" />
+                <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
         <activity
@@ -914,7 +923,7 @@
             android:name=".ui.erp.activity.oa.SelectCollisionActivity"
             android:configChanges="keyboardHidden|orientation"
             android:label="@string/select_join_number"
-            android:windowSoftInputMode="stateUnspecified|adjustNothing" >
+            android:windowSoftInputMode="stateUnspecified|adjustNothing">
             <intent-filter>
                 <action android:name="com.modular.main.SelectCollisionActivity" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -971,10 +980,10 @@
         </activity>
         <activity
             android:name=".ui.erp.activity.oa.NavigationActivity"
-            android:label="@string/navigation" >
+            android:label="@string/navigation">
             <intent-filter>
-                <action android:name="com.modular.appworks.NavigationActivity"/>
-                <category android:name="android.intent.category.DEFAULT"/>
+                <action android:name="com.modular.appworks.NavigationActivity" />
+                <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
         <!-- 计步功能 服务 -->
@@ -1019,7 +1028,12 @@
             android:name=".ui.erp.activity.secretary.SelectPContactsActivity"
             android:windowSoftInputMode="adjustPan" />
         <activity android:name=".ui.erp.activity.secretary.BookingDetailActivity" />
-        <activity android:name=".ui.erp.activity.secretary.BookingListActivity" />
+        <activity android:name=".ui.erp.activity.secretary.BookingListActivity">
+            <intent-filter>
+                <action android:name="com.modular.secretary.BookingListActivity" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
         <activity
             android:name=".ui.erp.activity.secretary.BookingAddActivity"
             android:windowSoftInputMode="adjustPan" />

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

@@ -85,6 +85,7 @@ import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.db.dao.WorkModelDao;
 import com.xzjmyk.pm.activity.ui.circle.BusinessCircleFragment;
 import com.xzjmyk.pm.activity.ui.erp.fragment.WorksFragment;
+import com.modular.appmessages.presenter.MessagePresenter;
 import com.xzjmyk.pm.activity.ui.find.MyFriendFragment;
 import com.xzjmyk.pm.activity.ui.me.MeFragment;
 import com.xzjmyk.pm.activity.ui.me.ScreenListener;
@@ -106,8 +107,7 @@ import java.util.Map;
 import static android.view.View.GONE;
 
 
-
-public class MainActivity extends BaseActivity implements ImStatusListener, NetWorkObservable.NetWorkObserver, AuthStateListener {
+public class MainActivity extends BaseActivity implements ImStatusListener, NetWorkObservable.NetWorkObserver, MessagePresenter.UnReaderListener, AuthStateListener {
     private static final int LOG_SEND_REQUEST = 17519;
     public static String HASHCODE = "MainActivity";
     public static boolean isUnReadWork;   //判断我的空间是否有新内容

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

@@ -27,7 +27,7 @@ import com.handmark.pulltorefresh.library.PullToRefreshListView;
 import com.lidroid.xutils.ViewUtils;
 import com.modular.appmessages.adapter.SchedultAdapter;
 import com.xzjmyk.pm.activity.R;
-import com.xzjmyk.pm.activity.ui.erp.entity.AllProcess;
+import com.modular.appmessages.model.AllProcess;
 import com.xzjmyk.pm.activity.ui.erp.net.HttpClient;
 import com.xzjmyk.pm.activity.util.oa.CommonUtil;
 

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

@@ -28,7 +28,7 @@ import com.handmark.pulltorefresh.library.PullToRefreshListView;
 import com.lidroid.xutils.ViewUtils;
 import com.modular.appmessages.adapter.NewSchedultAdapter;
 import com.xzjmyk.pm.activity.R;
-import com.xzjmyk.pm.activity.ui.erp.entity.AllProcess;
+import com.modular.appmessages.model.AllProcess;
 import com.xzjmyk.pm.activity.ui.erp.net.HttpClient;
 import com.xzjmyk.pm.activity.util.oa.CommonUtil;
 

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

@@ -136,7 +136,7 @@ public class WebViewCommActivity extends BaseActivity implements View.OnClickLis
         isCookie = intent.getBooleanExtra("cookie", false);
         String msg_title = intent.getStringExtra("title");
         if (!StringUtil.isEmpty(msg_title)) {
-            getSupportActionBar().setTitle(msg_title + "详情");
+            getSupportActionBar().setTitle(msg_title);
         }
         String StartApp = intent.getStringExtra("isStartApp");//参数账套
 

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

@@ -10,6 +10,9 @@ public interface Constants {
         String PDF_FILE_NAME = "statement.pdf";
         String PDF_FILE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/UU/statementFile";
 
+        String DATA_INQUIRY_MENU_CACHE = "data_inquiry_menu_cache";
+        String REPORT_QUERY_MENU_CACHE = "report_query_menu_cache";
+
         //打印成功
         int DOWNLOAD_SUCCESS = 1;
         //打印失败
@@ -18,5 +21,6 @@ public interface Constants {
         int PDF_OVERLOAD = 3;
         //打印进度
         int DOWNLOAD_PROGRESS = 4;
+
     }
 }

+ 103 - 54
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/activity/DataInquiryActivity.java

@@ -3,11 +3,14 @@ package com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.activity;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.text.TextUtils;
 import android.widget.ListView;
 
 import com.common.LogUtil;
 import com.core.app.Constants;
 import com.core.utils.CommonUtil;
+import com.handmark.pulltorefresh.library.PullToRefreshBase;
+import com.handmark.pulltorefresh.library.PullToRefreshListView;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.adapter.DataInquiryMenuListAdapter;
@@ -30,9 +33,11 @@ import java.util.Map;
  */
 public class DataInquiryActivity extends BaseActivity {
     private final int GET_MENU_DATA = 0x08;
-    private ListView mMenuListView;
+    private PullToRefreshListView mMenuListView;
     private List<GridMenuDataInquiryBean> mGridMenuDataInquiryBeans;
     private DataInquiryMenuListAdapter mDataInquiryMenuListAdapter;
+    private String mCurrentMaster;
+    private String mCurrentUser;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -40,16 +45,48 @@ public class DataInquiryActivity extends BaseActivity {
         setContentView(R.layout.activity_data_inquiry);
         getSupportActionBar().setTitle(R.string.select_query_service);
 
-        mMenuListView = (ListView) findViewById(R.id.data_inquiry_menu_lv);
+        mMenuListView = (PullToRefreshListView) findViewById(R.id.data_inquiry_menu_lv);
         mGridMenuDataInquiryBeans = new ArrayList<>();
         mDataInquiryMenuListAdapter = new DataInquiryMenuListAdapter(this, mGridMenuDataInquiryBeans);
         mMenuListView.setAdapter(mDataInquiryMenuListAdapter);
 
-        if (!CommonUtil.isNetWorkConnected(this)) {
-            ToastMessage(getString(R.string.networks_out));
+        mCurrentMaster = com.xzjmyk.pm.activity.util.oa.CommonUtil.getSharedPreferences(this, "erp_master");
+        mCurrentUser = com.xzjmyk.pm.activity.util.oa.CommonUtil.getSharedPreferences(this, "erp_username");
+
+        String dataInquiryMenuCache = CommonUtil.getSharedPreferences(this,
+                mCurrentUser + mCurrentMaster + com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.Constants.CONSTANT.DATA_INQUIRY_MENU_CACHE);
+        if (TextUtils.isEmpty(dataInquiryMenuCache)) {
+            if (!CommonUtil.isNetWorkConnected(this)) {
+                ToastMessage(getString(R.string.networks_out));
+            } else {
+                getMenuData();
+            }
         } else {
-            getMenuData();
+            analysisMenuData(dataInquiryMenuCache);
         }
+
+        mMenuListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
+            @Override
+            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
+                if (!CommonUtil.isNetWorkConnected(DataInquiryActivity.this)) {
+                    ToastMessage(getString(R.string.networks_out));
+                    if (mMenuListView.isRefreshing())
+                        mMenuListView.postDelayed(new Runnable() {
+                            @Override
+                            public void run() {
+                                mMenuListView.onRefreshComplete();
+                            }
+                        }, 500);
+                } else {
+                    getMenuData();
+                }
+            }
+
+            @Override
+            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
+
+            }
+        });
     }
 
     private void getMenuData() {
@@ -68,66 +105,78 @@ public class DataInquiryActivity extends BaseActivity {
             switch (msg.what) {
                 case GET_MENU_DATA:
                     progressDialog.dismiss();
+                    if (mMenuListView.isRefreshing())
+                        mMenuListView.onRefreshComplete();
                     String result = msg.getData().getString("result");
-                    if (result != null) {
-                        LogUtil.prinlnLongMsg("menudata", result);
-                        try {
-                            JSONObject resultObject = new JSONObject(result);
-                            JSONArray dataArray = resultObject.optJSONArray("data");
-                            if (dataArray != null) {
-                                for (int i = 0; i < dataArray.length(); i++) {
-                                    JSONObject dataObject = dataArray.optJSONObject(i);
-                                    if (dataObject != null) {
-                                        GridMenuDataInquiryBean gridMenuDataInquiryBean = new GridMenuDataInquiryBean();
-                                        String modelName = optStringNotNull(dataObject, "modelName");
-                                        gridMenuDataInquiryBean.setModelName(modelName);
-                                        JSONArray listArray = dataObject.optJSONArray("list");
-                                        if (listArray != null) {
-                                            List<GridMenuDataInquiryBean.QueryScheme> querySchemes = new ArrayList<>();
-                                            for (int j = 0; j < listArray.length(); j++) {
-                                                JSONObject listObject = listArray.optJSONObject(j);
-                                                if (listObject != null) {
-                                                    String title = optStringNotNull(listObject, "title");
-                                                    String caller = optStringNotNull(listObject, "caller");
-                                                    JSONArray schemeArray = listObject.optJSONArray("schemes");
-                                                    if (schemeArray != null) {
-                                                        for (int k = 0; k < schemeArray.length(); k++) {
-                                                            JSONObject schemeObject = schemeArray.optJSONObject(k);
-                                                            if (schemeObject != null) {
-                                                                String scheme = optStringNotNull(schemeObject, "scheme");
-                                                                String schemeId = optStringNotNull(schemeObject, "schemeId");
-
-                                                                GridMenuDataInquiryBean.QueryScheme queryScheme = new GridMenuDataInquiryBean.QueryScheme();
-                                                                queryScheme.setTitle(title);
-                                                                queryScheme.setCaller(caller);
-                                                                queryScheme.setScheme(scheme);
-                                                                queryScheme.setSchemeId(schemeId);
-
-                                                                querySchemes.add(queryScheme);
-                                                            }
-                                                        }
-                                                    }
+                    if (result != null)
+                        CommonUtil.setSharedPreferences(DataInquiryActivity.this,
+                                mCurrentUser + mCurrentMaster + com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.Constants.CONSTANT.DATA_INQUIRY_MENU_CACHE,
+                                result);
+                    analysisMenuData(result);
+                    break;
+                case Constants.APP_SOCKETIMEOUTEXCEPTION:
+                    progressDialog.dismiss();
+                    if (mMenuListView.isRefreshing())
+                        mMenuListView.onRefreshComplete();
+                    ToastMessage(msg.getData().getString("result"));
+                    break;
+            }
+        }
+    };
+
+    private void analysisMenuData(String result) {
+        if (result != null) {
+            LogUtil.prinlnLongMsg("menudata", result);
+            try {
+                JSONObject resultObject = new JSONObject(result);
+                JSONArray dataArray = resultObject.optJSONArray("data");
+                if (dataArray != null) {
+                    for (int i = 0; i < dataArray.length(); i++) {
+                        JSONObject dataObject = dataArray.optJSONObject(i);
+                        if (dataObject != null) {
+                            GridMenuDataInquiryBean gridMenuDataInquiryBean = new GridMenuDataInquiryBean();
+                            String modelName = optStringNotNull(dataObject, "modelName");
+                            gridMenuDataInquiryBean.setModelName(modelName);
+                            JSONArray listArray = dataObject.optJSONArray("list");
+                            if (listArray != null) {
+                                List<GridMenuDataInquiryBean.QueryScheme> querySchemes = new ArrayList<>();
+                                for (int j = 0; j < listArray.length(); j++) {
+                                    JSONObject listObject = listArray.optJSONObject(j);
+                                    if (listObject != null) {
+                                        String title = optStringNotNull(listObject, "title");
+                                        String caller = optStringNotNull(listObject, "caller");
+                                        JSONArray schemeArray = listObject.optJSONArray("schemes");
+                                        if (schemeArray != null) {
+                                            for (int k = 0; k < schemeArray.length(); k++) {
+                                                JSONObject schemeObject = schemeArray.optJSONObject(k);
+                                                if (schemeObject != null) {
+                                                    String scheme = optStringNotNull(schemeObject, "scheme");
+                                                    String schemeId = optStringNotNull(schemeObject, "schemeId");
+
+                                                    GridMenuDataInquiryBean.QueryScheme queryScheme = new GridMenuDataInquiryBean.QueryScheme();
+                                                    queryScheme.setTitle(title);
+                                                    queryScheme.setCaller(caller);
+                                                    queryScheme.setScheme(scheme);
+                                                    queryScheme.setSchemeId(schemeId);
+
+                                                    querySchemes.add(queryScheme);
                                                 }
                                             }
-                                            gridMenuDataInquiryBean.setQuerySchemes(querySchemes);
                                         }
-                                        mGridMenuDataInquiryBeans.add(gridMenuDataInquiryBean);
                                     }
                                 }
-                                mDataInquiryMenuListAdapter.notifyDataSetChanged();
+                                gridMenuDataInquiryBean.setQuerySchemes(querySchemes);
                             }
-                        } catch (JSONException e) {
-                            e.printStackTrace();
+                            mGridMenuDataInquiryBeans.add(gridMenuDataInquiryBean);
                         }
                     }
-                    break;
-                case Constants.APP_SOCKETIMEOUTEXCEPTION:
-                    progressDialog.dismiss();
-                    ToastMessage(msg.getData().getString("result"));
-                    break;
+                    mDataInquiryMenuListAdapter.notifyDataSetChanged();
+                }
+            } catch (JSONException e) {
+                e.printStackTrace();
             }
         }
-    };
+    }
 
 
     public String optStringNotNull(JSONObject json, String key) {

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

@@ -105,15 +105,18 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
     private int mOldPosition = -1;
     private DataInquiryTotalAdapter mDataInquiryTotalAdapter;
     private List<DataInquiryTotalBean> mDataInquiryTotalBeans;
+    private boolean isConditionSuccess = false;
 
     private Handler mHandler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
             switch (msg.what) {
                 case GET_QUERY_CRITERIA:
+                    isConditionSuccess = true;
                     if (mDataListView.isRefreshing())
                         mDataListView.onRefreshComplete();
-                    analysisCondition(msg);
+                    String result = msg.getData().getString("result");
+                    analysisCondition(result);
                     getSchemeData();
                     break;
                 case GET_DATA_RESULT:
@@ -167,7 +170,7 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
                 }
                 mHistoricalRecordAdapter.notifyDataSetChanged();
             }
-        }catch (Exception e){
+        } catch (Exception e) {
 
         }
 
@@ -176,16 +179,7 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
             mEmptyLayout.setErrorMessage(getString(R.string.networks_out));
             mEmptyLayout.showError();
         } else {
-            if (mQueryScheme != null) {
-                progressDialog.show();
-                String url = CommonUtil.getAppBaseUrl(this) + "mobile/qry/schemeCondition.action";
-                Map<String, Object> params = new HashMap<>();
-                params.put("caller", mQueryScheme.getCaller());
-                params.put("id", mQueryScheme.getSchemeId());
-                LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
-                headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
-                ViewUtil.httpSendRequest(this, url, params, mHandler, headers, GET_QUERY_CRITERIA, null, null, "post");
-            }
+            getQueryCriteria();
         }
 
     }
@@ -291,8 +285,17 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
             public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                 if (CommonUtil.isNetWorkConnected(DataInquiryListActivity.this)) {
                     mPageIndex = 1;
-                    getSchemeData();
+                    if (isConditionSuccess)
+                        getSchemeData();
+                    else
+                        getQueryCriteria();
                 } else {
+                    mDataListView.postDelayed(new Runnable() {
+                        @Override
+                        public void run() {
+                            mDataListView.onRefreshComplete();
+                        }
+                    },500);
                     mEmptyLayout.setErrorMessage(getString(R.string.networks_out));
                     mEmptyLayout.showError();
                 }
@@ -301,11 +304,23 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
             @Override
             public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                 if (!CommonUtil.isNetWorkConnected(DataInquiryListActivity.this)) {
+                    mDataListView.postDelayed(new Runnable() {
+                        @Override
+                        public void run() {
+                            mDataListView.onRefreshComplete();
+                        }
+                    },500);
                     mEmptyLayout.setErrorMessage(getString(R.string.networks_out));
                     mEmptyLayout.showError();
                 } else {
-                    mPageIndex++;
-                    getSchemeData();
+                    if (isConditionSuccess) {
+                        mPageIndex++;
+                        getSchemeData();
+                    } else {
+                        mPageIndex = 1;
+                        getQueryCriteria();
+                    }
+
                 }
             }
         });
@@ -426,6 +441,9 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
                 JSONArray listArray = resultObject.optJSONArray("listdata");
                 JSONObject totalObject = resultObject.optJSONObject("summaryField");
 
+                if ((listArray == null || listArray.length() < mPagesize) && mPageIndex > 1) {
+                    ToastMessage("已加载全部数据");
+                }
                 if (totalObject != null) {
                     for (int j = 0; j < mAllSchemeConditions.size(); j++) {
                         String field = mAllSchemeConditions.get(j).getField();
@@ -478,7 +496,7 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
                                 }
                                 mHistoricalRecordAdapter.notifyDataSetChanged();
                             }
-                        }catch (Exception e){
+                        } catch (Exception e) {
 
                         }
                     }
@@ -504,7 +522,7 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
                                     if ("null".equals(value)) {
                                         rowChildBean.setValue("");
                                     } else {
-                                        if ("D".equals(type) || "CD".equals(type)) {
+                                        if (("D".equals(type) || "CD".equals(type)) && value.length() > 8) {
                                             value = value.substring(0, value.length() - 8);
                                         }
                                         rowChildBean.setValue(value);
@@ -579,10 +597,9 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
         }
     }
 
-    private void analysisCondition(Message msg) {
-        String result = msg.getData().getString("result");
+    private void analysisCondition(String result) {
         if (result != null) {
-            LogUtil.prinlnLongMsg("querycriteria", msg.getData().getString("result"));
+            LogUtil.prinlnLongMsg("querycriteria", result);
             try {
                 JSONObject resultObject = new JSONObject(result);
                 JSONArray dataArray = resultObject.optJSONArray("data");
@@ -626,15 +643,25 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
                                         SchemeConditionBean.Property property = new SchemeConditionBean.Property();
                                         properties.add(property);
                                     }
-                                } else if ("D".equals(type) || "CD".equals(type)) {
+                                } else if ("D".equals(type) || "CD".equals(type) || "YM".equals(type) || "YMV".equals(type)) {
                                     for (int m = 0; m < 2; m++) {
                                         SchemeConditionBean.Property property = new SchemeConditionBean.Property();
                                         if (m == 0) {
-                                            property.setDisplay(getMonthFirstDay());
-                                            property.setValue(getMonthFirstDay());
+                                            if ("YM".equals(type) || "YMV".equals(type)) {
+                                                property.setDisplay(getMonthFirstDay("yyyyMM"));
+                                                property.setValue(getMonthFirstDay("yyyyMM"));
+                                            } else {
+                                                property.setDisplay(getMonthFirstDay("yyyy-MM-dd"));
+                                                property.setValue(getMonthFirstDay("yyyy-MM-dd"));
+                                            }
                                         } else if (m == 1) {
-                                            property.setDisplay(getMonthLastDay());
-                                            property.setValue(getMonthLastDay());
+                                            if ("YM".equals(type) || "YMV".equals(type)) {
+                                                property.setDisplay(getMonthLastDay("yyyyMM"));
+                                                property.setValue(getMonthLastDay("yyyyMM"));
+                                            } else {
+                                                property.setDisplay(getMonthLastDay("yyyy-MM-dd"));
+                                                property.setValue(getMonthLastDay("yyyy-MM-dd"));
+                                            }
                                         }
                                         properties.add(property);
                                     }
@@ -801,6 +828,24 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
                         + schemeConditionBean.getField()
                         + " <= to_date(\'" + schemeConditionBean.getProperties().get(1).getDisplay()
                         + "\',\'yyyy-MM-dd\')) and ";
+            } else if ("YMV".equals(schemeConditionBean.getType()) && schemeConditionBean.getProperties().size() == 2) {
+                mCondition = mCondition + "(ym_view_param.set_from("
+                        + schemeConditionBean.getProperties().get(0).getDisplay()
+                        + ") = " + schemeConditionBean.getProperties().get(0).getDisplay()
+                        + " and ym_view_param.set_to("
+                        + schemeConditionBean.getProperties().get(1).getDisplay()
+                        + ") = " + schemeConditionBean.getProperties().get(1).getDisplay()
+                        + ") and ";
+            } else if ("YM".equals(schemeConditionBean.getType()) && schemeConditionBean.getProperties().size() == 2) {
+                mCondition = mCondition + "("
+                        + (TextUtils.isEmpty(schemeConditionBean.getTable()) ? "" : (schemeConditionBean.getTable() + "."))
+                        + schemeConditionBean.getField()
+                        + " >= \'" + schemeConditionBean.getProperties().get(0).getDisplay()
+                        + "\' and "
+                        + (TextUtils.isEmpty(schemeConditionBean.getTable()) ? "" : (schemeConditionBean.getTable() + "."))
+                        + schemeConditionBean.getField()
+                        + " <= \'" + schemeConditionBean.getProperties().get(1).getDisplay()
+                        + "\') and ";
             } else if ("CBG".equals(schemeConditionBean.getType()) || "C".equals(schemeConditionBean.getType())
                     || "R".equals(schemeConditionBean.getType()) || "EC".equals(schemeConditionBean.getType())) {
                 String gridCondition = "";
@@ -886,7 +931,7 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
             String searchField = mSearchEditText.getText().toString().trim();
             if (!TextUtils.isEmpty(searchField)) {
                 if (mfuzzySchemeConditionBeans.size() == 0) {
-                    ToastMessage("该方案没有可用于模糊查询的字段!");
+                    ToastMessage("请前往系统配置模糊搜索字段,或尝试高级查询方式");
                     mSearchEditText.setText("");
                 } else {
                     mCondition = "";
@@ -917,6 +962,19 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
         }
     }
 
+    private void getQueryCriteria() {
+        if (mQueryScheme != null) {
+            progressDialog.show();
+            String url = CommonUtil.getAppBaseUrl(this) + "mobile/qry/schemeCondition.action";
+            Map<String, Object> params = new HashMap<>();
+            params.put("caller", mQueryScheme.getCaller());
+            params.put("id", mQueryScheme.getSchemeId());
+            LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+            headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+            ViewUtil.httpSendRequest(this, url, params, mHandler, headers, GET_QUERY_CRITERIA, null, null, "post");
+        }
+    }
+
     private void getSchemeData() {
         String url = CommonUtil.getAppBaseUrl(this) + "mobile/qry/schemeResult.action";
         Map<String, Object> params = new HashMap<>();
@@ -961,25 +1019,25 @@ public class DataInquiryListActivity extends BaseActivity implements View.OnClic
     /**
      * 得到本月的第一天
      */
-    public static String getMonthFirstDay() {
+    public static String getMonthFirstDay(String pattern) {
         Calendar calendar = Calendar.getInstance();
         calendar.set(Calendar.DAY_OF_MONTH, calendar
                 .getActualMinimum(Calendar.DAY_OF_MONTH));
 //        calendar.set( Calendar.DATE, 1);
-        SimpleDateFormat simpleFormate = new SimpleDateFormat("yyyy-MM-dd");
+        SimpleDateFormat simpleFormate = new SimpleDateFormat(pattern);
         return simpleFormate.format(calendar.getTime());
     }
 
     /**
      * 得到本月的最后一天
      */
-    public static String getMonthLastDay() {
+    public static String getMonthLastDay(String pattern) {
         Calendar calendar = Calendar.getInstance();
         calendar.set(Calendar.DAY_OF_MONTH, calendar
                 .getActualMaximum(Calendar.DAY_OF_MONTH));
 //        calendar.set( Calendar.DATE, 1);
 //        calendar.roll(Calendar.DATE, - 1);
-        SimpleDateFormat simpleFormate = new SimpleDateFormat("yyyy-MM-dd");
+        SimpleDateFormat simpleFormate = new SimpleDateFormat(pattern);
         return simpleFormate.format(calendar.getTime());
     }
 

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

@@ -214,7 +214,10 @@ public class PDFDownloadActivity extends BaseActivity implements View.OnClickLis
 
     @Override
     public void onError(Throwable t) {
-
+        mErrorLinearLayout.setVisibility(View.VISIBLE);
+        mStateTextView.setText("报表文件加载失败!");
+        mDownloadProgressBar.setProgress(0);
+        mRemainTextView.setText(100 + "");
     }
 
     @Override

+ 98 - 48
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/datainquiry/activity/ReportStatisticsActivity.java

@@ -3,6 +3,7 @@ package com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.activity;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.text.TextUtils;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ListAdapter;
@@ -11,6 +12,8 @@ import android.widget.ListView;
 import com.common.LogUtil;
 import com.core.app.Constants;
 import com.core.utils.CommonUtil;
+import com.handmark.pulltorefresh.library.PullToRefreshBase;
+import com.handmark.pulltorefresh.library.PullToRefreshListView;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.adapter.ReportStatisticsMenuListAdapter;
@@ -33,9 +36,11 @@ import java.util.Map;
  */
 public class ReportStatisticsActivity extends BaseActivity {
     private final int GET_MENU_DATA = 0x16;
-    private ListView mMenuListView;
+    private PullToRefreshListView mMenuListView;
     private List<GridMenuReportStatisticsBean> mGridMenuReportStatisticsBeans;
     private ReportStatisticsMenuListAdapter mReportStatisticsMenuListAdapter;
+    private String mCurrentMaster;
+    private String mCurrentUser;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -43,16 +48,49 @@ public class ReportStatisticsActivity extends BaseActivity {
         setContentView(R.layout.activity_data_inquiry);
         getSupportActionBar().setTitle(R.string.select_query_service);
 
-        mMenuListView = (ListView) findViewById(R.id.data_inquiry_menu_lv);
+        mMenuListView = (PullToRefreshListView) findViewById(R.id.data_inquiry_menu_lv);
         mGridMenuReportStatisticsBeans = new ArrayList<>();
         mReportStatisticsMenuListAdapter = new ReportStatisticsMenuListAdapter(this, mGridMenuReportStatisticsBeans);
         mMenuListView.setAdapter(mReportStatisticsMenuListAdapter);
 
-        if (!CommonUtil.isNetWorkConnected(this)) {
-            ToastMessage(getString(R.string.networks_out));
+        mCurrentMaster = com.xzjmyk.pm.activity.util.oa.CommonUtil.getSharedPreferences(this, "erp_master");
+        mCurrentUser = com.xzjmyk.pm.activity.util.oa.CommonUtil.getSharedPreferences(this, "erp_username");
+
+        String reportQueryMenuCache = CommonUtil.getSharedPreferences(this,
+                mCurrentUser + mCurrentMaster + com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.Constants.CONSTANT.REPORT_QUERY_MENU_CACHE);
+        if (TextUtils.isEmpty(reportQueryMenuCache)) {
+            if (!CommonUtil.isNetWorkConnected(this)) {
+                ToastMessage(getString(R.string.networks_out));
+            } else {
+                getMenuData();
+            }
         } else {
-            getMenuData();
+            analysisMenuData(reportQueryMenuCache);
         }
+
+        mMenuListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
+            @Override
+            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
+                if (!CommonUtil.isNetWorkConnected(ReportStatisticsActivity.this)) {
+                    ToastMessage(getString(R.string.networks_out));
+                    if (mMenuListView.isRefreshing())
+                        mMenuListView.postDelayed(new Runnable() {
+                            @Override
+                            public void run() {
+                                mMenuListView.onRefreshComplete();
+                            }
+                        }, 500);
+                } else {
+                    getMenuData();
+                }
+            }
+
+            @Override
+            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
+
+            }
+        });
+
     }
 
     private void getMenuData() {
@@ -71,59 +109,71 @@ public class ReportStatisticsActivity extends BaseActivity {
             switch (msg.what) {
                 case GET_MENU_DATA:
                     progressDialog.dismiss();
+                    if (mMenuListView.isRefreshing())
+                        mMenuListView.onRefreshComplete();
                     String result = msg.getData().getString("result");
-                    if (result != null) {
-                        LogUtil.prinlnLongMsg("menudata", result);
-                        try {
-                            JSONObject resultObject = new JSONObject(result);
-                            JSONArray dataArray = resultObject.optJSONArray("data");
-                            if (dataArray != null) {
-                                for (int i = 0; i < dataArray.length(); i++) {
-                                    JSONObject dataObject = dataArray.optJSONObject(i);
-                                    if (dataObject != null) {
-                                        GridMenuReportStatisticsBean gridMenuReportStatisticsBean
-                                                = new GridMenuReportStatisticsBean();
-                                        String modelName = optStringNotNull(dataObject, "modelName");
-                                        gridMenuReportStatisticsBean.setModelName(modelName);
-                                        JSONArray listArray = dataObject.optJSONArray("list");
-                                        List<GridMenuReportStatisticsBean.ListBean> listBeans = new ArrayList<>();
-                                        if (listArray != null) {
-                                            for (int j = 0; j < listArray.length(); j++) {
-                                                JSONObject listObject = listArray.optJSONObject(j);
-                                                if (listObject != null) {
-                                                    GridMenuReportStatisticsBean.ListBean listBean = new GridMenuReportStatisticsBean.ListBean();
-                                                    String caller = optStringNotNull(listObject, "caller");
-                                                    String title = optStringNotNull(listObject, "title");
-                                                    String reportName = optStringNotNull(listObject, "reportName");
-
-                                                    listBean.setCaller(caller);
-                                                    listBean.setReportName(reportName);
-                                                    listBean.setTitle(title);
-
-                                                    listBeans.add(listBean);
-                                                }
-                                            }
-                                            gridMenuReportStatisticsBean.setList(listBeans);
-                                        }
-                                        mGridMenuReportStatisticsBeans.add(gridMenuReportStatisticsBean);
-                                    }
-                                }
-                                mReportStatisticsMenuListAdapter.notifyDataSetChanged();
-                                //setListViewHeightBasedOnChildren(mMenuListView);
-                            }
-                        } catch (JSONException e) {
-                            e.printStackTrace();
-                        }
-                    }
+                    if (result != null)
+                        CommonUtil.setSharedPreferences(ReportStatisticsActivity.this,
+                                mCurrentUser + mCurrentMaster + com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.Constants.CONSTANT.REPORT_QUERY_MENU_CACHE,
+                                result);
+                    analysisMenuData(result);
                     break;
                 case Constants.APP_SOCKETIMEOUTEXCEPTION:
                     progressDialog.dismiss();
+                    if (mMenuListView.isRefreshing())
+                        mMenuListView.onRefreshComplete();
                     ToastMessage(msg.getData().getString("result"));
                     break;
             }
         }
     };
 
+    private void analysisMenuData(String result) {
+        if (result != null) {
+            LogUtil.prinlnLongMsg("menudata", result);
+            try {
+                JSONObject resultObject = new JSONObject(result);
+                JSONArray dataArray = resultObject.optJSONArray("data");
+                if (dataArray != null) {
+                    for (int i = 0; i < dataArray.length(); i++) {
+                        JSONObject dataObject = dataArray.optJSONObject(i);
+                        if (dataObject != null) {
+                            GridMenuReportStatisticsBean gridMenuReportStatisticsBean
+                                    = new GridMenuReportStatisticsBean();
+                            String modelName = optStringNotNull(dataObject, "modelName");
+                            gridMenuReportStatisticsBean.setModelName(modelName);
+                            JSONArray listArray = dataObject.optJSONArray("list");
+                            List<GridMenuReportStatisticsBean.ListBean> listBeans = new ArrayList<>();
+                            if (listArray != null) {
+                                for (int j = 0; j < listArray.length(); j++) {
+                                    JSONObject listObject = listArray.optJSONObject(j);
+                                    if (listObject != null) {
+                                        GridMenuReportStatisticsBean.ListBean listBean = new GridMenuReportStatisticsBean.ListBean();
+                                        String caller = optStringNotNull(listObject, "caller");
+                                        String title = optStringNotNull(listObject, "title");
+                                        String reportName = optStringNotNull(listObject, "reportName");
+
+                                        listBean.setCaller(caller);
+                                        listBean.setReportName(reportName);
+                                        listBean.setTitle(title);
+
+                                        listBeans.add(listBean);
+                                    }
+                                }
+                                gridMenuReportStatisticsBean.setList(listBeans);
+                            }
+                            mGridMenuReportStatisticsBeans.add(gridMenuReportStatisticsBean);
+                        }
+                    }
+                    mReportStatisticsMenuListAdapter.notifyDataSetChanged();
+                    //setListViewHeightBasedOnChildren(mMenuListView);
+                }
+            } catch (JSONException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
     public String optStringNotNull(JSONObject json, String key) {
         if (json.isNull(key)) {
             return "";

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

@@ -3,6 +3,7 @@ package com.xzjmyk.pm.activity.ui.erp.activity.datainquiry.adapter;
 import android.app.Activity;
 import android.content.Context;
 import android.text.Editable;
+import android.text.TextUtils;
 import android.text.TextWatcher;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -180,12 +181,15 @@ public class DataInquirySchemeConditionAdapter extends BaseAdapter {
                 break;
             case "D":
             case "CD":
+            case "YM":
+            case "YMV":
                 holder.stringEdittext.setVisibility(View.GONE);
                 holder.numEdittextLl.setVisibility(View.GONE);
                 holder.textviewLl.setVisibility(View.VISIBLE);
                 holder.gridview.setVisibility(View.GONE);
 
                 mProperties = object.getProperties();
+                String type = object.getType();
 
                 if (mProperties != null && mProperties.size() == 2) {
                     holder.textview1.setText(mProperties.get(0).getDisplay());
@@ -197,10 +201,12 @@ public class DataInquirySchemeConditionAdapter extends BaseAdapter {
                     public void onClick(View v) {
                         String time1 = holder.textview1.getText().toString();
                         String[] times1 = time1.split("-");
-                        if (times1.length >= 3) {
-                            showDateDialog(times1[0], times1[1], times1[2], holder.textview1, object, 0);
+                        if (("YM".equals(type) || "YMV".equals(type)) && time1.length() == 6) {
+                            showDateDialog(time1.substring(0, 4), time1.substring(4, 6), null, holder.textview1, type, object, 0);
+                        } else if (times1.length >= 3) {
+                            showDateDialog(times1[0], times1[1], times1[2], holder.textview1, type, object, 0);
                         } else {
-                            showDateDialog(null, null, null, holder.textview1, object, 0);
+                            showDateDialog(null, null, null, holder.textview1, type, object, 0);
                         }
                     }
                 });
@@ -210,10 +216,12 @@ public class DataInquirySchemeConditionAdapter extends BaseAdapter {
                     public void onClick(View v) {
                         String time2 = holder.textview2.getText().toString();
                         String[] times2 = time2.split("-");
-                        if (times2.length >= 3) {
-                            showDateDialog(times2[0], times2[1], times2[2], holder.textview2, object, 1);
+                        if (("YM".equals(type) || "YMV".equals(type)) && time2.length() == 6) {
+                            showDateDialog(time2.substring(0, 4), time2.substring(4, 6), null, holder.textview2, type, object, 1);
+                        } else if (times2.length >= 3) {
+                            showDateDialog(times2[0], times2[1], times2[2], holder.textview2, type, object, 1);
                         } else {
-                            showDateDialog(null, null, null, holder.textview2, object, 1);
+                            showDateDialog(null, null, null, holder.textview2, type, object, 1);
                         }
                     }
                 });
@@ -223,10 +231,12 @@ public class DataInquirySchemeConditionAdapter extends BaseAdapter {
                     public void onClick(View v) {
                         String time1 = holder.textview1.getText().toString();
                         String[] times1 = time1.split("-");
-                        if (times1.length >= 3) {
-                            showDateDialog(times1[0], times1[1], times1[2], holder.textview1, object, 0);
+                        if (("YM".equals(type) || "YMV".equals(type)) && time1.length() == 6) {
+                            showDateDialog(time1.substring(0, 4), time1.substring(4, 6), null, holder.textview1, type, object, 0);
+                        } else if (times1.length >= 3) {
+                            showDateDialog(times1[0], times1[1], times1[2], holder.textview1, type, object, 0);
                         } else {
-                            showDateDialog(null, null, null, holder.textview1, object, 0);
+                            showDateDialog(null, null, null, holder.textview1, type, object, 0);
                         }
                     }
                 });
@@ -236,10 +246,12 @@ public class DataInquirySchemeConditionAdapter extends BaseAdapter {
                     public void onClick(View v) {
                         String time2 = holder.textview2.getText().toString();
                         String[] times2 = time2.split("-");
-                        if (times2.length >= 3) {
-                            showDateDialog(times2[0], times2[1], times2[2], holder.textview2, object, 1);
+                        if (("YM".equals(type) || "YMV".equals(type)) && time2.length() == 6) {
+                            showDateDialog(time2.substring(0, 4), time2.substring(4, 6), null, holder.textview2, type, object, 1);
+                        } else if (times2.length >= 3) {
+                            showDateDialog(times2[0], times2[1], times2[2], holder.textview2, type, object, 1);
                         } else {
-                            showDateDialog(null, null, null, holder.textview2, object, 1);
+                            showDateDialog(null, null, null, holder.textview2, type, object, 1);
                         }
                     }
                 });
@@ -369,18 +381,32 @@ public class DataInquirySchemeConditionAdapter extends BaseAdapter {
         }
     }
 
-    private void showDateDialog(String year, String month, String day, final TextView tv, SchemeConditionBean object, int i) {
-        OASigninPicker picker = new OASigninPicker((Activity) context, 2000, 2030);
+    private void showDateDialog(String year, String month, String day, final TextView tv, String type, SchemeConditionBean object, int i) {
+        boolean haveDay = true;
+        if (("YM".equals(type) || "YMV".equals(type))) {
+            haveDay = false;
+        }
+        OASigninPicker picker = new OASigninPicker((Activity) context, 2000, 2030, haveDay);
         picker.setRange(2030, 12, 31);
         try {
-            picker.setSelectedItem(Integer.parseInt(year), Integer.parseInt(month), Integer.parseInt(day));
+            if (haveDay && !TextUtils.isEmpty(day))
+                picker.setSelectedItem(Integer.parseInt(year), Integer.parseInt(month), Integer.parseInt(day));
+            else
+                picker.setSelectedItem(Integer.parseInt(year), Integer.parseInt(month));
         } catch (Exception e) {
-            picker.setSelectedItem(CalendarUtil.getYear(), CalendarUtil.getMonth(), CalendarUtil.getDay());
+            if (haveDay)
+                picker.setSelectedItem(CalendarUtil.getYear(), CalendarUtil.getMonth(), CalendarUtil.getDay());
+            else
+                picker.setSelectedItem(CalendarUtil.getYear(), CalendarUtil.getMonth());
         }
+
         picker.setOnDateTimePickListener(new OASigninPicker.OnDateTimePickListener() {
             @Override
             public void setTime(String year, String month, String day) {
                 String time = year + "-" + month + "-" + day;
+                if (TextUtils.isEmpty(day)) {
+                    time = year + month;
+                }
                 tv.setText(time);
                 if (object.getProperties().size() == 2) {
                     object.getProperties().get(i).setDisplay(time);

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingAddActivity.java

@@ -44,7 +44,7 @@ import com.lidroid.xutils.view.annotation.ViewInject;
 import com.uas.appcontact.model.contacts.ContactsModel;
 import com.uas.appcontact.ui.activity.ContactsActivity;
 import com.xzjmyk.pm.activity.R;
-import com.xzjmyk.pm.activity.ui.erp.model.book.BookingModel;
+import com.modular.booking.model.BookingModel;
 import com.xzjmyk.pm.activity.util.oa.CommonUtil;
 
 import java.util.ArrayList;

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

@@ -44,7 +44,7 @@ import com.uas.appworks.OA.erp.model.SelectCollisionTurnBean;
 import com.uas.appworks.OA.erp.model.SelectEmUser;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.SelectCollisionActivity;
-import com.xzjmyk.pm.activity.ui.erp.model.book.BookingModel;
+import com.modular.booking.model.BookingModel;
 import com.xzjmyk.pm.activity.util.oa.CommonUtil;
 
 import java.util.HashMap;

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

@@ -26,19 +26,19 @@ import com.core.app.MyApplication;
 import com.core.base.HttpImp;
 import com.core.base.OABaseActivity;
 import com.core.net.http.ViewUtil;
+import com.core.utils.CommonUtil;
 import com.core.widget.CustomerScrollView;
 import com.core.widget.EmptyLayout;
 import com.core.widget.MyListView;
 import com.core.widget.view.selectcalendar.OACalendarView;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.modular.booking.adapter.BookAdapter;
+import com.modular.booking.model.BookingModel;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.MainActivity;
-import com.xzjmyk.pm.activity.ui.erp.adapter.booking.BookAdapter;
 import com.xzjmyk.pm.activity.ui.erp.adapter.oa.OACalenderViewPagerAdapter;
-import com.xzjmyk.pm.activity.ui.erp.model.book.BookingModel;
 import com.xzjmyk.pm.activity.ui.erp.model.book.SureBookModel;
-import com.xzjmyk.pm.activity.util.oa.CommonUtil;
 
 import java.util.ArrayList;
 import java.util.Calendar;
@@ -86,18 +86,6 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
         ViewUtils.inject(this);
         initView();
         initEvent();
-        // TODO test
-       /* mSureBookModel = new ArrayList<>();
-        DepositNoticeUtil m = new DepositNoticeUtil();
-        m.loadDepostNotice();
-        new Handler().postDelayed(new Runnable() {
-            @Override
-            public void run() {
-                mSureBookModel = DepositNoticeUtil.getsureBookData();
-                Lg.prinlnLongMsg("mSureBookModel",JSON.toJSONString(mSureBookModel));
-            }
-        },2000);*/
-        // TODO test
     }
 
 

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

@@ -9,8 +9,8 @@ import android.widget.ImageView;
 import android.widget.TextView;
 
 import com.common.data.DateFormatUtil;
+import com.modular.booking.model.BookingModel;
 import com.xzjmyk.pm.activity.R;
-import com.xzjmyk.pm.activity.ui.erp.model.book.BookingModel;
 
 import java.util.ArrayList;
 import java.util.Date;

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

@@ -1,174 +0,0 @@
-package com.xzjmyk.pm.activity.ui.erp.model;
-
-import java.io.Serializable;
-import java.util.Date;
-/**
- * @注释:待办事宜
- * @Administrator 2014年10月10日 下午3:22:54
- */
-public class AllProcess implements Serializable{
-	private static final long serialVersionUID = 9154546832037377352L;
-	private int id;//ID
-    private String ra_taskid;//取回复内容id
-	private String taskid;//节点编号
-	private String status;//当前状态
-	private String mainname;//流程名称
-	private String taskname;//节点名称
-	private String codevalue;//单据编号
-	private String type;//流程类型
-	private String typecode;//流程类型码
-	private String dealpersoncode;//处理人 -> em_code
-	private String recorderid;//发起人ID
-	private String recorder;//发起人名称
-	private Date datetime;//发起时间
-	private String defid;//流程版本号
-	private String caller;//流程callr
-	private String link;//对应URL地址
-	private String master;//所属的帐套
-	
-	private String describe="";//任务描述
-	private String duration="";//持续时间
-	private String ra_resourcecode;//执行人编号
-	private String taskcode;//取语音
-	private String attachs;//附件id
-	
-
-	
-	
-	public String getAttachs() {
-		return attachs;
-	}
-	public void setAttachs(String attachs) {
-		this.attachs = attachs;
-	}
-	public String getRa_resourcecode() {
-		return ra_resourcecode;
-	}
-	public void setRa_resourcecode(String ra_resourcecode) {
-		this.ra_resourcecode = ra_resourcecode;
-	}
-	public String getTaskname() {
-		return taskname;
-	}
-	public void setTaskname(String taskname) {
-		this.taskname = taskname;
-	}
-	public String getMaster() {
-		return master;
-	}
-	public void setMaster(String master) {
-		this.master = master;
-	}
-	public int getId() {
-		return id;
-	}
-	public void setId(int jp_id) {
-		this.id = jp_id;
-	}
-	public String getTaskid() {
-		return taskid;
-	}
-	public void setTaskid(String jp_nodeid) {
-		this.taskid = jp_nodeid;
-	}
-	public String getStatus() {
-		return status;
-	}
-	public void setStatus(String jp_status) {
-		this.status = jp_status;
-	}
-	public String getMainname() {
-		return mainname;
-	}
-	public void setMainname(String jp_name) {
-		this.mainname = jp_name;
-	}
-	public String getCodevalue() {
-		return codevalue;
-	}
-	public void setCodevalue(String jp_nodename) {
-		this.codevalue = jp_nodename;
-	}
-
-	public String getType() {
-		return type;
-	}
-	public void setType(String type) {
-		this.type = type;
-	}
-	public String getTypecode() {
-		return typecode;
-	}
-	public void setTypecode(String typecode) {
-		this.typecode = typecode;
-	}
-	public String getDealpersoncode() {
-		return dealpersoncode;
-	}
-	public void setDealpersoncode(String dealpersoncode) {
-		this.dealpersoncode = dealpersoncode;
-	}
-	public String getRecorderid() {
-		return recorderid;
-	}
-	public void setRecorderid(String jp_launcherid) {
-		this.recorderid = jp_launcherid;
-	}
-	public String getRecorder() {
-		return recorder;
-	}
-	public void setRecorder(String jp_launchername) {
-		this.recorder = jp_launchername;
-	}
-	public Date getDatetime() {
-		return datetime;
-	}
-	public void setDatetime(Date jp_launchtime) {
-		this.datetime = jp_launchtime;
-	}
-	public String getDefid() {
-		return defid;
-	}
-	public void setDefid(String jp_processdefid) {
-		this.defid = jp_processdefid;
-	}
-	public String getCaller() {
-		return caller;
-	}
-	public void setCaller(String jp_caller) {
-		this.caller = jp_caller;
-	}
-	public String getLink() {
-		return link;
-	}
-	public void setLink(String url) {
-		this.link = url;
-	}
-	public String getDescribe() {
-		return describe;
-	}
-	public void setDescribe(String describe) {
-		this.describe = describe;
-	}
-	public String getDuration() {
-		return duration;
-	}
-	public void setDuration(String duration) {
-		this.duration = duration;
-	}
-	public String getTaskcode() {
-		return taskcode;
-	}
-	public void setTaskcode(String taskcode) {
-		this.taskcode = taskcode;
-	}
-	public String getRa_taskid() {
-		return ra_taskid;
-	}
-	public void setRa_taskid(String ra_taskid) {
-		this.ra_taskid = ra_taskid;
-	}
-	
-	
-
-}

+ 28 - 36
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java

@@ -1,5 +1,6 @@
 package com.xzjmyk.pm.activity.ui.message;
 
+import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
@@ -10,6 +11,7 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.LinearLayout;
+import android.widget.ListView;
 import android.widget.PopupWindow;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
@@ -23,30 +25,26 @@ import com.core.api.wxapi.ApiPlatform;
 import com.core.api.wxapi.ApiUtils;
 import com.core.app.Constants;
 import com.core.app.MyApplication;
+import com.core.base.EasyFragment;
 import com.core.model.Friend;
+import com.core.utils.CommonUtil;
 import com.core.utils.sortlist.BaseSortModel;
+import com.core.widget.DrawableCenterTextView;
 import com.core.widget.VoiceSearchView;
 import com.core.widget.listener.EditChangeListener;
 import com.handmark.pulltorefresh.library.PullToRefreshBase;
+import com.handmark.pulltorefresh.library.PullToRefreshListView;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.modular.appmessages.activity.ProcessB2BActivity;
 import com.modular.appmessages.activity.ProcessMsgActivity;
 import com.modular.appmessages.activity.Subscription2Activity;
-import com.roamer.slidelistview.SlideListView;
+import com.modular.appmessages.adapter.MessageAdapter;
+import com.modular.appmessages.presenter.MessagePresenter;
+import com.modular.appmessages.presenter.imp.IMessageView;
 import com.xzjmyk.pm.activity.R;
-import com.xzjmyk.pm.activity.ui.MainActivity;
-import com.xzjmyk.pm.activity.ui.base.EasyFragment;
 import com.xzjmyk.pm.activity.ui.platform.task.TaskActivity;
-import com.xzjmyk.pm.activity.ui.erp.activity.secretary.BookingListActivity;
-import com.xzjmyk.pm.activity.ui.erp.adapter.MessageAdapter;
-import com.xzjmyk.pm.activity.ui.erp.presenter.MessagePresenter;
-import com.xzjmyk.pm.activity.ui.erp.presenter.imp.IMessageView;
 import com.xzjmyk.pm.activity.ui.platform.task.TaskB2BActivity;
-import com.xzjmyk.pm.activity.util.im.UserRoleUtils;
-import com.xzjmyk.pm.activity.util.oa.CommonUtil;
-import com.xzjmyk.pm.activity.view.DrawableCenterTextView;
-import com.xzjmyk.pm.activity.view.PullToRefreshSlideListView;
 
 import java.util.Collections;
 import java.util.Comparator;
@@ -63,9 +61,9 @@ public class MessageFragment extends EasyFragment implements IMessageView, View.
     @ViewInject(R.id.message_net_set)
     private DrawableCenterTextView message_net_set;
     @ViewInject(R.id.pull_refresh_list)
-    private PullToRefreshSlideListView listView;
+    private PullToRefreshListView listView;
 
-    private MainActivity mContext;
+    private Activity mContext;
     private MessagePresenter presenter;
     private MessageAdapter mAdapter = null;
     private PopupWindow setWindow;
@@ -94,14 +92,18 @@ public class MessageFragment extends EasyFragment implements IMessageView, View.
     private TextView subscribe_time_tv;//我的订阅
     private TextView book_time_tv;
     private TextView tv_book_num;
+    private MessagePresenter.UnReaderListener unReaderListener;
 
 
     @Override
     public void onAttach(Context context) {
         super.onAttach(context);
-        if (context instanceof MainActivity)
-            mContext = (MainActivity) context;
-        else new ClassCastException("该碎片必须由MainActivity生成");
+        if (context instanceof Activity) {
+            mContext = (Activity) context;
+        }
+        if (context instanceof MessagePresenter.UnReaderListener) {
+            unReaderListener = (MessagePresenter.UnReaderListener) context;
+        }
     }
 
     @Override
@@ -140,14 +142,13 @@ public class MessageFragment extends EasyFragment implements IMessageView, View.
         voiceSearchView.addTextChangedListener(new EditChangeListener() {
             @Override
             public void afterTextChanged(Editable s) {
-                //TODO 输入后搜索
                 presenter.search(s.toString());
             }
         });
         //下拉刷新
-        listView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<SlideListView>() {
+        listView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() {
             @Override
-            public void onRefresh(PullToRefreshBase<SlideListView> refreshView) {
+            public void onRefresh(PullToRefreshBase<ListView> refreshView) {
                 presenter.loadData();
             }
         });
@@ -175,43 +176,35 @@ public class MessageFragment extends EasyFragment implements IMessageView, View.
 
 
     private void initView() {
-
         listView.getRefreshableView().addHeaderView(initHeaderView());
         listView.setMode(PullToRefreshBase.Mode.PULL_FROM_START);
         mAdapter = new MessageAdapter(null, mContext);
         listView.getRefreshableView().setAdapter(mAdapter);
-        presenter = new MessagePresenter(mContext, this);
+        presenter = new MessagePresenter(mContext, this, unReaderListener);
     }
 
     private View initHeaderView() {
         View view = LayoutInflater.from(mContext).inflate(R.layout.new_message_header, null);
-//        news_notice_rl = (RelativeLayout) view.findViewById(R.id.notice_rl);
         subscribe_rl = (RelativeLayout) view.findViewById(R.id.subscribe_rl);
         schedule_num_tv = (TextView) view.findViewById(R.id.schedule_num_tv);//审批流
         waitting_work_num_tv = (TextView) view.findViewById(R.id.waitting_work_num_tv);//待办工作
         subscribe_num_tv = (TextView) view.findViewById(R.id.subscribe_num_tv);//我的订阅
         booking_num_tv = (TextView) view.findViewById(R.id.booking_num_tv);//小秘书
-
         tv_book_num = (TextView) view.findViewById(R.id.tv_book_num);//小秘书
-
         schedule_content_tv = (TextView) view.findViewById(R.id.schedule_content_tv);//审批流
         waitting_work_content_tv = (TextView) view.findViewById(R.id.waitting_work_content_tv);//待办工作
         subscribe_content_tv = (TextView) view.findViewById(R.id.subscribe_content_tv);//我的订阅
         book_content_tv = (TextView) view.findViewById(R.id.book_content_tv);//预约内容
-
         schedule_time_tv = (TextView) view.findViewById(R.id.schedule_time_tv);//审批流
         waitting_work_time_tv = (TextView) view.findViewById(R.id.waitting_work_time_tv);//待办工作
         subscribe_time_tv = (TextView) view.findViewById(R.id.subscribe_time_tv);//我的订阅
         book_time_tv = (TextView) view.findViewById(R.id.book_time_tv);
-
-
         dingyue_num = (TextView) view.findViewById(R.id.tv_dingYue_num);//订阅红点
         tv_dingyue_desc = (TextView) view.findViewById(R.id.tv_dingyue_desc);//订阅红点
         if (CommonUtil.getSharedPreferencesBoolean(MyApplication.getInstance(), Constants.new_dingyue)) {
             dingyue_num.setVisibility(View.GONE);
             tv_dingyue_desc.setVisibility(View.GONE);
         }
-
         if (CommonUtil.getSharedPreferencesBoolean(MyApplication.getInstance(), Constants.SET_BOOKING)) {
             tv_book_num.setVisibility(View.GONE);
         }
@@ -219,17 +212,17 @@ public class MessageFragment extends EasyFragment implements IMessageView, View.
         view.findViewById(R.id.waitting_work_rl).setOnClickListener(this);//待办工作
         view.findViewById(R.id.subscribe_rl).setOnClickListener(this);//我的订阅
         view.findViewById(R.id.booking_rl).setOnClickListener(this);//我的订阅
-
-
-//        view.findViewById(R.id.notice_rl).setOnClickListener(this); //新闻通知
         if (platform) {
             subscribe_rl.setVisibility(View.GONE);
-//            news_notice_rl.setVisibility(View.GONE);
         } else {
             subscribe_rl.setVisibility(View.VISIBLE);
-//            news_notice_rl.setVisibility(View.GONE);
         }
-        UserRoleUtils.checkUserRole(this, view);
+        String user = CommonUtil.getUserRole();
+        if (user.equals("1")) {
+            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);//我的订阅
+        }
         return view;
     }
 
@@ -282,7 +275,7 @@ public class MessageFragment extends EasyFragment implements IMessageView, View.
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.booking_rl:
-                startActivity(new Intent(mContext, BookingListActivity.class));
+                startActivity(new Intent("com.modular.secretary.BookingListActivity"));
                 tv_book_num.setVisibility(View.GONE);
                 CommonUtil.setSharedPreferences(MyApplication.getInstance(), Constants.SET_BOOKING, true);
                 break;
@@ -402,5 +395,4 @@ public class MessageFragment extends EasyFragment implements IMessageView, View.
             time_tv.setText(num == 0 ? "" : (StringUtil.isEmpty(time)) ? getString(R.string.friendly_time_just_now) : time);
     }
 
-
 }

+ 5 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/platform/task/TaskActivity.java

@@ -41,6 +41,7 @@ import com.core.net.http.HttpClient;
 import com.core.net.http.ViewUtil;
 import com.core.utils.CommonUtil;
 import com.core.utils.FlexJsonUtil;
+import com.core.utils.IntentUtils;
 import com.core.widget.EmptyLayout;
 import com.core.widget.VoiceSearchView;
 import com.handmark.pulltorefresh.library.PullToRefreshBase;
@@ -49,10 +50,8 @@ import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.modular.appmessages.R;
 import com.modular.appmessages.adapter.NewSchedultAdapter;
+import com.modular.appmessages.model.AllProcess;
 import com.uas.appworks.OA.erp.activity.DetailTaskActivity;
-import com.xzjmyk.pm.activity.ui.erp.activity.WebViewLoadActivity;
-import com.xzjmyk.pm.activity.ui.erp.entity.AllProcess;
-
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -328,13 +327,14 @@ public class TaskActivity extends BaseActivity implements OnClickListener {
                     Blowfish blowfish = new Blowfish("00" + d);
                     t = blowfish.encryptString(password);
                 }
-                Intent intent = new Intent(context, WebViewLoadActivity.class);
+                Intent intent = new Intent("com.modular.main.WebViewLoadActivity" );
                 if (allList != null || !allList.isEmpty()) {
                     String url = allList.get(position - 1).getLink();
                     String master = allList.get(position - 1).getMaster();
                     if (master == null) {
                         master = CommonUtil.getSharedPreferences(context, "erp_master");
                     }
+                    IntentUtils.webLinks(context,url,t);
                     intent.putExtra("url", url);
                     intent.putExtra("t", t);
                     intent.putExtra("d", d);
@@ -655,7 +655,7 @@ public class TaskActivity extends BaseActivity implements OnClickListener {
             Blowfish blowfish = new Blowfish("00" + d);
             t = blowfish.encryptString(password);
         }
-        Intent intent = new Intent(context, WebViewLoadActivity.class);
+        Intent intent = new Intent("com.modular.main.WebViewLoadActivity" );
         intent.putExtra("url", url);
         intent.putExtra("t", t);
         intent.putExtra("d", d);

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

@@ -48,7 +48,7 @@ import com.lidroid.xutils.view.annotation.ViewInject;
 import com.modular.appmessages.adapter.NewSchedultAdapter;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.erp.activity.WebViewLoadActivity;
-import com.xzjmyk.pm.activity.ui.erp.entity.AllProcess;
+import com.modular.appmessages.model.AllProcess;
 import com.xzjmyk.pm.activity.util.oa.CommonUtil;
 
 import java.util.ArrayList;

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

@@ -6,6 +6,7 @@ import android.text.TextUtils;
 import android.webkit.WebSettings.ZoomDensity;
 import android.webkit.WebView;
 
+import com.common.LogUtil;
 import com.core.app.ActionBackActivity;
 import com.xzjmyk.pm.activity.R;
 
@@ -28,6 +29,7 @@ public class WebViewActivity extends ActionBackActivity {
 		if (getIntent() != null) {
 			mUrl = getIntent().getStringExtra(EXTRA_URL);
 			mTitle = getIntent().getStringExtra(EXTRA_TITLE);
+			LogUtil.i("mUrl="+mUrl);
 		}
 		setContentView(R.layout.activity_web_view);
 		if (!TextUtils.isEmpty(mTitle)) {

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/dialog/QSComShowPpUtils.java

@@ -24,7 +24,7 @@ import com.core.app.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.modular.booking.model.BookingModel;
 import com.common.data.ListUtils;
 import com.core.widget.MyListView;
 import com.core.app.MyActivityManager;

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/dialog/QSearchPpwindowUtils.java

@@ -30,7 +30,7 @@ import com.core.xmpp.utils.audio.voicerecognition.JsonParser;
 import com.core.app.Constants;
 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.modular.booking.model.BookingModel;
 import com.core.net.http.ViewUtil;
 import com.xzjmyk.pm.activity.util.oa.CommonUtil;
 import com.core.utils.RecognizerDialogUtil;

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/im/UserRoleUtils.java

@@ -20,7 +20,7 @@ public class UserRoleUtils {
 
     public static String getUserRole(){
         String userRole= CommonUtil.getSharedPreferences(MyApplication.getInstance(),"userRole");
-        return userRole;
+        return userRole==null?"":userRole;
     }
 
     public static void checkUserRole(Object fragment, View view) {

+ 0 - 25
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/VpCalenderView.java

@@ -1,25 +0,0 @@
-package com.xzjmyk.pm.activity.view;
-
-import android.content.Context;
-import android.support.v4.view.ViewPager;
-import android.util.AttributeSet;
-
-/**
- * Created by Bitliker on 2017/1/11.
- */
-
-public class VpCalenderView extends ViewPager {
-
-    public VpCalenderView(Context context) {
-        this(context, null);
-    }
-
-    public VpCalenderView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-
-
-
-
-}

+ 137 - 2
WeiChat/src/main/res/layout/activity_booking_list.xml

@@ -5,8 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:fillViewport="true"
-    android:descendantFocusability="blocksDescendants"
-    tools:context="com.xzjmyk.pm.activity.ui.erp.activity.secretary.BookingListActivity">
+    android:descendantFocusability="blocksDescendants">
 
     <LinearLayout
         android:layout_width="match_parent"
@@ -17,6 +16,7 @@
             style="@style/crm_ll_card"
             android:layout_height="wrap_content"
             android:orientation="horizontal"
+            android:visibility="gone"
             android:weightSum="2">
 
             <TextView
@@ -39,6 +39,141 @@
                 android:padding="10dp"
                 android:text="@string/booking_shared" />
         </LinearLayout>
+
+        <!--new layout-->
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:background="#6A6A6A"
+            android:paddingTop="10dp"
+            android:paddingBottom="10dp">
+            <RelativeLayout
+                android:layout_weight="1"
+                android:layout_width="0dp"
+                android:layout_height="match_parent">
+                <TextView
+                    android:id="@+id/tv_signin_num"
+                    android:layout_width="10dp"
+                    android:layout_height="10dp"
+                    android:layout_marginRight="10dp"
+                    android:background="@drawable/hongdian"
+                    android:layout_gravity="top|right"
+                    android:gravity="center"
+                    android:text=""
+                    android:textColor="@android:color/white"
+                    android:textSize="10.0dip"
+                    android:layout_alignParentRight="true"
+                    android:layout_alignParentEnd="true"
+                    android:layout_alignTop="@+id/signin" />
+                <TextView
+                    android:id="@+id/mbook"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:drawablePadding="@dimen/drawable_padding"
+                    android:drawableTop="@drawable/oa_1"
+                    android:layout_centerInParent="true"
+                    android:text="@string/booking_personal"
+                    android:textColor="@color/white"
+                    android:layout_marginTop="2dp"/>
+            </RelativeLayout>
+            <RelativeLayout
+                android:layout_weight="1"
+                android:layout_width="0dp"
+                android:layout_height="match_parent">
+                <TextView
+                    android:id="@+id/tv_signout_num"
+                    android:layout_width="10dp"
+                    android:layout_height="10dp"
+                    android:layout_marginRight="10dp"
+                    android:background="@drawable/hongdian"
+                    android:layout_gravity="top|right"
+                    android:layout_alignParentRight="true"
+                    android:gravity="center"
+                    android:text=""
+                    android:textColor="@android:color/white"
+                    android:textSize="10.0dip"
+                    />
+                <TextView
+                    android:id="@+id/outoffice"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="2dp"
+                    android:gravity="center"
+                    android:drawablePadding="@dimen/drawable_padding"
+                    android:drawableTop="@drawable/oa_2"
+                    android:layout_centerInParent="true"
+                    android:text="@string/booking_business"
+                    android:textColor="@color/white" />
+            </RelativeLayout>
+
+            <TextView
+                android:id="@+id/worklog"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="2dp"
+                android:layout_weight="1"
+                android:drawablePadding="@dimen/drawable_padding"
+                android:drawableTop="@drawable/oa_4"
+                android:gravity="center"
+                android:text="@string/booking_service"
+                android:textColor="@color/white" />
+            <TextView
+                android:id="@+id/erp"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="2dp"
+                android:layout_weight="1"
+                android:drawablePadding="@dimen/drawable_padding"
+                android:drawableTop="@drawable/oa_5"
+                android:gravity="center"
+                android:text="@string/booking_shared"
+                android:textColor="@color/white" />
+            <LinearLayout
+                android:id="@+id/oamain_more_menu_ll"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="2dp"
+                android:layout_weight="1"
+                android:orientation="vertical"
+                android:paddingLeft="5dp"
+                android:visibility="gone">
+
+                <FrameLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    >
+
+                    <ImageView
+                        android:id="@+id/oamain_more_menu_iv"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:gravity="center"
+                        android:src="@drawable/ic_oa_more" />
+
+                    <TextView
+                        android:id="@+id/oamain_more_menu_hd_tv"
+                        android:layout_width="10dp"
+                        android:layout_height="10dp"
+                        android:layout_gravity="top|right"
+                        android:layout_marginRight="15dp"
+                        android:background="@drawable/hongdian"
+                        android:textColor="@android:color/white"
+                        android:textSize="10.0dip"
+                        />
+                </FrameLayout>
+
+                <TextView
+                    android:id="@+id/more_menu_tv"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="5dp"
+                    android:gravity="center"
+                    android:text="@string/oamore_tltle"
+                    android:textColor="@color/white" />
+            </LinearLayout>
+
+        </LinearLayout>
         <!--年月日布局-->
         <LinearLayout
             android:layout_width="match_parent"

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

@@ -6,7 +6,7 @@
               android:background="@color/bg_underlying"
               android:orientation="vertical">
 
-    <ListView
+    <com.handmark.pulltorefresh.library.PullToRefreshListView
         android:id="@+id/data_inquiry_menu_lv"
         android:layout_width="match_parent"
         android:layout_height="match_parent"

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

@@ -40,7 +40,7 @@
             android:visibility="visible" />
     </RelativeLayout>
 
-    <com.xzjmyk.pm.activity.view.DrawableCenterTextView
+    <com.core.widget.DrawableCenterTextView
         android:id="@+id/message_net_set"
         android:layout_width="match_parent"
         android:layout_height="35dp"

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

@@ -11,7 +11,7 @@
         android:layout_width="match_parent"
         android:layout_height="48dp" />
 
-    <com.xzjmyk.pm.activity.view.DrawableCenterTextView
+    <com.core.widget.DrawableCenterTextView
         android:id="@+id/message_net_set"
         android:layout_width="match_parent"
         android:layout_height="35dp"
@@ -23,7 +23,7 @@
         android:drawablePadding="10dp"
         android:visibility="gone"/>
 
-    <com.xzjmyk.pm.activity.view.PullToRefreshSlideListView
+    <com.handmark.pulltorefresh.library.PullToRefreshListView
         xmlns:slide="http://schemas.android.com/apk/res-auto"
         android:id="@+id/pull_refresh_list"
         android:layout_width="match_parent"

+ 2 - 0
app_core/common/src/main/java/com/common/data/DateFormatUtil.java

@@ -15,6 +15,8 @@ public class DateFormatUtil {
     public static final String HM = "HH:mm";
     public static final String MD = "MM-dd";
 
+
+
     public static SimpleDateFormat getFormat(String format) {
         return new SimpleDateFormat(format);
     }

+ 2 - 0
app_core/common/src/main/java/com/core/app/AppConstant.java

@@ -68,5 +68,7 @@ public class AppConstant {
     public static final String DEPOSIT_NOTICE_TASK = "DEPOSIT_NOTICE_TASK";//预约计划提醒任务
     public static final String NEW_FUNCTION_NOTICE = "NEW_FUNCTION_NOTICE";
 
+    public static final String UPDATA_UUHELPER = "UPDATA_UUHELPER";
+
     public static final int RESULT_CODE = 0x865;
 }

+ 30 - 16
app_core/common/src/main/java/com/core/app/Constants.java

@@ -7,7 +7,7 @@ import com.core.db.DatabaseTables;
  */
 public class Constants {
 
-    public  static String IS_NOTIFICATION="is_notification";//是是否进行通知
+    public static String IS_NOTIFICATION = "is_notification";//是是否进行通知
     public static final String BASE_URL_LOGIN = "http://manage.ubtob.com/public/account";
     public static final String IM_BASE_URL = "http://113.105.74.140:8092/";
 
@@ -271,6 +271,20 @@ public class Constants {
             + DatabaseTables.HistoricalRecordTable.Cols.SCHEME_NAME + ", "
             + DatabaseTables.HistoricalRecordTable.Cols.SEARCH_FIELD + ")";
 
+    //UU助手
+    public static final String TABLE_UUHELPER_RECORD = "create table "
+            + DatabaseTables.UUHelperTable.NAME + "("
+            + DatabaseTables.UUHelperTable.Cols.ID + " integer primary key autoincrement"
+            + "," + DatabaseTables.UUHelperTable.Cols.USER_ID
+            + "," + DatabaseTables.UUHelperTable.Cols.TIME_SEND
+            + "," + DatabaseTables.UUHelperTable.Cols.DATE
+            + "," + DatabaseTables.UUHelperTable.Cols.IMAGE_URL
+            + "," + DatabaseTables.UUHelperTable.Cols.ICON_URL
+            + "," + DatabaseTables.UUHelperTable.Cols.LINK_URL
+            + "," + DatabaseTables.UUHelperTable.Cols.CONTENT
+            + "," + DatabaseTables.UUHelperTable.Cols.READED
+            + ")";
+
 
     /**
      * @desc:常量
@@ -329,26 +343,26 @@ public class Constants {
 //        }
 //    }
 
-    public static String INSTANT_MESSAGE="instant_message";//转发消息的标记
-    public static String INSTANT_MESSAGE_FILE="instant_message_file";//转发文件稍有不同
-    public static String INSTANT_SEND="instant_send";//转发
-    public static String CHAT_MESSAGE_DELETE_ACTION="chat_message_delete";
-    public static String CHAT_MESSAGE_DELETE_FRIENDID="chat_message_delete_friendid";//删除消息要带过去的朋友id
-    public static String CHAT_REMOVE_MESSAGE_FALG="CHAT_REMOVE_MESSAGE_FALG";
-    public static String CHAT_REMOVE_MESSAGE_POSITION="CHAT_REMOVE_MESSAGE_POSITION";
-    public static String ONRECORDSTART="onrecordstart";
-    public static String GROUP_JOIN_NOTICE="group_join_notice";//加入新群的通知
+    public static String INSTANT_MESSAGE = "instant_message";//转发消息的标记
+    public static String INSTANT_MESSAGE_FILE = "instant_message_file";//转发文件稍有不同
+    public static String INSTANT_SEND = "instant_send";//转发
+    public static String CHAT_MESSAGE_DELETE_ACTION = "chat_message_delete";
+    public static String CHAT_MESSAGE_DELETE_FRIENDID = "chat_message_delete_friendid";//删除消息要带过去的朋友id
+    public static String CHAT_REMOVE_MESSAGE_FALG = "CHAT_REMOVE_MESSAGE_FALG";
+    public static String CHAT_REMOVE_MESSAGE_POSITION = "CHAT_REMOVE_MESSAGE_POSITION";
+    public static String ONRECORDSTART = "onrecordstart";
+    public static String GROUP_JOIN_NOTICE = "group_join_notice";//加入新群的通知
 
 
-    public static String GROUP_JOIN_NOTICE_ACTION="group_join_notice_action";//加入新群的通知
-    public static String GROUP_JOIN_NOTICE_FRIEND_ID="group_join_notice_friend_id";//加入新群发送朋友的id
+    public static String GROUP_JOIN_NOTICE_ACTION = "group_join_notice_action";//加入新群的通知
+    public static String GROUP_JOIN_NOTICE_FRIEND_ID = "group_join_notice_friend_id";//加入新群发送朋友的id
 
-    public static String OFFLINE_TIME="offline_time";//离线时间
-    public  static String LAST_OFFLINE_TIME="last_offline_time";
+    public static String OFFLINE_TIME = "offline_time";//离线时间
+    public static String LAST_OFFLINE_TIME = "last_offline_time";
 
 
-    public  static String AUDIO_PHONENUMBER="audio_phonenumber";//语音
-    public  static String IS_AUDIO_OR_VIDEO="is_audio_or_video";//是语音还是视频
+    public static String AUDIO_PHONENUMBER = "audio_phonenumber";//语音
+    public static String IS_AUDIO_OR_VIDEO = "is_audio_or_video";//是语音还是视频
 
 
     public final static int REQUEST_MANAGE_ALL_SUBSCRIPTON = 101;

+ 121 - 0
app_core/common/src/main/java/com/core/dao/UUHelperDao.java

@@ -0,0 +1,121 @@
+package com.core.dao;
+
+
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+
+import com.core.app.MyApplication;
+import com.core.db.DatabaseManager;
+import com.core.db.DatabaseTables;
+import com.core.model.UUHelperModel;
+
+import java.util.List;
+
+/**
+ * Created by Bitliker on 2017/9/8.
+ */
+
+public class UUHelperDao extends Dao<UUHelperModel.UUHelperItem> {
+    private static UUHelperDao instance;
+
+    public static UUHelperDao getInstance() {
+        UUHelperDao inst = instance;
+        if (inst == null) {
+            synchronized (UUHelperDao.class) {
+                inst = instance;
+                if (inst == null) {
+                    inst = new UUHelperDao();
+                    instance = inst;
+                }
+            }
+        }
+        return inst;
+    }
+
+    private UUHelperDao() {
+
+    }
+
+    @Override
+    protected String getTable() {
+        return DatabaseTables.UUHelperTable.NAME;
+    }
+
+    @Override
+    protected ContentValues getValues(UUHelperModel.UUHelperItem uuHelperItem) throws Exception {
+        ContentValues values = new ContentValues();
+        values.put(DatabaseTables.UUHelperTable.Cols.TIME_SEND, uuHelperItem.getTimeSend());
+        values.put(DatabaseTables.UUHelperTable.Cols.USER_ID, MyApplication.getInstance().getLoginUserId());
+        values.put(DatabaseTables.UUHelperTable.Cols.IMAGE_URL, uuHelperItem.getImageUrl());
+        values.put(DatabaseTables.UUHelperTable.Cols.ICON_URL, uuHelperItem.getIconUrl());
+        values.put(DatabaseTables.UUHelperTable.Cols.LINK_URL, uuHelperItem.getLinkUrl());
+        values.put(DatabaseTables.UUHelperTable.Cols.CONTENT, uuHelperItem.getContent());
+        values.put(DatabaseTables.UUHelperTable.Cols.READED, uuHelperItem.isReaded());
+        values.put(DatabaseTables.UUHelperTable.Cols.DATE, uuHelperItem.getDate());
+        return values;
+    }
+
+    @Override
+    protected UUHelperModel.UUHelperItem getData(Cursor c) throws Exception {
+        int _id = c.getInt(c.getColumnIndex(DatabaseTables.UUHelperTable.Cols.ID));
+        long timeSend = c.getLong(c.getColumnIndex(DatabaseTables.UUHelperTable.Cols.TIME_SEND));
+        String imageUrl = c.getString(c.getColumnIndex(DatabaseTables.UUHelperTable.Cols.IMAGE_URL));
+        String iconUrl = c.getString(c.getColumnIndex(DatabaseTables.UUHelperTable.Cols.ICON_URL));
+        String linkUrl = c.getString(c.getColumnIndex(DatabaseTables.UUHelperTable.Cols.LINK_URL));
+        String content = c.getString(c.getColumnIndex(DatabaseTables.UUHelperTable.Cols.CONTENT));
+        String date = c.getString(c.getColumnIndex(DatabaseTables.UUHelperTable.Cols.DATE));
+        boolean readed = c.getInt(c.getColumnIndex(DatabaseTables.UUHelperTable.Cols.READED)) > 0;
+        return new UUHelperModel.UUHelperItem(readed, _id, timeSend, imageUrl, iconUrl, linkUrl, content, date);
+    }
+
+
+    public boolean saveData(UUHelperModel.UUHelperItem uuHelperItem) {
+        return insert(uuHelperItem, null, null);
+    }
+
+    public List<UUHelperModel.UUHelperItem> getAllModels() {
+        String orderBy = DatabaseTables.UUHelperTable.Cols.DATE + " asc";
+        String where = DatabaseTables.UUHelperTable.Cols.USER_ID + " =?";
+        String[] whereArgs = {MyApplication.getInstance().getLoginUserId()};
+        return query(null, where, whereArgs, orderBy);
+    }
+
+    public boolean deleteData(int id) {
+        if (id == -1) {
+            return clear();
+        } else {
+            return delete("id=?", new String[]{String.valueOf(id)});
+        }
+    }
+
+    public boolean updateRead(int id) {
+        long i = 0;
+        try {
+            String where = DatabaseTables.UUHelperTable.Cols.ID;
+            String[] whereArgs = {String.valueOf(id)};
+            SQLiteDatabase db = DatabaseManager.getInstance().openDatabase();
+            ContentValues values = new ContentValues();
+            values.put(DatabaseTables.UUHelperTable.Cols.READED, 1);
+            i = db.update(getTable(), values, where, whereArgs);
+        } finally {
+            DatabaseManager.getInstance().closeDatabase();
+            return i > 0;
+        }
+    }
+
+    public boolean updateRead() {
+        long i = 0;
+        try {
+            String where = DatabaseTables.UUHelperTable.Cols.READED;
+            String[] whereArgs = {String.valueOf(0)};
+            SQLiteDatabase db = DatabaseManager.getInstance().openDatabase();
+            ContentValues values = new ContentValues();
+            values.put(DatabaseTables.UUHelperTable.Cols.READED, 1);
+            i = db.update(getTable(), values, where, whereArgs);
+        } finally {
+            DatabaseManager.getInstance().closeDatabase();
+            return i > 0;
+        }
+    }
+}

+ 3 - 1
app_core/common/src/main/java/com/core/db/DBOpenHelper.java

@@ -14,7 +14,7 @@ import com.core.app.Constants;
  */
 public class DBOpenHelper extends SQLiteOpenHelper {
     //TODO  上一个发布版本是81
-    private static final int DATABASE_VERSION = 83;
+    private static final int DATABASE_VERSION = 86;
     public static String dataBaseName = "erp.db";
     public Context context;
 
@@ -56,6 +56,7 @@ public class DBOpenHelper extends SQLiteOpenHelper {
             db.execSQL(Constants.AUTO_LOG);   //监控日志表
 
             db.execSQL(Constants.TABLE_HISTORICAL_RECORD);//数据查询历史记录表
+            db.execSQL(Constants.TABLE_UUHELPER_RECORD);//UU助手
         } catch (Exception e) {
 
         }
@@ -97,6 +98,7 @@ public class DBOpenHelper extends SQLiteOpenHelper {
         db.execSQL("DROP TABLE IF EXISTS SignAutoLog");
         db.execSQL("DROP TABLE IF EXISTS tbl_contacts");
         db.execSQL("DROP TABLE IF EXISTS " + DatabaseTables.HistoricalRecordTable.NAME);
+        db.execSQL("DROP TABLE IF EXISTS " + DatabaseTables.UUHelperTable.NAME);
     }
 
 

+ 16 - 0
app_core/common/src/main/java/com/core/db/DatabaseTables.java

@@ -14,4 +14,20 @@ public class DatabaseTables {
             public static final String SEARCH_FIELD = "search_field";
         }
     }
+
+    public static final class UUHelperTable {
+        public static final String NAME = "uu_helper";
+
+        public static final class Cols {
+            public static final String ID = "id";
+            public static final String USER_ID = "userId";
+            public static final String TIME_SEND = "timeSend";
+            public static final String DATE = "date";
+            public static final String IMAGE_URL = "imageUrl";
+            public static final String ICON_URL = "iconUrl";
+            public static final String LINK_URL = "linkUrl";
+            public static final String CONTENT = "content";
+            public static final String READED = "readed";
+        }
+    }
 }

+ 127 - 0
app_core/common/src/main/java/com/core/model/UUHelperModel.java

@@ -0,0 +1,127 @@
+package com.core.model;
+
+import com.common.data.DateFormatUtil;
+import com.common.data.JSONUtil;
+import com.common.data.StringUtil;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by Bitliker on 2017/9/7.
+ */
+
+public class UUHelperModel {
+    private String date;
+    private List<UUHelperItem> items;
+
+    public static class UUHelperItem {
+        private int id;
+        private long timeSend;//发送时间
+        private String date;//发送日期(通过timeSend)
+        private String imageUrl;//图片网址
+        private String linkUrl;//链接网址
+        private String iconUrl;//小图片网址
+        private String content;//显示内容
+        private boolean readed;
+
+        @Override
+        public String toString() {
+            Map<String, Object> map = new HashMap<>();
+            map.put("_id", id);
+            map.put("timeSend", timeSend);
+            map.put("date", date);
+            map.put("imageUrl", imageUrl);
+            map.put("linkUrl", linkUrl);
+            map.put("iconUrl", iconUrl);
+            map.put("content", content);
+            return JSONUtil.map2JSON(map);
+        }
+
+        public UUHelperItem(long timeSend,
+                            String imageUrl,
+                            String iconUrl,
+                            String linkUrl,
+                            String content) {
+            this(false, 0, timeSend, imageUrl, iconUrl,linkUrl, content, null);
+        }
+
+        public UUHelperItem(boolean readed, int _id, long timeSend,
+                            String imageUrl,
+                            String iconUrl,
+                            String linkUrl,
+                            String content
+                , String date) {
+            this.readed = readed;
+            this.id = _id;
+            this.timeSend = timeSend;
+            this.imageUrl = imageUrl;
+            this.iconUrl = iconUrl;
+            this.linkUrl = linkUrl;
+            this.content = content;
+            //TODO 使用DateFormatUtil
+            if (StringUtil.isEmpty(date)) {
+                this.date = DateFormatUtil.long2Str(this.timeSend, DateFormatUtil.YMD);
+            } else {
+                this.date = date;
+            }
+        }
+
+        public long getTimeSend() {
+            return timeSend;
+        }
+
+        public String getDate() {
+            return date;
+        }
+
+        public String getImageUrl() {
+            return imageUrl;
+        }
+
+        public String getIconUrl() {
+            return iconUrl;
+        }
+
+        public String getLinkUrl() {
+            return linkUrl;
+        }
+
+        public String getContent() {
+            return content;
+        }
+
+        public boolean isReaded() {
+            return readed;
+        }
+
+        public int getId() {
+            return id;
+        }
+
+    }
+
+    public UUHelperModel(String date) {
+        this.date = date;
+    }
+
+    public String getDate() {
+        return date;
+    }
+
+
+    public List<UUHelperItem> getItems() {
+        return items == null ? items = new ArrayList<UUHelperItem>() : items;
+    }
+
+
+
+
+    public void addItem(UUHelperItem item) {
+        getItems().add(item);
+    }
+
+
+}

+ 1 - 0
app_core/common/src/main/java/com/core/model/XmppMessage.java

@@ -58,6 +58,7 @@ public abstract class XmppMessage {
     public static final int TYPE_FILE = 9;//文件
     public static final int TYPE_TIP = 10;// 自己添加的消息类型,代表系统的提示
     public static final int TYPE_ERP = 11;// 消息知会
+    public static final int TYPE_UUHELPER = 12;// 消息知会
 
     // 面试者收到的职位、初试、面试推送类型
     public static final int TYPE_201 = 201;// 收到招聘方同意申请,进入初试

+ 4 - 1
app_core/common/src/main/java/com/core/utils/CommonUtil.java

@@ -64,6 +64,7 @@ public class CommonUtil {
         if (ct == null) return "";
         String baseUrl = getSharedPreferences(ct, "erp_baseurl");
         return baseUrl;
+//        return "http://192.168.253.58:8080/ERP/";
     }
 
     /**
@@ -427,9 +428,11 @@ public class CommonUtil {
 
     public static String getUserRole() {
         String userRole = getSharedPreferences(MyApplication.getInstance(), "userRole");
-        return userRole;
+        return userRole==null?"":userRole;
     }
 
+
+
     public static long getlongNumByString(String chche) {
         if (StringUtil.isEmpty(chche)) return -1;
         Pattern p = Pattern.compile("(\\d+)");

+ 2 - 1
app_core/common/src/main/java/com/core/utils/IntentUtils.java

@@ -5,11 +5,12 @@ import android.content.Intent;
 
 
 public class IntentUtils {
-    
+
     public static void webLinks(Context ct, String url, String text) {
         Intent intent_web = new Intent("com.modular.main.WebViewCommActivity");
         intent_web.putExtra("url", url);
         intent_web.putExtra("p", text);
         ct.startActivity(intent_web);
     }
+
 }

+ 26 - 0
app_core/common/src/main/java/com/core/utils/NotificationManage.java

@@ -7,9 +7,12 @@ import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
+import android.graphics.BitmapFactory;
+import android.support.v4.content.LocalBroadcastManager;
 import android.support.v7.app.NotificationCompat;
 
 import com.common.data.StringUtil;
+import com.core.app.AppConstant;
 import com.core.app.MyApplication;
 import com.core.app.R;
 
@@ -71,4 +74,27 @@ public class NotificationManage {
             //无效
         }
     }
+
+    //update
+    public static void sendUUHelperNotif(String content) {
+        Context context = MyApplication.getInstance().getApplicationContext();
+        NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
+        NotificationCompat.Builder builder = new NotificationCompat.Builder(context.getApplicationContext());
+        builder.setSmallIcon(R.drawable.uuu);
+        builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.uuu));
+        builder.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);
+        builder.setAutoCancel(true);
+        builder.setContentTitle("UU小助手");
+        builder.setContentText(content);
+        builder.setGroup("UU小助手");
+        Intent intent = new Intent("com.modular.appmessage.UUHelperActivity");
+        PendingIntent pendingIntent = PendingIntent.getActivity(context.getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
+        builder.setContentIntent(pendingIntent);
+        mNotificationManager.notify(1000, builder.build());
+        //发送本地广播
+        LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent(AppConstant.UPDATA_UUHELPER));
+
+    }
+
+
 }

+ 60 - 26
app_core/common/src/main/java/com/core/utils/time/wheel/OASigninPicker.java

@@ -32,6 +32,7 @@ public class OASigninPicker extends WheelPicker {
     private int selectedYearIndex = 0, selectedMonthIndex = 0, selectedDayIndex = 0;
     private OnDateTimePickListener onDateTimePickListener;
     private int year, month, day = 0;
+    private boolean mHaveDay = true;
 
     @IntDef(flag = false, value = {YEAR_MONTH_DAY})
     @Retention(RetentionPolicy.SOURCE)
@@ -66,6 +67,22 @@ public class OASigninPicker extends WheelPicker {
         }
     }
 
+    public OASigninPicker(Activity activity, int startYear, int endYear, boolean haveDay) {
+        super(activity);
+        mHaveDay = haveDay;
+        textSize = 16;//年月日时分,比较宽,设置字体小一点才能显示完整
+        for (int i = startYear; i <= endYear; i++) {
+            years.add(String.valueOf(i));
+        }
+        for (int i = 1; i <= 12; i++) {
+            months.add(DateUtils.fillZero(i));
+        }
+        if (haveDay)
+            for (int i = 1; i <= 31; i++) {
+                days.add(DateUtils.fillZero(i));
+            }
+    }
+
     @NonNull
     @Override
     protected View makeCenterView() {
@@ -121,7 +138,10 @@ public class OASigninPicker extends WheelPicker {
         if (!TextUtils.isEmpty(dayLabel)) {
             dayTextView.setText(dayLabel);
         }
-        layout.addView(dayTextView);
+        if (mHaveDay) {
+            layout.addView(dayTextView);
+        }
+
         yearView.setOnWheelViewListener(new WheelView.OnWheelViewListener() {
             @Override
             public void onSelected(boolean isUserScroll, int selectedIndex, String item) {
@@ -139,15 +159,18 @@ public class OASigninPicker extends WheelPicker {
                     maxDays = DateUtils.calculateDaysInMonth(stringToYearMonthDay(item), stringToYearMonthDay(months.get(selectedMonthIndex)));
                 }
 
-                days.clear();
-                for (int i = 1; i <= maxDays; i++) {
-                    days.add(DateUtils.fillZero(i));
-                }
-                if (selectedDayIndex >= maxDays) {
-                    //年或月变动时,保持之前选择的日不动:如果之前选择的日是之前年月的最大日,则日自动为该年月的最大日
-                    selectedDayIndex = days.size() - 1;
+                if (mHaveDay) {
+                    days.clear();
+                    for (int i = 1; i <= maxDays; i++) {
+                        days.add(DateUtils.fillZero(i));
+                    }
+                    if (selectedDayIndex >= maxDays) {
+                        //年或月变动时,保持之前选择的日不动:如果之前选择的日是之前年月的最大日,则日自动为该年月的最大日
+                        selectedDayIndex = days.size() - 1;
+                    }
+                    dayView.setItems(days, selectedDayIndex);
                 }
-                dayView.setItems(days, selectedDayIndex);
+
                 months.clear();
                 for (int i = 1; i <= maxMonth; i++) {
                     months.add(DateUtils.fillZero(i));
@@ -169,26 +192,31 @@ public class OASigninPicker extends WheelPicker {
                     maxDays = day;
                 } else
                     maxDays = DateUtils.calculateDaysInMonth(stringToYearMonthDay(years.get(selectedYearIndex)), stringToYearMonthDay(item));
-                days.clear();
-                for (int i = 1; i <= maxDays; i++) {
-                    days.add(DateUtils.fillZero(i));
-                }
-                if (selectedDayIndex >= maxDays) {
-                    //年或月变动时,保持之前选择的日不动:如果之前选择的日是之前年月的最大日,则日自动为该年月的最大日
-                    selectedDayIndex = days.size() - 1;
+                if (mHaveDay) {
+                    days.clear();
+                    for (int i = 1; i <= maxDays; i++) {
+                        days.add(DateUtils.fillZero(i));
+                    }
+                    if (selectedDayIndex >= maxDays) {
+                        //年或月变动时,保持之前选择的日不动:如果之前选择的日是之前年月的最大日,则日自动为该年月的最大日
+                        selectedDayIndex = days.size() - 1;
+                    }
+                    dayView.setItems(days, selectedDayIndex);
                 }
-                dayView.setItems(days, selectedDayIndex);
-            }
-        });
-        dayView.setOnWheelViewListener(new WheelView.OnWheelViewListener() {
-            @Override
-            public void onSelected(boolean isUserScroll, int selectedIndex, String item) {
-                selectedDayIndex = selectedIndex;
+
             }
         });
+        if (mHaveDay)
+            dayView.setOnWheelViewListener(new WheelView.OnWheelViewListener() {
+                @Override
+                public void onSelected(boolean isUserScroll, int selectedIndex, String item) {
+                    selectedDayIndex = selectedIndex;
+                }
+            });
         yearView.setItems(years, selectedYearIndex);
         monthView.setItems(months, selectedMonthIndex);
-        dayView.setItems(days, selectedDayIndex);
+        if (mHaveDay)
+            dayView.setItems(days, selectedDayIndex);
         return layout;
     }
 
@@ -203,7 +231,7 @@ public class OASigninPicker extends WheelPicker {
         if (onDateTimePickListener != null) {
             String year = getSelectedYear();
             String month = getSelectedMonth();
-            String day = getSelectedDay();
+            String day = mHaveDay ? getSelectedDay() : "";
             onDateTimePickListener.setTime(year, month, day);
         }
     }
@@ -286,10 +314,16 @@ public class OASigninPicker extends WheelPicker {
         return index;
     }
 
+    public void setSelectedItem(int yeas, int month) {
+        selectedYearIndex = findItemIndex(years, yeas);
+        selectedMonthIndex = findItemIndex(months, month);
+//        selectedDayIndex = findItemIndex(days, day);
+    }
+
     public void setSelectedItem(int yeas, int month, int day) {
+        selectedYearIndex = findItemIndex(years, yeas);
         selectedMonthIndex = findItemIndex(months, month);
         selectedDayIndex = findItemIndex(days, day);
-        selectedYearIndex = findItemIndex(years, yeas);
     }
 
     /**

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/DrawableCenterTextView.java → app_core/common/src/main/java/com/core/widget/DrawableCenterTextView.java

@@ -1,4 +1,4 @@
-package com.xzjmyk.pm.activity.view;
+package com.core.widget;
 
 import android.content.Context;
 import android.graphics.Canvas;

+ 39 - 11
app_core/common/src/main/java/com/core/xmpp/XChatManager.java

@@ -5,15 +5,21 @@ import android.util.Log;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
 import com.common.data.CalendarUtil;
-import com.common.data.DateFormatUtil;
+import com.common.data.JSONUtil;
 import com.common.thread.ThreadManager;
 import com.core.app.MyApplication;
 import com.core.broadcast.MsgBroadcast;
 import com.core.broadcast.MucgroupUpdateUtil;
+import com.core.dao.UUHelperDao;
 import com.core.model.Friend;
 import com.core.model.NewFriendMessage;
+import com.core.model.UUHelperModel;
+import com.core.model.User;
 import com.core.model.XmppMessage;
+import com.core.utils.NotificationManage;
+import com.core.utils.helper.AvatarHelper;
 import com.core.xmpp.dao.ChatMessageDao;
 import com.core.xmpp.dao.FriendDao;
 import com.core.xmpp.dao.NewFriendDao;
@@ -137,17 +143,19 @@ public class XChatManager {
             if (!StringUtils.parseName(to).equals(mLoginUserId)) {// 不是发给我的,基本上是不可能的情况,还是麻痹的判断下
                 return;
             }
-            saveSingleMessage(message, false);//将消息保存到本地
-            if (mService != null) {
-                Log.d("roamer", "chatMessage:开始 "+ DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS));
-                ChatMessage chatMessage = new ChatMessage(message.getBody());
-                Log.d("roamer", "chatMessage: 结束 "+ DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS));
-                if (chatMessage != null && chatMessage.getFromUserId() != mLoginUserId) {
-                    mService.notificationMesage(chatMessage);
+            String fromUserId = StringUtils.parseName(message.getFrom());
+            String messageBody = message.getBody();
+            if (!StringUtils.isEmpty(messageBody) && fromUserId != null && fromUserId.equals("10000")) {
+                saveUUHelperMessage(messageBody);
+            } else {
+                saveSingleMessage(message, false);//将消息保存到本地
+                if (mService != null) {
+                    ChatMessage chatMessage = new ChatMessage(message.getBody());
+                    if (chatMessage != null && chatMessage.getFromUserId() != mLoginUserId) {
+                        mService.notificationMesage(chatMessage);
+                    }
                 }
             }
-            Log.d("roamer", "将消息保存到本地");
-           
         }
     };
 
@@ -175,7 +183,7 @@ public class XChatManager {
                     // 发送消息
                     Log.i("roamer", "消息正文:" + JSON.toJSONString(msg));
                     chat.sendMessage(msg);
-                    Log.i("roamer", "消息chat:"+JSON.toJSONString(chat));
+                    Log.i("roamer", "消息chat:" + JSON.toJSONString(chat));
                     Log.d("roamer", "消息发送中");
                     ListenerManager.getInstance().notifyMessageSendStateChange(mLoginUserId, toUserId, chatMessage.get_id(),
                             ChatMessageListener.MESSAGE_SEND_ING);
@@ -273,6 +281,26 @@ public class XChatManager {
         }
     }
 
+    private void saveUUHelperMessage(String messageBody) {
+        LogUtil.i("messageBody="+messageBody);
+        JSONObject object = JSON.parseObject(messageBody);
+        long timeSend = JSONUtil.getLong(object, "timeSend");
+        String content = JSONUtil.getText(object, "content");
+        String imageUrl = JSONUtil.getText(object, "imageUrl");
+        String linkUrl = JSONUtil.getText(object, "linkUrl");
+        String iconUrl = JSONUtil.getText(object, "iconUrl");
+        if (timeSend > 0) {
+            timeSend *= 1000;
+        }
+        User user = MyApplication.getInstance().mLoginUser;
+        if (!StringUtils.isEmpty(linkUrl) && user != null) {
+            linkUrl += "?userid=" + user.getUserId() + "&username=" + user.getNickName() + "&iconurl=" + AvatarHelper.getInstance().getAvatarUrl(user.getUserId(), true);
+        }
+        UUHelperModel.UUHelperItem item = new UUHelperModel.UUHelperItem(timeSend, imageUrl,iconUrl, linkUrl, content);
+        UUHelperDao.getInstance().saveData(item);
+        NotificationManage.sendUUHelperNotif(content);
+    }
+
     private void saveMucMessage(String messageBody, String packetId) {
         JSONObject jObject = JSON.parseObject(messageBody);
         System.out.println(messageBody.toString() + "========================");

+ 17 - 10
app_core/common/src/main/java/com/core/xmpp/XmppConnectionManager.java

@@ -9,8 +9,10 @@ import android.os.Handler;
 import android.os.Message;
 import android.util.Log;
 
+import com.alibaba.fastjson.JSON;
+import com.common.LogUtil;
 import com.core.app.MyApplication;
-import com.core.utils.CommonUtil;
+import com.core.net.utils.NetUtils;
 
 import org.apache.harmony.javax.security.sasl.SaslException;
 import org.jivesoftware.smack.AbstractConnectionListener;
@@ -107,18 +109,22 @@ public class XmppConnectionManager {
 //		NetworkInfo wifi = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
 //		boolean isConnectedGprs = gprs != null && gprs.isConnected();
 //		boolean isConnectedWifi = wifi != null && wifi.isConnected();
-		return CommonUtil.isNetWorkConnected(MyApplication.getInstance());
+		return NetUtils.isNetWorkConnected(MyApplication.getInstance());
 	}
 
 	private BroadcastReceiver mNetWorkChangeReceiver = new BroadcastReceiver() {
 		@Override
 		public void onReceive(Context context, Intent intent) {
+			LogUtil.d("roamer","app net intent:"+ JSON.toJSONString(intent));
 			if (!intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
 				return;
 			}
 			final boolean isConnected = isGprsOrWifiConnected();
-			if (mIsNetWorkActive != isConnected) {// 和之前的状态不同
-				Log.d("roamer", "网络状态改变了doLogining:"+doLogining);
+			LogUtil.d("roamer"," app net isConnected:"+isConnected);
+			LogUtil.d("roamer"," app net mIsNetWorkActive:"+mIsNetWorkActive);
+			LogUtil.d("roamer"," app net mConnection:"+mConnection.isConnected());
+			if (mIsNetWorkActive != isConnected||!mConnection.isConnected()) {// 和之前的状态不同
+				Log.d("roamer", " doLogining:"+doLogining);
 				mIsNetWorkActive = isConnected;
 				// 网络状态改变了
 				if (!mIsNetWorkActive) {// 由有网变为没网
@@ -128,6 +134,7 @@ public class XmppConnectionManager {
 				} else {
 					doLogining=true;
 					if (isLoginAllowed()) {
+						Log.d("roamer", "app try login:"+isLoginAllowed());
 						login(mLoginUserId, mLoginPassword);
 					}
 				}
@@ -198,12 +205,12 @@ public class XmppConnectionManager {
 	private boolean doLogining = false;
 
 	private boolean isLoginAllowed() {
-//		LogUtil.d("Xmpp","---------isLoginAllowed()------------");
-//		LogUtil.d("Xmpp","doLogining:"+doLogining);
-//		LogUtil.d("Xmpp","mIsNetWorkActive:"+mIsNetWorkActive);
-//		LogUtil.d("Xmpp","!mConnection.isConnected():"+!mConnection.isConnected());
-//		LogUtil.d("Xmpp","!mConnection.isAuthenticated():"+!mConnection.isAuthenticated());
-//		LogUtil.d("Xmpp","---------isLoginAllowed()------------");
+		LogUtil.d("roamer","---------isLoginAllowed()------------");
+		LogUtil.d("roamer","doLogining:"+doLogining);
+		LogUtil.d("roamer","mIsNetWorkActive:"+mIsNetWorkActive);
+		LogUtil.d("roamer","!mConnection.isConnected():"+!mConnection.isConnected());
+		LogUtil.d("roamer","!mConnection.isAuthenticated():"+!mConnection.isAuthenticated());
+		LogUtil.d("roamer","---------isLoginAllowed()------------");
 		return doLogining && mIsNetWorkActive && (!mConnection.isConnected() || !mConnection.isAuthenticated());
 	}
 

+ 27 - 0
app_core/common/src/main/java/com/core/xmpp/model/ChatMessage.java

@@ -6,11 +6,15 @@ import android.text.TextUtils;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.common.data.JSONUtil;
 import com.core.xmpp.dao.ChatMessageDaoImpl;
 import com.core.model.XmppMessage;
 import com.j256.ormlite.field.DatabaseField;
 import com.j256.ormlite.table.DatabaseTable;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * @项目名称: SkWeiChat-Baidu
  * @包名: com.xzjmyk.pm.activity.bean.message
@@ -380,4 +384,27 @@ public class ChatMessage extends XmppMessage implements Parcelable {
         }
 
     };
+
+    @Override
+    public String toString() {
+        Map<String, Object> map = new HashMap<>();
+        map.put("_id", _id);
+        map.put("content", content);
+        map.put("filePath", filePath);
+        map.put("fileSize", fileSize);
+        map.put("fromUserId", fromUserId);
+        map.put("fromUserName", fromUserName);
+        map.put("location_x", location_x);
+        map.put("location_y", location_y);
+        map.put("messageState", messageState);
+        map.put("objectId", objectId);
+        map.put("packetId", packetId);
+        map.put("sipDuration", sipDuration);
+        map.put("sipStatus", sipStatus);
+        map.put("timeLen", timeLen);
+        map.put("timeReceive", timeReceive);
+        map.put("timeSend", timeSend);
+        map.put("type", type);
+        return JSONUtil.map2JSON(map);
+    }
 }

+ 136 - 2
app_core/common/src/main/res/layout/activity_booking_list.xml

@@ -5,8 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:fillViewport="true"
-    android:descendantFocusability="blocksDescendants"
-    tools:context="com.xzjmyk.pm.activity.ui.erp.activity.secretary.BookingListActivity">
+    android:descendantFocusability="blocksDescendants">
 
     <LinearLayout
         android:layout_width="match_parent"
@@ -17,6 +16,7 @@
             style="@style/crm_ll_card"
             android:layout_height="wrap_content"
             android:orientation="horizontal"
+            android:visibility="gone"
             android:weightSum="2">
 
             <TextView
@@ -39,6 +39,140 @@
                 android:padding="10dp"
                 android:text="@string/booking_shared" />
         </LinearLayout>
+        
+        <!--new layout-->
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:background="#6A6A6A"
+            android:paddingBottom="10dp">
+            <RelativeLayout
+                android:layout_weight="1"
+                android:layout_width="0dp"
+                android:layout_height="match_parent">
+                <TextView
+                    android:id="@+id/tv_signin_num"
+                    android:layout_width="10dp"
+                    android:layout_height="10dp"
+                    android:layout_marginRight="10dp"
+                    android:background="@drawable/hongdian"
+                    android:layout_gravity="top|right"
+                    android:gravity="center"
+                    android:text=""
+                    android:textColor="@android:color/white"
+                    android:textSize="10.0dip"
+                    android:layout_alignParentRight="true"
+                    android:layout_alignParentEnd="true"
+                    android:layout_alignTop="@+id/signin" />
+                <TextView
+                    android:id="@+id/mbook"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:drawablePadding="@dimen/drawable_padding"
+                    android:drawableTop="@drawable/oa_1"
+                    android:layout_centerInParent="true"
+                    android:text="@string/oasign_title"
+                    android:textColor="@color/white"
+                    android:layout_marginTop="2dp"/>
+            </RelativeLayout>
+            <RelativeLayout
+                android:layout_weight="1"
+                android:layout_width="0dp"
+                android:layout_height="match_parent">
+                <TextView
+                    android:id="@+id/tv_signout_num"
+                    android:layout_width="10dp"
+                    android:layout_height="10dp"
+                    android:layout_marginRight="10dp"
+                    android:background="@drawable/hongdian"
+                    android:layout_gravity="top|right"
+                    android:layout_alignParentRight="true"
+                    android:gravity="center"
+                    android:text=""
+                    android:textColor="@android:color/white"
+                    android:textSize="10.0dip"
+                    />
+                <TextView
+                    android:id="@+id/outoffice"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="2dp"
+                    android:gravity="center"
+                    android:drawablePadding="@dimen/drawable_padding"
+                    android:drawableTop="@drawable/oa_2"
+                    android:layout_centerInParent="true"
+                    android:text="@string/oaoutplan_title"
+                    android:textColor="@color/white" />
+            </RelativeLayout>
+
+            <TextView
+                android:id="@+id/worklog"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="2dp"
+                android:layout_weight="1"
+                android:drawablePadding="@dimen/drawable_padding"
+                android:drawableTop="@drawable/oa_4"
+                android:gravity="center"
+                android:text="@string/oaworkdaily_title"
+                android:textColor="@color/white" />
+            <TextView
+                android:id="@+id/erp"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="2dp"
+                android:layout_weight="1"
+                android:drawablePadding="@dimen/drawable_padding"
+                android:drawableTop="@drawable/oa_5"
+                android:gravity="center"
+                android:text="@string/oavacation_apply"
+                android:textColor="@color/white" />
+            <LinearLayout
+                android:id="@+id/oamain_more_menu_ll"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="2dp"
+                android:layout_weight="1"
+                android:orientation="vertical"
+                android:paddingLeft="5dp"
+                android:visibility="gone">
+
+                <FrameLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    >
+
+                    <ImageView
+                        android:id="@+id/oamain_more_menu_iv"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:gravity="center"
+                        android:src="@drawable/ic_oa_more" />
+
+                    <TextView
+                        android:id="@+id/oamain_more_menu_hd_tv"
+                        android:layout_width="10dp"
+                        android:layout_height="10dp"
+                        android:layout_gravity="top|right"
+                        android:layout_marginRight="15dp"
+                        android:background="@drawable/hongdian"
+                        android:textColor="@android:color/white"
+                        android:textSize="10.0dip"
+                        />
+                </FrameLayout>
+
+                <TextView
+                    android:id="@+id/more_menu_tv"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="5dp"
+                    android:gravity="center"
+                    android:text="@string/oamore_tltle"
+                    android:textColor="@color/white" />
+            </LinearLayout>
+
+        </LinearLayout>
         <!--年月日布局-->
         <LinearLayout
             android:layout_width="match_parent"

+ 1 - 1
app_core/common/src/main/res/layout/fragment_message.xml

@@ -40,7 +40,7 @@
             android:visibility="visible" />
     </RelativeLayout>
 
-    <com.xzjmyk.pm.activity.view.DrawableCenterTextView
+    <com.core.widget.DrawableCenterTextView
         android:id="@+id/message_net_set"
         android:layout_width="match_parent"
         android:layout_height="35dp"

+ 2 - 2
app_core/common/src/main/res/layout/fragment_new_message.xml

@@ -11,7 +11,7 @@
         android:layout_width="match_parent"
         android:layout_height="48dp" />
 
-    <com.xzjmyk.pm.activity.view.DrawableCenterTextView
+    <com.core.widget.DrawableCenterTextView
         android:id="@+id/message_net_set"
         android:layout_width="match_parent"
         android:layout_height="35dp"
@@ -23,7 +23,7 @@
         android:drawablePadding="10dp"
         android:visibility="gone"/>
 
-    <com.xzjmyk.pm.activity.view.PullToRefreshSlideListView
+    <com.handmark.pulltorefresh.library.PullToRefreshListView
         xmlns:slide="http://schemas.android.com/apk/res-auto"
         android:id="@+id/pull_refresh_list"
         android:layout_width="match_parent"

+ 1 - 0
app_modular/appbooking/.gitignore

@@ -0,0 +1 @@
+/build

+ 29 - 0
app_modular/appbooking/build.gradle

@@ -0,0 +1,29 @@
+apply plugin: 'com.android.library'
+
+
+android {
+    compileSdkVersion rootProject.ext.android.compileSdkVersion
+    buildToolsVersion rootProject.ext.android.buildToolsVersion
+    defaultConfig {
+        minSdkVersion rootProject.ext.android.minSdkVersion
+        targetSdkVersion rootProject.ext.android.targetSdkVersion
+        versionCode rootProject.ext.android.versionCode
+        versionName rootProject.ext.android.versionName
+    }
+    buildTypes {
+        release {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+    }
+}
+
+dependencies {
+    compile fileTree(dir: 'libs', include: ['*.jar'])
+    compile deps.appcompatV7
+    testCompile deps.junit
+
+    compile project(':common')
+
+    compile 'com.android.support.constraint:constraint-layout:+'
+}

+ 25 - 0
app_modular/appbooking/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_modular/appbooking/src/androidTest/java/base/android/com/appbooking/ExampleInstrumentedTest.java

@@ -0,0 +1,26 @@
+package base.android.com.appbooking;
+
+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.appbooking.test", appContext.getPackageName());
+    }
+}

+ 10 - 0
app_modular/appbooking/src/main/AndroidManifest.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.modular.booking">
+
+    <application>
+        <activity android:name=".activity.business.BbookingAddActivity" />
+        <activity android:name=".activity.shares.SharesListActivity"></activity>
+    </application>
+
+</manifest>

+ 19 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BbookingAddActivity.java

@@ -0,0 +1,19 @@
+package com.modular.booking.activity.business;
+
+import android.os.Bundle;
+
+import com.core.base.BaseActivity;
+import com.modular.booking.R;
+
+/**
+  * @desc:商务预约新增界面
+  * @author:Arison on 2017/9/7
+  */
+public class BbookingAddActivity extends BaseActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_bbooking_add);
+    }
+}

+ 15 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/shares/SharesListActivity.java

@@ -0,0 +1,15 @@
+package com.modular.booking.activity.shares;
+
+import android.os.Bundle;
+
+import com.core.base.BaseActivity;
+import com.modular.booking.R;
+
+public class SharesListActivity extends BaseActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_shares_list);
+    }
+}

+ 122 - 0
app_modular/appbooking/src/main/java/com/modular/booking/adapter/BookAdapter.java

@@ -0,0 +1,122 @@
+package com.modular.booking.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.common.data.DateFormatUtil;
+import com.modular.booking.R;
+import com.modular.booking.model.BookingModel;
+
+import java.util.ArrayList;
+import java.util.Date;
+
+/**
+ * Created by Arison on 2017/6/23.
+ */
+
+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){
+        this.ct=ct;
+        this.datas=data;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    @Override
+    public int getCount() {
+        return datas!=null?datas.size():0;
+    }
+
+    @Override
+    public Object getItem(int position) {
+        return   datas.get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        ViewHolder holder = null;
+        if (convertView == null) {
+            holder = new ViewHolder();
+            convertView = LayoutInflater.from(ct).inflate(R.layout.item_booking_list, null);
+            holder.status_img = (ImageView) convertView.findViewById(R.id.status_img);
+            holder.share_img = (ImageView) convertView.findViewById(R.id.iv_share);
+            holder.title_tv = (TextView) convertView.findViewById(R.id.title_tv);
+            holder.status_tv = (TextView) convertView.findViewById(R.id.status_tv);
+            holder.address_tv = (TextView) convertView.findViewById(R.id.address_tv);
+            holder.handler_tv = (TextView) convertView.findViewById(R.id.handler_tv);
+            holder.topic_tv=(TextView) convertView.findViewById(R.id.topic_tv);
+            convertView.setTag(holder);
+        } else {
+            holder = (ViewHolder) convertView.getTag();
+        }
+        try {
+            BookingModel model=datas.get(position);
+            holder.model=model;
+
+            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());
+           
+            if(model.getAb_sharestatus().equals("已共享")){
+                holder.share_img.setVisibility(View.VISIBLE);
+            }else{
+                holder.share_img.setVisibility(View.GONE);
+            }
+            if (type==2){
+                holder.handler_tv.setText(model.getAb_recordman()+"—>"+model.getAb_bman());
+            }else{
+                holder.handler_tv.setText(model.getAb_recordman()+"—>"+model.getAb_bman());
+            }
+            
+            holder.topic_tv.setText(model.getAb_type());
+            holder.model.setAb_type(model.getAb_type());
+         
+        } catch (Exception e) {
+        }
+        return convertView;
+    }
+
+    public class ViewHolder {
+        public ImageView status_img,share_img;
+        public TextView title_tv, status_tv, address_tv, handler_tv,topic_tv;
+        public BookingModel model;
+    }
+}

+ 1 - 1
app_modular/appcontact/src/main/java/com/uas/appcontact/model/book/BookingModel.java → app_modular/appbooking/src/main/java/com/modular/booking/model/BookingModel.java

@@ -1,4 +1,4 @@
-package com.uas.appcontact.model.book;
+package com.modular.booking.model;
 
 import android.os.Parcel;
 import android.os.Parcelable;

+ 1 - 1
app_modular/appcontact/src/main/java/com/uas/appcontact/model/book/SureBookModel.java → app_modular/appbooking/src/main/java/com/modular/booking/model/SureBookModel.java

@@ -1,4 +1,4 @@
-package com.uas.appcontact.model.book;
+package com.modular.booking.model;
 
 /**
  * Created by ${FANGLH} on 2017/7/18.

+ 9 - 0
app_modular/appbooking/src/main/res/layout/activity_bbooking_add.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context="com.modular.booking.activity.business.BbookingAddActivity">
+
+</android.support.constraint.ConstraintLayout>

+ 12 - 0
app_modular/appbooking/src/main/res/layout/activity_shares_list.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context="com.modular.booking.activity.shares.SharesListActivity">
+    <com.handmark.pulltorefresh.library.PullToRefreshListView
+        android:id="@+id/shareList"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+</android.support.constraint.ConstraintLayout>

+ 10 - 0
app_modular/appbooking/src/main/res/values/strings.xml

@@ -0,0 +1,10 @@
+<resources>
+    <string name="app_name">appbooking</string>
+
+    <!--预约功能-->
+    <string name="booking_personal">个人预约</string>
+    <string name="booking_business">商务预约</string>
+    <string name="booking_service">服务预约</string>
+    <string name="booking_share">共享预约</string>
+
+</resources>

+ 17 - 0
app_modular/appbooking/src/test/java/base/android/com/appbooking/ExampleUnitTest.java

@@ -0,0 +1,17 @@
+package base.android.com.appbooking;
+
+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);
+    }
+}

+ 6 - 1
app_modular/appcontact/src/main/AndroidManifest.xml

@@ -5,7 +5,12 @@
         android:allowBackup="true"
         android:label="@string/app_name"
         android:supportsRtl="true">
-        <activity android:name="com.uas.appcontact.ui.activity.NewFriendActivity" />
+        <activity android:name="com.uas.appcontact.ui.activity.NewFriendActivity" >
+            <intent-filter>
+                <action android:name="com.modular.appcontact.NewFriendActivity" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
         <activity
             android:name="com.uas.appcontact.ui.activity.MyFriendActivity"
             android:windowSoftInputMode="stateUnspecified|adjustNothing" />

+ 0 - 462
app_modular/appcontact/src/main/java/com/uas/appcontact/ui/fragment/ContactFragment.java

@@ -1,462 +0,0 @@
-package com.uas.appcontact.ui.fragment;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.Bundle;
-import android.support.v4.content.LocalBroadcastManager;
-import android.text.Editable;
-import android.text.TextUtils;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.widget.AdapterView;
-import android.widget.LinearLayout;
-import android.widget.PopupWindow;
-import android.widget.TextView;
-
-import com.common.data.ListUtils;
-import com.common.data.StringUtil;
-import com.common.system.DisplayUtil;
-import com.common.thread.ThreadUtil;
-import com.core.api.wxapi.ApiPlatform;
-import com.core.api.wxapi.ApiUtils;
-import com.core.app.Constants;
-import com.core.app.MyApplication;
-import com.core.base.EasyFragment;
-import com.core.broadcast.MsgBroadcast;
-import com.core.model.EmployeesEntity;
-import com.core.model.Friend;
-import com.core.net.http.http.OAHttpHelper;
-import com.core.utils.CommonUtil;
-import com.core.utils.sortlist.BaseComparator;
-import com.core.utils.sortlist.BaseSortModel;
-import com.core.utils.sortlist.PingYinUtil;
-import com.core.utils.sortlist.SideBar;
-import com.core.widget.CustomProgressDialog;
-import com.core.widget.VoiceSearchView;
-import com.core.widget.listener.EditChangeListener;
-import com.core.app.AppConstant;
-import com.uas.appcontact.R;
-import com.uas.appcontact.adapter.FriendSortAdapter;
-import com.uas.appcontact.listener.ImStatusListener;
-import com.uas.appcontact.manager.ContactsManager;
-import com.uas.appcontact.ui.activity.CommonFragmentActivity;
-import com.uas.appcontact.ui.activity.CompanyContactsActivity;
-import com.uas.appcontact.ui.activity.ContactsActivity;
-import com.uas.appcontact.ui.activity.MyFriendActivity;
-import com.uas.appcontact.ui.activity.NewFriendActivity;
-import com.uas.appcontact.ui.activity.PlatContactAddPeopleActivity;
-import com.uas.appcontact.ui.activity.UserSearchActivity;
-import com.uas.appcontact.ui.widget.stickylistheaders.StickyListHeadersListView;
-import com.yalantis.phoenix.PullToRefreshView;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-
-/**
- * Created by pengminggong on 2016/10/12.
- */
-public class ContactFragment extends EasyFragment implements View.OnClickListener, ContactsManager.OnEmployListener {
-    private SideBar sidebar;
-    private TextView text_dialog;
-    private StickyListHeadersListView refreshListView;
-    private PullToRefreshView mPullToRefreshView;
-    private TextView tv_uu_new;
-    private FriendSortAdapter adapter;
-    private String loginUserId;
-    private List<BaseSortModel<Friend>> showDatas;//显示的数据
-    private List<BaseSortModel<Friend>> allDatas;//获取到的全部数据
-    private BaseComparator comparator;
-    private VoiceSearchView voiceSearchView;
-
-    private CustomProgressDialog mcProgressDialog;
-
-    private boolean isB2b;
-
-    private IntentFilter inputFilter;
-    private BroadcastReceiver receiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            if (intent.getAction().equals("com.app.home.update") || intent.getAction().equals(MsgBroadcast.ACTION_MSG_COMPANY_UPDATE)) {//账套变更,重新刷新数据,初始化任务
-                loadData();
-            }
-        }
-    };
-
-    private ImStatusListener mListener;
-
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-        if (context instanceof ImStatusListener) {
-            mListener = (ImStatusListener) context;
-        }
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        inputFilter = new IntentFilter();
-        inputFilter.addAction(MsgBroadcast.ACTION_MSG_COMPANY_UPDATE);
-        inputFilter.addAction("com.app.home.update");
-        LocalBroadcastManager.getInstance(ct).registerReceiver(receiver, inputFilter);
-        setHasOptionsMenu(true);
-        isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
-    }
-
-    @Override
-    protected int inflateLayoutId() {
-        return R.layout.fragment_contact;
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        LocalBroadcastManager.getInstance(ct).unregisterReceiver(receiver);
-    }
-
-    @Override
-    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
-        super.onCreateOptionsMenu(menu, inflater);
-        inflater.inflate(R.menu.menu_nearby, menu);
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() == R.id.search) {
-            if (!isB2b) {
-                startActivity(new Intent(getActivity(), UserSearchActivity.class));
-            } else {
-                showPopupWindow();
-            }
-        }
-        return super.onOptionsItemSelected(item);
-
-    }
-
-
-    private void showPopupWindow() {
-        View viewContext = LayoutInflater.from(getActivity()).inflate(R.layout.contact_add_menu, null);
-        final PopupWindow setWindow = new PopupWindow(viewContext,
-                LinearLayout.LayoutParams.MATCH_PARENT,
-                LinearLayout.LayoutParams.WRAP_CONTENT, true);
-        viewContext.findViewById(R.id.add_friend_tv).setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                startActivity(new Intent(getActivity(), UserSearchActivity.class));
-                if (setWindow != null) {
-                    setWindow.dismiss();
-                }
-            }
-        });
-        viewContext.findViewById(R.id.add_people_tv).setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                startActivity(new Intent(getActivity(), PlatContactAddPeopleActivity.class));
-                if (setWindow != null) {
-                    setWindow.dismiss();
-                }
-            }
-        });
-        setWindow.setAnimationStyle(R.style.MenuAnimationFade);
-        setWindow.setBackgroundDrawable(ct.getResources().getDrawable(R.drawable.bg_popuwin));
-        setWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
-            @Override
-            public void onDismiss() {
-                DisplayUtil.backgroundAlpha(getActivity(), 1f);
-            }
-        });
-        setWindow.showAtLocation(getActivity().getWindow().getDecorView().
-                findViewById(android.R.id.content), Gravity.CENTER, 0, 0);
-        DisplayUtil.backgroundAlpha(getActivity(), 0.4f);
-    }
-
-
-    @Override
-    protected void onCreateView(Bundle savedInstanceState, boolean createView) {
-        if (createView) {
-            initView();
-            initEvent();
-        }
-    }
-
-    private void initEvent() {
-        //侧边栏检索
-        sidebar.setOnTouchingLetterChangedListener(new SideBar.OnTouchingLetterChangedListener() {
-            @Override
-            public void onTouchingLetterChanged(String s) {
-                // 该字母首次出现的位置
-                int position = adapter.getPositionForSection(s.charAt(0));
-                if (position != -1) {
-                    int count = refreshListView.getHeaderViewsCount();
-                    refreshListView.setSelection(position + count);
-                }
-                if ("↑".equals(s)) {
-                    refreshListView.setSelection(0);
-                }
-            }
-
-            @Override
-            public void onTouchingUp() {
-            }
-        });
-        mPullToRefreshView.setOnRefreshListener(new PullToRefreshView.OnRefreshListener() {
-            @Override
-            public void onRefresh() {
-                if ("1".equals(CommonUtil.getUserRole())) {
-                    mPullToRefreshView.setRefreshing(false, false);
-                    mcProgressDialog.dismiss();
-                } else {
-                    ContactsManager.getInstance().loadContactByNet(ContactFragment.this);
-                }
-
-            }
-        });
-        //item点击事件处理
-        refreshListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-            @Override
-            public void onItemClick(AdapterView<?> adapterView, View view, int i, long id) {
-                List<BaseSortModel<Friend>> list = adapter.getmSortFriends();
-                if (!ListUtils.isEmpty(list)) {
-                    Friend friend = list.get((int) id).getBean();
-                    clickFriend(friend);
-                }
-            }
-        });
-        //搜索框处理
-        if (voiceSearchView == null) return;
-        voiceSearchView.addTextChangedListener(new EditChangeListener() {
-            @Override
-            public void afterTextChanged(Editable editable) {
-                String str = editable == null ? "" : editable.toString();
-                upDataBySearch(str);
-                adapter.setData(showDatas);
-            }
-        });
-    }
-
-
-    private void initView() {
-        sidebar = (SideBar) findViewById(R.id.sidebar);
-        text_dialog = (TextView) findViewById(R.id.text_dialog);
-        mPullToRefreshView = (PullToRefreshView) findViewById(R.id.contact_ptrv);
-        refreshListView = (StickyListHeadersListView) findViewById(R.id.pull_refresh_list);
-        showDatas = new ArrayList<>();
-        allDatas = new ArrayList<>();
-        mcProgressDialog = CustomProgressDialog.createDialog(ct);
-        comparator = new BaseComparator();
-        loginUserId = MyApplication.getInstance().mLoginUser.getUserId();
-        sidebar.setTextView(text_dialog);
-        setHeaderView();
-        adapter = new FriendSortAdapter(ct, showDatas);
-        refreshListView.setAdapter(adapter);
-        loadData();
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-        mPullToRefreshView.setRefreshing(false, false);
-    }
-
-    /*设置头文件*/
-    private void setHeaderView() {
-        View headview = LayoutInflater.from(ct).inflate(R.layout.header_fragment_contact, null);
-        refreshListView.addHeaderView(headview);
-        voiceSearchView = (VoiceSearchView) headview.findViewById(R.id.voiceSearchView);
-
-        headview.findViewById(R.id.company).setOnClickListener(this);//企业结构
-        headview.findViewById(R.id.group).setOnClickListener(this);//商务群
-        headview.findViewById(R.id.uu_friend).setOnClickListener(this);//我的好友
-        headview.findViewById(R.id.peculiar_tv).setOnClickListener(this);//我的好友
-        tv_uu_new = (TextView) headview.findViewById(R.id.tv_uu_new);
-        tv_uu_new.setVisibility(CommonUtil.getSharedPreferencesBoolean(ct, Constants.SET_UU_NEW, false) ? View.GONE : View.VISIBLE);
-    }
-
-    private void clickFriend(Friend friend) {
-        Intent intent = null;
-        if (friend.getUserId().equals(Friend.ID_NEW_FRIEND_MESSAGE)) {// 新朋友消息
-            intent = new Intent(getActivity(), NewFriendActivity.class);
-        } else if (friend.getUserId().equals(Friend.ID_SYSTEM_MESSAGE)) {// 新朋友消息
-            intent = new Intent("com.modular.message.ChatActivity");
-            intent.putExtra("friend", friend);
-        } else {
-            intent = new Intent("com.modular.basic.BasicInfoActivity");
-            intent.putExtra(AppConstant.EXTRA_NICK_CODE, friend.getPhone());
-            intent.putExtra(AppConstant.EXTRA_USER_ID, friend.getUserId());
-            intent.putExtra(AppConstant.EXTRA_NICK_NAME, friend.getNickName());
-            intent.putExtra(AppConstant.EXTRA_EM_CODE, friend.getEmCode());
-            intent.putExtra("friend", friend);
-        }
-        startActivity(intent);
-    }
-
-    void showLoading() {
-
-    }//显示刷新
-
-    void dimssLoading() {
-
-    }//关闭刷新
-
-    private void loadData() {
-        showLoading();
-        ContactsManager.getInstance().loadContact(this);
-    }
-
-    private void handlerData(List<BaseSortModel<Friend>> friends) {
-        allDatas = friends;
-        if (voiceSearchView == null || TextUtils.isEmpty(voiceSearchView.getText())) {//没有搜索数据
-            showDatas = friends;
-        } else {//
-            String str = voiceSearchView.getText().toString();
-            upDataBySearch(str);
-        }
-        OAHttpHelper.getInstance().post(new Runnable() {
-            @Override
-            public void run() {
-                if (adapter == null) return;
-                adapter.setData(showDatas);
-                mPullToRefreshView.setRefreshing(false);
-                if (mcProgressDialog.isShowing())
-                    mcProgressDialog.dismiss();
-            }
-        });
-    }
-
-    /**
-     * 当搜索框有字时候获取
-     *
-     * @param str 搜索框文字
-     */
-    private void upDataBySearch(String str) {
-        if (ListUtils.isEmpty(allDatas)) return;
-        showDatas = new ArrayList<>();
-        for (BaseSortModel<Friend> e : allDatas) {
-            String text = e.getBean().getShowName() + e.getBean().getDepart() + e.getBean().getPosition() + e.getBean().getPhone();
-            if (StringUtil.isInclude(text, str)) {
-                showDatas.add(e);
-            }
-        }
-    }
-
-    /**
-     * 想获取到的人员列表数据整合为Friend数据列表
-     *
-     * @return 查询到数据列表
-     */
-    private List<BaseSortModel<Friend>> getFriendsByErpDB(List<EmployeesEntity> emList) throws Exception {
-        if (ListUtils.isEmpty(emList)) return null;
-        List<BaseSortModel<Friend>> list = new ArrayList<>();
-        for (EmployeesEntity e : emList) {
-            list.add(getFriendByErp(e));
-        }
-        if (ListUtils.isEmpty(list)) {
-            list = new ArrayList<>();
-        } else {
-            Collections.sort(list, comparator);
-        }
-        return list;
-    }
-
-
-    /**
-     * 将Rep转化为Friend对象
-     *
-     * @param e 员工对象
-     * @return
-     */
-    private BaseSortModel<Friend> getFriendByErp(EmployeesEntity e) {
-        Friend friend = new Friend();
-        friend.setTimeCreate((int) (System.currentTimeMillis() / 1000));
-        friend.setOwnerId(loginUserId);
-        friend.setUserId(String.valueOf(e.getEm_IMID()));
-        friend.setNickName(e.getEM_NAME());
-        friend.setPhone(e.getEM_MOBILE());
-        friend.setDepart(e.getEM_DEPART());
-        friend.setPosition(e.getEM_POSITION());
-        friend.setEmCode(e.getEM_CODE());
-        friend.setPrivacy(e.getEM_EMAIL());
-        friend.setCompanyId(0);
-        friend.setRoomFlag(0);// 0朋友 1群组
-        friend.setStatus(Friend.STATUS_UNKNOW);
-        BaseSortModel<Friend> mode = new BaseSortModel<>();
-        mode.setBean(friend);
-        setSortCondition(mode);
-        return mode;
-    }
-
-    /*设置当前mode所在的索引值*/
-    private void setSortCondition(BaseSortModel<Friend> mode) {
-        Friend friend = mode.getBean();
-        if (friend == null) {
-            return;
-        }
-        String name = friend.getShowName();
-        String wholeSpell = PingYinUtil.getPingYin(name);
-        if (!StringUtil.isEmpty(wholeSpell)) {
-            try {
-                String firstLetter = Character.toString(wholeSpell.charAt(0));
-                sidebar.addExist(firstLetter);
-                mode.setWholeSpell(wholeSpell);
-                mode.setFirstLetter(firstLetter);
-                mode.setSimpleSpell(PingYinUtil.converterToFirstSpell(name));
-            } catch (NullPointerException e) {
-
-            }
-        } else {// 如果全拼为空,理论上是一种错误情况,因为这代表着昵称为空
-            mode.setWholeSpell("#");
-            mode.setFirstLetter("#");
-            mode.setSimpleSpell("#");
-        }
-    }
-
-
-    @Override
-    public void onClick(View view) {
-        Intent intent = null;
-        int id = view.getId();
-        if (id == R.id.company) {
-            intent = new Intent(ct, CompanyContactsActivity.class);
-            ct.startActivity(intent);
-        } else if (id == R.id.group) {
-            intent = new Intent(ct, CommonFragmentActivity.class);
-            intent.putExtra("imStatus", mListener == null ? 0 : mListener.getmImStatus());
-            intent.putExtra("type", Constants.TYPE_CHAT_All);
-            ct.startActivity(intent);
-        } else if (id == R.id.uu_friend) {
-            startActivity(new Intent(ct, ContactsActivity.class));
-            tv_uu_new.setVisibility(View.GONE);
-            CommonUtil.setSharedPreferences(MyApplication.getInstance(), Constants.SET_UU_NEW, true);
-        } else if (id == R.id.peculiar_tv) {
-            intent = new Intent(ct, MyFriendActivity.class);
-            intent.putExtra("isPeculiar", true);
-            ct.startActivity(intent);
-        }
-    }
-
-    @Override
-    public void callback(List<EmployeesEntity> employees) {
-        try {
-            final List<BaseSortModel<Friend>> friends = getFriendsByErpDB(employees);
-            ThreadUtil.getInstance().addTask(new Runnable() {
-                @Override
-                public void run() {
-                    handlerData(friends);
-                }
-            });
-
-        } catch (Exception e) {
-            dimssLoading();
-        }
-    }
-}
-
-

+ 1 - 1
app_modular/applogin/src/main/java/com/modular/login/LoginActivity.java

@@ -123,7 +123,7 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
         if (v.getId() == R.id.login_btn){
             login();
         }else if (v.getId() == R.id.tv_register){
-//            startActivity(new Intent(mContext,RegisterSelectActivity.class));
+            startActivity(new Intent(mContext,RegisterSelectActivity.class));
         }else if (v.getId() == R.id.tv_findPwd){
             IntentUtils.webLinks(mContext,
                     "https://account.ubtob.com/user/pwd?appId=home&returnURL=http%3A%2F%2Fwww.ubtob.com%2F",

+ 6 - 1
app_modular/appme/src/main/AndroidManifest.xml

@@ -20,7 +20,12 @@
         <activity android:name="com.uas.appme.settings.activity.BookingSetActivity"/>
         <activity
             android:name="com.uas.appme.settings.activity.FeedbackActivity"
-            android:windowSoftInputMode="stateHidden|stateAlwaysHidden"/>
+            android:windowSoftInputMode="stateHidden|stateAlwaysHidden">
+            <intent-filter>
+                <action android:name="com.modular.main.FeedbackActivity" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
 
         <activity android:name="com.uas.appme.settings.activity.SelectLanguageActivity"/>
         <activity

+ 1 - 0
app_modular/appmessages/build.gradle

@@ -23,6 +23,7 @@ dependencies {
     compile fileTree(include: ['*.jar'], dir: 'libs')
     testCompile deps.junit
     compile deps.appcompatV7
+    compile deps.recyclerviewV7
     compile project(':common')
     compile project(':network')
     compile project(':appworks')

+ 19 - 9
app_modular/appmessages/src/main/AndroidManifest.xml

@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="com.modular.appmessages">
 
@@ -5,23 +6,32 @@
         android:allowBackup="true"
         android:label="@string/app_name"
         android:supportsRtl="true">
-        <activity android:name="com.modular.appmessages.activity.MsgsSecondCommonActivity" />
-        <activity android:name="com.modular.appmessages.activity.PlatMsgThirdActivity" />
-        <activity android:name="com.modular.appmessages.activity.ProcessB2BActivity" />
+        <activity android:name=".activity.MsgsSecondCommonActivity" />
+        <activity android:name=".activity.PlatMsgThirdActivity" />
+        <activity android:name=".activity.ProcessB2BActivity" />
         <activity
-            android:name="com.modular.appmessages.activity.ComplaintDetailActivity"
+            android:name=".activity.ComplaintDetailActivity"
             android:label="@string/complaint_doc" />
         <activity
-            android:name="com.modular.appmessages.activity.ProcessMsgActivity"
+            android:name=".activity.ProcessMsgActivity"
             android:label="@string/title_activity_process_msg" />
-        <activity android:name="com.modular.appmessages.activity.AppWebViewActivity" />
-        <activity android:name="com.modular.appmessages.activity.ApprovalActivity" />
+        <activity android:name=".activity.AppWebViewActivity" />
+        <activity android:name=".activity.ApprovalActivity" />
         <activity
-            android:name="com.modular.appmessages.activity.Subscription2Activity"
+            android:name=".activity.Subscription2Activity"
             android:label="@string/subscribe_title" />
         <activity
             android:name=".activity.SubcribeManageActivity"
             android:theme="@style/StyledIndicators" />
+        <activity
+            android:name=".activity.UUHelperActivity"
+            android:label="UU 助手"
+            android:launchMode="singleTask">
+            <intent-filter>
+                <action android:name="com.modular.appmessage.UUHelperActivity" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
     </application>
 
-</manifest>
+</manifest>

+ 13 - 8
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/AppWebViewActivity.java

@@ -58,7 +58,6 @@ public class AppWebViewActivity extends BaseActivity {
                 case Constants.SUCCESS_ERP:
                     Bundle bundle = msg.getData();
                     String result = bundle.getString("result");
-                    Log.i("wang", "切换登录:" + result);
                     try {
                         String sessionId = FlexJsonUtil.fromJson(result).get("sessionId").toString();
                         String erpaccount = FlexJsonUtil.fromJson(result).get("erpaccount").toString();
@@ -103,7 +102,6 @@ public class AppWebViewActivity extends BaseActivity {
         webView = (PullToRefreshWebView) findViewById(R.id.webView_listview);
         pb = (ProgressBar) findViewById(R.id.pb);
         pb.setMax(100);
-
         Intent intent = this.getIntent();
         master = intent.getStringExtra("master");//参数账套
         String uu = intent.getStringExtra("uu");//参数账套
@@ -137,7 +135,7 @@ public class AppWebViewActivity extends BaseActivity {
         webView.getRefreshableView().getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
         webView.getRefreshableView().clearCache(true);
         webView.getRefreshableView().clearHistory();
-
+        boolean approval = intent.getBooleanExtra("approval", false);
         webView.getRefreshableView().setWebViewClient(new WebViewClient() {
             public boolean shouldOverrideUrlLoading(WebView view, String url) {
                 if (!StringUtil.isEmpty(url) && url.contains("nodeId=")) {
@@ -170,7 +168,12 @@ public class AppWebViewActivity extends BaseActivity {
         if (!StringUtil.isEmpty(masterId) && !StringUtil.isEmpty(master)) {
             checkUUMaster(uu, masterId, master, url);// 推送,判别公司,账套,实现自动切换
         } else {
-            loadUrl(url, master);// UU为空,默认本公司
+            if (approval) {
+                loadUrl(url, master);// UU为空,默认本公司
+            } else {
+
+                webView.getRefreshableView().loadUrl(url);
+            }
         }
     }
 
@@ -370,10 +373,12 @@ public class AppWebViewActivity extends BaseActivity {
 
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
-        getMenuInflater().inflate(R.menu.menu_aproval_set, menu);
-        menu.getItem(0).setVisible(false);
-        MenuItem item = menu.getItem(1);
-        item.setTitle("使用新版");
+        if (getIntent().getBooleanExtra("approval", false)) {
+            getMenuInflater().inflate(R.menu.menu_aproval_set, menu);
+            menu.getItem(0).setVisible(false);
+            MenuItem item = menu.getItem(1);
+            item.setTitle("使用新版");
+        }
         return super.onCreateOptionsMenu(menu);
     }
 }

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

@@ -80,6 +80,7 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
             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("approval", true);
             intent.putExtra("master", mPresenter.getMaster());
             intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
             startActivity(intent);

+ 2 - 2
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/MsgsSecondCommonActivity.java

@@ -35,6 +35,8 @@ import com.core.api.wxapi.ApiPlatform;
 import com.core.api.wxapi.ApiUtils;
 import com.core.app.MyApplication;
 import com.core.base.BaseActivity;
+import com.core.dao.MessageDao;
+import com.core.model.MessageModel;
 import com.core.net.http.ViewUtil;
 import com.core.utils.CommonUtil;
 import com.core.utils.TimeUtils;
@@ -43,8 +45,6 @@ import com.handmark.pulltorefresh.library.PullToRefreshBase;
 import com.handmark.pulltorefresh.library.PullToRefreshListView;
 import com.lidroid.xutils.ViewUtils;
 import com.modular.appmessages.R;
-import com.core.dao.MessageDao;
-import com.core.model.MessageModel;
 
 import java.util.ArrayList;
 import java.util.HashMap;

+ 122 - 0
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/UUHelperActivity.java

@@ -0,0 +1,122 @@
+package com.modular.appmessages.activity;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.support.v4.content.LocalBroadcastManager;
+import android.support.v7.widget.DefaultItemAnimator;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+
+import com.core.app.AppConstant;
+import com.core.app.Constants;
+import com.core.base.BaseActivity;
+import com.core.dao.UUHelperDao;
+import com.core.model.UUHelperModel;
+import com.core.utils.CommonUtil;
+import com.core.utils.IntentUtils;
+import com.modular.appmessages.R;
+import com.modular.appmessages.adapter.UUHelperAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class UUHelperActivity extends BaseActivity implements View.OnClickListener {
+
+    private RecyclerView contentRV;
+    private UUHelperAdapter mAdapter;
+
+    private BroadcastReceiver updateReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            initData();
+        }
+    };
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_uuhelper);
+        LocalBroadcastManager.getInstance(this).registerReceiver(updateReceiver, new IntentFilter(AppConstant.UPDATA_UUHELPER));
+        initView();
+        initData();
+    }
+
+    @Override
+    protected void onDestroy() {
+//        UUHelperDao.getInstance().updateRead();
+        LocalBroadcastManager.getInstance(this).unregisterReceiver(updateReceiver);
+        super.onDestroy();
+    }
+
+    private void initView() {
+        contentRV = (RecyclerView) findViewById(R.id.contentRV);
+        contentRV.setItemAnimator(new DefaultItemAnimator());
+        contentRV.setLayoutManager(new LinearLayoutManager(ct));
+        findViewById(R.id.successfulTV).setOnClickListener(this);
+        findViewById(R.id.experienceTV).setOnClickListener(this);
+        findViewById(R.id.serviceTV).setOnClickListener(this);
+    }
+
+    private void initData() {
+        List<UUHelperModel.UUHelperItem> items = UUHelperDao.getInstance().getAllModels();
+        List<UUHelperModel> models = new ArrayList<>();
+        if (items != null) {
+            String dateChche = null;
+            UUHelperModel model = null;
+            for (UUHelperModel.UUHelperItem item : items) {
+                //第一次进来
+                if (dateChche == null) {
+                    dateChche = item.getDate();
+                }
+                if (model == null) {
+                    model = new UUHelperModel(item.getDate());
+                }
+                if (!dateChche.equals(item.getDate())) {
+                    //已经变了另一天
+                    models.add(model);
+                    model = new UUHelperModel(item.getDate());
+                    dateChche = item.getDate();
+                }
+                model.addItem(item);
+            }
+            models.add(model);
+        }
+        showModel(models);
+    }
+
+    private void showModel(List<UUHelperModel> models) {
+        if (mAdapter == null) {
+            mAdapter = new UUHelperAdapter(ct, models);
+            contentRV.setAdapter(mAdapter);
+        } else {
+            mAdapter.setModels(models);
+            mAdapter.notifyDataSetChanged();
+        }
+        contentRV.scrollToPosition(models.size() - 1);
+    }
+
+    @Override
+    public void onClick(View v) {
+        int id = v.getId();
+        String url = null;
+        if (id == R.id.successfulTV) {
+            url = "http://192.168.253.199:8099/ERP/";
+            IntentUtils.webLinks(ct, url, "关于优软");
+        } else if (id == R.id.experienceTV) {
+            url = "http://113.105.74.140:8080/new/";
+            IntentUtils.webLinks(ct, url, "体验中心");
+        } else if (id == R.id.serviceTV) {
+            CommonUtil.setSharedPreferences(this, Constants.SET_CALL, true);
+            Intent intent = new Intent("com.modular.main.FeedbackActivity");
+            intent.putExtra("type", 1);
+            intent.putExtra(AppConstant.EXTRA_URL, mConfig.help_url);
+            intent.putExtra(AppConstant.EXTRA_TITLE, "客服中心");
+            startActivity(intent);
+        }
+    }
+
+}

+ 17 - 18
app_modular/appmessages/src/main/java/com/modular/appmessages/adapter/ApprovalAdapter.java

@@ -16,23 +16,22 @@ import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import com.modular.appmessages.R;
-
 import com.afollestad.materialdialogs.MaterialDialog;
 import com.common.LogUtil;
-
+import com.common.data.CalendarUtil;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
+import com.core.app.AppConstant;
 import com.core.app.MyApplication;
 import com.core.base.OABaseActivity;
-import com.core.app.AppConstant;
 import com.core.model.Approval;
 import com.core.utils.OpenFilesUtils;
 import com.core.utils.ToastUtil;
 import com.core.utils.helper.AvatarHelper;
+import com.core.utils.time.wheel.DatePicker;
 import com.core.widget.CustomProgressDialog;
 import com.core.widget.listener.EditChangeListener;
-
+import com.modular.appmessages.R;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -409,19 +408,19 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
     }
 
     private void showTimeSelect(final TextView showView, final int position) {
-//        DatePicker picker = new DatePicker(ct, DatePicker.YEAR_MONTH_DAY);
-//        picker.setRange(2015, 2019, true);
-//        picker.setSelectedItem(CalendarUtil.getYear(), CalendarUtil.getMonth(), CalendarUtil.getDay());
-//        picker.setOnDatePickListener(new DatePicker.OnYearMonthDayPickListener() {
-//            @Override
-//            public void onDatePicked(String year, String month, String day) {
-//                String time = year + "-" + month + "-" + day;
-//                LogUtil.i("time=" + time);
-//                showView.setText(time);
-//                approvals.get(position).setValues(time);
-//            }
-//        });
-//        picker.show();
+        DatePicker picker = new DatePicker(ct, DatePicker.YEAR_MONTH_DAY);
+        picker.setRange(2015, 2019, true);
+        picker.setSelectedItem(CalendarUtil.getYear(), CalendarUtil.getMonth(), CalendarUtil.getDay());
+        picker.setOnDatePickListener(new DatePicker.OnYearMonthDayPickListener() {
+            @Override
+            public void onDatePicked(String year, String month, String day) {
+                String time = year + "-" + month + "-" + day;
+                LogUtil.i("time=" + time);
+                showView.setText(time);
+                approvals.get(position).setValues(time);
+            }
+        });
+        picker.show();
     }
 
     private void selectItem(Approval approval, final int position) {

+ 8 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/MessageAdapter.java → app_modular/appmessages/src/main/java/com/modular/appmessages/adapter/MessageAdapter.java

@@ -1,4 +1,4 @@
-package com.xzjmyk.pm.activity.ui.erp.adapter;
+package com.modular.appmessages.adapter;
 
 import android.content.Context;
 import android.text.Html;
@@ -10,16 +10,16 @@ import android.widget.BaseAdapter;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.common.data.ListUtils;
 import com.common.data.StringUtil;
 import com.core.app.MyApplication;
-import com.xzjmyk.pm.activity.R;
 import com.core.model.Friend;
 import com.core.model.XmppMessage;
+import com.core.utils.TimeUtils;
 import com.core.utils.helper.AvatarHelper;
 import com.core.utils.sortlist.BaseSortModel;
-import com.common.data.ListUtils;
-import com.core.utils.TimeUtils;
 import com.core.xmpp.utils.HtmlUtils;
+import com.modular.appmessages.R;
 
 import java.util.List;
 
@@ -86,6 +86,10 @@ public class MessageAdapter extends BaseAdapter {
         if (friend.getType() == XmppMessage.TYPE_ERP) {
             doShowMsgPhotos(holder, friend);
             holder.time_tv.setText(TimeUtils.getFriendlyTimeDesc(MyApplication.getInstance(), friend.getTimeSend()));
+        } else if (friend.getType() == XmppMessage.TYPE_UUHELPER) {
+            holder.time_tv.setText(TimeUtils.getFriendlyTimeDesc(MyApplication.getInstance(), friend.getTimeSend()));
+            //TODO 设置图片
+            holder.avatar_img.setImageResource( R.drawable.home_image_03_u);
         } else {
             if (friend.getRoomFlag() == 0) {// 这是单个人
                 AvatarHelper.getInstance().display(friend.getUserId(), holder.avatar_img, false, false);//每次刷新都会去删除此人缓存

+ 1 - 1
app_modular/appmessages/src/main/java/com/modular/appmessages/adapter/NewSchedultAdapter.java

@@ -16,7 +16,7 @@ import com.common.data.ObjectUtils;
 import com.common.data.StringUtil;
 import com.core.app.MyApplication;
 import com.modular.appmessages.R;
-import com.xzjmyk.pm.activity.ui.erp.entity.AllProcess;
+import com.modular.appmessages.model.AllProcess;
 
 import java.text.SimpleDateFormat;
 import java.util.List;

+ 1 - 1
app_modular/appmessages/src/main/java/com/modular/appmessages/adapter/SchedultAdapter.java

@@ -12,7 +12,7 @@ import android.widget.TextView;
 
 import com.common.data.ObjectUtils;
 import com.modular.appmessages.R;
-import com.xzjmyk.pm.activity.ui.erp.entity.AllProcess;
+import com.modular.appmessages.model.AllProcess;
 
 import java.text.SimpleDateFormat;
 import java.util.List;

+ 216 - 0
app_modular/appmessages/src/main/java/com/modular/appmessages/adapter/UUHelperAdapter.java

@@ -0,0 +1,216 @@
+package com.modular.appmessages.adapter;
+
+import android.content.Context;
+import android.content.Intent;
+import android.support.v7.widget.DefaultItemAnimator;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.common.LogUtil;
+import com.common.data.ListUtils;
+import com.core.dao.UUHelperDao;
+import com.core.model.UUHelperModel;
+import com.modular.appmessages.R;
+import com.modular.appmessages.activity.AppWebViewActivity;
+import com.nostra13.universalimageloader.core.ImageLoader;
+
+import java.util.List;
+
+
+/**
+ * Created by Bitliker on 2017/9/7.
+ */
+
+public class UUHelperAdapter extends RecyclerView.Adapter<UUHelperAdapter.ViewHolder> {
+    private Context ct;
+    private List<UUHelperModel> models;
+    private LayoutInflater inflater;
+
+    public UUHelperAdapter(Context ct, List<UUHelperModel> models) {
+        this.ct = ct;
+        this.models = models;
+    }
+
+    public List<UUHelperModel> getModels() {
+        return models;
+    }
+
+    public void setModels(List<UUHelperModel> models) {
+        this.models = models;
+    }
+
+    public void insertStart(List<UUHelperModel> startModels) {
+        if (startModels == null || startModels.size() <= 0) return;
+        if (models == null || models.size() <= 0) {
+            setModels(startModels);
+            notifyDataSetChanged();
+        } else {
+            models.addAll(0, startModels);
+            notifyItemRangeInserted(0, startModels.size());
+        }
+    }
+
+    public void insertEnd(List<UUHelperModel> startModels) {
+        if (startModels == null || startModels.size() <= 0) return;
+        if (models == null || models.size() <= 0) {
+            setModels(startModels);
+            notifyDataSetChanged();
+        } else {
+            int startItem = models.size();
+            models.addAll(startModels);
+            notifyItemRangeInserted(startItem, models.size());
+        }
+    }
+
+
+    @Override
+    public UUHelperAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        return new ViewHolder(parent);
+    }
+
+    @Override
+    public void onBindViewHolder(ViewHolder holder, int position) {
+        UUHelperModel model = models.get(position);
+        holder.timeTV.setText(model.getDate());
+        holder.itemRV.setAdapter(new ItemAdapter(model.getItems()));
+    }
+
+    @Override
+    public int getItemCount() {
+        return ListUtils.getSize(models);
+    }
+
+    class ViewHolder extends RecyclerView.ViewHolder {
+        TextView timeTV;
+        RecyclerView itemRV;
+
+        public ViewHolder(ViewGroup parent) {
+            this(getViewByLayout(R.layout.item_uuhelper, parent));
+        }
+
+        public ViewHolder(View itemView) {
+            super(itemView);
+            timeTV = (TextView) itemView.findViewById(R.id.timeTV);
+            itemRV = (RecyclerView) itemView.findViewById(R.id.itemRV);
+            itemRV.setLayoutManager(new LinearLayoutManager(ct));
+            itemRV.setItemAnimator(new DefaultItemAnimator());
+        }
+    }
+
+
+    private class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ItemViewHolder> {
+        private List<UUHelperModel.UUHelperItem> items;
+
+        public ItemAdapter(List<UUHelperModel.UUHelperItem> items) {
+            this.items = items;
+        }
+
+        public void setItems(List<UUHelperModel.UUHelperItem> items) {
+            this.items = items;
+        }
+
+        @Override
+        public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+            return new ItemViewHolder(parent);
+        }
+
+        @Override
+        public int getItemCount() {
+            return this.items == null ? 0 : this.items.size();
+        }
+
+        class ItemViewHolder extends RecyclerView.ViewHolder {
+            RelativeLayout fristRL, normalRL;
+            ImageView fristIV, normalIV;
+            TextView fristTV, normalTV;
+            View line;
+
+            public ItemViewHolder(ViewGroup parent) {
+                this(getViewByLayout(R.layout.item_uuhelper_item, parent));
+            }
+
+            public ItemViewHolder(View itemView) {
+                super(itemView);
+                fristRL = (RelativeLayout) itemView.findViewById(R.id.fristRL);
+                normalRL = (RelativeLayout) itemView.findViewById(R.id.normalRL);
+                fristIV = (ImageView) itemView.findViewById(R.id.fristIV);
+                normalIV = (ImageView) itemView.findViewById(R.id.normalIV);
+                fristTV = (TextView) itemView.findViewById(R.id.fristTV);
+                normalTV = (TextView) itemView.findViewById(R.id.normalTV);
+                line = itemView.findViewById(R.id.line);
+            }
+        }
+
+        @Override
+        public void onBindViewHolder(ItemViewHolder holder, int position) {
+            final UUHelperModel.UUHelperItem model = this.items.get(position);
+            if (position == 0) {
+                holder.fristRL.setVisibility(View.VISIBLE);
+                holder.normalRL.setVisibility(View.GONE);
+                ImageLoader.getInstance().displayImage(model.getImageUrl(), holder.fristIV);
+                holder.fristTV.setText(model.getContent());
+            } else {
+                holder.fristRL.setVisibility(View.GONE);
+                holder.normalRL.setVisibility(View.VISIBLE);
+                ImageLoader.getInstance().displayImage(model.getImageUrl(), holder.normalIV);
+                holder.normalTV.setText(model.getContent());
+            }
+//            if (position == (items.size() - 1)) {
+//                holder.line.setVisibility(View.GONE);
+//            } else {
+//                holder.line.setVisibility(View.VISIBLE);
+//            }
+            holder.itemView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    LogUtil.i(model.toString());
+                    onItemClick(model);
+                }
+            });
+            holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
+                @Override
+                public boolean onLongClick(View v) {
+                    onLongItemClick(model);
+                    return false;
+                }
+            });
+        }
+    }
+
+
+    private View getViewByLayout(int layout, ViewGroup parent) {
+        if (inflater == null) {
+            inflater = LayoutInflater.from(ct);
+        }
+        return inflater.inflate(layout, parent, false);
+    }
+
+    private void onItemClick(UUHelperModel.UUHelperItem item) {
+//         Intent intent = new Intent("com.modular.main.WebViewActivity");
+        Intent intent = new Intent(ct, AppWebViewActivity.class);
+        String title = item.getContent();
+        String url = item.getLinkUrl();
+        intent.putExtra("url", url);
+        intent.putExtra("p", title);
+        intent.putExtra("title", title);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        UUHelperDao.getInstance().updateRead(item.getId());
+        ct.startActivity(intent);
+    }
+
+    private void onLongItemClick(final UUHelperModel.UUHelperItem item) {
+//        AlertDialog.Builder builder = new AlertDialog.Builder(ct);
+//        builder.setTitle(R.string.prompt_title).setMessage("确定删除该消息吗?").setPositiveButton(R.string.sure, new DialogInterface.OnClickListener() {
+//            @Override
+//            public void onClick(DialogInterface dialogInterface, int i) {
+//                UUHelperDao.getInstance().deleteData(item.getId());
+//            }
+//        }).setNegativeButton(R.string.cancel, null).show();
+    }
+}

+ 1 - 1
app_modular/appmessages/src/main/java/com/modular/appmessages/model/AllProcess.java

@@ -1,4 +1,4 @@
-package com.xzjmyk.pm.activity.ui.erp.entity;
+package com.modular.appmessages.model;
 
 import java.io.Serializable;
 import java.util.Date;

+ 97 - 60
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/MessagePresenter.java → app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/MessagePresenter.java

@@ -1,5 +1,6 @@
-package com.xzjmyk.pm.activity.ui.erp.presenter;
+package com.modular.appmessages.presenter;
 
+import android.app.Activity;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
@@ -18,37 +19,37 @@ import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
 import com.common.preferences.PreferenceUtils;
+import com.common.system.SystemUtil;
 import com.common.thread.ThreadUtil;
 import com.core.api.wxapi.ApiConfig;
 import com.core.api.wxapi.ApiPlatform;
 import com.core.api.wxapi.ApiUtils;
+import com.core.app.AppConstant;
 import com.core.app.MyApplication;
 import com.core.broadcast.MsgBroadcast;
+import com.core.dao.MessageDao;
+import com.core.dao.UUHelperDao;
 import com.core.model.Friend;
+import com.core.model.MessageModel;
 import com.core.model.OAConfig;
+import com.core.model.UUHelperModel;
 import com.core.model.XmppMessage;
 import com.core.net.http.http.OAHttpHelper;
 import com.core.net.http.http.OnHttpResultListener;
 import com.core.net.http.http.Request;
+import com.core.utils.CommonUtil;
 import com.core.utils.TimeUtils;
 import com.core.utils.sortlist.BaseSortModel;
 import com.core.utils.sortlist.PingYinUtil;
 import com.core.xmpp.dao.ChatMessageDao;
 import com.core.xmpp.dao.FriendDao;
-import com.core.app.AppConstant;
 import com.modular.appmessages.activity.MsgsSecondCommonActivity;
-import com.core.dao.MessageDao;
+import com.modular.appmessages.activity.UUHelperActivity;
 import com.modular.appmessages.db.SubsDao;
-import com.core.model.MessageModel;
 import com.modular.appmessages.model.SubMessage;
 import com.modular.appmessages.model.SubscriptionMessage;
-import com.uas.appcontact.ui.activity.NewFriendActivity;
-import com.xzjmyk.pm.activity.ui.MainActivity;
-import com.xzjmyk.pm.activity.ui.erp.presenter.imp.IMessageView;
-import com.xzjmyk.pm.activity.ui.message.ChatActivity;
-import com.xzjmyk.pm.activity.ui.message.MucChatActivity;
-import com.xzjmyk.pm.activity.util.im.UserRoleUtils;
-import com.xzjmyk.pm.activity.util.oa.CommonUtil;
+import com.modular.appmessages.presenter.imp.IMessageView;
+import com.modular.appmessages.util.ApprovalUtil;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -57,6 +58,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+
 /**
  * Created by Bitliker on 2017/3/1.
  */
@@ -69,33 +71,31 @@ public class MessagePresenter implements OnHttpResultListener {
     private final int LOAD_EMNEWS_DETAILS = 0x15;
     private final int LOAD_B2B_COUNT = 0x16;//获取b2b的审批和任务数量
     private final int LOAD_BOOKING = 0x17;//小秘书红点
-    @Deprecated
-    public static final String AUTO_SIGIN_ALART = "AUTO_SIGIN_ALART";
+
 
     private String SUB_READ_TIME;//订阅好点击阅读时间
 
     private List<BaseSortModel<Friend>> mFriendList;
-
     private Comparator<BaseSortModel<Friend>> erpComparator;
     private IMessageView iMessageView;
-    private MainActivity ct;
+    private Activity ct;
     private String subReadTime;//订阅号点击时间
 
     private String filter;//搜索数据
-    private int emnewsNum, subsNum, processNum, taskNum, bookingNum;//红点消息分类数量
+    private int emnewsNum, subsNum, processNum, taskNum, bookingNum, uuHelperNum;//红点消息分类数量
     private String[] RECEIVER_LIST = {ConnectivityManager.CONNECTIVITY_ACTION, OAConfig.AUTO_SIGIN_ALART, MsgBroadcast.ACTION_MSG_COMPANY_UPDATE, "com.app.home.update"
-    ,MsgBroadcast.ACTION_MSG_UI_UPDATE};
+            , MsgBroadcast.ACTION_MSG_UI_UPDATE};
     private BroadcastReceiver dataChangeReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
             String action = intent.getAction();
             if (StringUtil.isEmpty(action)) return;
             if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
-                iMessageView.changeNet(CommonUtil.isNetWorkConnected(MyApplication.getInstance()));
+                iMessageView.changeNet(SystemUtil.isNetWorkConnected(MyApplication.getInstance()));
             } else if (OAConfig.AUTO_SIGIN_ALART.equals(action)) {
                 loadNews(isB2b);//获取消息
             } else if (action.equals("com.app.home.update") || action.equals(MsgBroadcast.ACTION_MSG_COMPANY_UPDATE)
-        ||action.equals(MsgBroadcast.ACTION_MSG_UI_UPDATE)) {
+                    || action.equals(MsgBroadcast.ACTION_MSG_UI_UPDATE)) {
                 loadData();
             }
         }
@@ -103,8 +103,9 @@ public class MessagePresenter implements OnHttpResultListener {
     private boolean isB2b;
 
 
-    public MessagePresenter(MainActivity ct, IMessageView iMessageView) {
+    public MessagePresenter(Activity ct, IMessageView iMessageView, UnReaderListener unReaderListener) {
         this.ct = ct;
+        this.unReaderListener = unReaderListener;
         mFriendList = new ArrayList<>();
         if (iMessageView == null)
             new NullPointerException("IMessageView not be null");
@@ -120,32 +121,32 @@ public class MessagePresenter implements OnHttpResultListener {
     public void loadData() {
         isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
         if (isB2b) {
-            if ("1".equals(UserRoleUtils.getUserRole())){
+            if ("1".equals(com.core.utils.CommonUtil.getUserRole())) {
                 //个人用户
                 loadBookingNewNum();//预约红点接口
                 saveErp2DB(null);
-            }else{
+            } else {
                 loadB2bNewsCount();
             }
-           
+
         } else {
             SUB_READ_TIME = CommonUtil.getMaster() + "SUB_READ_TIME";//订阅好点击阅读时间
             subReadTime = PreferenceUtils.getString(SUB_READ_TIME);
-            if ("1".equals(UserRoleUtils.getUserRole())){
+            if ("1".equals(com.core.utils.CommonUtil.getUserRole())) {
                 //个人用户
-                LogUtil.d("roamer","个人用户消息加载!");
+                LogUtil.d("roamer", "个人用户消息加载!");
                 loadBookingNewNum();//预约红点接口
-               
-            }else{
+
+            } else {
                 loadTaskData();//获取任务接口
                 loadProcessToDo();//获取审批流接口
                 loadSubData();
                 loadBookingNewNum();//预约红点接口
-                
+
             }
             loadNews(isB2b);//获取消息
         }
-        
+
     }
 
     private void loadB2bNewsCount() {
@@ -167,7 +168,7 @@ public class MessagePresenter implements OnHttpResultListener {
         //获取网络数据
         Map<String, Object> param = new HashMap<>();
         param.put("count", 100);
-        param.put("condition", "where to_char(createdate_,'yyyymmdd')='" + DateFormatUtil.long2Str( "yyyyMMdd") + "'");
+        param.put("condition", "where to_char(createdate_,'yyyymmdd')='" + DateFormatUtil.long2Str("yyyyMMdd") + "'");
         param.put("sessionId", CommonUtil.getSharedPreferences(ct, "sessionId"));
 
         Request request = new Request.Bulider()
@@ -355,7 +356,7 @@ public class MessagePresenter implements OnHttpResultListener {
                 if (object.containsKey("processcount")) {
                     processNum = JSONUtil.getInt(object, "processcount");
                     String title = JSONUtil.getText(object, "lastProcess");
-                    long time =  JSONUtil.getTime(object, "lastProcessTime") / 1000;
+                    long time = JSONUtil.getTime(object, "lastProcessTime") / 1000;
                     if (time == 0) time = System.currentTimeMillis() / 1000;
                     iMessageView.updateHeaderView(0, processNum, title, TimeUtils.getFriendlyTimeDesc(ct, (int) time));
                     updateForUnReader();
@@ -363,7 +364,7 @@ public class MessagePresenter implements OnHttpResultListener {
                 if (object.containsKey("taskcount")) {
                     taskNum = JSONUtil.getInt(object, "taskcount");
                     String title = JSONUtil.getText(object, "lasttask");
-                    long time =  JSONUtil.getTime(object, "lasttaskTime") / 1000;
+                    long time = JSONUtil.getTime(object, "lasttaskTime") / 1000;
                     if (time == 0) time = System.currentTimeMillis() / 1000;
                     String taskTime = TimeUtils.getFriendlyTimeDesc(ct, (int) time);
                     iMessageView.updateHeaderView(1, taskNum, title, taskTime);
@@ -397,7 +398,7 @@ public class MessagePresenter implements OnHttpResultListener {
                 model.setId(object.getInteger("id"));
                 model.setTitle(object.getString("title"));
                 model.setSubTitle(object.getString("subTitle"));
-                model.setTime(DateFormatUtil.long2Str( JSONUtil.getTime(object, "createTime"), "yyyy-MM-dd HH:mm"));
+                model.setTime(DateFormatUtil.long2Str(JSONUtil.getTime(object, "createTime"), "yyyy-MM-dd HH:mm"));
                 model.setHierarchy(1);
                 model.setType(type);
                 model.setCount(1);
@@ -447,7 +448,7 @@ public class MessagePresenter implements OnHttpResultListener {
     private void handlerProcess(JSONObject object) {
         JSONArray itemArray = object.getJSONArray("data");
         if (!ListUtils.isEmpty(itemArray))
-            itemArray = CommonUtil.sortJsonArray(itemArray);
+            itemArray = ApprovalUtil.sortJsonArray(itemArray);
         String subTitle = null;
         long time = 0;
         if (!ListUtils.isEmpty(itemArray)) {
@@ -455,7 +456,7 @@ public class MessagePresenter implements OnHttpResultListener {
             if (processNum > 0) {
                 subTitle = itemArray.getJSONObject(0).getString("JP_LAUNCHERNAME") + "的"
                         + itemArray.getJSONObject(0).getString("JP_NAME");
-                time =  JSONUtil.getTime(itemArray.getJSONObject(0), "JP_LAUNCHTIME", "JP_REMINDDATE");
+                time = JSONUtil.getTime(itemArray.getJSONObject(0), "JP_LAUNCHTIME", "JP_REMINDDATE");
             }
         } else {
             processNum = 0;
@@ -541,7 +542,7 @@ public class MessagePresenter implements OnHttpResultListener {
             model = new MessageModel();
             model.setTitle(object.getString("title"));
             model.setSubTitle(object.getString("lastMessage"));
-            model.setTime(DateFormatUtil.long2Str( JSONUtil.getTime(object, "lastTime"), "yyyy-MM-dd HH:mm"));
+            model.setTime(DateFormatUtil.long2Str(JSONUtil.getTime(object, "lastTime"), "yyyy-MM-dd HH:mm"));
             model.setType(object.getString("type"));
             if (object.containsKey("count") && object.get("count") != null)
                 model.setCount(object.getInteger("count"));
@@ -560,13 +561,13 @@ public class MessagePresenter implements OnHttpResultListener {
      * @param models
      */
     private void saveErp2DB(final List<MessageModel> models) {
+        LogUtil.i("saveErp2DB");
         new Thread(new Runnable() {
             @Override
             public void run() {
                 if (!ListUtils.isEmpty(models))
                     MessageDao.getInstance().createOrinstart(models, true);
                 final List<BaseSortModel<Friend>> chche = loadDataByImAsync();//loadDataByImAsync()
-                LogUtil.d("roamer","saveErp2DB:"+JSON.toJSONString(chche));
                 OAHttpHelper.getInstance().post(new Runnable() {
                     @Override
                     public void run() {
@@ -630,8 +631,9 @@ public class MessagePresenter implements OnHttpResultListener {
             String mLoginUserId = MyApplication.getInstance().mLoginUser.getUserId();
             List<Friend> friends = FriendDao.getInstance().getNearlyFriendMsg(mLoginUserId);
             List<MessageModel> model = MessageDao.getInstance().queryFirstFloor();
+            List<UUHelperModel.UUHelperItem> uuHelperItems = UUHelperDao.getInstance().getAllModels();
             setFriendName(friends, mLoginUserId);
-            return handlerErpAndIm(friends, model);
+            return handlerErpAndIm(friends, model, uuHelperItems);
         } catch (Exception e) {
             e.printStackTrace();
             return null;
@@ -650,18 +652,13 @@ public class MessagePresenter implements OnHttpResultListener {
      * @param friends
      * @param models
      */
-    private List<BaseSortModel<Friend>> handlerErpAndIm(List<Friend> friends, List<MessageModel> models) throws Exception {
+    private List<BaseSortModel<Friend>> handlerErpAndIm(List<Friend> friends, List<MessageModel> models, List<UUHelperModel.UUHelperItem> uuHelperItems) throws Exception {
         if (friends == null) friends = new ArrayList<>();
         List<BaseSortModel<Friend>> chche = new ArrayList<>();
         emnewsNum = 0;
         //处理消息数据库的数据
         if (!ListUtils.isEmpty(models)) {
             for (MessageModel m : models) {
-                //判断是已经删除了的  不显示 条件  status==3&&m.getTime()<=m.getReadTime()
-//                if (m.getReadStatus() == 3 && !StringUtil.isEmpty(m.getTime()) && !StringUtil.isEmpty(m.getReadTime()) &&
-//                        m.getTime().compareTo(m.getReadTime()) <= 0) {//删除的数据
-//                    continue;
-//                }
                 Friend friend = new Friend();
                 friend.setNickName(m.getTitle());
                 friend.setContent(m.getSubTitle());
@@ -672,16 +669,34 @@ public class MessagePresenter implements OnHttpResultListener {
                 friend.setClickNum(m.getCount());
                 friend.setPhone(m.getReadTime());
                 int count = m.isReaded() ? 0 : m.getCount();
-//                if (m.isReaded() && !StringUtil.isEmpty(m.getTime()) && !StringUtil.isEmpty(m.getReadTime()) &&
-//                        m.getTime().compareTo(m.getReadTime()) <= 0)
-//                    count = 0;
-//                else
-//                    count = m.getCount();
                 emnewsNum += count;
                 friend.setUnReadNum(count);
                 friends.add(friend);
             }
         }
+        if (!ListUtils.isEmpty(uuHelperItems)) {
+            Friend friend = new Friend();
+            friend.setNickName("UU 消息助手");
+            friend.setType(XmppMessage.TYPE_UUHELPER);
+            UUHelperModel.UUHelperItem lastItem = null;
+            int unReadUnm = 0;
+            for (UUHelperModel.UUHelperItem item : uuHelperItems) {
+                if (!item.isReaded()) {
+                    lastItem = item;
+                    unReadUnm++;
+                }
+            }
+            friend.setClickNum(unReadUnm);
+            uuHelperNum = unReadUnm;
+            friend.setUnReadNum(unReadUnm);
+            if (lastItem != null) {
+                friend.set_id(lastItem.getId());
+                friend.setTimeSend((int) (lastItem.getTimeSend() / 1000));
+            } else {
+                friend.setContent("");
+            }
+            friends.add(friend);
+        }
         //处理im数据库和消息列表合并后的数据
         if (friends != null && friends.size() > 0) {
             for (int i = 0; i < friends.size(); i++) {
@@ -731,6 +746,12 @@ public class MessagePresenter implements OnHttpResultListener {
                 MessageDao.getInstance().deleteBytype(friend.getDescription());
                 loadData();
             }
+        } else if (friend.getType() == XmppMessage.TYPE_UUHELPER) {
+            UUHelperDao.getInstance().deleteData(-1);
+            if (!ListUtils.isEmpty(mFriendList) && mFriendList.size() > position) {
+                mFriendList.remove(position);
+                iMessageView.showModel(mFriendList);
+            }
         } else {
             deleteByIm(friend, position);
         }
@@ -748,6 +769,8 @@ public class MessagePresenter implements OnHttpResultListener {
             loadEmNewsDetails(friend.getDescription(), true);
 //            MessageDao.getInstance().upStatusByType(friend.getDescription(), true);
 //            loadData();
+        } else if (friend.getType() == XmppMessage.TYPE_UUHELPER) {
+            UUHelperDao.getInstance().updateRead();
         } else {
             if (friend.getUnReadNum() > 0) {
                 MsgBroadcast.broadcastMsgNumUpdate(ct, false, friend.getUnReadNum());
@@ -823,7 +846,9 @@ public class MessagePresenter implements OnHttpResultListener {
         FriendDao.getInstance().deleteFriend(loginUserId, friend.getUserId());
         // 消息表中删除
         ChatMessageDao.getInstance().deleteMessageTable(loginUserId, friend.getUserId());
-        ct.exitMucChat(friend.getUserId());
+        if (this.unReaderListener != null) {
+            this.unReaderListener.exitMucChat(friend.getUserId());
+        }
     }
 
     /**
@@ -832,7 +857,7 @@ public class MessagePresenter implements OnHttpResultListener {
      * @param mContext
      * @param position
      */
-    public void turn2NextAct(MainActivity mContext, int position) {
+    public void turn2NextAct(Activity mContext, int position) {
         Friend friend = mFriendList.get(position).getBean();
         if (friend == null) {
             return;
@@ -841,17 +866,20 @@ public class MessagePresenter implements OnHttpResultListener {
             //消息
             turn2ERp(friend);
             return;
-        }
-        if (friend.getRoomFlag() == 0) {
+        } else if (friend.getType() == XmppMessage.TYPE_UUHELPER) {
+            ct.startActivity(new Intent(ct, UUHelperActivity.class));
+            UUHelperDao.getInstance().updateRead();
+            return;
+        } if (friend.getRoomFlag() == 0) {
             if (friend.getUserId().equals(Friend.ID_NEW_FRIEND_MESSAGE)) {// 新朋友消息
-                mContext.startActivity(new Intent(mContext, NewFriendActivity.class));
+                mContext.startActivity(new Intent("com.modular.appcontact.NewFriendActivity"));
             } else {
-                Intent intent = new Intent(mContext, ChatActivity.class);
+                Intent intent = new Intent("com.modular.message.ChatActivity");
                 intent.putExtra(AppConstant.FRIEND, friend);
                 mContext.startActivity(intent);
             }
         } else {
-            Intent intent = new Intent(mContext, MucChatActivity.class);
+            Intent intent = new Intent("com.modular.message.MucChatActivity");
             intent.putExtra(AppConstant.EXTRA_USER_ID, friend.getUserId());
             intent.putExtra(AppConstant.EXTRA_NICK_NAME, friend.getNickName());
             intent.putExtra(AppConstant.EXTRA_IS_GROUP_CHAT, true);
@@ -888,9 +916,10 @@ public class MessagePresenter implements OnHttpResultListener {
 
     /*跟新未读红点信息*/
     private void updateForUnReader() {
-        int num = subsNum + processNum + emnewsNum + taskNum + bookingNum;
-        if (ct != null)
-            ct.setUnReader(num);
+        int num = subsNum + processNum + uuHelperNum + emnewsNum + taskNum + bookingNum;
+        if (this.unReaderListener != null) {
+            this.unReaderListener.setUnReader(num);
+        }
     }
 
 
@@ -903,11 +932,19 @@ public class MessagePresenter implements OnHttpResultListener {
         this.subReadTime = subReadTime;
     }
 
-    public void onDestroyView(MainActivity mContext) {
+    public void onDestroyView(Context mContext) {
         try {
             mContext.unregisterReceiver(dataChangeReceiver);
         } catch (Exception e) {
 
         }
     }
+
+    private UnReaderListener unReaderListener;
+
+    public interface UnReaderListener {
+        void setUnReader(int number);
+
+        void exitMucChat(String userId);
+    }
 }

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/imp/IMessageView.java → app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/imp/IMessageView.java

@@ -1,4 +1,4 @@
-package com.xzjmyk.pm.activity.ui.erp.presenter.imp;
+package com.modular.appmessages.presenter.imp;
 
 import com.core.model.Friend;
 import com.core.utils.sortlist.BaseSortModel;

+ 102 - 0
app_modular/appmessages/src/main/java/com/modular/appmessages/ui/MessageHeaderView.java

@@ -0,0 +1,102 @@
+package com.modular.appmessages.ui;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.text.Html;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.core.utils.TimeUtils;
+import com.modular.appmessages.R;
+
+/**
+ * Created by Bitliker on 2017/9/11.
+ */
+
+public class MessageHeaderView extends RelativeLayout {
+    private TextView timeTV, numUnReadTV, titleTV, messageTV;
+    private ImageView headIMG;
+
+    public MessageHeaderView(Context context) {
+        this(context, null);
+    }
+
+    public MessageHeaderView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        LayoutInflater.from(context).inflate(R.layout.incule_item_message, this);
+        timeTV = (TextView) findViewById(R.id.timeTV);
+        numUnReadTV = (TextView) findViewById(R.id.numUnReadTV);
+        titleTV = (TextView) findViewById(R.id.titleTV);
+        messageTV = (TextView) findViewById(R.id.messageTV);
+        headIMG = (ImageView) findViewById(R.id.headIMG);
+
+
+    }
+
+    private void initTypedArray(Context context, AttributeSet attrs) {
+//        TypedArray attr = context.getTypedArray(context, attrs, R.styleable.ShadowLayout);
+    }
+
+
+    public void setNumUnRead(int number) {
+        if (number > 0) {
+            numUnReadTV.setText(String.valueOf(number));
+            if (numUnReadTV.getVisibility() == GONE) {
+                numUnReadTV.setVisibility(VISIBLE);
+            }
+        } else {
+            numUnReadTV.setVisibility(GONE);
+        }
+    }
+
+
+    public void setTitle(String title) {
+        if (title != null) {
+            titleTV.setText(title);
+        }
+    }
+
+    public void setMessage(String message) {
+        if (message != null) {
+            messageTV.setText(Html.fromHtml(message));
+        }
+    }
+
+    public void setHeadImg(int reId) {
+        if (reId > 0) {
+            headIMG.setImageResource(reId);
+        }
+    }
+
+    public void setTime(String time) {
+        if (time != null) {
+            timeTV.setText(time);
+            drawablesTimeTV(0);
+        }
+    }
+
+    public void setTime(long time) {
+        if (time > 0) {
+            timeTV.setText(TimeUtils.getFriendlyTimeDesc(getContext(), (int) time));
+            drawablesTimeTV(0);
+        }
+    }
+
+    public void setUnreadTag(String text) {
+        if (text != null) {
+            timeTV.setText(text);
+            drawablesTimeTV(R.drawable.hongdian);
+        }
+    }
+
+    public void drawablesTimeTV(int reId) {
+        Drawable drawable = null;
+        if (reId > 0) {
+            drawable = getContext().getResources().getDrawable(reId);
+        }
+        timeTV.setCompoundDrawables(null, null, null, drawable);
+    }
+}

+ 10 - 0
app_modular/appmessages/src/main/res/drawable/rl_circular_bg.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape>
+            <solid android:color="@color/white" />
+            <corners android:radius="8dp" />
+            <padding android:bottom="4dp" android:left="6dp" android:right="6dp" android:top="4dp" />
+        </shape>
+    </item>
+</selector>

+ 9 - 0
app_modular/appmessages/src/main/res/drawable/text_angle_hint_bg.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape>
+            <solid android:color="#aeaeae" />
+            <padding android:bottom="4dp" android:left="6dp" android:right="6dp" android:top="4dp" />
+        </shape>
+    </item>
+</selector>

+ 10 - 0
app_modular/appmessages/src/main/res/drawable/text_hint_bg.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape>
+            <solid android:color="@color/subscrip_text" />
+            <corners android:radius="8dp" />
+            <padding android:bottom="2dp" android:left="2dp" android:right="2dp" android:top="2dp" />
+        </shape>
+    </item>
+</selector>

+ 75 - 0
app_modular/appmessages/src/main/res/layout/activity_uuhelper.xml

@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                xmlns:tools="http://schemas.android.com/tools"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:background="@color/base_bg"
+                tools:context="com.modular.appmessages.activity.UUHelperActivity">
+
+    <LinearLayout
+        android:id="@+id/operationLL"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:background="@color/white"
+        android:orientation="horizontal"
+        android:padding="10dp">
+
+
+        <Button
+            android:id="@+id/successfulTV"
+            style="@style/bottomTextStyle"
+            android:layout_weight="2"
+            android:background="@color/white"
+            android:text="关于优软"
+            android:textColor="@drawable/bg_bule_yellow_text" />
+
+        <View
+            android:layout_width="@dimen/line"
+            android:layout_height="20dp"
+            android:layout_gravity="center_vertical"
+            android:background="@color/item_line" />
+
+        <Button
+            android:id="@+id/experienceTV"
+            style="@style/bottomTextStyle"
+            android:layout_weight="3"
+            android:background="@color/white"
+            android:text="体验中心"
+            android:textColor="@drawable/bg_bule_yellow_text" />
+
+        <View
+            android:layout_width="@dimen/line"
+            android:layout_height="20dp"
+            android:layout_gravity="center_vertical"
+            android:background="@color/item_line" />
+
+        <TextView
+            android:id="@+id/changedealmanTV"
+            style="@style/bottomTextStyle"
+            android:layout_weight="5"
+            android:text="@string/common_changedealman"
+            android:visibility="gone" />
+
+        <View
+            android:layout_width="@dimen/line"
+            android:layout_height="20dp"
+            android:layout_gravity="center_vertical"
+            android:background="@color/item_line" />
+
+        <Button
+            android:id="@+id/serviceTV"
+            style="@style/bottomTextStyle"
+            android:layout_weight="3"
+            android:background="@color/white"
+            android:text="客服中心"
+            android:textColor="@drawable/bg_bule_yellow_text" />
+    </LinearLayout>
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/contentRV"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_above="@id/operationLL" />
+
+</RelativeLayout>

+ 68 - 0
app_modular/appmessages/src/main/res/layout/incule_item_message.xml

@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:layout_width="match_parent"
+                android:layout_height="60dp"
+                android:paddingLeft="15dp"
+                android:paddingRight="15dp">
+
+    <ImageView
+        android:id="@+id/headIMG"
+        android:layout_width="@dimen/item_img_height"
+        android:layout_height="@dimen/item_img_width"
+        android:layout_centerVertical="true"
+        android:background="@color/transparent"
+        android:padding="1dp"
+        android:src="@drawable/home_image_01_u" />
+
+    <TextView
+        android:id="@+id/numUnReadTV"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="top|right"
+        android:layout_marginLeft="35dp"
+        android:background="@drawable/tab_unread_bg"
+        android:gravity="center"
+        android:text="999"
+        android:textColor="@android:color/white"
+        android:textSize="10.0dp" />
+
+    <TextView
+        android:id="@+id/timeTV"
+        android:layout_marginTop="5dp"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentRight="true"
+        android:layout_alignTop="@id/headIMG"
+        android:ellipsize="end"
+        android:lines="1"
+        android:text="timeTV"
+        android:textColor="@color/text_hine"
+        android:textSize="@dimen/text_hine" />
+
+    <TextView
+        android:id="@+id/titleTV"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignTop="@id/timeTV"
+        android:layout_marginLeft="10dp"
+        android:layout_toLeftOf="@+id/timeTV"
+        android:layout_toRightOf="@id/headIMG"
+        android:ellipsize="end"
+        android:lines="1"
+        android:text="@string/msg_approval"
+        android:textColor="@color/text_main"
+        android:textSize="@dimen/text_main" />
+
+    <TextView
+        android:id="@+id/messageTV"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignLeft="@id/titleTV"
+        android:layout_below="@id/titleTV"
+        android:ellipsize="end"
+        android:lines="1"
+        android:layout_marginTop="5dp"
+        android:text="titleTV"
+        android:textColor="@color/text_hine"
+        android:textSize="@dimen/text_hine" />
+</RelativeLayout>

+ 33 - 0
app_modular/appmessages/src/main/res/layout/item_uuhelper.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+    <TextView
+        android:id="@+id/timeTV"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="8dp"
+        android:background="@drawable/text_hint_bg"
+        android:text="2017-11-11 10:11:11"
+        android:layout_marginLeft="20dp"
+        android:textColor="@color/white"
+        android:textSize="@dimen/text_main" />
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/timeTV"
+        android:layout_marginBottom="10dp"
+        android:layout_marginLeft="20dp"
+        android:layout_marginRight="20dp"
+        android:layout_marginTop="5dp"
+        android:background="@drawable/rl_circular_bg">
+
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/itemRV"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" />
+    </RelativeLayout>
+
+</RelativeLayout>

+ 67 - 0
app_modular/appmessages/src/main/res/layout/item_uuhelper_item.xml

@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+             android:layout_width="match_parent"
+             android:layout_height="wrap_content">
+
+    <RelativeLayout
+        android:id="@+id/fristRL"
+        android:layout_width="match_parent"
+        android:layout_height="120dp">
+
+        <ImageView
+            android:id="@+id/fristIV"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:scaleType="fitXY" />
+
+        <TextView
+            android:id="@+id/fristTV"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            android:background="#A0A0A0"
+            android:ellipsize="end"
+            android:gravity="center_vertical"
+            android:lines="2"
+            android:padding="5dp"
+            android:text="fristIV"
+            android:textColor="@color/white"
+            android:textSize="@dimen/text_main" />
+    </RelativeLayout>
+
+    <RelativeLayout
+        android:id="@+id/normalRL"
+        android:layout_width="match_parent"
+        android:layout_height="80dp">
+
+        <View
+            android:id="@+id/line"
+            android:layout_width="match_parent"
+            android:layout_height="2px"
+            android:layout_marginLeft="10dp"
+            android:layout_marginRight="10dp"
+            android:background="@color/item_line" />
+
+        <ImageView
+            android:id="@+id/normalIV"
+            android:layout_width="75dp"
+            android:layout_height="75dp"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true"
+            android:scaleType="fitXY" />
+
+        <TextView
+            android:id="@+id/normalTV"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_toLeftOf="@id/normalIV"
+            android:ellipsize="end"
+            android:gravity="center_vertical"
+            android:lines="2"
+            android:padding="5dp"
+            android:textSize="@dimen/text_main" />
+
+
+    </RelativeLayout>
+</FrameLayout>

+ 3 - 0
build.gradle

@@ -18,6 +18,9 @@ allprojects {
     repositories {
         jcenter()
         maven { url "https://jitpack.io" }
+        maven {
+            url 'https://maven.google.com'
+        }
     }
 }
 

+ 3 - 1
settings.gradle

@@ -8,9 +8,10 @@ include ':common'
 include ':message'
 
 //业务模块
+include  ':appmessages'
 include ':applogin'
 include ':appcontact'
-include ':appmessages'
+include  ':appbooking'
 include ':appme'
 include ':appworks'
 include ':appmoments'
@@ -40,6 +41,7 @@ project(':appme').projectDir = new File('app_modular/appme')
 project(':appworks').projectDir = new File('app_modular/appworks')
 project(':appcontact').projectDir = new File('app_modular/appcontact')
 project(':appmessages').projectDir = new File('app_modular/appmessages')
+project(':appbooking').projectDir = new File('app_modular/appbooking')
 project(':appmoments').projectDir = new File('app_modular/appmoments')
 
 //第三库模块