Browse Source

监控日志 完成

FANGLH 9 years ago
parent
commit
7cdeb375fa

+ 57 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/SignAutoLogEntity.java

@@ -0,0 +1,57 @@
+package com.xzjmyk.pm.activity.bean.oa;
+
+import com.alibaba.fastjson.annotation.JSONField;
+
+/**
+ * Created by FANGlh on 2017/5/9.
+ * function:  打卡签到or外勤签到失败缓存本地数据实体类
+ */
+public class SignAutoLogEntity  {
+    @JSONField  // @JSONField是fastjson中的一个注解。在属性头上加上这个注解中,在对对象进行json转换时,该属性,将不会参与格式化。
+    private int id; // 数据中分配id
+
+    private String aa_type; //操作类型 打卡签到or外勤签到
+    private String aa_location; // 当前位置
+    private String aa_remark; //  失败原因
+    private String aa_date; // 时间
+    private String aa_telephone; // 手机
+    @JSONField
+    private int sendstatus; // 是否已经发送到服务端更新,true :是
+
+    public SignAutoLogEntity(int id, String aa_type, String aa_location, String aa_remark, String aa_date, String aa_telephone, int sendstatus) {
+        this.id = id;
+        this.aa_type = aa_type;
+        this.aa_location = aa_location;
+        this.aa_remark = aa_remark;
+        this.aa_date = aa_date;
+        this.aa_telephone = aa_telephone;
+        this.sendstatus = sendstatus;
+    }
+
+    public int getId() {return id;}
+    public void setId(int id) {this.id = id;}
+    public String getAa_type() {return aa_type;}
+    public void setAa_type(String aa_type) {this.aa_type = aa_type;}
+    public String getAa_location() {return aa_location;}
+    public void setAa_location(String aa_location) {this.aa_location = aa_location;}
+    public String getAa_remark() {return aa_remark;}
+    public void setAa_remark(String aa_remark) {this.aa_remark = aa_remark;}
+    public String getAa_date() {return aa_date;}
+    public void setAa_date(String aa_date) {this.aa_date = aa_date;}
+    public String getAa_telephone() {return aa_telephone;}
+    public void setAa_telephone(String aa_telephone) {this.aa_telephone = aa_telephone;}
+
+    public int getSendstatus() {return sendstatus;}
+    public void setSendstatus(int sendstatus) {this.sendstatus = sendstatus;}
+    public String toString() {
+        return "SignAutoLogEntity{" +
+                "id='" + id  +
+                ", aa_type=" + aa_type +
+                ", aa_location=" + aa_location +
+                ", aa_remark=" + aa_remark +
+                ", aa_date=" + aa_date +
+                ", aa_telephone=" + aa_telephone +
+                ", sendstatus=" + sendstatus +
+                '}';
+    }
+}

+ 78 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/SignAutoLogDao.java

@@ -0,0 +1,78 @@
+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.bean.oa.SignAutoLogEntity;
+import com.xzjmyk.pm.activity.db.DatabaseManager;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by FANGlh on 2017/5/9.
+ * function:
+ */
+public class SignAutoLogDao {
+    /**
+     * 添加一条新记录
+     *
+     * @param signAutoLogEntity
+     */
+    public static void addNewData(SignAutoLogEntity signAutoLogEntity) {
+        //TODO 获取db的方式统一使用这个,以后的方法里面使用到db的也用这个方式获取,不然有可能出现闪退
+        SQLiteDatabase stepDb = DatabaseManager.getInstance().openDatabase();
+        ContentValues values = new ContentValues();
+        values.put("aa_type", signAutoLogEntity.getAa_type());
+        values.put("aa_location",signAutoLogEntity.getAa_location());
+        values.put("aa_remark",signAutoLogEntity.getAa_remark());
+        values.put("aa_date", signAutoLogEntity.getAa_date());
+        values.put("aa_telephone",signAutoLogEntity.getAa_telephone());
+        values.put("sendstatus","0");
+        stepDb.insert("SignAutoLog", null, values);
+        DatabaseManager.getInstance().closeDatabase();
+    }
+
+    /**
+     * 查询所有的记录
+     *
+     * @return
+     */
+    public List<SignAutoLogEntity> getAllDatas() {
+        List<SignAutoLogEntity> dataList = new ArrayList<>();
+        SQLiteDatabase stepDb = DatabaseManager.getInstance().openDatabase();
+        Cursor cursor = stepDb.rawQuery("select * from SignAutoLog", null);
+
+        while (cursor.moveToNext()) {
+            int id = cursor.getInt(cursor.getColumnIndex("_id"));
+            String aa_type = cursor.getString(cursor.getColumnIndex("aa_type"));
+            String aa_location= cursor.getString(cursor.getColumnIndex("aa_location"));
+            String aa_remark = cursor.getString(cursor.getColumnIndex("aa_remark"));
+            String aa_date = cursor.getString(cursor.getColumnIndex("aa_date"));
+            String aa_telephone = cursor.getString(cursor.getColumnIndex("aa_telephone"));
+            int sendstatus = cursor.getInt(cursor.getColumnIndex("sendstatus"));
+            SignAutoLogEntity entity = new SignAutoLogEntity(id,aa_type,aa_location,aa_remark,aa_date,aa_telephone,sendstatus);
+            dataList.add(entity);
+        }
+        //关闭数据库
+        cursor.close();
+        DatabaseManager.getInstance().closeDatabase();
+        return dataList;
+    }
+
+    /**
+     * 更新数据:当某条日志提交服务器后进行本地状态的更新 将sendstatus set 为 1;
+     *
+     * @param signAutoLogEntity
+     */
+    public void updateCurData(List<SignAutoLogEntity> signAutoLogEntity) {
+        SQLiteDatabase stepDb = DatabaseManager.getInstance().openDatabase();
+        ContentValues values = new ContentValues();
+        for (int i = 0; i < signAutoLogEntity.size(); i++) {
+            values.put("_id",signAutoLogEntity.get(i).getId());
+            stepDb.update("SignAutoLog", values, "sendstatus=?",new String[]{"1"});
+        }
+        DatabaseManager.getInstance().closeDatabase();
+    }
+}

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

