|
|
@@ -52,6 +52,7 @@ public class MissionPresenter implements IMissionPresenter, OnHttpResultListener
|
|
|
private final int SAVE_ADDRESS = 0x13;
|
|
|
private final int SIGNIN_MISSION = 0x17;
|
|
|
private final int FIND_LIKER = 0x18;
|
|
|
+ private final int END_MISSION = 0x19;
|
|
|
private IMission iMission;
|
|
|
private boolean isB2b;
|
|
|
private MissionModel modelIntent;
|
|
|
@@ -115,15 +116,12 @@ public class MissionPresenter implements IMissionPresenter, OnHttpResultListener
|
|
|
if (isSubmiting) return;
|
|
|
List<MissionModel> plans = new ArrayList<>();
|
|
|
for (MissionModel e : models) {
|
|
|
- LogUtil.i(JSON.toJSONString(e));
|
|
|
- LogUtil.i("_________________________");
|
|
|
if (e.getStatus() != 0) {
|
|
|
plans.add(e);
|
|
|
}
|
|
|
}
|
|
|
MissionModel mission = reckonMission(plans);//判断
|
|
|
if (mission != null) {
|
|
|
- //TODO 打卡
|
|
|
LogUtil.i(JSON.toJSONString(mission));
|
|
|
signinMission(mission);
|
|
|
}
|
|
|
@@ -383,6 +381,7 @@ public class MissionPresenter implements IMissionPresenter, OnHttpResultListener
|
|
|
|
|
|
//获取外勤计划列表
|
|
|
public void loadMissionPlan() {
|
|
|
+ iMission.showLoading();
|
|
|
Map<String, Object> param = new HashMap<>();
|
|
|
param.put("emcode", CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username"));
|
|
|
|
|
|
@@ -414,12 +413,16 @@ public class MissionPresenter implements IMissionPresenter, OnHttpResultListener
|
|
|
OAHttpHelper.getInstance().requestHttp(request, this);
|
|
|
}
|
|
|
|
|
|
+ private boolean submiting = false;
|
|
|
+
|
|
|
public void signinMission(MissionModel model) {
|
|
|
if (model == null) return;
|
|
|
if (!MyApplication.getInstance().isNetworkActive()) {
|
|
|
iMission.showToast(R.string.networks_out, R.color.load_error);
|
|
|
return;
|
|
|
}
|
|
|
+ if (submiting) return;
|
|
|
+ submiting = true;
|
|
|
iMission.showLoading();
|
|
|
Map<String, Object> param = new HashMap<>();
|
|
|
Map<String, Object> formStore = new HashMap<>();
|
|
|
@@ -428,8 +431,7 @@ public class MissionPresenter implements IMissionPresenter, OnHttpResultListener
|
|
|
String address = MyApplication.getInstance().getBdLocationHelper().getAddress();
|
|
|
if (StringUtil.isEmpty(address))
|
|
|
address = model.getCompanyAddr();
|
|
|
- String remark = model.getStatus() == 2 ? MyApplication.getInstance().getString(R.string.auto_mission_signindown)
|
|
|
- : MyApplication.getInstance().getString(R.string.auto_mission_signinup);
|
|
|
+ String remark = model.getStatus() == 2 ? "手动外勤签退" : "手动外勤签到";
|
|
|
String location = model.getCompanyName();
|
|
|
if (StringUtil.isEmpty(location) || isB2b)
|
|
|
location = MyApplication.getInstance().getBdLocationHelper().getName();
|
|
|
@@ -461,6 +463,29 @@ public class MissionPresenter implements IMissionPresenter, OnHttpResultListener
|
|
|
OAHttpHelper.getInstance().requestHttp(request, this);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 更新外勤计划状态
|
|
|
+ *
|
|
|
+ * @param id 外勤id
|
|
|
+ * @param isDone 是否已完成,否则未签退
|
|
|
+ */
|
|
|
+ public void endMission(int id, boolean isDone) {
|
|
|
+ if (id == 0) return;
|
|
|
+ boolean isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
|
|
|
+ Map<String, Object> param = new HashMap<>();
|
|
|
+ param.put("id", id);
|
|
|
+ String url = isB2b ? ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().updateOutplanStatus : "mobile/mobileplanUpdate.action";
|
|
|
+ if (isB2b)
|
|
|
+ param.put("statuscode", isDone ? "done" : "CHECKOUT");
|
|
|
+ Request request = new Request.Bulider()
|
|
|
+ .setWhat(END_MISSION)
|
|
|
+ .setUrl(url)
|
|
|
+ .setParam(param)
|
|
|
+ .setMode(Request.Mode.POST)
|
|
|
+ .bulid();
|
|
|
+ OAHttpHelper.getInstance().requestHttp(request, this);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void result(int what, boolean isJSON, String message, Bundle bundle) {
|
|
|
try {
|
|
|
@@ -475,6 +500,7 @@ public class MissionPresenter implements IMissionPresenter, OnHttpResultListener
|
|
|
array = object.getJSONArray("success");
|
|
|
}
|
|
|
handlerData(array);
|
|
|
+ submiting = false;
|
|
|
break;
|
|
|
case SAVE_PLAN:
|
|
|
isSubmiting = false;
|
|
|
@@ -527,13 +553,22 @@ public class MissionPresenter implements IMissionPresenter, OnHttpResultListener
|
|
|
case SIGNIN_MISSION:
|
|
|
if (JSON.parseObject(message).containsKey("success") && JSON.parseObject(message).getBoolean("success")) {
|
|
|
//成功 更新数据库
|
|
|
-// if (bundle == null) return;
|
|
|
-// MissionModel mission = bundle.getParcelable("data");
|
|
|
-// if (mission == null) return;
|
|
|
- iMission.showToast("手动签到成功", R.color.load_error);
|
|
|
- loadMissionPlan();
|
|
|
+ if (bundle != null) {
|
|
|
+ MissionModel mission = bundle.getParcelable("data");
|
|
|
+ if (mission == null) {
|
|
|
+ if (mission.getStatus() == 2) {//签退
|
|
|
+ iMission.showToast("手动签退成功", R.color.load_error);
|
|
|
+ endMission(mission.getId(), false);
|
|
|
+ } else {
|
|
|
+ loadMissionPlan();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
+ case END_MISSION:
|
|
|
+ loadMissionPlan();
|
|
|
+ break;
|
|
|
case FIND_LIKER:
|
|
|
if (isJSON) {
|
|
|
JSONArray datas = JSONUtil.getJSONArray(object, "datas");
|
|
|
@@ -624,7 +659,7 @@ public class MissionPresenter implements IMissionPresenter, OnHttpResultListener
|
|
|
return minBean;
|
|
|
}
|
|
|
for (MissionModel e : list) {
|
|
|
- if (!timeAllowMission(e)) continue;//时间上不符合该外勤签到或签退
|
|
|
+// if (!timeAllowMission(e)) continue;//时间上不符合该外勤签到或签退
|
|
|
if (e.getLatLng() == null) continue;//定位不存在
|
|
|
//获取当前与目的地的距离
|
|
|
float distance = BaiduMapUtil.getInstence().autoDistance(e.getLatLng());
|