Browse Source

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

FANGLH 9 years ago
parent
commit
1f504dced5

+ 0 - 12
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/message/SortSubsrciprion.java

@@ -1,12 +0,0 @@
-package com.xzjmyk.pm.activity.bean.message;
-
-import java.util.ArrayList;
-
-/**
- * Created by Bitliker on 2016/6/14.
- */
-public class SortSubsrciprion {
-    public ArrayList<SubscriptionMessage> beans;
-    public long tiem;
-    public String time;
-}

+ 47 - 19
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/message/SubscriptionMessage.java

@@ -1,11 +1,12 @@
 package com.xzjmyk.pm.activity.bean.message;
 
-import java.io.Serializable;
+import android.os.Parcel;
+import android.os.Parcelable;
 
 /**
  * Created by gongpm on 2016/6/3.
  */
-public class SubscriptionMessage implements Serializable{
+public class SubscriptionMessage implements Parcelable{
 
     private int ID_;
     private int NUM_ID_;        //订阅id
@@ -16,24 +17,51 @@ public class SubscriptionMessage implements Serializable{
     private int STATUS_;      //阅读状态
     private int EMP_ID_;
     private int RN;
-//    private String SONTITLE_;
-    private String SUMDATA_;
 
-//    public String getSONTITLE_() {
-//        return SONTITLE_;
-//    }
-//
-//    public void setSONTITLE_(String SONTITLE_) {
-//        this.SONTITLE_ = SONTITLE_;
-//    }
-
-    public String getSUMDATA_() {
-        return SUMDATA_;
-    }
-
-    public void setSUMDATA_(String SUMDATA_) {
-        this.SUMDATA_ = SUMDATA_;
-    }
+    public SubscriptionMessage(){}
+
+
+    protected SubscriptionMessage(Parcel in) {
+        ID_ = in.readInt();
+        NUM_ID_ = in.readInt();
+        INSTANCE_ID_ = in.readInt();
+        CREATEDATE_ = in.readString();
+        TITLE_ = in.readString();
+        SON_TITLE_ = in.readString();
+        STATUS_ = in.readInt();
+        EMP_ID_ = in.readInt();
+        RN = in.readInt();
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(ID_);
+        dest.writeInt(NUM_ID_);
+        dest.writeInt(INSTANCE_ID_);
+        dest.writeString(CREATEDATE_);
+        dest.writeString(TITLE_);
+        dest.writeString(SON_TITLE_);
+        dest.writeInt(STATUS_);
+        dest.writeInt(EMP_ID_);
+        dest.writeInt(RN);
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    public static final Creator<SubscriptionMessage> CREATOR = new Creator<SubscriptionMessage>() {
+        @Override
+        public SubscriptionMessage createFromParcel(Parcel in) {
+            return new SubscriptionMessage(in);
+        }
+
+        @Override
+        public SubscriptionMessage[] newArray(int size) {
+            return new SubscriptionMessage[size];
+        }
+    };
 
     public int getID_() {
         return ID_;

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/AttendanceFragment.java

@@ -186,7 +186,7 @@ public class AttendanceFragment extends EasyFragment implements HttpHandler.OnRe
      */
     private void handlerWorkData(JSONObject object, Bundle bundle) throws Exception {
         boolean isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
-        ArrayList<WorkModel> models = WorkHandlerUtil.handlerWorkData(object,isB2b);
+        ArrayList<WorkModel> models = WorkHandlerUtil.handlerWorkData(object, isB2b);
         if (ListUtils.isEmpty(models)) {
             setDate2Adapter(null);
         }
@@ -350,7 +350,7 @@ public class AttendanceFragment extends EasyFragment implements HttpHandler.OnRe
         private String getLastTime(String signin, String time, boolean isWork) {
             long lastTime = TimeUtils.f_str_2_long(TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + signin + ":00");
             long thisTime = TimeUtils.f_str_2_long(TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + time + ":00");
-            float distance = (lastTime - thisTime) / 1000;//秒
+            float distance = Math.abs((lastTime - thisTime) / 1000);//秒
             int h = (int) (distance / 3600);
             int m = (int) (distance % 3600) / 60;
             return (isWork ? "迟到" : "早退") + h + "小时" + m + "分钟";

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

@@ -71,12 +71,12 @@ public class WorksFragment extends XutilsFragment implements View.OnClickListene
         my_client_rl.setOnClickListener(this);
         goods_find.setOnClickListener(this);
         show_new_function_ll.setOnClickListener(this);
-
         int new_function_notice = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.NEW_FUNCTION_NOTICE);
-        if(new_function_notice == 1){
+        if (new_function_notice == 1) {
+            show_new_function_ll.setVisibility(View.INVISIBLE);
+        } else {
+            //TODO 发布版本先隐藏
             show_new_function_ll.setVisibility(View.INVISIBLE);
-        }else {
-            show_new_function_ll.setVisibility(View.VISIBLE);
         }
     }
 
@@ -86,9 +86,9 @@ public class WorksFragment extends XutilsFragment implements View.OnClickListene
         //判断是否启用功能模块
         //  isStartNewApp(Constants.HTTP_SUCCESS_INIT);
         int new_function_notice = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.NEW_FUNCTION_NOTICE);
-        if(new_function_notice == 1){
+        if (new_function_notice == 1) {
             show_new_function_ll.setVisibility(View.INVISIBLE);
-        }else {
+        } else {
             show_new_function_ll.setVisibility(View.VISIBLE);
         }
     }

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

@@ -14,12 +14,14 @@ 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.SubMessage;
 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.ChatMessageDao;
 import com.xzjmyk.pm.activity.db.dao.FriendDao;
 import com.xzjmyk.pm.activity.db.dao.MessageDao;
+import com.xzjmyk.pm.activity.db.dao.SubsDao;
 import com.xzjmyk.pm.activity.sortlist.BaseSortModel;
 import com.xzjmyk.pm.activity.sortlist.PingYinUtil;
 import com.xzjmyk.pm.activity.ui.MainActivity;
@@ -55,16 +57,14 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
     private final int LOAD_SUBS = 0x12;
     private final int LOAD_PROCESS = 0x13;
 
-    private final String SUB_READ_TIME = CommonUtil.getMaster() + "SUB_READ_TIME";//订阅好点击阅读时间
-    private final String SUB_LOAD_TIME = CommonUtil.getMaster() + "SUB_LOAD_TIME";//订阅好下拉时间时间
+    private String SUB_READ_TIME;//订阅好点击阅读时间
 
     private List<BaseSortModel<Friend>> mFriendList;
 
     private Comparator<BaseSortModel<Friend>> erpComparator;
     private IMessageView iMessageView;
     private MainActivity ct;
-    private String subReadTime;
-    private String subLoadTime;
+    private String subReadTime;//订阅号点击时间
 
     private String filter;//搜索数据
     private int emnewsNum, subsNum, processNum, taskNum;//红点消息分类数量
@@ -91,8 +91,6 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
         if (iMessageView == null)
             new NullPointerException("IMessageView 不能为空");
         this.iMessageView = iMessageView;
-        subReadTime = PreferenceUtils.getString(SUB_READ_TIME);
-        subLoadTime = PreferenceUtils.getString(SUB_LOAD_TIME);
         if (RECEIVER_LIST != null && RECEIVER_LIST.length > 0) {
             IntentFilter dateFilter = new IntentFilter();
             for (String f : RECEIVER_LIST)
@@ -102,14 +100,34 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
     }
 
     public void loadData() {
+        SUB_READ_TIME = CommonUtil.getMaster() + "SUB_READ_TIME";//订阅好点击阅读时间
+        subReadTime = PreferenceUtils.getString(SUB_READ_TIME);
         loadERPNews();//获取消息
         loadTaskData();//获取任务接口
-
-        if (StringUtils.isEmpty(subLoadTime) || subLoadTime.compareTo(TimeUtils.s_long_2_str(System.currentTimeMillis())) < 0) {
-            loadSubData();//获取订阅号接口
-            PreferenceUtils.putString(SUB_LOAD_TIME, TimeUtils.s_long_2_str(System.currentTimeMillis()));
-        }
         loadProcessToDo();//获取审批流接口
+//        loadSubMessage(); //TODO 发布版本先隐藏
+        loadSubData();
+    }
+
+    //下拉订阅号数据
+    private void loadSubMessage() {
+        //先判断数据库中是否有数据
+        List<SubMessage> messages = SubsDao.getInstance().queryByDate(TimeUtils.s_long_2_str(System.currentTimeMillis()));
+        if (ListUtils.isEmpty(messages)) {//如果没有数据,就去下载数据
+            loadSubData();
+        } else {//如果有数据,就判断是否显示红点
+            if (StringUtils.isEmpty(subReadTime) || subReadTime.compareTo(TimeUtils.s_long_2_str(System.currentTimeMillis())) < 0) {
+                //不是今天点击的就,显示订阅数量
+                int num = 0;
+                for (SubMessage e : messages) {
+                    if (e.getStatus() == 0)
+                        num += 1;
+                }
+                subsNum = num;
+                updateForUnReader();
+                iMessageView.updateHeaderView(2, num, num > 0 ? messages.get(0).getTitle() : "");
+            }
+        }
     }
 
 
@@ -296,7 +314,7 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
         updateForUnReader();
     }
 
-    private void handlerSub(JSONObject object) {
+    private void handlerSub(final JSONObject object) {
         if (!StringUtils.isEmpty(subReadTime) && subReadTime.compareTo(TimeUtils.s_long_2_str(System.currentTimeMillis())) >= 0)
             return;
         List<SubscriptionMessage> messages = null;
@@ -308,12 +326,53 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
                     num += 1;
             }
         }
+        //TODO 发布版本先隐藏
+//        ThreadUtil.getInstance().addTask(new Runnable() {
+//            @Override
+//            public void run() {
+//                try {
+//                    saveSubs2Db(object);
+//                } catch (Exception e) {
+//                    e.printStackTrace();
+//                }
+//            }
+//        });
         subsNum = num;
         updateForUnReader();
-        //TODO 判断订阅有没有新消息没读
         iMessageView.updateHeaderView(2, num, num > 0 ? messages.get(0).getTITLE_() : "");
     }
 
+    private void saveSubs2Db(JSONObject o) throws Exception {
+        JSONArray array = o.getJSONArray("data");
+        if (ListUtils.isEmpty(array)) return;
+        SubMessage message = null;
+        JSONObject object = null;
+        List<SubMessage> chche = new ArrayList<>();
+        message = new SubMessage();
+        message.setDate(TimeUtils.s_long_2_str(System.currentTimeMillis()));
+        message.setRead(true);
+        message.setStatus(0);
+        chche.add(message);
+        for (int i = 0; i < array.size(); i++) {
+            object = array.getJSONObject(i);
+            message = new SubMessage();
+            message.setCreateTime(object.getLong("CREATEDATE_"));
+            int status = object.getInteger("STATUS_");
+            message.setStatus(i == 0 ? 1 : 2);
+            message.setTitle(object.getString("TITLE_"));
+            message.setSubTitle(object.getString("SUMDATA_"));
+            message.setRead(status == 0 ? false : true);
+            message.setId(object.getInteger("ID_"));
+            message.setNumId(object.getInteger("NUM_ID_"));
+            message.setInstanceId(object.getInteger("INSTANCE_ID_"));
+            if (message.getCreateTime() == 0) continue;
+            message.setDate(TimeUtils.s_long_2_str(message.getCreateTime()));
+            chche.add(message);
+        }
+        if (ListUtils.isEmpty(chche)) return;
+        SubsDao.getInstance().createOrUpdata(chche);
+    }
+
     /**
      * 处理消息红点消息
      *

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

@@ -63,8 +63,9 @@
             android:id="@+id/off_tag_tv"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_alignLeft="@id/work_tag_tv"
             android:layout_alignTop="@id/off_tv"
+            android:layout_marginLeft="10dp"
+            android:layout_toRightOf="@id/off_tv"
             android:text="09:20" />
     </RelativeLayout>
 </LinearLayout>