@@ -22,6 +22,7 @@ import android.view.KeyEvent;
 import android.view.View;
 import android.widget.TextView;
 
+import com.alibaba.fastjson.JSON;
 import com.android.volley.Response;
 import com.android.volley.VolleyError;
 import com.baidu.android.pushservice.PushConstants;
@@ -35,8 +36,10 @@ import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.bean.User;
 import com.xzjmyk.pm.activity.bean.circle.CircleMessage;
 import com.xzjmyk.pm.activity.bean.message.NewFriendMessage;
+import com.xzjmyk.pm.activity.bean.oa.SignAutoLogEntity;
 import com.xzjmyk.pm.activity.broadcast.MsgBroadcast;
 import com.xzjmyk.pm.activity.db.dao.FriendDao;
+import com.xzjmyk.pm.activity.db.dao.SignAutoLogDao;
 import com.xzjmyk.pm.activity.db.dao.UserDao;
 import com.xzjmyk.pm.activity.helper.LoginHelper;
 import com.xzjmyk.pm.activity.ui.account.LoginActivity;
@@ -44,9 +47,11 @@ import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.circle.BusinessCircleFragment;
 import com.xzjmyk.pm.activity.ui.contact.ContactFragment;
 import com.xzjmyk.pm.activity.ui.erp.fragment.WorksFragment;
+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.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.UmengUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.AutoErpService;
 import com.xzjmyk.pm.activity.ui.find.MyFriendFragment;
@@ -64,10 +69,14 @@ import com.xzjmyk.pm.activity.volley.StringJsonArrayRequest;
 import com.xzjmyk.pm.activity.xmpp.CoreService;
 import com.xzjmyk.pm.activity.xmpp.ListenerManager;
 import com.xzjmyk.pm.activity.xmpp.listener.AuthStateListener;
+import com.xzjmyk.pm.newpedo.service.StepService;
 import com.xzjmyk.pm.newpedo.utils.StepCountCheckUtil;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 import static android.view.View.GONE;
 
