Browse Source

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

SpringBoots 9 years ago
parent
commit
a240f3d97c
28 changed files with 1076 additions and 316 deletions
  1. 0 3
      WeiChat/src/main/AndroidManifest.xml
  2. 3 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/CustomCrashActivity.java
  3. 27 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/SecondMsgsBean.java
  4. 2 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/FriendDao.java
  5. 317 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/MessageDao.java
  6. 15 7
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java
  7. 10 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AddFlihtsActivity.java
  8. 5 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MissionActivity.java
  9. 21 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MsgsSecondCommonActivity.java
  10. 0 175
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SignStatisticalActivity.java
  11. 2 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/MessageAdapter.java
  12. 4 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/db/DBOpenHelper.java
  13. 138 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/MessageModel.java
  14. 26 10
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/AddFlihtsPresenter.java
  15. 42 21
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/FlightsPresernter.java
  16. 168 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/MessagePresenter.java
  17. 2 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/imp/IMessageView.java
  18. 14 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/Constants.java
  19. 8 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/auto/HttpHandler.java
  20. 35 16
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java
  21. 143 13
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/NewMessageFragment.java
  22. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/uas/NewMessageFragment.java
  23. 0 1
      WeiChat/src/main/res/layout/fragment_me.xml
  24. 16 19
      WeiChat/src/main/res/layout/fragment_message.xml
  25. 37 18
      WeiChat/src/main/res/layout/fragment_new_message.xml
  26. 2 0
      WeiChat/src/main/res/layout/item_message.xml
  27. 32 0
      WeiChat/src/main/res/layout/item_select_message.xml
  28. 5 2
      WeiChat/src/main/res/layout/new_message_header.xml

+ 0 - 3
WeiChat/src/main/AndroidManifest.xml

@@ -860,9 +860,6 @@
         <activity
             android:name=".ui.erp.activity.oa.DepartmentActivity"
             android:label="选择部门" />
-        <activity
-            android:name=".ui.erp.activity.oa.SignStatisticalActivity"
-            android:label="考勤统计" />
         <activity
             android:name=".ui.erp.activity.oa.SearchLocationActivity"
             android:windowSoftInputMode="stateUnspecified|adjustNothing" />

+ 3 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/CustomCrashActivity.java

@@ -12,6 +12,7 @@ import android.widget.Button;
 import android.widget.ImageView;
 import android.widget.Toast;
 
+import com.afollestad.materialdialogs.MaterialDialog;
 import com.alibaba.fastjson.JSON;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
