|
|
@@ -6,9 +6,12 @@ import android.util.Log;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baidu.mapapi.model.LatLng;
|
|
|
import com.xzjmyk.pm.activity.AppConfig;
|
|
|
import com.xzjmyk.pm.activity.MyApplication;
|
|
|
+import com.xzjmyk.pm.activity.db.dao.MissionDao;
|
|
|
import com.xzjmyk.pm.activity.db.dao.WorkModelDao;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.entity.MissionPlanEntity;
|
|
|
import com.xzjmyk.pm.activity.ui.erp.model.WorkModel;
|
|
|
import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
|
|
|
import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
|
|
|
@@ -20,6 +23,7 @@ import com.xzjmyk.pm.activity.util.TimeUtils;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
import static com.xzjmyk.pm.activity.ui.erp.util.CommonUtil.getSharedPreferences;
|
|
|
@@ -35,17 +39,21 @@ public class CacheAutoUtil implements HttpHandler.OnResultListener {
|
|
|
private final int MAC_VAL = 0x13;//判断mac地址
|
|
|
private final int HAVE_OUT_PLAN = 0x14;//判断是否还有外勤
|
|
|
private final int LOAD_PLAN = 0x15;//外勤计划
|
|
|
+ private OnLoadListener onLoadListener;
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- public CacheAutoUtil() {
|
|
|
+ public CacheAutoUtil(OnLoadListener onLoadListener) {
|
|
|
+ this.onLoadListener = onLoadListener;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@Override
|
|
|
public void result(int what, boolean isJSON, String message, Bundle bundle) {
|
|
|
try {
|
|
|
- handlerSuccess(what, isJSON, message, bundle);
|
|
|
+ if (isJSON) {
|
|
|
+ JSONObject object = JSON.parseObject(message);
|
|
|
+ handlerSuccess(what, object, bundle);
|
|
|
+ } else {
|
|
|
+ //TODO 返回不是json数据的情况
|
|
|
+ }
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
@@ -54,20 +62,21 @@ public class CacheAutoUtil implements HttpHandler.OnResultListener {
|
|
|
@Override
|
|
|
public void error(int what, int statuCode, String message, Bundle bundle) {
|
|
|
try {
|
|
|
+ //TODO 返回错误时候
|
|
|
+
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 获取打卡班次 net
|
|
|
+ * 获取打卡班次,为了自动打卡,只缓存当天的数据 net
|
|
|
*/
|
|
|
- public void loadWorkData(long time) {
|
|
|
+ public void loadWorkData() {
|
|
|
Map<String, Object> param = new HashMap<>();
|
|
|
- param.put("date", TimeUtils.int_long_2_str(time));
|
|
|
+ param.put("date", TimeUtils.int_long_2_str(System.currentTimeMillis()));
|
|
|
param.put("emcode", getSharedPreferences(MyApplication.getInstance(), "erp_username"));
|
|
|
Bundle bundle = new Bundle();
|
|
|
- bundle.putLong("time", time);
|
|
|
HttpHandler.getInstance().loadERPByNet(WORK_DATA, "mobile/getWorkDate.action", param, bundle, this);
|
|
|
}
|
|
|
|
|
|
@@ -106,7 +115,7 @@ public class CacheAutoUtil implements HttpHandler.OnResultListener {
|
|
|
/**
|
|
|
* 获取是否有外勤计划 net
|
|
|
*/
|
|
|
- public void loadIsMission() {
|
|
|
+ public void loadhasMission() {
|
|
|
Map<String, Object> param = new HashMap<>();
|
|
|
param.put("emcode", CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username"));
|
|
|
HttpHandler.getInstance().
|
|
|
@@ -123,34 +132,48 @@ public class CacheAutoUtil implements HttpHandler.OnResultListener {
|
|
|
loadERPByNet(LOAD_PLAN, "mobile/mobileoutplan.action", param, null, this);
|
|
|
}
|
|
|
|
|
|
- /*************************************
|
|
|
+ /*****************
|
|
|
* 处理数据
|
|
|
- * ********************************************
|
|
|
+ ********************/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 当访问网络获取数据成功
|
|
|
*
|
|
|
- * @param what
|
|
|
- * @param isJSON
|
|
|
- * @param message
|
|
|
- * @param bundle
|
|
|
+ * @param what 请求标识
|
|
|
+ * @param object json对象
|
|
|
+ * @param bundle bundle对象
|
|
|
+ * @throws Exception
|
|
|
*/
|
|
|
- private void handlerSuccess(int what, boolean isJSON, String message, Bundle bundle) throws Exception {
|
|
|
+ private void handlerSuccess(int what, JSONObject object, Bundle bundle) throws Exception {
|
|
|
switch (what) {
|
|
|
case WORK_DATA://打卡班次
|
|
|
- long time = System.currentTimeMillis();
|
|
|
- if (bundle != null) time = bundle.getLong("time");
|
|
|
- handlerWorkData(isJSON, message, time);
|
|
|
+ handlerWorkData(object);
|
|
|
break;
|
|
|
case WORK_LOG://打卡列表
|
|
|
- long logTime = System.currentTimeMillis();
|
|
|
ArrayList<WorkModel> models = null;
|
|
|
if (bundle != null) models = bundle.getParcelableArrayList("models");
|
|
|
- if (bundle != null) logTime = bundle.getLong("time");
|
|
|
- handlerWorkLog(isJSON, message, models,logTime);
|
|
|
+ handlerWorkLog(object, models);
|
|
|
break;
|
|
|
case MAC_VAL://判断mac地址
|
|
|
+ String emcode = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username");
|
|
|
+ PreferenceUtils.putBoolean("MAC" + emcode, true);
|
|
|
break;
|
|
|
case HAVE_OUT_PLAN://判断是否还有外勤
|
|
|
+ if (!object.containsKey("success") || !object.getBoolean("success")) return;
|
|
|
+ if (object.containsKey("isOffline")) {
|
|
|
+ int isOffline = Integer.valueOf(object.getString("isOffline"));
|
|
|
+ //当判断到外勤计划为有值 1.外勤计划有 2.自动外勤
|
|
|
+ PreferenceUtils.putBoolean(AppConfig.HAVE_OUT_PLAN, isOffline > 0);
|
|
|
+ }
|
|
|
break;
|
|
|
case LOAD_PLAN://外勤计划
|
|
|
+ JSONArray array = null;
|
|
|
+ if (object.get("data") instanceof JSONArray) {
|
|
|
+ array = object.getJSONArray("data");
|
|
|
+ } else if (object.get("success") instanceof JSONArray) {
|
|
|
+ array = object.getJSONArray("success");
|
|
|
+ }
|
|
|
+ handlerMission(array);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
@@ -159,13 +182,9 @@ public class CacheAutoUtil implements HttpHandler.OnResultListener {
|
|
|
/**
|
|
|
* 处理打卡签到
|
|
|
*
|
|
|
- * @param isJSON
|
|
|
- * @param message
|
|
|
- * @param time
|
|
|
+ * @param object json对象
|
|
|
*/
|
|
|
- private void handlerWorkData(boolean isJSON, String message, long time) throws Exception {
|
|
|
- if (!isJSON) return;
|
|
|
- JSONObject object = JSON.parseObject(message);
|
|
|
+ private void handlerWorkData(JSONObject object) throws Exception {
|
|
|
double longitude = 0, latitude = 0;
|
|
|
int distance = 0;
|
|
|
boolean comaddressset = object.getBooleanValue("comaddressset");
|
|
|
@@ -202,7 +221,7 @@ public class CacheAutoUtil implements HttpHandler.OnResultListener {
|
|
|
if (ListUtils.isEmpty(models)) {
|
|
|
return;
|
|
|
}
|
|
|
- loadLog(models, time);
|
|
|
+ loadLog(models, System.currentTimeMillis());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -249,19 +268,10 @@ public class CacheAutoUtil implements HttpHandler.OnResultListener {
|
|
|
/**
|
|
|
* 处理打卡签到列表,建议在线程钟使用
|
|
|
*
|
|
|
- * @param isJSON 是否是json数据
|
|
|
- * @param message 返回信息
|
|
|
- * @param models 获取班次信息时候的数据
|
|
|
- * @param logTime
|
|
|
+ * @param models 获取班次信息时候的数据
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
- private void handlerWorkLog(boolean isJSON, String message, ArrayList<WorkModel> models, long logTime) throws Exception {
|
|
|
- if (!isJSON || ListUtils.isEmpty(models)) {
|
|
|
- //TODO 数据为空,容错处理
|
|
|
- log("ListUtils.isEmpty(models) 数据为空,容错处理");
|
|
|
- return;
|
|
|
- }
|
|
|
- JSONObject object = JSON.parseObject(message);
|
|
|
+ private void handlerWorkLog(JSONObject object, ArrayList<WorkModel> models) throws Exception {
|
|
|
JSONArray listdata = object.getJSONArray("listdata");
|
|
|
if (ListUtils.isEmpty(listdata)) {
|
|
|
//TODO 数据为空,容错处理
|
|
|
@@ -293,7 +303,53 @@ public class CacheAutoUtil implements HttpHandler.OnResultListener {
|
|
|
}
|
|
|
}
|
|
|
//保存数据库
|
|
|
- WorkModelDao.getInstance().createOrUpdata(models,logTime);
|
|
|
+ WorkModelDao.getInstance().createOrUpdata(models);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 解析处理外勤计划列表并保存到数据库
|
|
|
+ *
|
|
|
+ * @param array
|
|
|
+ */
|
|
|
+ private void handlerMission(JSONArray array) throws Exception {
|
|
|
+ if (ListUtils.isEmpty(array)) {
|
|
|
+ //TODO 外勤计划列表为空情况
|
|
|
+ return; //获取到拜访计划数据
|
|
|
+ }
|
|
|
+ JSONObject object = null;
|
|
|
+ MissionPlanEntity entity = null;
|
|
|
+ List<MissionPlanEntity> entities = new ArrayList<>();
|
|
|
+ for (int i = 0; i < array.size(); i++) {
|
|
|
+ object = array.getJSONObject(i);
|
|
|
+ entity = new MissionPlanEntity();
|
|
|
+ entity.setId(object.getInteger("MPD_ID"));
|
|
|
+ entity.setCompanyName(object.getString("MPD_COMPANY"));
|
|
|
+ entity.setCompanyAddr(object.getString("MPD_ADDRESS"));
|
|
|
+ double longitude = object.getDoubleValue("MD_LONGITUDE");
|
|
|
+ double latitude = object.getDoubleValue("MD_LATITUDE");
|
|
|
+ if (longitude > 0 && latitude > 0) {
|
|
|
+ entity.setLatLng(new LatLng(latitude, longitude));
|
|
|
+ }
|
|
|
+ if (object.containsKey("MPD_ARRIVEDATE")) {
|
|
|
+ entity.setVisitTime(object.getString("MPD_ARRIVEDATE"));
|
|
|
+ } else if (object.containsKey("TO_CHAR(MPD_ARRIVEDATE,'YYYY-MM-DDHH24:MI:SS')")) {
|
|
|
+ entity.setVisitTime(object.getString("TO_CHAR(MPD_ARRIVEDATE,'YYYY-MM-DDHH24:MI:SS')"));
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ long mpd_actdate = object.getLongValue("MPD_ACTDATE");
|
|
|
+ long mpd_outdate = object.getLongValue("MPD_OUTDATE");
|
|
|
+ if (mpd_actdate != 0)
|
|
|
+ entity.setRealTime(TimeUtils.f_long_2_str(mpd_actdate));
|
|
|
+ if (mpd_outdate != 0)
|
|
|
+ entity.setRealLeave(TimeUtils.f_long_2_str(mpd_outdate));
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ entity.setStatus(0);
|
|
|
+ entities.add(entity);
|
|
|
+ }
|
|
|
+ if (!ListUtils.isEmpty(entities))
|
|
|
+ MissionDao.getInstance().updataOrCreate(entities);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -310,14 +366,6 @@ public class CacheAutoUtil implements HttpHandler.OnResultListener {
|
|
|
return TimeUtils.long2str(time, "HH:mm");
|
|
|
}
|
|
|
|
|
|
- public interface LoadListener {
|
|
|
- //正确信息
|
|
|
- void loadOk(String message);
|
|
|
-
|
|
|
- //错误信息
|
|
|
- void loadError(String message);
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
private String getMinTime(String time) {
|
|
|
if (StringUtils.isEmpty(time)) {
|
|
|
@@ -327,6 +375,25 @@ public class CacheAutoUtil implements HttpHandler.OnResultListener {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ public interface OnLoadListener {
|
|
|
+ /**
|
|
|
+ * 下拉正确时候
|
|
|
+ *
|
|
|
+ * @param saveOk 是否保存成功
|
|
|
+ * @param flag 标识位
|
|
|
+ */
|
|
|
+ void loadOk(boolean saveOk, int flag);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理错误情况
|
|
|
+ *
|
|
|
+ * @param flag 标识位
|
|
|
+ * @param message 错误原因
|
|
|
+ */
|
|
|
+ void loadError(int flag, String message);
|
|
|
+ }
|
|
|
+
|
|
|
private void log(String message) {
|
|
|
try {
|
|
|
if (!AppConfig.DEBUG || StringUtils.isEmpty(message)) return;
|