Commit 5ddff038 by xuxuan

打卡

parent 6b1d2514
...@@ -144,6 +144,7 @@ public class PictrueUtils { ...@@ -144,6 +144,7 @@ public class PictrueUtils {
.openGallery(SelectMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo() .openGallery(SelectMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
.setImageEngine(GlideEngine.createGlideEngine()) .setImageEngine(GlideEngine.createGlideEngine())
.setImageSpanCount(4) .setImageSpanCount(4)
.setMaxSelectNum(1)
.setSelectionMode(SelectModeConfig.MULTIPLE); .setSelectionMode(SelectModeConfig.MULTIPLE);
selector.forResult(PictureConfig.CHOOSE_REQUEST); selector.forResult(PictureConfig.CHOOSE_REQUEST);
} }
......
...@@ -21,6 +21,10 @@ public class CheckInTakePhotoPresenter extends CheckInTakePhotoContract.Present ...@@ -21,6 +21,10 @@ public class CheckInTakePhotoPresenter extends CheckInTakePhotoContract.Present
@Override @Override
public void submit(){ public void submit(){
if (mView.getPhotoPath().isEmpty()){
mView.showToast("请先选择照片");
return;
}
BaseApiFactory.uploadPhotoOne(BaseApiFactory.packPhoto(mView.getPhotoPath()), Constants.PHOTO + "/order/clockIn", "yyMM") BaseApiFactory.uploadPhotoOne(BaseApiFactory.packPhoto(mView.getPhotoPath()), Constants.PHOTO + "/order/clockIn", "yyMM")
.subscribe(this.baseObserver(img -> { .subscribe(this.baseObserver(img -> {
......
...@@ -2,20 +2,25 @@ package com.dayu.order.presenter.orderdoing; ...@@ -2,20 +2,25 @@ package com.dayu.order.presenter.orderdoing;
import static com.dayu.utils.UIUtils.getString; import static com.dayu.utils.UIUtils.getString;
import android.Manifest;
import android.app.Activity; import android.app.Activity;
import android.app.Fragment;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.location.Address;
import android.os.Bundle; import android.os.Bundle;
import androidx.core.content.ContextCompat;
import androidx.databinding.ObservableField; import androidx.databinding.ObservableField;
import androidx.fragment.app.Fragment;
import com.dayu.base.api.Api; import com.dayu.base.api.Api;
import com.dayu.common.BaseApplication; import com.dayu.common.BaseApplication;
import com.dayu.common.Constants; import com.dayu.common.Constants;
import com.dayu.event.UserInfo; import com.dayu.event.UserInfo;
import com.dayu.location.base.LocationUtils1;
import com.dayu.order.R; import com.dayu.order.R;
import com.dayu.order.api.OrderApiFactory; import com.dayu.order.api.OrderApiFactory;
import com.dayu.order.api.OrderService; import com.dayu.order.api.OrderService;
...@@ -35,9 +40,11 @@ import com.dayu.provider.event.RefreshServe; ...@@ -35,9 +40,11 @@ import com.dayu.provider.event.RefreshServe;
import com.dayu.provider.event.RefreshTab; import com.dayu.provider.event.RefreshTab;
import com.dayu.utils.AppManager; import com.dayu.utils.AppManager;
import com.dayu.utils.ToastUtils; import com.dayu.utils.ToastUtils;
import com.dayu.utils.UIUtils;
import com.dayu.utils.UserManager; import com.dayu.utils.UserManager;
import com.dayu.utils.UtilsDate; import com.dayu.utils.UtilsDate;
import com.dayu.widgets.CustomDialog; import com.dayu.widgets.CustomDialog;
import com.tbruyelle.rxpermissions2.RxPermissions;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
import org.json.JSONObject; import org.json.JSONObject;
...@@ -66,22 +73,31 @@ public class OrderDoingPresenter extends orderDoingContract.Presenter { ...@@ -66,22 +73,31 @@ public class OrderDoingPresenter extends orderDoingContract.Presenter {
private int position = 0; private int position = 0;
private int checkInPosition; private int checkInPosition;
private Activity mActivity;
private int checkinOrderId; private int checkinOrderId;
//接收打卡拍照成功通知
private BroadcastReceiver receiver = new BroadcastReceiver() { private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(CheckInTakePhotoActivity.TAKE_PHOTO_FINISH_BROADCAST)) { Fragment fragment = (Fragment) mView;
clockIn(checkinOrderId) if (intent.getAction().equals(CheckInTakePhotoActivity.TAKE_PHOTO_FINISH_BROADCAST) && (mView instanceof OrderSecondTabFragment) ) {
.observeOn(AndroidSchedulers.mainThread()) String photoUrl = intent.getStringExtra("photoUrl");
.subscribe(baseObserver(aBoolean -> {
ToastUtils.showShortToast("打卡成功"); //打卡获取到图片链接,下一步获取定位信息
setPosition(position); mView.showDialog();
EventBus.getDefault().post(new RefreshServe(1)); getLocation(checkinOrderId, photoUrl);
}, responeThrowable -> { // clockIn(checkinOrderId)
// .observeOn(AndroidSchedulers.mainThread())
})); // .subscribe(baseObserver(aBoolean -> {
// ToastUtils.showShortToast("打卡成功");
// setPosition(position);
// EventBus.getDefault().post(new RefreshServe(1));
// }, responeThrowable -> {
//
// }));
} }
} }
}; };
...@@ -290,14 +306,57 @@ public class OrderDoingPresenter extends orderDoingContract.Presenter { ...@@ -290,14 +306,57 @@ public class OrderDoingPresenter extends orderDoingContract.Presenter {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
mView.startActivityForReult(CheckInTakePhotoActivity.class, bundle, CheckInTakePhotoActivity.TAKE_PHOTO_CODE); mView.startActivityForReult(CheckInTakePhotoActivity.class, bundle, CheckInTakePhotoActivity.TAKE_PHOTO_CODE);
} }
public Observable<Boolean> clockIn(int id) {
//打卡接口
public Observable<Boolean> clockIn(int id, String photoUrl, double latitude, double longitude) {
HashMap<String, Object> params = new HashMap<>(); HashMap<String, Object> params = new HashMap<>();
params.put("orderId", id); params.put("orderId", id);
params.put("commentInfo", photoUrl);
params.put("latitude", latitude);
params.put("longitude", longitude);
JSONObject jsonObject = new JSONObject(params); JSONObject jsonObject = new JSONObject(params);
RequestBody body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString()); RequestBody body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString());
return OrderApiFactory.clockIn(body); return OrderApiFactory.clockIn(body);
} }
//获取定位
private void getLocation(int orderId, String photoUrl){
if (ContextCompat.checkSelfPermission(mActivity, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
LocationUtils1.getInstance(UIUtils.getContext()).setAddressCallback(new LocationUtils1.AddressCallback() {
@Override
public void onGetAddress(Address address) {
//获取定位无论成功失败,结束后调打卡接口
clockIn(checkinOrderId, photoUrl, address.getLatitude(), address.getLongitude())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(baseObserver(aBoolean -> {
ToastUtils.showShortToast("打卡成功");
setPosition(checkInPosition);
EventBus.getDefault().post(new RefreshServe(1));
}, responeThrowable -> {
}));
}
@Override
public void onGetLocation(double lat, double lng) {
}
});
} else {
clockIn(checkinOrderId, photoUrl, 0.0, 0.0)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(baseObserver(aBoolean -> {
ToastUtils.showShortToast("打卡成功");
setPosition(checkInPosition);
EventBus.getDefault().post(new RefreshServe(1));
}, responeThrowable -> {
}));
}
}
public void refreshClear() { public void refreshClear() {
getOrders(mState, mUserId, mSiteId, mPage, Constants.PAGESIZE); getOrders(mState, mUserId, mSiteId, mPage, Constants.PAGESIZE);
} }
...@@ -325,4 +384,12 @@ public class OrderDoingPresenter extends orderDoingContract.Presenter { ...@@ -325,4 +384,12 @@ public class OrderDoingPresenter extends orderDoingContract.Presenter {
this.position = position; this.position = position;
} }
public Activity getmActivity() {
return mActivity;
}
public void setmActivity(Activity mActivity) {
this.mActivity = mActivity;
}
} }
...@@ -22,7 +22,7 @@ import java.util.List; ...@@ -22,7 +22,7 @@ import java.util.List;
public class CheckInTakePhotoActivity extends BaseActivity<CheckInTakePhotoPresenter, ActivityCheckInTakePhotoLayoutBinding> implements CheckInTakePhotoContract.View { public class CheckInTakePhotoActivity extends BaseActivity<CheckInTakePhotoPresenter, ActivityCheckInTakePhotoLayoutBinding> implements CheckInTakePhotoContract.View {
public String photoPath; public String photoPath = "";
public static final int TAKE_PHOTO_CODE = 700; public static final int TAKE_PHOTO_CODE = 700;
......
...@@ -3,6 +3,7 @@ package com.dayu.order.ui.activity; ...@@ -3,6 +3,7 @@ package com.dayu.order.ui.activity;
import android.Manifest; import android.Manifest;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.location.Address;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.View; import android.view.View;
...@@ -22,6 +23,7 @@ import com.dayu.base.ui.activity.BaseActivity; ...@@ -22,6 +23,7 @@ import com.dayu.base.ui.activity.BaseActivity;
import com.dayu.base.ui.activity.ImgGalleryActivty; import com.dayu.base.ui.activity.ImgGalleryActivty;
import com.dayu.common.Constants; import com.dayu.common.Constants;
import com.dayu.event.UserInfo; import com.dayu.event.UserInfo;
import com.dayu.location.base.LocationUtils1;
import com.dayu.order.R; import com.dayu.order.R;
import com.dayu.order.api.OrderApiFactory; import com.dayu.order.api.OrderApiFactory;
import com.dayu.order.api.protocol.OrderDetail; import com.dayu.order.api.protocol.OrderDetail;
...@@ -36,6 +38,7 @@ import com.dayu.usercenter.ui.activity.BusinessDetailActivity; ...@@ -36,6 +38,7 @@ import com.dayu.usercenter.ui.activity.BusinessDetailActivity;
import com.dayu.utils.CommonUtils; import com.dayu.utils.CommonUtils;
import com.dayu.utils.ProgressUtil; import com.dayu.utils.ProgressUtil;
import com.dayu.utils.ToastUtils; import com.dayu.utils.ToastUtils;
import com.dayu.utils.UIUtils;
import com.dayu.utils.UserManager; import com.dayu.utils.UserManager;
import com.dayu.widgets.CustomDialog; import com.dayu.widgets.CustomDialog;
import com.tbruyelle.rxpermissions2.RxPermissions; import com.tbruyelle.rxpermissions2.RxPermissions;
...@@ -124,7 +127,7 @@ public class OrderDetailsClockActivity extends BaseActivity<OrderDetailClockPres ...@@ -124,7 +127,7 @@ public class OrderDetailsClockActivity extends BaseActivity<OrderDetailClockPres
} else if (7 != detail.getSubStatus()) { } else if (7 != detail.getSubStatus()) {
// mBind.tvButton.setText("第" + detail.getFinishedDays() + "天打卡"); // mBind.tvButton.setText("第" + detail.getFinishedDays() + "天打卡");
Spu s = detail.getSpus().get(0); Spu s = detail.getSpus().get(0);
mBind.tvButton.setText(s.getFinNum()%2 == 0? "下班打卡" : "上班打卡"); mBind.tvButton.setText((((s.getFinNum() + 1) % 2) == 0) ? "下班打卡" : "上班打卡");
} else { } else {
mBind.tvButton.setText(getString(R.string.submit_order)); mBind.tvButton.setText(getString(R.string.submit_order));
} }
...@@ -333,9 +336,33 @@ public class OrderDetailsClockActivity extends BaseActivity<OrderDetailClockPres ...@@ -333,9 +336,33 @@ public class OrderDetailsClockActivity extends BaseActivity<OrderDetailClockPres
} }
} }
private void checkIn(String photoUrl){ //获取定位
private void getLocation(String photoUrl){
RxPermissions permissions = new RxPermissions(this);
if (permissions.isGranted(Manifest.permission.ACCESS_COARSE_LOCATION)) {
LocationUtils1.getInstance(UIUtils.getContext()).setAddressCallback(new LocationUtils1.AddressCallback() {
@Override
public void onGetAddress(Address address) {
//获取定位无论成功失败,结束后调打卡接口
checkIn(photoUrl, address.getLatitude(), address.getLongitude());
}
@Override
public void onGetLocation(double lat, double lng) {
}
});
}else {
checkIn(photoUrl, 0.0, 0.0);
}
}
private void checkIn(String photoUrl, double latitude, double longitude){
HashMap<String, Object> params = new HashMap<>(); HashMap<String, Object> params = new HashMap<>();
params.put("orderId", detailId); params.put("orderId", detailId);
params.put("commentInfo", photoUrl);
params.put("latitude", latitude);
params.put("longitude", longitude);
JSONObject jsonObject = new JSONObject(params); JSONObject jsonObject = new JSONObject(params);
RequestBody body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString()); RequestBody body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString());
OrderApiFactory.clockIn(body) OrderApiFactory.clockIn(body)
...@@ -354,7 +381,8 @@ public class OrderDetailsClockActivity extends BaseActivity<OrderDetailClockPres ...@@ -354,7 +381,8 @@ public class OrderDetailsClockActivity extends BaseActivity<OrderDetailClockPres
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
if (requestCode == TAKE_PHOTO && resultCode == RESULT_OK){ if (requestCode == TAKE_PHOTO && resultCode == RESULT_OK){
checkIn(data.getStringExtra("photoUrl")); showDialog();
getLocation(data.getStringExtra("photoUrl"));
} }
} }
......
...@@ -180,7 +180,7 @@ public class OrderAdapter extends CoreAdapter<Order, FragmentOrderdoingItemBindi ...@@ -180,7 +180,7 @@ public class OrderAdapter extends CoreAdapter<Order, FragmentOrderdoingItemBindi
//按天用工单 //按天用工单
holder.tvOrderTime.setText(R.string.start_day); holder.tvOrderTime.setText(R.string.start_day);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)holder.tvOrderTime.getLayoutParams(); LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)holder.tvOrderTime.getLayoutParams();
params.topMargin += 20; params.topMargin = 60;
holder.tvOrderTime.setLayoutParams(params); holder.tvOrderTime.setLayoutParams(params);
holder.tvCount.setVisibility(holder.tvPrice.getVisibility()); holder.tvCount.setVisibility(holder.tvPrice.getVisibility());
holder.tvDaysCount.setVisibility(View.VISIBLE); holder.tvDaysCount.setVisibility(View.VISIBLE);
...@@ -270,7 +270,7 @@ public class OrderAdapter extends CoreAdapter<Order, FragmentOrderdoingItemBindi ...@@ -270,7 +270,7 @@ public class OrderAdapter extends CoreAdapter<Order, FragmentOrderdoingItemBindi
//按天用工单 //按天用工单
holder.tvOrderTime.setText(R.string.start_day); holder.tvOrderTime.setText(R.string.start_day);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)holder.tvOrderTime.getLayoutParams(); LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)holder.tvOrderTime.getLayoutParams();
params.topMargin += 20; params.topMargin = 60;
holder.tvOrderTime.setLayoutParams(params); holder.tvOrderTime.setLayoutParams(params);
holder.tvCount.setVisibility(holder.tvPrice.getVisibility()); holder.tvCount.setVisibility(holder.tvPrice.getVisibility());
holder.tvDaysCount.setVisibility(View.VISIBLE); holder.tvDaysCount.setVisibility(View.VISIBLE);
...@@ -326,7 +326,7 @@ public class OrderAdapter extends CoreAdapter<Order, FragmentOrderdoingItemBindi ...@@ -326,7 +326,7 @@ public class OrderAdapter extends CoreAdapter<Order, FragmentOrderdoingItemBindi
//按天用工单 //按天用工单
holder.tvOrderTime.setText(R.string.start_day); holder.tvOrderTime.setText(R.string.start_day);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)holder.tvOrderTime.getLayoutParams(); LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)holder.tvOrderTime.getLayoutParams();
params.topMargin += 20; params.topMargin = 60;
holder.tvOrderTime.setLayoutParams(params); holder.tvOrderTime.setLayoutParams(params);
holder.tvCount.setVisibility(holder.tvPrice.getVisibility()); holder.tvCount.setVisibility(holder.tvPrice.getVisibility());
holder.tvDaysCount.setVisibility(View.VISIBLE); holder.tvDaysCount.setVisibility(View.VISIBLE);
...@@ -358,7 +358,7 @@ public class OrderAdapter extends CoreAdapter<Order, FragmentOrderdoingItemBindi ...@@ -358,7 +358,7 @@ public class OrderAdapter extends CoreAdapter<Order, FragmentOrderdoingItemBindi
//按天用工单 //按天用工单
holder.tvOrderTime.setText(R.string.start_day); holder.tvOrderTime.setText(R.string.start_day);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)holder.tvOrderTime.getLayoutParams(); LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)holder.tvOrderTime.getLayoutParams();
params.topMargin += 20; params.topMargin = 60;
holder.tvOrderTime.setLayoutParams(params); holder.tvOrderTime.setLayoutParams(params);
holder.tvCount.setVisibility(holder.tvPrice.getVisibility()); holder.tvCount.setVisibility(holder.tvPrice.getVisibility());
holder.tvDaysCount.setVisibility(View.VISIBLE); holder.tvDaysCount.setVisibility(View.VISIBLE);
...@@ -488,7 +488,7 @@ public class OrderAdapter extends CoreAdapter<Order, FragmentOrderdoingItemBindi ...@@ -488,7 +488,7 @@ public class OrderAdapter extends CoreAdapter<Order, FragmentOrderdoingItemBindi
//按天用工单 //按天用工单
holder.tvOrderTime.setText(R.string.start_day); holder.tvOrderTime.setText(R.string.start_day);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)holder.tvOrderTime.getLayoutParams(); LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)holder.tvOrderTime.getLayoutParams();
params.topMargin += 20; params.topMargin = 60;
holder.tvOrderTime.setLayoutParams(params); holder.tvOrderTime.setLayoutParams(params);
holder.tvCount.setVisibility(holder.tvPrice.getVisibility()); holder.tvCount.setVisibility(holder.tvPrice.getVisibility());
holder.tvDaysCount.setVisibility(View.VISIBLE); holder.tvDaysCount.setVisibility(View.VISIBLE);
......
...@@ -38,6 +38,7 @@ public class OrderFirstTabFragment extends BaseFragment<OrderDoingPresenter, Fra ...@@ -38,6 +38,7 @@ public class OrderFirstTabFragment extends BaseFragment<OrderDoingPresenter, Fra
mAdapter.initPresenter(mPresenter); mAdapter.initPresenter(mPresenter);
mBind.recyclerView.setAdapter(mAdapter); mBind.recyclerView.setAdapter(mAdapter);
mPresenter.refresh(); mPresenter.refresh();
mPresenter.setmActivity(getActivity());
EventBus.getDefault().register(this); EventBus.getDefault().register(this);
mBind.recyclerView.setOnItemClickListener(new OnItemClickListener<Order, FragmentOrderdoingItemBinding>() { mBind.recyclerView.setOnItemClickListener(new OnItemClickListener<Order, FragmentOrderdoingItemBinding>() {
......
...@@ -55,6 +55,8 @@ public class OrderSecondTabFragment extends BaseFragment<OrderDoingPresenter, Fr ...@@ -55,6 +55,8 @@ public class OrderSecondTabFragment extends BaseFragment<OrderDoingPresenter, Fr
mAdapter = new OrderAdapter(true); mAdapter = new OrderAdapter(true);
mAdapter.setViewType(R.layout.fragment_orderdoing_item); mAdapter.setViewType(R.layout.fragment_orderdoing_item);
mAdapter.initPresenter(mPresenter); mAdapter.initPresenter(mPresenter);
mPresenter.setmActivity(getActivity());
mBind.recyclerView.setAdapter(mAdapter); mBind.recyclerView.setAdapter(mAdapter);
mBind.recyclerView.setOnItemClickListener(new OnItemClickListener<Order, FragmentOrderdoingItemBinding>() { mBind.recyclerView.setOnItemClickListener(new OnItemClickListener<Order, FragmentOrderdoingItemBinding>() {
@Override @Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment