Browse Source

订阅1.订阅号闪退
2.任务不刷新
3.定时提醒签到

Bitliker 9 years ago
parent
commit
7146873ef4

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

@@ -586,7 +586,7 @@
             android:label="地点微调" />
         <activity
             android:name=".ui.erp.activity.oa.AlarmaActivity"
-            android:label="签到提醒"
+            android:label="签到设置"
             android:theme="@style/OAThemeSignin" />
         <activity
             android:name=".ui.erp.activity.oa.MeetingActivity"

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/SigninBean.java

@@ -8,9 +8,9 @@ import android.os.Parcelable;
  */
 
 public class SigninBean implements Parcelable {
-    private String workSignin;//上班签到时间  yyyyMMdd HH:mm:ss
+    private String workSignin;//上班签到时间   HH:mm
     private String workTime;//上班时间  HH:mm
-    private String offSignin;//下班签到时间  yyyyMMdd HH:mm:ss
+    private String offSignin;//下班签到时间  HH:mm
     private String offTime;//下班时间  HH:mm
     private String startTime;//上班可签到时间  HH:mm
     private String endTime;//下班可签到时间  HH:mm

+ 16 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/SigninDao.java

@@ -5,12 +5,14 @@ import android.content.Context;
 import android.database.Cursor;
 import android.database.SQLException;
 import android.database.sqlite.SQLiteDatabase;
+import android.util.Log;
 
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.bean.oa.SigninBean;
 import com.xzjmyk.pm.activity.ui.erp.db.DBOpenHelper;
 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;
@@ -60,8 +62,16 @@ public class SigninDao {
                 values.put("master", master);
                 values.put("workTime", e.getWorkTime());
                 values.put("offTime", e.getOffTime());
-                values.put("workSignin", e.getWorkSignin());
-                values.put("offSignin", e.getOffSignin());
+                if (StringUtils.isEmpty(e.getWorkSignin()) || e.getWorkSignin().compareTo(e.getWorkTime()) > 0) {
+                    values.put("workSignin", "");
+                } else {
+                    values.put("workSignin", e.getWorkSignin());
+                }
+                if (StringUtils.isEmpty(e.getOffSignin()) || e.getOffSignin().compareTo(e.getOffTime()) < 0) {
+                    values.put("workSignin", "");
+                } else {
+                    values.put("offSignin", e.getOffSignin());
+                }
                 values.put("startTime", e.getStartTime());
                 values.put("endTime", e.getEndTime());
                 i = db.insert(titleName, nullColumn, values);
@@ -202,4 +212,8 @@ public class SigninDao {
         return beans == null ? new ArrayList<SigninBean>() : beans;
     }
 
+    private void testShow(String tag, String message) {
+        if (StringUtils.isEmpty(tag)) return;
+        Log.i("gongpengming", tag + ":" + message);
+    }
 }

+ 38 - 35
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/TaskActivity.java

@@ -101,9 +101,7 @@ public class TaskActivity extends BaseActivity {
                         process.setRecorder(item.getString("recorder"));//发起人
                         process.setStatus(item.getString("ra_status"));//状态
                         process.setMainname(item.getString("ra_status"));//状态
-
                         process.setTaskname(item.getString("ra_taskname"));//名称
-
                         process.setDatetime(item.getDate("ra_startdate"));//发起时间
                         process.setLink(task_url + item.get("ra_id"));
                         process.setTypecode(item.getString("ra_type"));
@@ -132,7 +130,6 @@ public class TaskActivity extends BaseActivity {
                     listview_main.onRefreshComplete();
                 }
             }
-
             if (msg.what == LOAD_EM_NAME) {
                 String result = msg.getData().getString("result");
                 Log.i("Task", result);
@@ -162,12 +159,9 @@ public class TaskActivity extends BaseActivity {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.task_listview);
-
         context = TaskActivity.this;
         ViewUtils.inject(this);
         getSupportActionBar().setTitle("我的任务");
-
-
         String mLoginUserId = MyApplication.getInstance().mLoginUser.getUserId();
         // 表示已读
         FriendDao.getInstance().markUserMessageRead(mLoginUserId, Friend.ID_ERP_TASK);
@@ -204,7 +198,6 @@ public class TaskActivity extends BaseActivity {
                 intent.putExtra("status", store.tv_task_status.getText().toString());
                 intent.putExtra("taskid", store.pTextView3.getText().toString());//编号
                 intent.putExtra("taskname", store.pTextView4.getText().toString());//名称
-
                 intent.putExtra("taskemcode", store.pTextView1.getText().toString());//发起人
                 intent.putExtra("tasktime", store.pTextView2.getText().toString());//发起时间
                 intent.putExtra("performer", store.tv_task_performer);//处理人
@@ -213,7 +206,7 @@ public class TaskActivity extends BaseActivity {
                 intent.putExtra("ra_taskid", store.task_id);//取回复内容id
                 intent.putExtra("attachs", store.attachs);
                 intent.putExtra("endtime", store.tv_task_duration);
-                startActivity(intent);
+                startActivityForResult(intent, 0x20);
             }
 
             /**
@@ -249,32 +242,7 @@ public class TaskActivity extends BaseActivity {
         listview_main.setOnRefreshListener(new OnRefreshListener<ListView>() {
             @Override
             public void onRefresh(PullToRefreshBase<ListView> refreshView) {
-                if (state_all == null || state_finish == null
-                        || state_start == null || state_taskforme == null
-                        || state_unconfirmed == null) {
-                    mEmptyLayout.showLoading();
-                    listview_main.getLoadingLayoutProxy().setPullLabel("下拉更新");
-                    sendResquestForServer("START", 2);
-                    return;
-                }
-                if (state_all.isSelected()) {
-                    mEmptyLayout.showLoading();
-                    listview_main.getLoadingLayoutProxy().setPullLabel("下拉更新");
-                    new Thread(new getallprocess_run()).start();
-                }
-                if (state_finish.isSelected()) {
-                    sendResquestForServer("FINISHED", 2);
-                }
-                if (state_start.isSelected()) {
-                    sendResquestForServer("START", 2);
-                }
-                if (state_unconfirmed.isSelected()) {
-                    sendResquestForServer("UNCONFIRMED", 2);
-                }
-                if (state_taskforme.isSelected()) {
-                    sendResquestForServerOther(2);
-                }
-
+                refreshing();
             }
         });
     }
@@ -285,6 +253,35 @@ public class TaskActivity extends BaseActivity {
         getEmNameForServer();//网络请求
     }
 
+
+    private void refreshing() {
+        if (state_all == null || state_finish == null
+                || state_start == null || state_taskforme == null
+                || state_unconfirmed == null) {
+            mEmptyLayout.showLoading();
+            listview_main.getLoadingLayoutProxy().setPullLabel("下拉更新");
+            sendResquestForServer("START", 2);
+            return;
+        }
+        if (state_all.isSelected()) {
+            mEmptyLayout.showLoading();
+            listview_main.getLoadingLayoutProxy().setPullLabel("下拉更新");
+            new Thread(new getallprocess_run()).start();
+        }
+        if (state_finish.isSelected()) {
+            sendResquestForServer("FINISHED", 2);
+        }
+        if (state_start.isSelected()) {
+            sendResquestForServer("START", 2);
+        }
+        if (state_unconfirmed.isSelected()) {
+            sendResquestForServer("UNCONFIRMED", 2);
+        }
+        if (state_taskforme.isSelected()) {
+            sendResquestForServerOther(2);
+        }
+    }
+
     @SuppressWarnings("unchecked")
     private void loadData() {
         hClient = new HttpClient();
@@ -620,5 +617,11 @@ public class TaskActivity extends BaseActivity {
         return super.onOptionsItemSelected(item);
     }
 
-
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (data == null) return;
+        if (requestCode == 0x20 && resultCode == 0x20) {
+            refreshing();
+        }
+    }
 }

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

@@ -38,10 +38,6 @@ public class AlarmaActivity extends BaseActivity implements View.OnClickListener
     private boolean isAlarm;//判断是否为提醒
     private boolean isAuto;//判断是否为自动
 
-
-    public static String KEY_ALAR_TIME = "KEY_ALAR_TIME";//上班提醒时间
-    public static String KEY_UALAR_TIME = "KEY_UALAR_TIME";//下班时间
-
     private AlarmManage manage;
 
     @Override

+ 154 - 7
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmManage.java

@@ -4,12 +4,12 @@ import android.app.AlarmManager;
 import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
-import android.widget.Toast;
 
-import com.xzjmyk.pm.activity.AppConfig;
+import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.bean.oa.SigninBean;
 import com.xzjmyk.pm.activity.db.dao.SigninDao;
 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.TimeUtils;
 
@@ -33,11 +33,18 @@ public class AlarmManage {
     public void setSigninAlarm(Context ct) {
         boolean isAlarm = CommonUtil.getSharedPreferencesBoolean(ct, ALARMA_CLICK, false);//是否自动打卡
         boolean isAuto = CommonUtil.getSharedPreferencesBoolean(ct, AUTO_SIGNIN, false);//是否提醒
+        List<SigninBean> beans = SigninDao.getInstance(ct).queryByEmcode();
+        if (ListUtils.isEmpty(beans)) return;
+        if (isAuto)
+            setAutoSignin(ct, beans);
+        else if (isAlarm) {//当不自动打卡只是签到时候
+            setAlarm(ct, beans);
+        }
+        if (true) return;
         if (!isAlarm && !isAuto) {
             unArmmanager(ct);
             return;
         }
-        List<SigninBean> beans = SigninDao.getInstance(ct).queryByEmcode();
         int u = CommonUtil.getSharedPreferencesInt(ct, "ALARM_WORK_TIME", 5);//上班提前xx分钟
         int d = CommonUtil.getSharedPreferencesInt(ct, "ALARM_OFFWORK_TIME", 5);//下班延迟xx分钟
         boolean isToday = false;
@@ -87,6 +94,146 @@ public class AlarmManage {
         }
     }
 
+    private void setAlarm(Context ct, List<SigninBean> beans) {
+        for (SigninBean e : beans) {
+            boolean isOK = alarmBySigninBean(ct, e);
+            if (isOK) {//不在该班次
+                break;
+            }
+        }
+        //TODO 当天时间没有   先不理
+    }
+
+    private void setAutoSignin(Context ct, List<SigninBean> beans) {
+        long time = -1;
+        for (SigninBean e : beans) {
+            time = autoBySigninBean(e);
+            if (time != -1) {//不在该班次
+                setNextAlarm(ct, AUTO_SIGNIN_ACTION, time);
+                break;
+            }
+        }
+        //TODO 当天时间没有   先不理
+    }
+
+    private boolean alarmBySigninBean(Context ct, SigninBean e) {
+        long workTime = 0;
+        int u = CommonUtil.getSharedPreferencesInt(ct, "ALARM_WORK_TIME", 5);//上班提前xx分钟
+        workTime = getTimeByHHmm(e.getWorkTime()) - u * 60 * 1000;
+        if (System.currentTimeMillis() < workTime) {//符合提醒时间
+            setNextAlarm(MyApplication.getInstance(), WORK_ALARM_ACTION, workTime);
+            return true;
+        }
+        int d = CommonUtil.getSharedPreferencesInt(ct, "ALARM_OFFWORK_TIME", 5);//下班延迟xx分钟
+        workTime = getTimeByHHmm(e.getOffTime()) + d * 60 * 1000;
+        if (System.currentTimeMillis() < workTime) {
+            setNextAlarm(MyApplication.getInstance(), OFFWORK_ALARM_ACTION, workTime);
+            return true;
+        }
+        return false;
+    }
+
+
+    /**
+     * 只计算当天不计算第二天,只计算自动打卡
+     *
+     * @param e
+     * @return
+     */
+    private long autoBySigninBean(SigninBean e) {
+        long time = -1;
+        long workTime = 0;
+        //***************先上班后下班***************************
+        //***************上班开始***************************
+        /*x:当前时间  自动打卡满足   上班前10分钟 < x < 上班时间  */
+        //当前时间处于上班前时间
+        if (!isWorked(true, e)) {
+            //递归判断   10分钟  每2分钟进行判断、
+            time = recursiveByWork(workTime);
+            if (time != 1) {//符合自动打卡
+                return time;
+            } else {//不符合  下一分自动打卡
+                return System.currentTimeMillis() + 1000 * 60;
+            }
+        }
+        workTime = getTimeByHHmm(e.getOffTime());
+        //当前时间处于下班前时间
+        if (!isWorked(true, e)) {
+            //递归判断   10分钟  每2分钟进行判断、
+            time = recursiveByOffic(2, workTime);
+            if (time != 0) {//符合自动打卡
+                return time;
+            } else {//不符合  下一秒自动打卡
+                return System.currentTimeMillis() + 1000 * 5 * 60;
+            }
+        }
+        //当前时间不处于该班次可打卡范围
+        return -1;
+    }
+
+
+    /**
+     * 判断是否在可打卡范围   1.时间提醒之前  2.没有签成功
+     *
+     * @param isWork
+     * @param e
+     * @return
+     */
+    private boolean isWorked(boolean isWork, SigninBean e) {
+        long workTime;
+        if (isWork) {//上班
+            workTime = getTimeByHHmm(e.getWorkTime());
+            if (System.currentTimeMillis() < workTime && StringUtils.isEmpty(e.getWorkSignin())) {
+                return false;
+            } else {
+                return true;
+            }
+        } else {//下班
+            workTime = getTimeByHHmm(e.getOffSignin());
+            if (System.currentTimeMillis() < workTime && StringUtils.isEmpty(e.getOffSignin())) {
+                return false;
+            } else {
+                return true;
+            }
+        }
+    }
+
+    /**
+     * 判断当前时间的前10秒
+     *
+     * @param workTime 当天上班时间戳
+     * @return
+     */
+    private long recursiveByWork(long workTime) {
+        int[] times = {10, 8, 6, 4, 2, 0};
+        for (int e : times) {
+            long time = workTime - e * 1000 * 60;
+            if (System.currentTimeMillis() < time) {//当前时间小于 该时间点(上班前 2、4、6、8、10 分)
+                return time;
+            }
+        }
+        return -1;
+
+    }
+
+    /**
+     * 递归判断当前时间的前10秒
+     *
+     * @param times    2、4、6、8、10
+     * @param workTime 当天下班时间戳
+     * @return
+     */
+    private long recursiveByOffic(int times, long workTime) {
+        if (times == 10) return 0;
+        long time = workTime + times * 1000 * 60;
+        if (System.currentTimeMillis() < time) {//当前时间小于 该时间点(上班前 2、4、6、8、10 分)
+            return time;
+        } else {
+            recursiveByOffic(times + 2, workTime);
+        }
+        return 0;
+    }
+
     private long getTimeByHHmm(String time) {
         String che = TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + time + ":00";//当天下班时间
         return TimeUtils.f_str_2_long(che);
@@ -94,16 +241,16 @@ public class AlarmManage {
 
 
     private void setNextAlarm(Context ct, String action, long time) {
-        String str = TimeUtils.f_long_2_str(time);
         if (time < System.currentTimeMillis()) return;
-        if (AppConfig.DEBUG)
-            Toast.makeText(ct, "提醒时间为:" + str, Toast.LENGTH_SHORT).show();
+//        String str = TimeUtils.f_long_2_str(time);
+//        if (AppConfig.DEBUG)
+//            Toast.makeText(ct, "提醒时间为:" + str, Toast.LENGTH_SHORT).show();
         Intent intent = new Intent(ct, AlarmReceiver.class);
         intent.setAction(StringUtils.isEmpty(action) ? WORK_ALARM_ACTION : action);
         AlarmManager alarm = (AlarmManager) ct.getSystemService(ALARM_SERVICE);
         Calendar calendar = Calendar.getInstance();
         calendar.setTimeInMillis(time);
-        alarm.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, calendar.getTimeInMillis(), getPendingIntent(ct, intent));
+        alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), getPendingIntent(ct, intent));
     }
 
     //清空提醒

+ 56 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmReceiver.java

@@ -7,6 +7,8 @@ import android.database.SQLException;
 import android.os.Handler;
 import android.os.Message;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.xzjmyk.pm.activity.BdLocationHelper;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.bean.oa.SigninBean;
@@ -25,6 +27,9 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
+import static com.alibaba.fastjson.JSON.parseObject;
+import static com.xzjmyk.pm.activity.ui.erp.net.ViewUtil.ct;
+
 
 /**
  * Created by pengminggong on 2016/10/26.
@@ -130,18 +135,69 @@ public class AlarmReceiver extends BroadcastReceiver {
         ViewUtil.httpSendRequest(ct, url, param, handler, headers, 0x11, null, null, "get");
     }
 
+    //获取打卡记录 date:yyyy-MM-dd
+    private void loadLog() {
+        String date = TimeUtils.s_long_2_str(System.currentTimeMillis());
+        //获取网络数据
+        String url = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_baseurl") + "mobile/oa/workdata.action";
+        Map<String, Object> param = new HashMap<>();
+        String code = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username");
+        param.put("currentMaster", CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master"));
+        param.put("page", 1);
+        param.put("pageSize", 1000);
+        param.put("condition", "cl_emcode='" + code + "' and to_char(cl_time,'yyyy-MM-dd')='" + date + "'");
+        param.put("caller", "CardLog");
+        param.put("emcode", code);
+        param.put("master", CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master"));
+        param.put("sessionUser", CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username"));
+        param.put("sessionId", CommonUtil.getSharedPreferences(MyApplication.getInstance(), "sessionId"));
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+        ViewUtil.httpSendRequest(MyApplication.getInstance(), url, param, handler, headers, 0x12, null, null, "get");
+    }
+
+
     private Handler handler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
+            String message = msg.getData().getString("result");
             switch (msg.what) {
                 case 0x11:
+                    loadLog();
 //                    Toast.makeText(MyApplication.getInstance(), R.string.auto_signin, Toast.LENGTH_SHORT).show();
                     NotificationManage notificationManage = new NotificationManage();
                     notificationManage.sendNotification(MyApplication.getInstance(), "系统已为你自动打卡成功", SigninActivity.class);
                     break;
+                case 0x12:
+                    if (parseObject(message).containsKey("listdata")) {
+                        setDataByLogs(parseObject(message).getJSONArray("listdata"));
+                    }
+                    break;
                 default:
                     break;
             }
         }
     };
+
+    //处理数据,获取到用户签到列表
+    public void setDataByLogs(JSONArray array) {
+        List<SigninBean> beans = SigninDao.getInstance(ct).queryByEmcode();
+        if (ListUtils.isEmpty(beans)) return;
+        //取最后一个
+        JSONObject object = array.getJSONObject(array.size() - 1);
+        String time = object.getString("cl_time");
+        if (!StringUtils.isEmpty(time)) {
+            time = clearDay(time);
+            for (SigninBean e : beans) {
+
+            }
+        } else {
+
+        }
+    }
+
+    //获取打卡时间列表去除年月日和秒
+    private String clearDay(String time) {
+        return TimeUtils.long2str(TimeUtils.f_str_2_long(time), "HH:mm");
+    }
 }

+ 81 - 67
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/SubscriptionActivity.java

@@ -29,8 +29,8 @@ import com.xzjmyk.pm.activity.ui.erp.activity.SubcribeManageActivity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
+import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
-import com.xzjmyk.pm.activity.ui.tool.ThreadPool;
 import com.xzjmyk.pm.activity.util.LoadLocalImageUtil;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.util.ToastUtil;
@@ -48,7 +48,6 @@ import java.util.Map;
  */
 public class SubscriptionActivity extends BaseActivity {
     private static final int LOAD_NET = 0x15;
-    private int requestCode = 0x01;
     private String emCode;
     private String baseUrl;
     private PullToRefreshListView listView;
@@ -88,14 +87,6 @@ public class SubscriptionActivity extends BaseActivity {
                         ToastUtil.showToast(ct, message == null ? "" : message);
                     }
                     break;
-                case RESULT_OK:
-                    if (adapter == null) {
-                        adapter = new SubscriptionAdapter();
-                        listView.getRefreshableView().setAdapter(adapter);
-                    } else {
-                        notifyAdapter();
-                    }
-                    break;
                 case Constants.APP_SOCKETIMEOUTEXCEPTION:
                     ToastUtil.showToast(ct, "系统内部错误");
                     break;
@@ -133,6 +124,7 @@ public class SubscriptionActivity extends BaseActivity {
         super.onBackPressed();
         finish();
     }
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -156,6 +148,7 @@ public class SubscriptionActivity extends BaseActivity {
                 calendar.set(Calendar.MINUTE, 0);
                 calendar.set(Calendar.SECOND, 0);
                 newlong = calendar.getTimeInMillis();
+                oldTime=newlong;
                 loadNetData(newlong);//获取当天的网络数据
             }
 
@@ -169,11 +162,17 @@ public class SubscriptionActivity extends BaseActivity {
                     newlong = oldTime - daylong;
                 }
                 oldTime = newlong;
-                SubscriptionMessages = SubscriptionDao.getInstance().findByDate(newlong , (daylong + newlong) , emCode);//获取数据库
-                if (SubscriptionMessages == null || SubscriptionMessages.size() <= 0) {//数据库中没有数据
+                SubscriptionMessages = SubscriptionDao.getInstance().findByDate(newlong, (daylong + newlong), emCode);//获取数据库
+                if (ListUtils.isEmpty(SubscriptionMessages)) {//数据库中没有数据
                     loadNetData(newlong);
                 } else {//数据库中有数据
                     loadMore();
+                    listView.postDelayed(new Runnable() {
+                        @Override
+                        public void run() {
+                            listView.onRefreshComplete();
+                        }
+                    }, 500);
                 }
             }
         });
@@ -189,83 +188,86 @@ public class SubscriptionActivity extends BaseActivity {
         calendar.set(Calendar.MINUTE, 0);
         calendar.set(Calendar.SECOND, 0);
         newlong = calendar.getTimeInMillis();
-        SubscriptionMessages = SubscriptionDao.getInstance().findByDate(newlong , newlong + daylong, emCode);
+        SubscriptionMessages = SubscriptionDao.getInstance().findByDate(newlong, newlong + daylong, emCode);
         if (SubscriptionMessages != null && SubscriptionMessages.size() > 0) {//当天数据库有数据
             loadMore();
         } else {//当天数据库没有数据
             loadNetData(newlong);
         }
-
     }
 
     private void refresh() {
-        ThreadPool.getThreadPool().addTask(new Runnable() {
-            @Override
-            public void run() {
-                SortSubsrciprion sortSubsrciprion = null;
-                for (int i = 0; i < SubscriptionMessages.size(); i++) {
-                    sortSubsrciprion = new SortSubsrciprion();
-                    sortSubsrciprion.tiem = Long.parseLong(SubscriptionMessages.get(i).getCREATEDATE_());
-                    sortSubsrciprion.time = TimeUtils.s_long_2_str(sortSubsrciprion.tiem);
-                    sortSubsrciprion.beans = new ArrayList<>();
-                    sortSubsrciprion.beans.add(SubscriptionMessages.get(i));
-                    if (sortSubsrciprions.size() > 0) {
-                        for (int j = 0; j < sortSubsrciprions.size(); j++) {
-                            if (sortSubsrciprion.time.equals(sortSubsrciprions.get(j).time)) {//如果相同
-                                sortSubsrciprions.get(j).beans.add(SubscriptionMessages.get(i));
-                                break;
-                            } else if (j == (sortSubsrciprions.size() - 1)) {//如果到最后一个都不相同
-                                sortSubsrciprions.add(sortSubsrciprion);
-                                break;
-                            }
-                        }
-                    } else {
+        SortSubsrciprion sortSubsrciprion = null;
+        for (int i = 0; i < SubscriptionMessages.size(); i++) {
+            sortSubsrciprion = new SortSubsrciprion();
+            sortSubsrciprion.tiem = Long.parseLong(SubscriptionMessages.get(i).getCREATEDATE_());
+            sortSubsrciprion.time = TimeUtils.s_long_2_str(sortSubsrciprion.tiem);
+            sortSubsrciprion.beans = new ArrayList<>();
+            sortSubsrciprion.beans.add(SubscriptionMessages.get(i));
+            if (sortSubsrciprions.size() > 0) {
+                for (int j = 0; j < sortSubsrciprions.size(); j++) {
+                    if (sortSubsrciprion.time.equals(sortSubsrciprions.get(j).time)) {//如果相同
+                        sortSubsrciprions.get(j).beans.add(SubscriptionMessages.get(i));
+                        break;
+                    } else if (j == (sortSubsrciprions.size() - 1)) {//如果到最后一个都不相同
                         sortSubsrciprions.add(sortSubsrciprion);
+                        break;
                     }
                 }
-                handler.sendEmptyMessage(RESULT_OK);
+            } else {
+                sortSubsrciprions.add(sortSubsrciprion);
             }
-        });
+        }
+        doVistOk();
+    }
 
+    private void doVistOk() {
+        if (adapter == null) {
+            adapter = new SubscriptionAdapter();
+            adapter.setSortSubsrciprions(sortSubsrciprions);
+            listView.getRefreshableView().setAdapter(adapter);
+        } else {
+            notifyAdapter();
+        }
     }
 
     private void loadMore() {
-        ThreadPool.getThreadPool().addTask(new Runnable() {
-            @Override
-            public void run() {
-                if (sortSubsrciprions == null)
-                    sortSubsrciprions = new ArrayList<>();
-                ArrayList<SortSubsrciprion> chche = new ArrayList<>();
-                SortSubsrciprion sortSubsrciprion = null;
-                for (int i = 0; i < SubscriptionMessages.size(); i++) {
-                    sortSubsrciprion = new SortSubsrciprion();
-                    sortSubsrciprion.tiem = Long.parseLong(SubscriptionMessages.get(i).getCREATEDATE_());
-                    sortSubsrciprion.time = TimeUtils.s_long_2_str(sortSubsrciprion.tiem);
-                    sortSubsrciprion.beans = new ArrayList<>();
-                    sortSubsrciprion.beans.add(SubscriptionMessages.get(i));
-                    if (chche.size() > 0) {
-                        for (int j = 0; j < chche.size(); j++) {
-                            if (sortSubsrciprion.time.equals(chche.get(j).time)) {//如果相同
-                                chche.get(j).beans.add(SubscriptionMessages.get(i));
-                                break;
-                            } else if (j == (chche.size() - 1)) {//如果到最后一个都不相同
-                                chche.add(sortSubsrciprion);
-                                break;
-                            }
-                        }
-                    } else {
+        if (sortSubsrciprions == null)
+            sortSubsrciprions = new ArrayList<>();
+        ArrayList<SortSubsrciprion> chche = new ArrayList<>();
+        SortSubsrciprion sortSubsrciprion = null;
+        for (int i = 0; i < SubscriptionMessages.size(); i++) {
+            sortSubsrciprion = new SortSubsrciprion();
+            sortSubsrciprion.tiem = Long.parseLong(SubscriptionMessages.get(i).getCREATEDATE_());
+            sortSubsrciprion.time = TimeUtils.s_long_2_str(sortSubsrciprion.tiem);
+            sortSubsrciprion.beans = new ArrayList<>();
+            sortSubsrciprion.beans.add(SubscriptionMessages.get(i));
+            if (chche.size() > 0) {
+                for (int j = 0; j < chche.size(); j++) {
+                    if (sortSubsrciprion.time.equals(chche.get(j).time)) {//如果相同
+                        chche.get(j).beans.add(SubscriptionMessages.get(i));
+                        break;
+                    } else if (j == (chche.size() - 1)) {//如果到最后一个都不相同
                         chche.add(sortSubsrciprion);
+                        break;
                     }
                 }
-                sortSubsrciprions.addAll(chche);
-                handler.sendEmptyMessage(RESULT_OK);
+            } else {
+                chche.add(sortSubsrciprion);
             }
-        });
+        }
+        sortSubsrciprions.addAll(chche);
+        doVistOk();
     }
 
     private void notifyAdapter() {
         if (adapter != null)
-            adapter.notifyDataSetChanged();
+            adapter.setSortSubsrciprions(sortSubsrciprions);
+        else {
+            adapter = new SubscriptionAdapter();
+            adapter.setSortSubsrciprions(sortSubsrciprions);
+            listView.setAdapter(adapter);
+        }
     }
 
     private void setData() {//网络获取数据时候
@@ -288,7 +290,7 @@ public class SubscriptionActivity extends BaseActivity {
     }
 
     private void clearDataToDB(long newlong, long date) {
-         SubscriptionDao.getInstance().deleteMessage(newlong, date, emCode);
+        SubscriptionDao.getInstance().deleteMessage(newlong, date, emCode);
     }
 
     private void saveDataToDB(List<SubscriptionMessage> subscriptionMessages) {
@@ -312,6 +314,7 @@ public class SubscriptionActivity extends BaseActivity {
                 }).create().show();
     }
 
+    //获取数据
     public void loadNetData(long date) {
         //获取网络数据
         String url = baseUrl + "common/desktop/subs/getSubs.action";
@@ -326,11 +329,22 @@ public class SubscriptionActivity extends BaseActivity {
 
     //外层list
     class SubscriptionAdapter extends BaseAdapter {
+        List<SortSubsrciprion> sortSubsrciprions;
+
+        public List<SortSubsrciprion> getSortSubsrciprions() {
+            return sortSubsrciprions;
+        }
+
+        public void setSortSubsrciprions(List<SortSubsrciprion> sortSubsrciprions) {
+            this.sortSubsrciprions = sortSubsrciprions;
+            notifyDataSetChanged();
+        }
+
         private ListAdapter listAdapter = null;
 
         @Override
         public int getCount() {
-            return sortSubsrciprions.size();
+            return ListUtils.isEmpty(sortSubsrciprions) ? 0 : sortSubsrciprions.size();
         }
 
         @Override

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

@@ -10,6 +10,7 @@
         android:layout_width="match_parent"
         android:layout_height="@dimen/item_height"
         android:layout_margin="2dp"
+        android:visibility="gone"
         android:background="@drawable/oa_signin_tv_bg"
         android:padding="8dp">