@@ -84,6 +93,7 @@ import static android.view.View.GONE;
  * @修改的内容: TODO
  */
 public class MainActivity extends BaseActivity implements NetWorkObservable.NetWorkObserver, AuthStateListener {
+    private static final int LOG_SEND_REQUEST = 17519;
     public static String HASHCODE = "MainActivity";
     public static boolean isUnReadWork;   //判断我的空间是否有新内容
     private static final String TAG_MESSAGE = "message";
@@ -92,6 +102,7 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
     private static final String TAG_GROUP_CHAT = "group_chat";
     private static final String TAG_ME = "me";
     private static final String TAG_BusinessCircle = "my_BusinessCircle";
+    
     /* UserCheck */
     private static final int MSG_USER_CHECK = 0x1;
     // 因为RadioGroup的check方法,会调用onCheckChange两次,用mLastFragment保存最后一次添加的fragment,防止重复add
@@ -127,6 +138,7 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
     public static int UPDATA_LIST = 101;
     public static String NEW_FUNCTION_NOTICE = "NEW_FUNCTION_NOTICE";
     private TextView main_tab_three_tv;
+    private SignAutoLogDao signAutoLogDao = new SignAutoLogDao();
     private Handler mUserCheckHander = new Handler() {
         public void handleMessage(Message msg) {
             if (msg.what == MSG_USER_CHECK) {
@@ -136,9 +148,20 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
                 mUserCheckHander.removeMessages(RETRY_CHECK_DELAY_MAX);
                 doUserCheck();
             }
+            
+            if (msg.what == LOG_SEND_REQUEST){
+                String result = msg.getData().getString("result");
+                if (!StringUtils.isEmpty(result) &&
+                        JSON.parseObject(result).containsKey("result") &&
+                        "success".equals(JSON.parseObject(result).getString("success"))){
+                    signAutoLogDao.updateCurData(signAutoLogEntity); // 将上传的日志状态标为1
+                    ToastMessage("日志上传成功");
+                }
+            }
         }
     };
     private int mImStatus = AuthStateListener.AUTH_STATE_NOT;
+    private List<SignAutoLogEntity> signAutoLogEntity;
 
     public int getmImStatus() {
         return mImStatus;
@@ -417,8 +440,8 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
             PushManager.stopWork(this);
         }
         int isUUStep = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.UU_STEP);
-        if (isUUStep != 0 && StepCountCheckUtil.isSupportStepCountSensor(this)) {
-            startService(new Intent(mContext, com.xzjmyk.pm.newpedo.service.StepService.class));
+        if (isUUStep != 0 && StepCountCheckUtil.isSupportStepCountSensor(this)) { // 开启UU运动
+            startService(new Intent(mContext, StepService.class));
 //            PreferenceUtils.putInt(NewStepActivity.UU_STEP_NOTICE, 1);
             PreferenceUtils.putInt(MainActivity.UU_STEP, 1);
             PushManager.resumeWork(MyApplication.getInstance());
@@ -501,6 +524,8 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
 //        openUUStepService();
         String ids = UmengUtil.getDeviceInfo(ct);
         LogUtil.i(ids);
+
+        doSendSignAutoLog(); // 获取数据库中监控日志上传至服务器操作
     }
 
     private Messenger messenger;
@@ -583,7 +608,36 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
             Intent intent = new Intent(this, MainActivity.class);
             startActivity(intent);
         }
+    }
+
+
+    private void doSendSignAutoLog() {
+        signAutoLogEntity = new ArrayList<>();
+        signAutoLogEntity = signAutoLogDao.getAllDatas();
+        if (ListUtils.isEmpty(signAutoLogEntity)) {
+            Log.i("fang", "Logdatas为空");
+            return;
+        }
+        LogUtil.prinlnLongMsg("signAutoLogEntity1", signAutoLogEntity+"");
+        LogUtil.prinlnLongMsg("signAutoLogEntity2", JSON.toJSONString(signAutoLogEntity));
+        for (int i = 0; i < signAutoLogEntity.size(); i++) {
+            if (signAutoLogEntity.get(i).getSendstatus() == 1){  // 状态为1则表示已经发送过到服务器
+                signAutoLogEntity.remove(i);
+                if (i == (signAutoLogEntity.size() -1)){
+                    LogSendToHttp(signAutoLogEntity);  // 开始发送
+                }
+            }
+        }
+    }
 
+    private void LogSendToHttp(List<SignAutoLogEntity> signAutoLogEntity) {
+        String url = "http://113.105.74.140:8092/user/appAutoLog";
+        Map<String, Object> param = new HashMap<>();
+        param.put("map",JSON.toJSONString(signAutoLogEntity));
+        LogUtil.prinlnLongMsg("signAutoLogEntity3", JSON.toJSONString(signAutoLogEntity));
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+        ViewUtil.httpSendRequest(this, url, param, mUserCheckHander, headers, LOG_SEND_REQUEST, null, null, "post");
     }
 
     @Override

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