@@ -68,8 +69,8 @@ public class CustomCrashActivity extends Activity {
         if (stackTraceString != null){
             //Toast.makeText(this, stackTraceString, Toast.LENGTH_LONG).show();
             //TODO 发布版本隐藏
-//            new MaterialDialog.Builder(this).content(stackTraceString)
-//                    .build().show();
+            new MaterialDialog.Builder(this).content(stackTraceString)
+                    .build().show();
             try {
                 getCode();
             } catch (Exception e) {

+ 27 - 6
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/SecondMsgsBean.java

@@ -7,11 +7,12 @@ import java.util.List;
  * function:
  */
 public class SecondMsgsBean {
+
     /**
-     * allCount : 1
+     * allCount : 4
      * success : true
-     * sessionId : 8DACA35696F128979E9FF77F26D6A724
-     * listdata : [{"releaser":"龙晓兰","createTime":"2017-02-13 10:42:46","subTitle":"有新的会议纪要,请注意查收!"}]
+     * sessionId : 4FE799E3C9CE9160FBE14AB1445A98BE
+     * listdata : [{"id":1462206,"releaser":"徐健","createTime":"2017-02-13 00:00:00","subTitle":"会议通知&nbsp;[02-13 10:01]<a href=\"javascript:openUrl('jsps/oa/meeting/meetingroomapply.jsp?formCondition=ma_id=30447&gridCondition=md_maid=30447')\" style=\"font-size:18px; color:red;\">查看会议详情<\/a><\/br>","title":"会议提醒"},{"id":1463907,"releaser":"陈萍","createTime":"2017-02-13 00:00:00","subTitle":"会议通知&nbsp;[02-13 16:54]<a href=\"javascript:openUrl('jsps/oa/meeting/meetingroomapply.jsp?formCondition=ma_id=30451&gridCondition=md_maid=30451')\" style=\"font-size:18px; color:red;\">会议已取消,查看会议详情<\/a><\/br>","title":"会议提醒"},{"id":1463150,"releaser":"徐健","createTime":"2017-02-13 00:00:00","subTitle":"会议通知&nbsp;[02-13 10:56]<a href=\"javascript:openUrl('jsps/oa/meeting/meetingroomapply.jsp?formCondition=ma_id=30451&gridCondition=md_maid=30451')\" style=\"font-size:18px; color:red;\">查看会议详情<\/a><\/br>","title":"会议提醒"},{"id":1462698,"releaser":"徐健","createTime":"2017-02-13 00:00:00","subTitle":"会议通知&nbsp;[02-13 10:12]<a href=\"javascript:openUrl('jsps/oa/meeting/meetingroomapply.jsp?formCondition=ma_id=30447&gridCondition=md_maid=30447')\" style=\"font-size:18px; color:red;\">会议变更,查看会议详情<\/a><\/br>","title":"会议提醒"}]
      */
 
     private int allCount;
@@ -53,14 +54,26 @@ public class SecondMsgsBean {
 
     public static class ListdataBean {
         /**
-         * releaser : 龙晓兰
-         * createTime : 2017-02-13 10:42:46
-         * subTitle : 有新的会议纪要,请注意查收!
+         * id : 1462206
+         * releaser : 徐健
+         * createTime : 2017-02-13 00:00:00
+         * subTitle : 会议通知&nbsp;[02-13 10:01]<a href="javascript:openUrl('jsps/oa/meeting/meetingroomapply.jsp?formCondition=ma_id=30447&gridCondition=md_maid=30447')" style="font-size:18px; color:red;">查看会议详情</a></br>
+         * title : 会议提醒
          */
 
+        private int id;
         private String releaser;
         private String createTime;
         private String subTitle;
+        private String title;
+
+        public int getId() {
+            return id;
+        }
+
+        public void setId(int id) {
+            this.id = id;
+        }
 
         public String getReleaser() {
             return releaser;
@@ -85,5 +98,13 @@ public class SecondMsgsBean {
         public void setSubTitle(String subTitle) {
             this.subTitle = subTitle;
         }
+
+        public String getTitle() {
+            return title;
+        }
+
+        public void setTitle(String title) {
+            this.title = title;
+        }
     }
 }

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

@@ -429,6 +429,7 @@ public class FriendDao {
                     .and().notIn("userId", Friend.ID_ERP_NEWS)
                     .and().notIn("userId", Friend.ID_ERP_GONGGAO)
                     .and().notIn("userId", Friend.ID_ERP_NOTICE)
+                    .or().eq("type", XmppMessage.TYPE_ERP)
                     .prepare();
             friends = friendDao.query(preparedQuery);
         } catch (SQLException e) {
@@ -437,6 +438,7 @@ public class FriendDao {
         return friends;
     }
 
+
     /**
      * 创建或者更新好友
      *

+ 317 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/MessageDao.java

@@ -0,0 +1,317 @@
+package com.xzjmyk.pm.activity.db.dao;
+
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+
+import com.xzjmyk.pm.activity.MyApplication;
+import com.xzjmyk.pm.activity.ui.erp.db.DBOpenHelper;
+import com.xzjmyk.pm.activity.ui.erp.model.MessageModel;
+import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by Bitliker on 2017/3/2.
+ */
+
+public class MessageDao {
+    private DBOpenHelper helper = null;
+    private final String TABLE_NAME = "em_erpnews";
+    private static MessageDao instance;
+
+    public static MessageDao getInstance() {
+        if (instance == null) {
+            synchronized (MessageDao.class) {
+                instance = new MessageDao();
+            }
+        }
+        return instance;
+    }
+
+    private MessageDao() {
+        helper = new DBOpenHelper(MyApplication.getInstance());
+    }
+
+    /**
+     * 事务创建或是更新,注意 如果该id已经存在,就更新,更新时候不更新状态,要到upStatus更新状态
+     *
+     * @param models
+     * @return
+     */
+    public boolean createOrinstart(List<MessageModel> models) {
+        if (ListUtils.isEmpty(models)) return false;
+        SQLiteDatabase db = null;
+        long i = 0;
+        try {
+            String master = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master");
+            String emcode = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username");
+            if (StringUtils.isEmpty(master) || StringUtils.isEmpty(emcode)) return false;
+            db = helper.getWritableDatabase();
+            db.beginTransaction();
+            ContentValues values = null;
+            //对象为空或是拜访时间没有情况下不插入数据库
+            for (MessageModel m : models) {
+                values = getValues(m, master, emcode);
+                i = db.insert(TABLE_NAME, null, values);
+                if (i == -1) {//如果插入不成功,就是数据库中有该条数据
+                    String where = "master=? and emcode=? and id=?";
+                    String[] whereArgs = {master, emcode, String.valueOf(m.getId())};
+                    values.remove("isReaded");//不更新状态
+                    i = db.update(TABLE_NAME, values, where, whereArgs);
+                }
+            }
+            db.setTransactionSuccessful();
+            db.endTransaction();
+        } catch (android.database.SQLException e) {
+        } catch (Exception e) {
+        } finally {
+            if (db != null)
+                db.close();
+            return i > 0;
+        }
+    }
+
+    /**
+     * 注意 如果该id已经存在,就更新,更新时候不更新状态,要到upStatus更新状态
+     *
+     * @param model
+     * @return
+     */
+    public boolean createOrinstart(MessageModel model) {
+        if (model == null) return false;
+        SQLiteDatabase db = null;
+        long i = 0;
+        try {
+            String master = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master");
+            String emcode = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username");
+            if (StringUtils.isEmpty(master) || StringUtils.isEmpty(emcode)) return false;
+            db = helper.getWritableDatabase();
+
+            ContentValues values = getValues(model, master, emcode);
+            //对象为空或是拜访时间没有情况下不插入数据库
+            i = db.insert(TABLE_NAME, null, values);
+            if (i == -1) {//如果插入不成功,就是数据库中有该条数据
+                String where = "master=? and emcode=? and id=? ";
+                String[] whereArgs = {master, emcode, String.valueOf(model.getId())};
+                values.remove("isReaded");//不更新状态
+                i = db.update(TABLE_NAME, values, where, whereArgs);
+            }
+        } catch (Exception e) {
+        } finally {
+            if (db != null)
+                db.close();
+            return i > 0;
+        }
+    }
+
+    /**
+     * 修改状态
+     *
+     * @param models
+     * @param isReaded
+     * @return
+     */
+    public boolean upStatus(List<MessageModel> models, boolean isReaded) {
+        if (ListUtils.isEmpty(models)) return false;
+        SQLiteDatabase db = null;
+        long i = 0;
+        try {
+            String master = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master");
+            String emcode = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username");
+            if (StringUtils.isEmpty(master) || StringUtils.isEmpty(emcode)) return false;
+            db = helper.getWritableDatabase();
+            ContentValues values;
+            String where = "master=? and emcode=? and id=?";
+            for (MessageModel m : models) {
+                values = new ContentValues();
+                values.put("isReaded", isReaded ? 1 : 0);
+                String[] whereArgs = {master, emcode, String.valueOf(m.getId())};
+                i = db.update(TABLE_NAME, values, where, whereArgs);
+            }
+        } catch (Exception e) {
+
+        } finally {
+            if (db != null)
+                db.close();
+            return i > 0;
+        }
+    }
+
+    /**
+     * 修改单个
+     *
+     * @param id       消息id
+     * @param isReaded
+     * @return
+     */
+    public boolean upStatus(int id, boolean isReaded) {
+        SQLiteDatabase db = null;
+        long i = 0;
+        try {
+            String master = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master");
+            String emcode = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username");
+            if (StringUtils.isEmpty(master) || StringUtils.isEmpty(emcode)) return false;
+            db = helper.getWritableDatabase();
+            ContentValues values = new ContentValues();
+            values.put("isReaded", isReaded ? 1 : 0);
+            String where = "master=? and emcode=? and id=? ";
+            String[] whereArgs = {master, emcode, String.valueOf(id)};
+            i = db.update(TABLE_NAME, values, where, whereArgs);
+        } catch (Exception e) {
+        } finally {
+            if (db != null)
+                db.close();
+            return i > 0;
+        }
+    }
+
+    /**
+     * 通过类型修改状态为已读未读
+     *
+     * @param type     类型
+     * @param isReaded 是否阅读
+     * @return
+     */
+    public boolean upStatusByType(String type, boolean isReaded) {
+        if (StringUtils.isEmpty(type)) return false;
+        SQLiteDatabase db = null;
+        long i = 0;
+        try {
+            String master = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master");
+            String emcode = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username");
+            if (StringUtils.isEmpty(master) || StringUtils.isEmpty(emcode)) return false;
+            db = helper.getWritableDatabase();
+            ContentValues values = new ContentValues();
+            values.put("isReaded", isReaded ? 1 : 0);
+            String where = "master=? and emcode=? and type=?";
+            String[] whereArgs = {master, emcode, type};
+            i = db.update(TABLE_NAME, values, where, whereArgs);
+        } catch (Exception e) {
+        } finally {
+            if (db != null)
+                db.close();
+            return i > 0;
+        }
+    }
+
+
+    /**
+     * 获取第一层数据
+     *
+     * @return
+     */
+    public List<MessageModel> queryFirstFloor() {
+        SQLiteDatabase db = null;
+        List<MessageModel> messageModels = null;
+        try {
+            String master = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master");
+            String emcode = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username");
+            if (StringUtils.isEmpty(master) || StringUtils.isEmpty(emcode)) return messageModels;
+            db = helper.getReadableDatabase();
+            String[] columns = {"id", "count", "title", "subTitle", "time", "type", "isReaded"};
+            String selection = "hierarchy=?";
+            String[] selectArgs = {String.valueOf(0)};
+            Cursor c = db.query(TABLE_NAME, columns, selection, selectArgs, null, null, null);
+            messageModels = getMessage(c, 0);
+            c.close();
+        } catch (Exception e) {
+        } finally {
+            if (db != null)
+                db.close();
+            return messageModels;
+        }
+    }
+
+    /**
+     * 获取第二层数据 ,通过类型
+     *
+     * @return
+     */
+    public List<MessageModel> queryByType(String type) {
+        SQLiteDatabase db = null;
+        int hierarchy = 1;
+        List<MessageModel> messageModels = null;
+        try {
+            String master = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master");
+            String emcode = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username");
+            if (StringUtils.isEmpty(master) || StringUtils.isEmpty(emcode)) return messageModels;
+            db = helper.getReadableDatabase();
+            String[] columns = {"id", "count", "title", "subTitle", "time", "type", "isReaded"};
+            String selection = "type=? and hierarchy=?";
+            String[] selectArgs = {type, String.valueOf(hierarchy)};
+            Cursor c = db.query(TABLE_NAME, columns, selection, selectArgs, null, null, null);
+            messageModels = getMessage(c, hierarchy);
+            c.close();
+        } catch (Exception e) {
+        } finally {
+            if (db != null)
+                db.close();
+            return messageModels;
+        }
+    }
+
+    /**
+     * 删除整个类型的数据,包括第一第二层
+     * @param type
+     * @return
+     */
+    public boolean deleteBytype(String type) {
+        if (StringUtils.isEmpty(type)) return false;
+        SQLiteDatabase db = null;
+        long i = 0;
+        try {
+            String master = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master");
+            String emcode = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username");
+            if (StringUtils.isEmpty(master) || StringUtils.isEmpty(emcode)) return false;
+            db = helper.getWritableDatabase();
+            String where = "master=? and emcode=? and type=?";
+            String[] whereArgs = {master, emcode, type};
+            i = db.delete(TABLE_NAME, where, whereArgs);
+        } catch (Exception e) {
+        } finally {
+            if (db != null)
+                db.close();
+            return i > 0;
+        }
+
+    }
+
+
+    private List<MessageModel> getMessage(Cursor c, int hierarchy) {
+        List<MessageModel> messageModels = new ArrayList<>();
+        MessageModel model;
+        while (c.moveToNext()) {
+            int id = c.getInt(c.getColumnIndex("id"));
+            int count = c.getInt(c.getColumnIndex("count"));
+            String title = c.getString(c.getColumnIndex("title"));
+            String subTitle = c.getString(c.getColumnIndex("subTitle"));
+            String time = c.getString(c.getColumnIndex("time"));
+            String type = c.getString(c.getColumnIndex("type"));
+            int isReaded = c.getInt(c.getColumnIndex("isReaded"));
+            model = new MessageModel(id, hierarchy, count, title, subTitle, time, type, isReaded == 1);
+            messageModels.add(model);
+        }
+        return messageModels;
+    }
+
+    private ContentValues getValues(MessageModel m, String master, String emcode) {
+        ContentValues values = new ContentValues();
+        values.put("id", m.getId());
+        values.put("master", master);
+        values.put("emcode", emcode);
+        values.put("count", m.getCount());
+        values.put("isReaded", m.isReaded() ? 1 : 0);
+        values.put("type", m.getType());
+        values.put("time", m.getTime());
+        values.put("title", m.getTitle());
+        values.put("subTitle", m.getSubTitle());
+        values.put("hierarchy", m.getHierarchy());
+        return values;
+    }
+
+
+}

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

@@ -188,6 +188,7 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
                 if (mMessageFragment == null) {
                     mMessageFragment = new MessageFragment();
                 }
+                //TODO 红点问题
                 mMessageFragment.setOnRefreshRedUI(new MessageFragment.OnRefreshUIListener() {
                     @Override
                     public void updata(int num) {
@@ -682,13 +683,13 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
         //TODO 当前隐藏性功能提醒红点
         PreferenceUtils.putInt(MainActivity.NEW_FUNCTION_NOTICE, 1);
         PushManager.resumeWork(MyApplication.getInstance());
-        int new_function_notice = PreferenceUtils.getInt(MyApplication.getInstance(),MainActivity.NEW_FUNCTION_NOTICE);
-        if(new_function_notice == 1){
+        int new_function_notice = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.NEW_FUNCTION_NOTICE);
+        if (new_function_notice == 1) {
             main_tab_three_tv.setVisibility(View.INVISIBLE);
-        }else {
+        } else {
             main_tab_three_tv.setVisibility(View.VISIBLE);
         }
-        Log.i("new_function_notice",new_function_notice +"");
+        Log.i("new_function_notice", new_function_notice + "");
     }
 
     private void changeFragment(Fragment addFragment, String tag) {
@@ -767,10 +768,10 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
         requestMyBusiness();
         Runtime.getRuntime().gc();
 
-        int new_function_notice = PreferenceUtils.getInt(MyApplication.getInstance(),MainActivity.NEW_FUNCTION_NOTICE);
-        if(new_function_notice == 1){
+        int new_function_notice = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.NEW_FUNCTION_NOTICE);
+        if (new_function_notice == 1) {
             main_tab_three_tv.setVisibility(View.INVISIBLE);
-        }else {
+        } else {
             main_tab_three_tv.setVisibility(View.VISIBLE);
         }
     }
@@ -825,4 +826,11 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
         return (BusinessCircleFragment) sfmanager.findFragmentByTag(TAG_BusinessCircle);
     }
 
+    public  void setUnReader(int num){
+        mMsgUnReadNum = mMsgUnReadNum - oldERPNum > 0 ? (mMsgUnReadNum - oldERPNum) : 0;
+        mMsgUnReadNum = mMsgUnReadNum + num;
+        oldERPNum = num;
+        updateMsgUnReadTv();
+    }
+
 }

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

@@ -164,12 +164,20 @@ public class AddFlihtsActivity extends OABaseActivity implements IAddFlihtsView,
     @Override
     public void updateDepartment(String department) {
         Log.i("gongpengming", "department=" + department);
-        department_tv.setText(StringUtils.isEmpty(department) ? "" : department);
+        String showName="";
+        if (!StringUtils.isEmpty(department)){
+            showName=department.replaceAll("\'","");
+        }
+        department_tv.setText(showName);
     }
 
     @Override
     public void updateMunber(String munber) {
-        munber_tv.setText(StringUtils.isEmpty(munber) ? "" : munber);
+        String showName="";
+        if (!StringUtils.isEmpty(munber)){
+            showName=munber.replaceAll("\'","");
+        }
+        munber_tv.setText(showName);
 
     }
 

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

@@ -63,9 +63,13 @@ public class MissionActivity extends OABaseActivity implements View.OnClickListe
     private int flag;
     private boolean adminStatus;
     private boolean locationOk = true;
+
+    private long time = System.currentTimeMillis();
     private BroadcastReceiver receiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
+            if (System.currentTimeMillis() - time < (3 * 60 * 1000)) return;
+            time = System.currentTimeMillis();
             locationOk = MyApplication.getInstance().getBdLocationHelper().locationOk();
             //TODO 发布版本先关闭
             if (locationOk && adapter != null && !ListUtils.isEmpty(adapter.getModels())) {
@@ -87,7 +91,7 @@ public class MissionActivity extends OABaseActivity implements View.OnClickListe
         ViewUtils.inject(this);
         IntentFilter filter = new IntentFilter();
         filter.addAction(BdLocationHelper.UPLOCATION_ACTION);
-        LocalBroadcastManager.getInstance(ct).registerReceiver(receiver,filter);
+        LocalBroadcastManager.getInstance(ct).registerReceiver(receiver, filter);
         initView();
         initEvent();
     }

+ 21 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MsgsSecondCommonActivity.java

@@ -26,6 +26,7 @@ import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.bean.oa.SecondMsgsBean;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
@@ -58,8 +59,10 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
     private int mPosition;
     private EmptyLayout mEmptyLayout;
     private List<Integer> mark_position;
-
+    private String baseUrl;//网址
     private SecondMsgsBean msecondMsgsBean;
+    private int msg_id;
+    private static final int REQUEST_MSGS_DETAIL = 17030201;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -176,10 +179,9 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                 mPosition = (int) parent.getItemIdAtPosition(position);
+                msg_id = msecondMsgsBean.getListdata().get(mPosition).getId();
                 ToastMessage("点击position = " + mPosition);
-                mark_position.add(mPosition);
-                msgAdapter.setMark_position(mark_position);
-                msgAdapter.notifyDataSetChanged();
+                doClickEvent(mPosition,msg_id);
             }
         });
 
@@ -194,6 +196,20 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
         });
     }
 
+    private void doClickEvent(int mPosition,int msg_id) {
+        baseUrl = CommonUtil.getSharedPreferences(mContext, "erp_baseurl");
+        String url = baseUrl + "mobile/message/getDetail.action";
+        Intent intent_web = new Intent(mContext, WebViewCommActivity.class);
+        intent_web.putExtra("url",url);
+        intent_web.putExtra("id",msg_id);
+        startActivity(intent_web);
+        //TODO 点击保存本地为已读操作
+
+        mark_position.add(mPosition);
+        msgAdapter.setMark_position(mark_position);
+        msgAdapter.notifyDataSetChanged();
+    }
+
     private void showPopupWindow() {
         if (setWindow == null) initPopupWindow();
         setWindow.showAtLocation(getWindow().getDecorView().
@@ -334,7 +350,7 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
             }
 
             viewHolder.msgs_img.setImageResource(imageurl);
-            viewHolder.msgs_title_tv.setText(msecondMsgsBean.getListdata().get(position).getReleaser());
+            viewHolder.msgs_title_tv.setText(msecondMsgsBean.getListdata().get(position).getTitle());
             viewHolder.msgs_time_tv.setText(msecondMsgsBean.getListdata().get(position).getCreateTime());
             viewHolder.msgs_content_tv.setText(Html.fromHtml(msecondMsgsBean.getListdata().get(position).getSubTitle()));
             if (mark_position != null){

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

@@ -1,175 +0,0 @@
-package com.xzjmyk.pm.activity.ui.erp.activity.oa;
-
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentPagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.view.View;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import com.lidroid.xutils.view.annotation.ViewInject;
-import com.xzjmyk.pm.activity.R;
-import com.xzjmyk.pm.activity.ui.base.BaseActivity;
-import com.xzjmyk.pm.activity.ui.erp.fragment.CalendarFragmet;
-import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
-import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
-import com.xzjmyk.pm.activity.util.TimeUtils;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-/**
- * Created by FANGlh on 2017/1/18.
- * function:
- */
-public class SignStatisticalActivity extends BaseActivity  implements View.OnClickListener{
-    @ViewInject(R.id.yeas_tv)
-    private TextView yeas_tv;
-    @ViewInject(R.id.day_tv)
-    private TextView day_tv;
-    @ViewInject(R.id.week_tv)
-    private TextView week_tv;
-    @ViewInject(R.id.viewPager)
-    private ViewPager viewPager;
-    private int posItem;           //当前为滑动到的哪个Viewpager
-    private int MAX_PAGER = 30;
-    private Date curDate;    //当前显示的日期  包含年月日信息
-    private Date[] date = new Date[MAX_PAGER];
-    private PagerAdapter pagerAdapter;//当前Viewpager适配
-    private Handler handler = new Handler() {
-        @Override
-        public void handleMessage(Message msg) {
-            try {
-                try {
-                    if (progressDialog.isShowing())
-                        progressDialog.dismiss();
-                } catch (Exception e) {
-
-                }
-                String message = (String) msg.getData().get("result");
-                switch (msg.what) {
-                    case 0x11:
-                        break;
-                }
-            } catch (Exception e) {
-            }
-        }
-    };
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.sign_statistical);
-        initView();
-        initData();
-//        initEvent();
-    }
-
-    private void initView() {
-        posItem = MAX_PAGER / 2;
-        curDate = new Date(System.currentTimeMillis());
-        LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) viewPager.getLayoutParams(); // 取控件mGrid当前的布局参数   搜索
-        linearParams.height = (getResources().getDisplayMetrics().heightPixels * 1 / 3);// 当控件的高强制设成50象素
-        viewPager.setLayoutParams(linearParams); // 使设置好的布局参数应用到控件myGrid
-        pagerAdapter = new PagerAdapter(getSupportFragmentManager());
-        viewPager.setAdapter(pagerAdapter);
-        viewPager.setCurrentItem(MAX_PAGER / 2);
-    }
-
-    private void initData() {
-
-    }
-    private void initEvent() {
-
-        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
-            @Override
-            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
-            }
-
-            @Override
-            public void onPageSelected(int position) {
-                if (CommonUtil.isNetWorkConnected(getApplication())) {
-                    posItem = position;
-                    curDate = date[position];
-                    Calendar c = Calendar.getInstance();
-                    c.setTime(curDate);
-                    setDateTag(curDate);
-                    loadNetData(TimeUtils.ym_format.format(curDate));
-                }
-
-            }
-
-            @Override
-            public void onPageScrollStateChanged(int state) {
-            }
-        });
-    }
-    @Override
-    public void onClick(View v) {
-
-    }
-
-
-    /*当点击了指定日期(点击日期、滑动时候触发)*/
-    public void setClickDay(Date date) {
-        if (this.date != null && this.date.length > posItem) {
-            this.date[posItem] = date;
-            Calendar c = Calendar.getInstance();
-            c.setTime(this.date[posItem]);
-        }
-        curDate = date;
-        setDateTag(date);
-    }
-
-    private void setDateTag(Date date) {
-        Calendar c = Calendar.getInstance();
-        c.setTime(date);
-        int yeas = c.get(Calendar.YEAR);
-        int month = c.get(Calendar.MONTH) + 1;
-        int day = c.get(Calendar.DAY_OF_MONTH);
-        yeas_tv.setText(yeas + "年" + month + "月");
-        day_tv.setText(day + "日");
-        week_tv.setText(TimeUtils.getWeek(TimeUtils.s_format.format(date)));
-    }
-    /**
-     * 获取数据
-     *
-     * @param date 月份 yyyyMM
-     */
-    public void loadNetData(String date) {
-        progressDialog.show();
-        String url = CommonUtil.getSharedPreferences(ct, "erp_baseurl") + "mobile/crm/gettaskscheduleandvisitplanmsg.action";
-        //获取网络数据
-        final Map<String, Object> param = new HashMap<>();
-        param.put("emcode", CommonUtil.getSharedPreferences(this, "erp_username"));
-        param.put("date", date);
-        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
-        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
-        ViewUtil.httpSendRequest(this, url, param, handler, headers, 0x11, null, null, "get");
-    }
-
-    class PagerAdapter extends FragmentPagerAdapter {
-
-        public PagerAdapter(FragmentManager fm) {
-            super(fm);
-        }
-
-        @Override
-        public Fragment getItem(int position) {
-            return CalendarFragmet.getInstance(date[position]);
-        }
-
-        @Override
-        public int getCount() {
-            return MAX_PAGER;
-        }
-    }
-
-}

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