@@ -14,8 +14,8 @@ import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
  * @注释:建立数据库
  */
 public class DBOpenHelper extends SQLiteOpenHelper {
-    //TODO  上一个发布版本是77
-    private static final int DATABASE_VERSION = 77;//数据库版本号(每添加一个表要增加版本号)
+    //TODO  上一个发布版本是79
+    private static final int DATABASE_VERSION = 79;//数据库版本号(每添加一个表要增加版本号)
     public static String dataBaseName = "erp.db";//数据库名称
     public Context context;
 
@@ -54,6 +54,7 @@ public class DBOpenHelper extends SQLiteOpenHelper {
             db.execSQL(Constants.WORK_LOCATION);//
             db.execSQL(Constants.EM_ERPNEWS);//
             db.execSQL(Constants.CREATE_BANNER);//
+            db.execSQL(Constants.AUTO_LOG);   //监控日志表
         } catch (Exception e) {
 
         }
@@ -92,6 +93,7 @@ public class DBOpenHelper extends SQLiteOpenHelper {
         db.execSQL("DROP TABLE IF EXISTS work_location");
         db.execSQL("DROP TABLE IF EXISTS em_erpnews");
         db.execSQL("DROP TABLE IF EXISTS step");
+        db.execSQL("DROP TABLE IF EXISTS SignAutoLog");
     }
 
     /**

+ 25 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/CommonUtil.java

@@ -57,9 +57,11 @@ import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.bean.Friend;
 import com.xzjmyk.pm.activity.bean.message.ChatMessage;
 import com.xzjmyk.pm.activity.bean.message.XmppMessage;
+import com.xzjmyk.pm.activity.bean.oa.SignAutoLogEntity;
 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.SignAutoLogDao;
 import com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.WebViewLoadActivity;
 import com.xzjmyk.pm.activity.ui.erp.db.DBManager;
@@ -1483,7 +1485,9 @@ public class CommonUtil {
     }
 
     /**
-     * 判断是不是发布版本,true:发布版本
+     * Created by FANGlh on 2017/5/5.
+     * function:判断是不是发布版本,true:发布版本
+     *
      */
     public static Boolean isReleaseVersion(){
         if (!StringUtils.isEmpty(PropertiesUtil.readData(MyApplication.getInstance(),"release_version", R.raw.versionconfiguration)) &&
@@ -1492,4 +1496,24 @@ public class CommonUtil {
         else
             return false;
     }
+
+    /**
+     * Created by FANGlh on 2017/5/5.
+     * function:日志保存本地通用方法
+     * aa_type; //操作类型 打卡签到or外勤签到
+     * aa_location; // 当前位置
+     * aa_remark; //  失败原因
+     * aa_date; // 时间
+     * aa_telephone; // 手机
+     */
+
+    public void SaveAutoLogtoLocal(String aa_type,String aa_location,String aa_remark,String aa_date,String aa_telephone ){
+        SignAutoLogEntity signAutoLogEntity = null;
+        signAutoLogEntity.setAa_type(aa_type);
+        signAutoLogEntity.setAa_location(aa_location);
+        signAutoLogEntity.setAa_remark(aa_remark);
+        signAutoLogEntity.setAa_date(aa_date);
+        signAutoLogEntity.setAa_telephone(aa_telephone);
+        SignAutoLogDao.addNewData(signAutoLogEntity);
+    }
 }

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

@@ -163,6 +163,16 @@ public class Constants {
             + ")";
 
 
+    //监控日志表
+    public static final String AUTO_LOG = "CREATE TABLE SignAutoLog ("
+            + "_id INTEGER PRIMARY KEY AUTOINCREMENT, "
+            + "aa_type TEXT, "
+            + "aa_location TEXT, "
+            + "aa_remark TEXT, "
+            + "aa_date TEXT, "
+            + "aa_telephone TEXT, "
+            + "sendstatus TEXT"
+            + ")";
     //用于创建Banner表
     public static final String CREATE_BANNER = "create table step ("
             + "_id INTEGER PRIMARY KEY AUTOINCREMENT, "

+ 6 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/oa/AutoErpSigninUitl.java

@@ -68,7 +68,11 @@ public class AutoErpSigninUitl implements OnHttpResultListener {
     private final int WORK_DATA = 0x16;//内勤列表
     private final int WORK_LOG = 0x17;//下拉列表时候的获取打卡列表
     private final int LOAD_PLAN = 0x18;
-
+    private String aa_type = "";
+    private String aa_location = "";
+    private String aa_remark = "";
+    private String aa_date = "";
+    private String aa_telephone = "";
 
     private final int LOAD_WORK_SET = 0x21;//获取打卡高级设置
     private boolean isB2b;
@@ -877,4 +881,5 @@ public class AutoErpSigninUitl implements OnHttpResultListener {
     private String getString(int id) {
         return MyApplication.getInstance().getString(id);
     }
+
 }