@@ -1,6 +1,7 @@
 package com.xzjmyk.pm.activity.ui.erp.adapter;
 
 import android.content.Context;
+import android.text.Html;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -103,7 +104,7 @@ public class MessageAdapter extends BaseAdapter {
         } else {
             content = friend.getContent();
         }
-        holder.content_tv.setText(content);
+        holder.content_tv.setText(Html.fromHtml(content.toString()));
         //设置红点显示数量
         if (friend.getUnReadNum() > 0) {
             String numStr = friend.getUnReadNum() >= 99 ? "99+" : friend.getUnReadNum() + "";

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

@@ -13,8 +13,8 @@ import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
  * @注释:建立数据库
  */
 public class DBOpenHelper extends SQLiteOpenHelper {
-
-    private static final int DATABASE_VERSION = 67;//数据库版本号(每添加一个表要增加版本号)
+    //TODO  上一个发布版本是67
+    private static final int DATABASE_VERSION = 68;//数据库版本号(每添加一个表要增加版本号)
     public static String dataBaseName = "erp.db";//数据库名称
     public Context context;
 
@@ -44,6 +44,7 @@ public class DBOpenHelper extends SQLiteOpenHelper {
             db.execSQL(Constants.TABLE_MISSION);//外勤计划
             db.execSQL(Constants.ERROR_MESSAGE);//错误信息列表
             db.execSQL(Constants.WORK_LOCATION);//
+            db.execSQL(Constants.EM_ERPNEWS);//
         } catch (Exception e) {
 
         }
@@ -80,6 +81,7 @@ public class DBOpenHelper extends SQLiteOpenHelper {
         db.execSQL("DROP TABLE IF EXISTS signing");
         db.execSQL("DROP TABLE IF EXISTS workdata");
         db.execSQL("DROP TABLE IF EXISTS work_location");
+        db.execSQL("DROP TABLE IF EXISTS em_erpnews");
     }
 
     /**

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

@@ -0,0 +1,138 @@
+package com.xzjmyk.pm.activity.ui.erp.model;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * 消息数据库实体类
+ * Created by Bitliker on 2017/3/2.
+ */
+
+public class MessageModel implements Parcelable {
+    private int id;
+    private int hierarchy;//层级
+    private int count;
+    private String title;
+    private String subTitle;
+    private String time;
+    private String type;
+    private boolean isReaded;
+
+    public MessageModel() {
+    }
+
+    public MessageModel(int id, int hierarchy, int count, String title, String subTitle, String time, String type, boolean isReaded) {
+        this.id = id;
+        this.hierarchy = hierarchy;
+        this.count = count;
+        this.title = title;
+        this.subTitle = subTitle;
+        this.time = time;
+        this.type = type;
+        this.isReaded = isReaded;
+    }
+
+    protected MessageModel(Parcel in) {
+        id = in.readInt();
+        hierarchy = in.readInt();
+        count = in.readInt();
+        title = in.readString();
+        subTitle = in.readString();
+        time = in.readString();
+        type = in.readString();
+        isReaded = in.readByte() != 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(id);
+        dest.writeInt(hierarchy);
+        dest.writeInt(count);
+        dest.writeString(title);
+        dest.writeString(subTitle);
+        dest.writeString(time);
+        dest.writeString(type);
+        dest.writeByte((byte) (isReaded ? 1 : 0));
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    public static final Creator<MessageModel> CREATOR = new Creator<MessageModel>() {
+        @Override
+        public MessageModel createFromParcel(Parcel in) {
+            return new MessageModel(in);
+        }
+
+        @Override
+        public MessageModel[] newArray(int size) {
+            return new MessageModel[size];
+        }
+    };
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getHierarchy() {
+        return hierarchy;
+    }
+
+    public void setHierarchy(int hierarchy) {
+        this.hierarchy = hierarchy;
+    }
+
+    public int getCount() {
+        return count;
+    }
+
+    public void setCount(int count) {
+        this.count = count;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getSubTitle() {
+        return subTitle;
+    }
+
+    public void setSubTitle(String subTitle) {
+        this.subTitle = subTitle;
+    }
+
+    public String getTime() {
+        return time;
+    }
+
+    public void setTime(String time) {
+        this.time = time;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public boolean isReaded() {
+        return isReaded;
+    }
+
+    public void setReaded(boolean readed) {
+        isReaded = readed;
+    }
+}

+ 26 - 10
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/AddFlihtsPresenter.java

@@ -123,6 +123,7 @@ public class AddFlihtsPresenter implements HttpHandler.OnResultListener {
             return;
         }
         //start 人员数据
+
         EmployeesModel employeesModel = model.getEmployeesModel();
         String employeesName;
         String employeesCode;
@@ -140,8 +141,8 @@ public class AddFlihtsPresenter implements HttpHandler.OnResultListener {
             employeesCode = "";
         }
         formStore.put("wd_pcount", conuInDefaultor + employNumber);
-        formStore.put("wd_emcode", employeesCode);
-        formStore.put("wd_man", employeesName);
+        formStore.put("wd_emcode", getNameOrCodeAdd(employeesCode));
+        formStore.put("wd_man", getNameOrCodeAdd(employeesName));
         //end 人员数据
 
         //处理部门数据
@@ -155,8 +156,8 @@ public class AddFlihtsPresenter implements HttpHandler.OnResultListener {
             hrorgsName = "";
             hrorgsCode = "";
         }
-        formStore.put("wd_defaultorcode", hrorgsCode);
-        formStore.put("wd_defaultor", hrorgsName);
+        formStore.put("wd_defaultorcode", getNameOrCodeAdd(hrorgsCode));
+        formStore.put("wd_defaultor", getNameOrCodeAdd(hrorgsName));
         //end 部门
         param.put("formStore", StringUtils.mapToJson(formStore));
         Bundle bundle = new Bundle();
@@ -184,8 +185,8 @@ public class AddFlihtsPresenter implements HttpHandler.OnResultListener {
         String action = "mobile/getManAndDefaultor.action";
         Map<String, Object> param = new HashMap<>();
         Map<String, Object> formStore = new HashMap<>();
-        formStore.put("wd_emcode", StringUtils.isEmpty(manCode) ? "" : manCode);
-        formStore.put("wd_defaultorcode", StringUtils.isEmpty(defaultorCode) ? "" : defaultorCode);
+        formStore.put("wd_emcode", StringUtils.isEmpty(manCode) ? "" : manCode.replaceAll("\'", ""));
+        formStore.put("wd_defaultorcode", StringUtils.isEmpty(defaultorCode) ? "" : defaultorCode.replaceAll("\'", ""));
         param.put("formStore", StringUtils.mapToJson(formStore));
         HttpHandler.getInstance().loadERPByNet(MAN_DEFAULTOR, action,
                 param, bundle, this);
@@ -317,7 +318,6 @@ public class AddFlihtsPresenter implements HttpHandler.OnResultListener {
                         namBbuilder.append(aas[i] + ",");
                 }
             }
-            Log.i("gongpengming", "namBbuilder=" + namBbuilder.toString());
             return removieLast(namBbuilder).toString();
         }
         return null;
@@ -327,8 +327,8 @@ public class AddFlihtsPresenter implements HttpHandler.OnResultListener {
         if (!ListUtils.isEmpty(employeesList)) {
             StringBuilder employee = new StringBuilder();
             for (int i = 0; i < employeesList.size(); i++) {
-                employee.append((isName ? employeesList.get(i).getEmName()
-                        : employeesList.get(i).getEmCode()) + ",");
+                employee.append("\'" + (isName ? employeesList.get(i).getEmName()
+                        : employeesList.get(i).getEmCode()) + "\'" + ",");
             }
             removieLast(employee);
             return employee.toString();
@@ -347,7 +347,7 @@ public class AddFlihtsPresenter implements HttpHandler.OnResultListener {
         if (!ListUtils.isEmpty(hrorgsList)) {
             StringBuilder hrorgs = new StringBuilder();
             for (int i = 0; i < hrorgsList.size(); i++) {
-                hrorgs.append((isName ? hrorgsList.get(i).getName() : hrorgsList.get(i).getCode()) + ",");
+                hrorgs.append("\'" + (isName ? hrorgsList.get(i).getName() : hrorgsList.get(i).getCode()) + "\'" + ",");
             }
             removieLast(hrorgs);
             return hrorgs.toString();
@@ -469,6 +469,22 @@ public class AddFlihtsPresenter implements HttpHandler.OnResultListener {
         iAddFlihtsView.showCollisionDefaultir(chche);
     }
 
+    private String getNameOrCodeAdd(String name) {
+        try {
+            if (StringUtils.isEmpty(name)) return "";
+            name = name.replaceAll("\'", "");
+            String[] names = name.split(",");
+            StringBuilder builder = new StringBuilder();
+            for (String e : names) {
+                builder.append("\'" + e + "\'" + ",");
+            }
+            OACheckUtil.removieLast(builder);
+            return builder.toString();
+        } catch (Exception e) {
+            return "";
+        }
+    }
+
     public void putData2Intent(int id, Intent intent) {
         switch (id) {
             case R.id.date_tv:

+ 42 - 21
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/FlightsPresernter.java

@@ -22,6 +22,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import static com.xzjmyk.pm.activity.ui.erp.util.OACheckUtil.getJson2Text;
+
 /**
  * Created by Bitliker on 2017/1/16.
  */
@@ -136,16 +138,35 @@ public class FlightsPresernter implements HttpHandler.OnResultListener {
         EmployeesModel employeesModel = new EmployeesModel();
         EmployeesModel hrorgsModel = new EmployeesModel();
         timeModel.setEarlyTime(OACheckUtil.getJsonIntager(object, "wd_earlytime"));
-        timeModel.setWd_ondutyone(OACheckUtil.getJson2Text(object, "wd_ondutyone"));
-        timeModel.setWd_offdutyone(OACheckUtil.getJson2Text(object, "wd_offdutyone"));
-        timeModel.setWd_ondutytwo(OACheckUtil.getJson2Text(object, "wd_ondutytwo"));
-        timeModel.setWd_offdutytwo(OACheckUtil.getJson2Text(object, "wd_offdutytwo"));
-        timeModel.setWd_ondutythree(OACheckUtil.getJson2Text(object, "wd_ondutythree"));
-        timeModel.setWd_offdutythree(OACheckUtil.getJson2Text(object, "wd_offdutythree"));
-        employeesModel.setEmployeecode(OACheckUtil.getJson2Text(object, "wd_emcode"));
-        employeesModel.setEmployeeNames(OACheckUtil.getJson2Text(object, "wd_man"));
-        hrorgsModel.setEmployeecode(OACheckUtil.getJson2Text(object, "wd_defaultorcode"));
-        hrorgsModel.setEmployeeNames(OACheckUtil.getJson2Text(object, "wd_defaultor"));
+        timeModel.setWd_ondutyone(getJson2Text(object, "wd_ondutyone"));
+        timeModel.setWd_offdutyone(getJson2Text(object, "wd_offdutyone"));
+        timeModel.setWd_ondutytwo(getJson2Text(object, "wd_ondutytwo"));
+        timeModel.setWd_offdutytwo(getJson2Text(object, "wd_offdutytwo"));
+        timeModel.setWd_ondutythree(getJson2Text(object, "wd_ondutythree"));
+        timeModel.setWd_offdutythree(getJson2Text(object, "wd_offdutythree"));
+
+       String emcodes =OACheckUtil.getJson2Text(object, "wd_emcode");
+        if (StringUtils.isEmpty(emcodes))
+            emcodes=OACheckUtil.getJson2Text(object, "emcodes");
+
+        String emnames =OACheckUtil.getJson2Text(object, "wd_man");
+        if (StringUtils.isEmpty(emnames))
+            emnames=OACheckUtil.getJson2Text(object, "emnames");
+
+        employeesModel.setEmployeecode(emcodes);
+        employeesModel.setEmployeeNames(emnames);
+
+        String emdefaultorcodes =OACheckUtil.getJson2Text(object, "wd_defaultorcode");
+        if (StringUtils.isEmpty(emdefaultorcodes))
+            emdefaultorcodes=OACheckUtil.getJson2Text(object, "emdefaultorcodes");
+
+        String emdefaultors =OACheckUtil.getJson2Text(object, "wd_defaultor");
+        if (StringUtils.isEmpty(emdefaultors))
+            emdefaultors=OACheckUtil.getJson2Text(object, "emdefaultors");
+
+        hrorgsModel.setEmployeecode(emdefaultorcodes);
+        hrorgsModel.setEmployeeNames(emdefaultors);
+
         model.setId(OACheckUtil.getJsonIntager(object, "id"));
 //        model.setCount(OACheckUtil.getJsonIntager(object, "wd_pcount"));
         model.setCode(OACheckUtil.getJson2Text(object, "wd_code"));
@@ -183,12 +204,12 @@ public class FlightsPresernter implements HttpHandler.OnResultListener {
         EmployeesModel hrorgsModel = new EmployeesModel();
         timeModel.setEarlyTime(OACheckUtil.getJsonIntager(object, "wd_earlytime"));
         timeModel.setEarlyTime(OACheckUtil.getJsonIntager(object, "wd_earlytime"));
-        timeModel.setWd_ondutyone(OACheckUtil.getJson2Text(object, "wd_ondutyone"));
-        timeModel.setWd_offdutyone(OACheckUtil.getJson2Text(object, "wd_offdutyone"));
-        timeModel.setWd_ondutytwo(OACheckUtil.getJson2Text(object, "wd_ondutytwo"));
-        timeModel.setWd_offdutytwo(OACheckUtil.getJson2Text(object, "wd_offdutytwo"));
-        timeModel.setWd_ondutythree(OACheckUtil.getJson2Text(object, "wd_ondutythree"));
-        timeModel.setWd_offdutythree(OACheckUtil.getJson2Text(object, "wd_offdutythree"));
+        timeModel.setWd_ondutyone(getJson2Text(object, "wd_ondutyone"));
+        timeModel.setWd_offdutyone(getJson2Text(object, "wd_offdutyone"));
+        timeModel.setWd_ondutytwo(getJson2Text(object, "wd_ondutytwo"));
+        timeModel.setWd_offdutytwo(getJson2Text(object, "wd_offdutytwo"));
+        timeModel.setWd_ondutythree(getJson2Text(object, "wd_ondutythree"));
+        timeModel.setWd_offdutythree(getJson2Text(object, "wd_offdutythree"));
         model.setTimeModel(timeModel);
         model.setEmployeesModel(employeesModel);
         model.setHrorgsModel(hrorgsModel);
@@ -208,18 +229,18 @@ public class FlightsPresernter implements HttpHandler.OnResultListener {
             timeModel.setWd_ondutythree(getByClass(o, true));
             timeModel.setWd_offdutythree(getByClass(o, false));
         }
-        employeesModel.setEmployeecode(OACheckUtil.getJson2Text(object, "defaultmancode"));
-        employeesModel.setEmployeeNames(OACheckUtil.getJson2Text(object, "defaultman"));
+        employeesModel.setEmployeecode(getJson2Text(object, "defaultmancode"));
+        employeesModel.setEmployeeNames(getJson2Text(object, "defaultman"));
 //        hrorgsModel.setEmployeecode(OACheckUtil.getJson2Text(object, "hrorgcode"));
 //        hrorgsModel.setEmployeeNames(OACheckUtil.getJson2Text(object, "hrorgname"));
         model.setId(OACheckUtil.getJsonIntager(object, "wd_id"));
-        model.setCode(OACheckUtil.getJson2Text(object, "wd_code"));
+        model.setCode(getJson2Text(object, "wd_code"));
         model.setTimeModel(timeModel);
-        model.setDay(OACheckUtil.getJson2Text(object, "wd_day"));//返回为1,2,3
+        model.setDay(getJson2Text(object, "wd_day"));//返回为1,2,3
         model.setEmployeesModel(employeesModel);
         model.setHrorgsModel(hrorgsModel);
         model.setType(2);
-        model.setName(OACheckUtil.getJson2Text(object, "wd_name"));
+        model.setName(getJson2Text(object, "wd_name"));
 
         try {
             String names = employeesModel.getEmployeeNames();

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

@@ -1,22 +1,32 @@
 package com.xzjmyk.pm.activity.ui.erp.presenter;
 
-import android.content.Context;
+import android.content.Intent;
 import android.os.Bundle;
 import android.text.TextUtils;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.xzjmyk.pm.activity.AppConstant;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.bean.Friend;
+import com.xzjmyk.pm.activity.bean.message.SubscriptionMessage;
 import com.xzjmyk.pm.activity.bean.message.XmppMessage;
+import com.xzjmyk.pm.activity.broadcast.MsgBroadcast;
 import com.xzjmyk.pm.activity.db.dao.FriendDao;
 import com.xzjmyk.pm.activity.sortlist.BaseSortModel;
 import com.xzjmyk.pm.activity.sortlist.PingYinUtil;
+import com.xzjmyk.pm.activity.ui.MainActivity;
+import com.xzjmyk.pm.activity.ui.erp.activity.oa.MsgsSecondCommonActivity;
 import com.xzjmyk.pm.activity.ui.erp.presenter.imp.IMessageView;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.auto.HttpHandler;
+import com.xzjmyk.pm.activity.ui.message.ChatActivity;
+import com.xzjmyk.pm.activity.ui.message.MucChatActivity;
+import com.xzjmyk.pm.activity.ui.message.NewFriendActivity;
+import com.xzjmyk.pm.activity.util.StringUtils;
+import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.util.WorkHandlerUtil;
 
 import java.util.ArrayList;
@@ -32,15 +42,20 @@ import java.util.Map;
 
 public class MessagePresenter implements HttpHandler.OnResultListener {
     private final int LOAD_EMNEWS = 0x11;
+    private static final int LOAD_SUBS = 0x12;
+    private static final int LOAD_PROCESS = 0x13;
 
     private List<BaseSortModel<Friend>> mFriendList;
 
     private Comparator<BaseSortModel<Friend>> erpComparator;
     private IMessageView iMessageView;
-    private Context ct;
+    private MainActivity ct;
 
-    public MessagePresenter(Context ct, IMessageView iMessageView) {
+    private int emnewsNum, subsNum, processNum;//红点消息分类数量
+
+    public MessagePresenter(MainActivity ct, IMessageView iMessageView) {
         this.ct = ct;
+        mFriendList = new ArrayList<>();
         if (iMessageView == null)
             new NullPointerException("IMessageView 不能为空");
         this.iMessageView = iMessageView;
@@ -48,11 +63,45 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
 
 
     public void loadData() {
+        loadERPNews();//获取消息
+        loadSubData();//获取订阅号接口
+        loadProcessToDo();//获取审批流接口
+    }
+
+
+    /**
+     * 获取消息红点提醒接口
+     */
+    private void loadERPNews() {
         Map<String, Object> param = new HashMap<>();
         param.put("emcode", CommonUtil.getSharedPreferences(ct, "erp_username"));
         HttpHandler.getInstance().loadERPByNet(LOAD_EMNEWS, "mobile/queryEmNews.action", param, null, this);
     }
 
+    /**
+     * 获取订阅号消息接口
+     */
+    public void loadSubData() {
+        //获取网络数据
+        Map<String, Object> param = new HashMap<>();
+        param.put("count", 100);
+        param.put("condition", "where to_char(createdate_,'yyyymmdd')='" + TimeUtils.int_long_2_str(System.currentTimeMillis()) + "'");
+        param.put("sessionId", CommonUtil.getSharedPreferences(ct, "sessionId"));
+        HttpHandler.getInstance().loadERPByNet(LOAD_SUBS, "common/desktop/subs/getSubs.action", param, null, this,"get");
+    }
+
+    /**
+     * @desc:审批流接口
+     * @author:Arison on 2016/11/15
+     */
+    private void loadProcessToDo() {
+        Map<String, Object> param = new HashMap<>();
+        param.put("count", "1000");
+        param.put("page", 1);//默认获取第一页
+        HttpHandler.getInstance().loadERPByNet(LOAD_PROCESS, "common/desktop/process/toDo.action", param, null, this,"get");
+    }
+
+
     @Override
     public void result(int what, boolean isJSON, String message, Bundle bundle) {
         if (!isJSON) {
@@ -62,35 +111,84 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
         JSONObject object = JSON.parseObject(message);
         switch (what) {
             case LOAD_EMNEWS:
-                int allCount = WorkHandlerUtil.getIntByJson(object, "allCount");
+                  emnewsNum = WorkHandlerUtil.getIntByJson(object, "allCount");
                 if (!object.containsKey("listdata")) return;
                 JSONArray array = object.getJSONArray("listdata");
                 handlerNewsFormErp(array);
                 loadDataByIm();
                 break;
+            case LOAD_SUBS://获取订阅号接口
+                handlerSub(object);
+                break;
+            case LOAD_PROCESS://获取审批流接口
+                handlerProcess(object);
+                break;
         }
     }
 
     @Override
     public void error(int what, int statuCode, String message, Bundle bundle) {
+    }
+
 
+    private void handlerProcess(JSONObject object) {
+        JSONArray itemArray = object.getJSONArray("data");
+        if (!ListUtils.isEmpty(itemArray))
+            itemArray = CommonUtil.sortJsonArray(itemArray);
+        String subTitle = null;
+        if (!ListUtils.isEmpty(itemArray)) {
+            processNum = itemArray.size();
+            if (processNum > 0) {
+                subTitle = itemArray.getJSONObject(0).getString("JP_LAUNCHERNAME") + "的"
+                        + itemArray.getJSONObject(0).getString("JP_NAME");
+            }
+        } else {
+            processNum = 0;
+        }
+        iMessageView.updateHeaderView(0, processNum, subTitle);
     }
 
+    private void handlerSub(JSONObject object) {
+        List<SubscriptionMessage> messages = null;
+        int num = 0;
+        if (object.containsKey("data")) {
+            messages = JSON.parseArray(object.getJSONArray("data").toJSONString(), SubscriptionMessage.class);
+            for (SubscriptionMessage e : messages) {
+                if (e.getSTATUS_() == 0)
+                    num += 1;
+            }
+        }
+        subsNum = num;
+        updateForUnReader();
+        //TODO 判断订阅有没有新消息没读
+        iMessageView.updateHeaderView(2, num, num > 0 ? messages.get(0).getTITLE_() : "");
+    }
 
+    /**
+     * 处理消息红点消息
+     *
+     * @param array
+     */
     private void handlerNewsFormErp(JSONArray array) {
+        if (mFriendList == null)
+            mFriendList = new ArrayList<>();
+        else
+            mFriendList.clear();
         if (ListUtils.isEmpty(array)) {
             //TODO  为空数据情况下
             return;
         }
-        List<BaseSortModel<Friend>> erpFriend = new ArrayList<>();
         JSONObject object = null;
         Friend friend = null;
+        List<BaseSortModel<Friend>> erpFriend = new ArrayList<>();
         for (int i = 0; i < array.size(); i++) {
             object = array.getJSONObject(i);
             friend = new Friend();
             friend.setNickName(object.getString("title"));
+            if (object.containsKey("count") && object.get("count") != null)
+                friend.setUnReadNum(object.getInteger("count"));
             friend.setContent(object.getString("lastMessage"));
-            friend.setTimeSend(10000000);
+            friend.setTimeSend(getErpTime(object, "lastTime"));
             friend.setType(XmppMessage.TYPE_ERP);
             friend.setDescription(object.getString("type"));
             BaseSortModel<Friend> mode = new BaseSortModel<>();
@@ -106,10 +204,20 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
             };
         }
         Collections.sort(erpFriend, erpComparator);
+
         mFriendList.addAll(0, erpFriend);
         iMessageView.showModel(erpFriend);
     }
 
+    private int getErpTime(JSONObject object, String lastTime) {
+        String time = object.getString(lastTime);
+        if (StringUtils.isEmpty(time)) {
+            return (int) (System.currentTimeMillis() / 1000);
+        } else {
+            return (int) (TimeUtils.f_str_2_long(time) / 1000);
+        }
+    }
+
     private final void setSortCondition(BaseSortModel<Friend> mode) {
         Friend friend = mode.getBean();
         if (friend == null) {
@@ -180,4 +288,58 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
         }
     }
 
+    public void turn2NextAct(MainActivity mContext, int position) {
+        Friend friend = mFriendList.get(position).getBean();
+        if (friend == null) {
+            return;
+        }
+        if (friend.getType() == XmppMessage.TYPE_ERP) {
+            //消息
+            turn2ERp(friend);
+            return;
+        }
+        if (friend.getRoomFlag() == 0) {
+            if (friend.getUserId().equals(Friend.ID_NEW_FRIEND_MESSAGE)) {// 新朋友消息
+                mContext.startActivity(new Intent(mContext, NewFriendActivity.class));
+            } else {
+                Intent intent = new Intent(mContext, ChatActivity.class);
+                intent.putExtra(ChatActivity.FRIEND, friend);
+                mContext.startActivity(intent);
+            }
+        } else {
+            Intent intent = new Intent(mContext, MucChatActivity.class);
+            intent.putExtra(AppConstant.EXTRA_USER_ID, friend.getUserId());
+            intent.putExtra(AppConstant.EXTRA_NICK_NAME, friend.getNickName());
+            intent.putExtra(AppConstant.EXTRA_IS_GROUP_CHAT, true);
+            mContext.startActivity(intent);
+        }
+        //将红点去除
+        if (friend.getUnReadNum() > 0) {
+            MsgBroadcast.broadcastMsgNumUpdate(mContext, false, friend.getUnReadNum());
+            friend.setUnReadNum(0);
+        }
+    }
+
+    /**
+     * 调转到对应ERP相关知会里面去
+     *
+     * @param friend
+     */
+    private void turn2ERp(Friend friend) {
+        String description = friend.getDescription();
+        if (StringUtils.isEmpty(description)) return;
+        Intent intent = new Intent(ct, MsgsSecondCommonActivity.class);
+        intent.putExtra("type", description);
+        intent.putExtra("title", friend.getNickName());
+        intent.putExtra("emcode", CommonUtil.getSharedPreferences(ct, "erp_username"));
+        ct.startActivity(intent);
+    }
+
+
+    /*跟新未读红点信息*/
+    private void updateForUnReader() {
+        int num = subsNum + processNum + emnewsNum;
+        if (ct!=null)
+            ct.setUnReader(num);
+    }
 }

+ 2 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/imp/IMessageView.java

@@ -12,4 +12,6 @@ import java.util.List;
 public interface IMessageView {
 
     void showModel(List<BaseSortModel<Friend>> models);
+
+    void updateHeaderView(int postion, int num, String subTitle );
 }

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

@@ -191,6 +191,20 @@ public class Constants {
             + "stepnumbers  integer" //步数
             + ")";
 
+    //消息红点数据表
+    public static final String EM_ERPNEWS = "CREATE TABLE em_erpnews ("
+            + "id integer primary key ,"
+            + "master  varchar(20)," //员工账套
+            + "emcode  varchar(20)," //员工编号
+
+            + "count integer ,"
+            + "title varchar(20),"//位置
+            + "subTitle varchar(20),"//详细信息
+            + "time varchar(20),"//时间
+            + "type varchar(20),"//类型
+            + "hierarchy integer,"//类型
+            + "isReaded integer"//阅读状态,1阅读
+            + ")";
     //考勤地址表
     public static final String WORK_LOCATION = "CREATE TABLE work_location ("
             + "id integer primary key autoincrement,"

+ 8 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/auto/HttpHandler.java

@@ -66,10 +66,8 @@ public class HttpHandler extends Handler {
 
         }
     }
-
-
     public void loadERPByNet(int what, String action, Map<String, Object> param, Bundle bundle,
-                             OnResultListener listener) {
+                             OnResultListener listener,String mode) {
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(MyApplication.getInstance(), "sessionId"));
         String url = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_baseurl") + action;
@@ -79,7 +77,13 @@ public class HttpHandler extends Handler {
             bundle.putSerializable("listener", listener);
         Message message = obtain();
         message.setData(bundle);
-        ViewUtil.httpSendRequest(MyApplication.getInstance(), url, param, this, headers, what, message, bundle, "post");
+        ViewUtil.httpSendRequest(MyApplication.getInstance(), url, param, this, headers, what, message, bundle, mode);
+    }
+
+    public void loadERPByNet(int what, String action, Map<String, Object> param, Bundle bundle,
+                             OnResultListener listener) {
+        loadERPByNet(  what,   action,  param,   bundle,
+                  listener,"post");
     }
 
 

+ 35 - 16
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java

@@ -59,6 +59,7 @@ import com.xzjmyk.pm.activity.ui.base.EasyFragment;
 import com.xzjmyk.pm.activity.ui.erp.activity.NoticeMenuActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.TaskActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.message.ProcessMsgActivity;
+import com.xzjmyk.pm.activity.ui.erp.activity.oa.MsgsSecondCommonActivity;
 import com.xzjmyk.pm.activity.ui.erp.db.DBManager;
 import com.xzjmyk.pm.activity.ui.erp.entity.B2BMsg;
 import com.xzjmyk.pm.activity.ui.erp.model.AllProcess;
@@ -274,7 +275,7 @@ public class MessageFragment extends EasyFragment implements RecognizerDialogLis
         mPullToRefreshListView.setMode(Mode.PULL_FROM_START);
         mAdapter = new NearlyMessageAdapter(mActivity);
         mPullToRefreshListView.getRefreshableView().setAdapter(mAdapter);
-
+        mPullToRefreshListView.getRefreshableView().addHeaderView(getHeaderView());
         mPullToRefreshListView.setOnRefreshListener(new OnRefreshListener<SlideListView>() {
             @Override
             public void onRefresh(PullToRefreshBase<SlideListView> refreshView) {
@@ -282,7 +283,7 @@ public class MessageFragment extends EasyFragment implements RecognizerDialogLis
                 refreshUI();
             }
         });
-        mPullToRefreshListView.getRefreshableView().addHeaderView(getHeaderView());
+
         mPullToRefreshListView.getRefreshableView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
             @Override
             public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
@@ -311,7 +312,6 @@ public class MessageFragment extends EasyFragment implements RecognizerDialogLis
                     intent.putExtra(AppConstant.EXTRA_IS_GROUP_CHAT, true);
                     startActivity(intent);
                 }
-
                 if (friend.getUnReadNum() > 0) {
                     MsgBroadcast.broadcastMsgNumUpdate(mActivity, false, friend.getUnReadNum());
                     friend.setUnReadNum(0);
@@ -335,8 +335,13 @@ public class MessageFragment extends EasyFragment implements RecognizerDialogLis
      */
     private void turn2ERp(Friend friend) {
         String description = friend.getDescription();
-        if (StringUtils.isEmpty(description)) return;
 
+        if (StringUtils.isEmpty(description)) return;
+        Intent intent = new Intent(ct, MsgsSecondCommonActivity.class);
+        intent.putExtra("type", description);
+        intent.putExtra("title", friend.getNickName());
+        intent.putExtra("emcode", CommonUtil.getSharedPreferences(ct, "erp_username"));
+        startActivity(intent);
     }
 
     public void setNetNoticeVisiable(boolean visiable) {
@@ -421,17 +426,20 @@ public class MessageFragment extends EasyFragment implements RecognizerDialogLis
 
     private void refreshUI() {
         if (!AppConfig.COMPANY) return;
-        loadDataByErp();
+        loadDataByIm();
         FriendDao.getInstance().markUserMessageRead(
                 MyApplication.getInstance().mLoginUser.getUserId(),
                 Friend.ID_ERP_ZHIHUI);
-        loadERPMsgNum(mActivity);
-        loadGongGaoCount(mActivity);
-        loadNoticeCount(mActivity);
-        loadERPNewsNum(mActivity);
-        loadB2bMessageNum();
-        loadNetData(mActivity);
-        loadProcessToDo(1);
+
+        loadGongGaoCount(mActivity);//公告
+        loadNoticeCount(mActivity);//通知
+        loadERPNewsNum(mActivity);//新闻
+        loadNetData(mActivity);//订阅好
+
+
+        loadERPMsgNum(mActivity);//getallprocess
+        loadB2bMessageNum();//商务消息
+        loadProcessToDo(1);//common/desktop/process/toDo.action
     }
 
 
@@ -488,8 +496,7 @@ public class MessageFragment extends EasyFragment implements RecognizerDialogLis
     }
 
     private void loadDataByErp() {
-        mOriginalFriendList.clear();
-        mFriendList.clear();
+
         Map<String, Object> param = new HashMap<>();
         param.put("emcode", CommonUtil.getSharedPreferences(ct, "erp_username"));
         HttpHandler.getInstance().loadERPByNet(0x11, "mobile/queryEmNews.action", param, null, new HttpHandler.OnResultListener() {
@@ -527,9 +534,10 @@ public class MessageFragment extends EasyFragment implements RecognizerDialogLis
             friend = new Friend();
             friend.setNickName(object.getString("title"));
             friend.setContent(object.getString("lastMessage"));
-            friend.setTimeSend(10000000);
+            friend.setTimeSend(getErpTime(object, "lastTime"));
             friend.setType(XmppMessage.TYPE_ERP);
             friend.setDescription(object.getString("type"));
+
             BaseSortModel<Friend> mode = new BaseSortModel<>();
             mode.setBean(friend);
             setSortCondition(mode);
@@ -548,6 +556,16 @@ public class MessageFragment extends EasyFragment implements RecognizerDialogLis
         mAdapter.notifyDataSetChanged();
     }
 
+
+    private int getErpTime(JSONObject object, String lastTime) {
+        String time = object.getString(lastTime);
+        if (StringUtils.isEmpty(time)) {
+            return (int) (System.currentTimeMillis() / 1000);
+        } else {
+            return (int) (TimeUtils.f_str_2_long(time) / 1000);
+        }
+    }
+
     /**
      * 请求加载新的筛选条件的数据
      * <p/>
@@ -569,6 +587,8 @@ public class MessageFragment extends EasyFragment implements RecognizerDialogLis
                 mHandler.postDelayed(new Runnable() {
                     @Override
                     public void run() {
+                        mOriginalFriendList.clear();
+                        mFriendList.clear();
                         String filter = mClearEditText.getText().toString().trim().toUpperCase();
                         if (friends != null && friends.size() > 0) {
                             for (int i = 0; i < friends.size(); i++) {
@@ -866,7 +886,6 @@ public class MessageFragment extends EasyFragment implements RecognizerDialogLis
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
         ViewUtil.httpSendRequest(ct, url, params, handler, headers, 0x17, null, null, "get");
-
     }
 
     /**

+ 143 - 13
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/NewMessageFragment.java

@@ -1,22 +1,26 @@
 package com.xzjmyk.pm.activity.ui.message;
 
 import android.content.Context;
+import android.content.DialogInterface;
 import android.content.Intent;
+import android.graphics.Color;
 import android.os.Bundle;
 import android.provider.Settings;
+import android.support.v7.app.AlertDialog;
 import android.text.Editable;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.AdapterView;
+import android.widget.PopupWindow;
 import android.widget.TextView;
 
 import com.handmark.pulltorefresh.library.PullToRefreshBase;
-import com.handmark.pulltorefresh.library.PullToRefreshListView;
 import com.iflytek.cloud.speech.RecognizerResult;
 import com.iflytek.cloud.speech.SpeechError;
 import com.iflytek.cloud.ui.RecognizerDialogListener;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.roamer.slidelistview.SlideListView;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.audio.voicerecognition.JsonParser;
 import com.xzjmyk.pm.activity.audio.voicerecognition.VoiceToWord;
@@ -24,13 +28,18 @@ import com.xzjmyk.pm.activity.bean.Friend;
 import com.xzjmyk.pm.activity.sortlist.BaseSortModel;
 import com.xzjmyk.pm.activity.ui.MainActivity;
 import com.xzjmyk.pm.activity.ui.base.EasyFragment;
+import com.xzjmyk.pm.activity.ui.erp.activity.message.ProcessMsgActivity;
 import com.xzjmyk.pm.activity.ui.erp.adapter.MessageAdapter;
 import com.xzjmyk.pm.activity.ui.erp.entity.EditChangeListener;
 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.erp.util.CommonUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.util.DisplayUtil;
 import com.xzjmyk.pm.activity.view.ClearEditText;
 import com.xzjmyk.pm.activity.view.DrawableCenterTextView;
+import com.xzjmyk.pm.activity.view.PullToRefreshSlideListView;
 
 import java.util.List;
 
@@ -45,13 +54,14 @@ public class NewMessageFragment extends EasyFragment implements IMessageView, Re
 
     @ViewInject(R.id.message_net_set)
     private DrawableCenterTextView message_net_set;
-    @ViewInject(R.id.listView)
-    private PullToRefreshListView listView;
+    @ViewInject(R.id.pull_refresh_list)
+    private PullToRefreshSlideListView listView;
 
     private MainActivity mContext;
     private MessagePresenter presenter;
     private MessageAdapter mAdapter = null;
     private VoiceToWord mVoice;//语音工具
+    private PopupWindow popupWindow;
 
     @Override
     public void onAttach(Context context) {
@@ -61,6 +71,7 @@ public class NewMessageFragment extends EasyFragment implements IMessageView, Re
         else new ClassCastException("该碎片必须由MainActivity生成");
     }
 
+
     @Override
     protected int inflateLayoutId() {
         return R.layout.fragment_new_message;
@@ -75,6 +86,13 @@ public class NewMessageFragment extends EasyFragment implements IMessageView, Re
         }
     }
 
+    @Override
+    public void onResume() {
+        super.onResume();
+        if (presenter != null)
+            presenter.loadData();
+    }
+
     private void initEvent() {
         mVoice.setRecognizerDialogListener(this);
         findViewById(R.id.voice_search_iv).setOnClickListener(this);
@@ -85,11 +103,20 @@ public class NewMessageFragment extends EasyFragment implements IMessageView, Re
                 //TODO 输入后搜索
             }
         });
-
+        //下拉刷新
+        listView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<SlideListView>() {
+            @Override
+            public void onRefresh(PullToRefreshBase<SlideListView> refreshView) {
+                presenter.loadData();
+            }
+        });
         listView.getRefreshableView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                 //TODO 点击
+                if (mAdapter == null || ListUtils.isEmpty(mAdapter.getmFriendList()) || mAdapter.getCount() <= id)
+                    return;
+                presenter.turn2NextAct(mContext, (int) id);
             }
         });
 
@@ -97,8 +124,8 @@ public class NewMessageFragment extends EasyFragment implements IMessageView, Re
             @Override
             public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                 //TODO 长点击
-
-                return false;
+                showDialog();
+                return true;
             }
         });
 
@@ -108,6 +135,12 @@ public class NewMessageFragment extends EasyFragment implements IMessageView, Re
         mVoice = new VoiceToWord(mContext, "534e3fe2");
         listView.setMode(PullToRefreshBase.Mode.PULL_FROM_START);//只有下拉没有上拉
         listView.getRefreshableView().addHeaderView(initHeaderView());
+        listView.setShowIndicator(false);
+        listView.getRefreshableView().setCacheColorHint(Color.parseColor("#000000"));
+        listView.getRefreshableView().setScrollingCacheEnabled(false);
+        listView.setMode(PullToRefreshBase.Mode.PULL_FROM_START);
+        mAdapter = new MessageAdapter(null, mContext);
+        listView.getRefreshableView().setAdapter(mAdapter);
         presenter = new MessagePresenter(mContext, this);
         presenter.loadData();
     }
@@ -116,15 +149,17 @@ public class NewMessageFragment extends EasyFragment implements IMessageView, Re
     private View initHeaderView() {
         View view = LayoutInflater.from(mContext).inflate(R.layout.new_message_header, null);
 
-        TextView schedule_num_tv = (TextView) view.findViewById(R.id.schedule_num_tv);//审批流
-        TextView waitting_work_num_tv = (TextView) view.findViewById(R.id.waitting_work_num_tv);//待办工作
-        TextView subscribe_num_tv = (TextView) view.findViewById(R.id.subscribe_num_tv);//我的订阅
-
-        TextView schedule_content_tv = (TextView) view.findViewById(R.id.schedule_content_tv);//审批流
-        TextView waitting_work_content_tv = (TextView) view.findViewById(R.id.waitting_work_content_tv);//待办工作
-        TextView subscribe_content_tv = (TextView) view.findViewById(R.id.subscribe_content_tv);//我的订阅
+        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);//我的订阅
 
+        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);//我的订阅
 
+        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);//我的订阅
         view.findViewById(R.id.schedule_rl).setOnClickListener(this);//审批流
         view.findViewById(R.id.waitting_work_rl).setOnClickListener(this);//待办工作
         view.findViewById(R.id.subscribe_rl).setOnClickListener(this);//我的订阅
@@ -133,6 +168,50 @@ public class NewMessageFragment extends EasyFragment implements IMessageView, Re
     }
 
 
+    private void showDialog() {
+//        // 一个自定义的布局,作为显示的内容
+//        View contentView = LayoutInflater.from(ct).inflate(
+//                R.layout.item_select_message, null);
+//        int w_screen = DisplayUtil.dip2px(ct, 200);
+//        int h_screen = DisplayUtil.dip2px(ct, 100);
+//
+//        contentView.findViewById(R.id.delete_tv).setOnClickListener(this);
+//        contentView.findViewById(R.id.reader_tv).setOnClickListener(this);
+//
+//        popupWindow = new PopupWindow(contentView, w_screen, h_screen, true);
+//        popupWindow.setTouchable(true);
+//        popupWindow.setOutsideTouchable(false);
+//        // 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
+////        popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.bg_main));
+//        // 设置好参数之后再show
+//        popupWindow.showAtLocation(contentView, Gravity.CENTER, 0, 0);
+//        setbg(0.4f);
+        String[] ss={"删除","标为已读"};
+        AlertDialog.Builder builder=new AlertDialog.Builder(mContext);
+        builder.setItems(ss, new DialogInterface.OnClickListener() {
+            @Override
+            public void onClick(DialogInterface dialog, int which) {
+                if (which==0){
+
+                }else if (which==1){
+
+                }
+            }
+        });
+        builder.show();
+    }
+
+    private void setbg(float alpha) {
+        DisplayUtil.setBackgroundAlpha(mContext, alpha);
+        if (popupWindow == null) return;
+        popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                DisplayUtil.setBackgroundAlpha(mContext, 1f);
+            }
+        });
+    }
+
     //语音数据回调
     @Override
     public void onResult(RecognizerResult recognizerResult, boolean b) {
@@ -156,6 +235,15 @@ public class NewMessageFragment extends EasyFragment implements IMessageView, Re
             case R.id.message_net_set://点击无网络情况
                 startActivity(new Intent(Settings.ACTION_SETTINGS));
                 break;
+            case R.id.schedule_rl://审批流
+                startActivity(new Intent(mContext, ProcessMsgActivity.class));
+                break;
+            case R.id.waitting_work_rl://待办工作
+                break;
+            case R.id.subscribe_rl://我的订阅
+                startActivity(new Intent(mContext, Subscription2Activity.class));
+                break;
+
 
         }
 
@@ -173,4 +261,46 @@ public class NewMessageFragment extends EasyFragment implements IMessageView, Re
             mAdapter.notifyDataSetChanged();
         }
     }
+
+
+    //头文件处理
+    private TextView schedule_num_tv;//审批流
+    private TextView waitting_work_num_tv;//待办工作
+    private TextView subscribe_num_tv;//我的订阅
+
+    private TextView schedule_content_tv;//审批流
+    private TextView waitting_work_content_tv;//待办工作
+    private TextView subscribe_content_tv;//我的订阅
+
+    private TextView schedule_time_tv;//审批流
+    private TextView waitting_work_time_tv;//待办工作
+    private TextView subscribe_time_tv;//我的订阅
+
+    @Override
+    public void updateHeaderView(int postion, int num, String subTitle) {
+        switch (postion) {
+            case 0:
+                updateHeaderView(schedule_num_tv, schedule_content_tv, schedule_time_tv, num, subTitle);
+                break;
+            case 1:
+                updateHeaderView(waitting_work_num_tv, waitting_work_content_tv, waitting_work_time_tv, num, subTitle);
+                break;
+            case 2:
+                updateHeaderView(subscribe_num_tv, subscribe_content_tv, subscribe_time_tv, num, subTitle);
+                break;
+        }
+    }
+
+    private void updateHeaderView(TextView num_tv, TextView content_tv, TextView time_tv, int num, String subTitle) {
+        if (num_tv != null) {
+            num_tv.setVisibility(num == 0 ? View.GONE : View.VISIBLE);
+            num_tv.setText("" + num);
+        }
+        if (content_tv != null)
+            content_tv.setText(StringUtils.isEmpty(subTitle) ? "" : subTitle);
+        if (time_tv != null)
+            time_tv.setText(num == 0 ? "" : "刚刚");
+    }
+
+
 }

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/uas/NewMessageFragment.java

@@ -425,7 +425,7 @@ public class NewMessageFragment extends EasyFragment implements RecognizerDialog
         time_tv = (TextView) view.findViewById(R.id.time_tv);
 
         view.findViewById(R.id.schedule_rl).setOnClickListener(listener);
-        view.findViewById(R.id._rl).setOnClickListener(listener);
+        view.findViewById(R.id.subscribe_rl).setOnClickListener(listener);
         view.findViewById(R.id.waitting_work_rl).setOnClickListener(listener);
         return view;
     }
@@ -442,7 +442,7 @@ public class NewMessageFragment extends EasyFragment implements RecognizerDialog
                     waitting_work_num_tv.setVisibility(View.INVISIBLE);
                     startActivity(new Intent(mActivity, WaittingWorksActivity.class));
                     break;
-                case R.id._rl:
+                case R.id.subscribe_rl:
 //                    startActivity(new Intent(mActivity, SubscriptionActivity.class));
                     startActivity(new Intent(mActivity, Subscription2Activity.class));
                     break;

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

@@ -481,7 +481,6 @@
             android:layout_marginLeft="10dp"
             android:layout_marginRight="10dp"
             android:background="@color/item_line" />
-
         <RelativeLayout
             android:id="@+id/test_rl"
             style="@style/IMTbleLine_UP_Me"

+ 16 - 19
WeiChat/src/main/res/layout/fragment_message.xml

@@ -1,20 +1,19 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="#ebe9e9"
-    android:orientation="vertical" >
+    android:orientation="vertical">
 
     <RelativeLayout
-        android:background="@drawable/bg_bar"
         android:layout_width="match_parent"
         android:layout_height="48dp"
+        android:background="@drawable/bg_bar"
         android:orientation="horizontal"
         android:paddingBottom="5dp"
         android:paddingLeft="15dp"
         android:paddingRight="15dp"
-        android:paddingTop="5dp" >
+        android:paddingTop="5dp">
 
         <com.xzjmyk.pm.activity.view.ClearEditText
             android:id="@+id/search_edit"
@@ -31,15 +30,14 @@
 
         <ImageView
             android:id="@+id/voice_search_iv"
-            android:background="@drawable/btn_yuyin_nor"
-            android:visibility="visible"
-            android:layout_marginRight="25dp"
-            android:layout_alignParentRight="true"
-            android:layout_alignRight="@+id/search_edit"
             android:layout_width="20dp"
             android:layout_height="20dp"
+            android:layout_alignParentRight="true"
+            android:layout_alignRight="@+id/search_edit"
+            android:layout_marginRight="25dp"
             android:layout_marginTop="8dp"
-            />
+            android:background="@drawable/btn_yuyin_nor"
+            android:visibility="visible" />
     </RelativeLayout>
 
     <com.xzjmyk.pm.activity.view.DrawableCenterTextView
@@ -47,15 +45,14 @@
         android:layout_width="match_parent"
         android:layout_height="35dp"
         android:background="#fcd8d8"
-        android:text="当前网络不可用,请检查您的网络设置"
-        android:gravity="center_vertical"
-        android:textColor="@color/black"
         android:drawableLeft="@drawable/ic_net_noticce"
         android:drawablePadding="10dp"
-        android:visibility="gone"/>
+        android:gravity="center_vertical"
+        android:text="当前网络不可用,请检查您的网络设置"
+        android:textColor="@color/black"
+        android:visibility="gone" />
 
-    <com.xzjmyk.pm.activity.view.PullToRefreshSlideListView
-        xmlns:slide="http://schemas.android.com/apk/res-auto"
+    <com.xzjmyk.pm.activity.view.PullToRefreshSlideListView xmlns:slide="http://schemas.android.com/apk/res-auto"
         android:id="@+id/pull_refresh_list"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
@@ -73,7 +70,8 @@
         slide:slideAnimationTime="200"
         slide:slideLeftAction="scroll"
         slide:slideMode="right"
-        slide:slideRightAction="scroll"/>
+        slide:slideRightAction="scroll" />
+
     <com.handmark.pulltorefresh.library.PullToRefreshListView
         android:id="@+id/pull_newmessages_list"
         android:layout_width="match_parent"
@@ -81,8 +79,7 @@
         android:layout_below="@id/seach_top"
         android:background="@color/item_line"
         android:dividerHeight="2px"
-        android:scrollbars="none"
-        >
+        android:scrollbars="none">
 
     </com.handmark.pulltorefresh.library.PullToRefreshListView>
 </LinearLayout>

+ 37 - 18
WeiChat/src/main/res/layout/fragment_new_message.xml

@@ -1,23 +1,24 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="#ebe9e9"
-    android:orientation="vertical">
+    android:orientation="vertical" >
 
     <RelativeLayout
+        android:background="@drawable/bg_bar"
         android:layout_width="match_parent"
         android:layout_height="48dp"
-        android:background="@drawable/bg_bar"
         android:orientation="horizontal"
         android:paddingBottom="5dp"
         android:paddingLeft="15dp"
         android:paddingRight="15dp"
-        android:paddingTop="5dp">
+        android:paddingTop="5dp" >
 
         <com.xzjmyk.pm.activity.view.ClearEditText
             android:id="@+id/search_edit"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
+            android:layout_width="fill_parent"
+            android:layout_height="fill_parent"
             android:layout_centerVertical="true"
             android:background="@drawable/search_input"
             android:drawableLeft="@drawable/search"
@@ -29,14 +30,15 @@
 
         <ImageView
             android:id="@+id/voice_search_iv"
-            android:layout_width="20dp"
-            android:layout_height="20dp"
+            android:background="@drawable/btn_yuyin_nor"
+            android:visibility="visible"
+            android:layout_marginRight="25dp"
             android:layout_alignParentRight="true"
             android:layout_alignRight="@+id/search_edit"
-            android:layout_marginRight="25dp"
+            android:layout_width="20dp"
+            android:layout_height="20dp"
             android:layout_marginTop="8dp"
-            android:background="@drawable/btn_yuyin_nor"
-            android:visibility="visible" />
+            />
     </RelativeLayout>
 
     <com.xzjmyk.pm.activity.view.DrawableCenterTextView
@@ -44,15 +46,32 @@
         android:layout_width="match_parent"
         android:layout_height="35dp"
         android:background="#fcd8d8"
-        android:drawableLeft="@drawable/ic_net_noticce"
-        android:drawablePadding="10dp"
-        android:gravity="center_vertical"
         android:text="当前网络不可用,请检查您的网络设置"
+        android:gravity="center_vertical"
         android:textColor="@color/black"
-        android:visibility="gone" />
+        android:drawableLeft="@drawable/ic_net_noticce"
+        android:drawablePadding="10dp"
+        android:visibility="gone"/>
+
+    <com.xzjmyk.pm.activity.view.PullToRefreshSlideListView
+        xmlns:slide="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/pull_refresh_list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="#ebe9e9"
+        android:hardwareAccelerated="false"
+        android:layerType="software"
+        app:ptrAnimationStyle="flip"
+        app:ptrDrawableEnd="@drawable/default_ptr_rotate"
+        app:ptrDrawableStart="@drawable/default_ptr_flip"
+        app:ptrHeaderTextColor="@color/black"
+        app:ptrMode="both"
+        app:ptrOverScroll="false"
+        app:ptrScrollingWhileRefreshingEnabled="true"
+        app:ptrShowIndicator="false"
+        slide:slideAnimationTime="200"
+        slide:slideLeftAction="scroll"
+        slide:slideMode="right"
+        slide:slideRightAction="scroll"/>
 
-    <com.handmark.pulltorefresh.library.PullToRefreshListView
-        android:id="@+id/listView"
-        style="@style/ListViewBasic"
-        android:divider="@drawable/bg_bar" />
 </LinearLayout>

+ 2 - 0
WeiChat/src/main/res/layout/item_message.xml

@@ -50,6 +50,7 @@
             android:layout_height="wrap_content"
             android:layout_toLeftOf="@+id/time_tv"
             android:ellipsize="end"
+            android:lines="1"
             android:text="我的审批"
             android:textColor="@color/text_main"
             android:textSize="16sp" />
@@ -70,6 +71,7 @@
             android:layout_below="@id/nick_name_tv"
             android:layout_marginTop="8dp"
             android:ellipsize="end"
+            android:lines="1"
             android:textColor="@color/text_hine"
             android:textSize="14sp" />
     </RelativeLayout>

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

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="200dp"
+    android:background="@drawable/bg_main"
+    android:gravity="center_horizontal"
+    android:orientation="vertical"
+    android:padding="10dp">
+
+    <TextView
+        android:id="@+id/delete_tv"
+        android:layout_width="match_parent"
+        android:layout_height="60dp"
+        android:background="@drawable/selector_me_menu_item_bg"
+        android:gravity="center"
+        android:text="@string/delete"
+        android:textSize="20dp" />
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="2px"
+        android:background="@color/item_line" />
+
+    <TextView
+        android:id="@+id/reader_tv"
+        android:layout_width="match_parent"
+        android:layout_height="60dp"
+        android:background="@drawable/selector_me_menu_item_bg"
+        android:gravity="center"
+        android:text="标为已读"
+        android:textSize="20dp" />
+</LinearLayout>

+ 5 - 2
WeiChat/src/main/res/layout/new_message_header.xml

@@ -35,6 +35,7 @@
                 android:id="@+id/schedule_num_tv"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
+                android:visibility="gone"
                 android:layout_gravity="top|right"
                 android:background="@drawable/tab_unread_bg"
                 android:gravity="center"
@@ -121,13 +122,14 @@
                 android:id="@+id/waitting_work_num_tv"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
+                android:visibility="gone"
                 android:layout_gravity="top|right"
                 android:background="@drawable/tab_unread_bg"
                 android:gravity="center"
                 android:text="999"
                 android:textColor="@android:color/white"
                 android:textSize="10.0dip"
-                android:visibility="visible" />
+         />
         </FrameLayout>
 
         <RelativeLayout
@@ -207,6 +209,7 @@
                 android:id="@+id/subscribe_num_tv"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
+                android:visibility="gone"
                 android:layout_gravity="top|right"
                 android:background="@drawable/tab_unread_bg"
                 android:gravity="center"
@@ -233,7 +236,7 @@
                 android:textSize="16sp" />
 
             <TextView
-                android:id="@+id/time_tv"
+                android:id="@+id/subscribe_time_tv"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_alignParentRight="true"