diff --git a/app/build.gradle b/app/build.gradle index bf2f4e4..e5607ff 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,8 +38,8 @@ android { applicationId "com.arpa.hndahesudintocctmsdriver" minSdkVersion 24 targetSdkVersion 30 - versionCode 76 - versionName "3.4.6" + versionCode 77 + versionName "3.4.7" flavorDimensions "CHANNEL_VALUE" flavorDimensions "app_icon" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/H5Activity.java b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/H5Activity.java index 44bd645..709f84e 100644 --- a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/H5Activity.java +++ b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/H5Activity.java @@ -232,6 +232,10 @@ public class H5Activity extends AppCompatActivity { } else { String url = intent.getStringExtra("url"); + if (TextUtils.isEmpty(url)) { + ActivityUtils.finishToActivity(MainActivity.class, false); + return; + } viewFile = intent.getBooleanExtra("view_file", false); if (url.startsWith("alipay")) { try { diff --git a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/bean/CarListBean.java b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/bean/CarListBean.java index e5b681a..4c5a167 100644 --- a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/bean/CarListBean.java +++ b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/bean/CarListBean.java @@ -68,9 +68,18 @@ public class CarListBean { private Object carImage; private String owner; private String vehicleNumber; + private String outInvoice; private int auditStatus; private String drivingLicenseValidity; + public String getOutInvoice() { + return outInvoice; + } + + public void setOutInvoice(String outInvoice) { + this.outInvoice = outInvoice; + } + public String getCarNumber() { return carNumber == null ? "" : carNumber; } diff --git a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/cuspop/MessagePop.kt b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/cuspop/MessagePop.kt index f6949bb..56165aa 100644 --- a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/cuspop/MessagePop.kt +++ b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/cuspop/MessagePop.kt @@ -55,15 +55,15 @@ class MessagePop(context: Context) : CenterPopupView(context), View.OnClickListe } R.id.tvOk,R.id.tvPhone -> { dismiss() - if (XPermission.create(context).isGranted(Manifest.permission.CALL_PHONE)){ +// if (XPermission.create(context).isGranted(Manifest.permission.CALL_PHONE)){ val toString = tvPhone.text.toString() val intent = Intent(Intent.ACTION_DIAL) val data = Uri.parse("tel:$toString") intent.data = data context.startActivity(intent) - }else{ - ToastUtils.showToast(context,"请开启电话权限") - } +// }else{ +// ToastUtils.showToast(context,"请开启电话权限") +// } // BaseUtils.callPhone(content as Activity, tvPhone.text.toString()) } diff --git a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/report/ALProcess.java b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/report/ALProcess.java index 8554301..5fa4810 100644 --- a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/report/ALProcess.java +++ b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/report/ALProcess.java @@ -2,6 +2,7 @@ package com.arpa.hndahesudintocctmsdriver.report; import android.content.Context; import android.os.Handler; +import android.text.TextUtils; import android.util.Log; import com.alct.mdp.MDPLocationCollectionManager; @@ -156,11 +157,15 @@ public class ALProcess { } - public static void verification(Context con,Handler hd){ + public static void verification(Context con,String carNum,Handler hd){ DriverAuthDataBean auth= AuthParts.getAuth(con); if (auth==null){ return; } + if (TextUtils.isEmpty(carNum)){ + ToastUtils.showToast(con,"请选择车辆"); + return; + } // Identity idy=new Identity(); // //企业代码 // idy.setEnterpriseCode(BuildConfig.isTest?ENTERPRISE_CODE_TEXT:ENTERPRISE_CODE); @@ -187,7 +192,8 @@ public class ALProcess { // } // }); - NewLJUtils.getInstance().searchDriver(con, auth.getData().getIdcard(), new OnGDDownloadResultListener(){ + + NewLJUtils.getInstance().trucks(con, auth.getData().getIdcard(),carNum, new OnGDDownloadResultListener(){ @Override public void onSuccess(String var1) { MsgUtil.addHdMsgWatBody(hd, 1111,"认证成功"); @@ -199,6 +205,18 @@ public class ALProcess { } }); +// NewLJUtils.getInstance().searchDriver(con, auth.getData().getIdcard(), new OnGDDownloadResultListener(){ +// @Override +// public void onSuccess(String var1) { +// MsgUtil.addHdMsgWatBody(hd, 1111,"认证成功"); +// } +// +// @Override +// public void onFailure(String var1, String var2) { +// MsgUtil.addHdMsgWatBody(hd, 2222,var2); +// } +// }); + // NewLJUtils.getInstance().getToken(con, new OnGDResultListener() { // @Override // public void onSuccess() { diff --git a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/report/JTTProcess.java b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/report/JTTProcess.java index e8f20ff..00f897a 100644 --- a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/report/JTTProcess.java +++ b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/report/JTTProcess.java @@ -119,6 +119,9 @@ public class JTTProcess { //参数 ShippingNoteInfo 和 start 接口中的参数 ShippingNoteInfo 相 //同,这里 shippingNoteInfo 信息只需传入运单号和分单号即可 public static void send(Context con,StartOrderBean sob,String remark){ + if (sob.getData()==null){ + return; + } ShippingNoteInfo[] snis=new ShippingNoteInfo[1]; ShippingNoteInfo sni=new ShippingNoteInfo(); sni.setShippingNoteNumber(sob.getData().getShippingNoteNumber()); diff --git a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/request/net/Api.java b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/request/net/Api.java index 44b6bdc..502f7eb 100644 --- a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/request/net/Api.java +++ b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/request/net/Api.java @@ -152,5 +152,14 @@ public interface Api { @GET(BASE_URL+"/openapi/drivers") Observable searchDriver(@Query("identityNo") String identityNo); + + + /** + * 司机车辆绑定关系 + * @param identityNo + * @return + */ + @GET(BASE_URL+"openapi/drivers/{identityNo}/trucks") + Observable trucks(@Path("identityNo") String identityNo); } diff --git a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/auth/CertificatesActivity.java b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/auth/CertificatesActivity.java index 9382a1d..e18bf0b 100644 --- a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/auth/CertificatesActivity.java +++ b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/auth/CertificatesActivity.java @@ -1220,14 +1220,29 @@ public class CertificatesActivity extends BaseAppCompatActivity { iib.setDriverLicense(str1); iib.setDriverLicenseBackPhoto(backId); iib.setDriverLicensePhoto(fontId); - iib.setEndTime("长期".equals(odl.getData().getEndDate()) ? "2999-12-31" : odl.getData().getEndDate()); + + if ("长期".equals(odl.getData().getEndDate())){ + iib.setEndTime("2999-12-31"); + }else if (TimeUtil.isValidDate(odl.getData().getEndDate())){//非yyyy-MM-dd格式的日期传"" + iib.setEndTime(odl.getData().getEndDate()); + }else{ + iib.setEndTime(""); + } +// iib.setEndTime("长期".equals(odl.getData().getEndDate()) ? "2999-12-31" : odl.getData().getEndDate()); iib.setFirstTime(odl.getData().getFirstGetDocDate()); // iib.setName(odl.getData().getName()); iib.setOrganizationName(odl.getData().getIssuingAuthority()); iib.setAddress(odl.getData().getAddress()); - iib.setStartTime(odl.getData().getBeginDate()); + + if (TimeUtil.isValidDate(odl.getData().getBeginDate())){//非yyyy-MM-dd格式的日期传"" + iib.setStartTime(odl.getData().getBeginDate()); + }else{ + iib.setStartTime(""); + } + +// iib.setStartTime(odl.getData().getBeginDate()); iib.setSex(odl.getData().getSex()); iib.setBirthday(odl.getData().getBirthday()); diff --git a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/HomeFragment.java b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/HomeFragment.java index 0f42d84..d91debc 100644 --- a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/HomeFragment.java +++ b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/HomeFragment.java @@ -731,6 +731,7 @@ public class HomeFragment extends BaseFragment { if (zStatus == 0) {//未装货 Intent in = new Intent(con, ShangChuangImgActivityBC.class); in.putExtra("type", 0); + in.putExtra("reportAlct", data.getReportAlct()); in.putExtra("wid", zData.getId() + ""); in.putExtra("sob", gson.toJson(sob)); in.putExtra("keys", true); @@ -738,6 +739,7 @@ public class HomeFragment extends BaseFragment { } else if (zStatus == 1 && xStatus == 4) {//已装货未上传回单 Intent in = new Intent(con, ShangChuangImgActivityBC.class); in.putExtra("type", 2); + in.putExtra("reportAlct", data.getReportAlct()); in.putExtra("wid", zData.getId() + ""); in.putExtra("h_type", 0); in.putExtra("sob", gson.toJson(sob)); @@ -747,6 +749,7 @@ public class HomeFragment extends BaseFragment { if (dis > 5) {//大于五分钟可以接单 Intent in = new Intent(con, ShangChuangImgActivityBC.class); in.putExtra("type", 1); + in.putExtra("reportAlct", data.getReportAlct()); in.putExtra("wid", xData.getId() + ""); in.putExtra("sob", gson.toJson(sob)); in.putExtra("keys", true); @@ -758,6 +761,7 @@ public class HomeFragment extends BaseFragment { } else if (zStatus == 3 && xStatus == 2) {//已卸货,未上传卸货回单 Intent in = new Intent(con, ShangChuangImgActivityBC.class); in.putExtra("type", 2); + in.putExtra("reportAlct", data.getReportAlct()); in.putExtra("wid", xData.getId() + ""); in.putExtra("h_type", 1); in.putExtra("sob", gson.toJson(sob)); diff --git a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/HuoYunDelActivity.java b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/HuoYunDelActivity.java index 1aabcc8..1ee7627 100644 --- a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/HuoYunDelActivity.java +++ b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/HuoYunDelActivity.java @@ -94,6 +94,9 @@ public class HuoYunDelActivity extends BaseAppCompatActivity { private BasePopupView xp; private TextView car; private String cid; + private String selectCarNum = ""; + + private String currOutInvoice = "0"; @Override public void msgMethod(Message m) { @@ -189,6 +192,8 @@ public class HuoYunDelActivity extends BaseAppCompatActivity { int index = Integer.valueOf((String) m.obj); Log.e("--选择车辆--", clb.getData().get(index).getCarNumber()); car.setText("选择车辆:" + clb.getData().get(index).getCarNumber()); + selectCarNum = clb.getData().get(index).getCarNumber(); + currOutInvoice = clb.getData().get(index).getOutInvoice(); cid = clb.getData().get(index).getCarId(); break; @@ -316,12 +321,25 @@ public class HuoYunDelActivity extends BaseAppCompatActivity { // ImageButton xuanze = v.findViewById(R.id.xuanze); - if (hyd!=null&&hyd.getData()!=null&& !TextUtils.isEmpty(hyd.getData().getCarNumber())){ - cid = hyd.getData().getCarId(); - car.setText("选择车辆:" + hyd.getData().getCarNumber()); - }else if (clb != null && clb.getData().size() == 1) { + if (hyd != null && hyd.getData() != null && !TextUtils.isEmpty(hyd.getData().getCarNumber())) { + String carNumber = hyd.getData().getCarNumber(); + if (clb != null && !clb.getData().isEmpty()) {//判断车辆是否需要上传安联 + for (CarListBean.DataDTO datum : clb.getData()) { + if (carNumber.equals(datum.getCarNumber())) { + cid = hyd.getData().getCarId(); + car.setText("选择车辆:" + hyd.getData().getCarNumber()); + currOutInvoice = datum.getOutInvoice(); + selectCarNum = hyd.getData().getCarNumber(); + break; + } + } + } + + } else if (clb != null && clb.getData().size() == 1) { cid = clb.getData().get(0).getCarId(); car.setText("选择车辆:" + clb.getData().get(0).getCarNumber()); + currOutInvoice = clb.getData().get(0).getOutInvoice(); + selectCarNum = clb.getData().get(0).getCarNumber(); } xuanze.setOnClickListener(v1 -> { if (clb.getData().size() > 0) { @@ -412,7 +430,7 @@ public class HuoYunDelActivity extends BaseAppCompatActivity { UiAuxiliary.homeRequest("接单"); Intent in = new Intent(con, StartYunDanActivity.class); - in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP); + in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); in.putExtra("id", "0"); startActivity(in); finish(); @@ -501,8 +519,13 @@ public class HuoYunDelActivity extends BaseAppCompatActivity { if (allGranted) { customDialog = new CustomDialog(con, "正在接单..."); customDialog.show(); - //验证安联用户是否通过 - ALProcess.verification(con, hd); + if ("0".equals(currOutInvoice)){ + //验证安联用户是否通过 + ALProcess.verification(con, selectCarNum, hd); + }else{ + hyr.getOrderStatus(id); + } + } else { boolean accessCoarseLocation = deniedList.contains("android.permission.ACCESS_FINE_LOCATION"); boolean contains = deniedList.contains("android.permission.WRITE_EXTERNAL_STORAGE"); @@ -522,14 +545,14 @@ public class HuoYunDelActivity extends BaseAppCompatActivity { customDialog = new CustomDialog(con, "正在接单..."); customDialog.show(); //验证安联用户是否通过 - ALProcess.verification(con, hd); + ALProcess.verification(con, selectCarNum, hd); } } else { customDialog = new CustomDialog(con, "正在接单..."); customDialog.show(); //验证安联用户是否通过 - ALProcess.verification(con, hd); + ALProcess.verification(con, selectCarNum, hd); } diff --git a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/StartYunDanActivity.java b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/StartYunDanActivity.java index cee14fc..50cf3ea 100644 --- a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/StartYunDanActivity.java +++ b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/StartYunDanActivity.java @@ -388,6 +388,7 @@ public class StartYunDanActivity extends BaseActivity { if (type == 0) { Intent in = new Intent(con, ShangChuangImgActivityBC.class); in.putExtra("type", type); + in.putExtra("reportAlct", sob.getData().getReportAlct()); in.putExtra("wid", wid); in.putExtra("sob", gson.toJson(sob)); in.putExtra("keys", key); @@ -398,6 +399,7 @@ public class StartYunDanActivity extends BaseActivity { } else if (sdw.getStatus() == 1) {//装货回单 Intent in = new Intent(con, ShangChuangImgActivityBC.class); in.putExtra("type", 2); + in.putExtra("reportAlct", sob.getData().getReportAlct()); in.putExtra("wid", wid); in.putExtra("h_type", type); in.putExtra("sob", gson.toJson(sob)); @@ -405,6 +407,7 @@ public class StartYunDanActivity extends BaseActivity { } else if (sdw.getStatus() == 2) {//上传收货单(卸货回单) Intent in = new Intent(con, ShangChuangImgActivityBC.class); in.putExtra("type", 2); + in.putExtra("reportAlct", sob.getData().getReportAlct()); in.putExtra("wid", wid); in.putExtra("h_type", type); in.putExtra("sob", gson.toJson(sob)); @@ -424,6 +427,7 @@ public class StartYunDanActivity extends BaseActivity { if (dis > 5) {//大于五分钟可以接单 Intent in = new Intent(con, ShangChuangImgActivityBC.class); in.putExtra("type", type); + in.putExtra("reportAlct", sob.getData().getReportAlct()); in.putExtra("wid", wid); in.putExtra("sob", gson.toJson(sob)); in.putExtra("keys", key); diff --git a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/shangchuan/ShangChuangImgActivity.java b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/shangchuan/ShangChuangImgActivity.java index 387513c..dc5678b 100644 --- a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/shangchuan/ShangChuangImgActivity.java +++ b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/shangchuan/ShangChuangImgActivity.java @@ -89,6 +89,7 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity { private String[] names = {"装货", "卸货", "回单"}; public static String[] TYPE_NAME = {"zhuanghuo", "xiehuo", "huidan"}; private int index = 0; + private int reportAlct = 1;//是否上报(安联城通) 0否 1是' // private Gson gson = new Gson(); // @@ -184,6 +185,13 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity { EventBus.getDefault().post(new HomeWaybillEvent()); Toast.makeText(con, "上传成功", Toast.LENGTH_SHORT).show(); finish(); + }else if (reportAlct==0){ + if (!isFinishing() && customDialog != null && customDialog.isShowing()) { + customDialog.dismiss(); + } + EventBus.getDefault().post(new HomeWaybillEvent()); + Toast.makeText(con, "上传成功", Toast.LENGTH_SHORT).show(); + finish(); } } else if ((0 == index || 1 == index) && isFinish) { if (!isFinishing() && customDialog != null && customDialog.isShowing()) { @@ -329,6 +337,7 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity { tips_x = findViewById(R.id.tips_x); Bundle ins = getIntent().getExtras(); index = ins.getInt("type"); + reportAlct = ins.getInt("reportAlct"); wid = ins.getString("wid"); h_type = ins.getInt("h_type"); keys = ins.getBoolean("keys"); @@ -481,31 +490,37 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity { Log.e("--装货信息", gson.toJson(lub)); if (locationKey) {//高德定位 if (keys) { - - NewLJUtils.getInstance().getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnGDDownloadResultListener() { - @Override - public void onSuccess(String var1) { - String string = var1; - if (string.equals("30")) {//安联装货,单平台未装货 - isFinish = true; - //平台确认装货 - hyr.loading(lub); - } else { + if (1==reportAlct){ + NewLJUtils.getInstance().getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnGDDownloadResultListener() { + @Override + public void onSuccess(String var1) { + String string = var1; + if (string.equals("30")) {//安联装货,单平台未装货 + isFinish = true; + //平台确认装货 + hyr.loading(lub); + } else { // nfc(); - loadInfo(); - } - upLocation(lgdu.getLatitude() + "", lgdu.getLongitude() + "",sob.getData().getShippingNoteNumber()); + loadInfo(); + } + upLocation(lgdu.getLatitude() + "", lgdu.getLongitude() + "",sob.getData().getShippingNoteNumber()); // NewLJUtils.getInstance().startLocationService(ShangChuangImgActivity.this); - } - - @Override - public void onFailure(String var1, String var2) { - if (!isFinishing() && customDialog != null && customDialog.isShowing()) { - customDialog.dismiss(); } - ToastUtils.showToast(con, var2); - } - }); + + @Override + public void onFailure(String var1, String var2) { + if (!isFinishing() && customDialog != null && customDialog.isShowing()) { + customDialog.dismiss(); + } + ToastUtils.showToast(con, var2); + } + }); + }else{ + isFinish = true; + //平台确认装货 + hyr.loading(lub); + } + // MDPLocationCollectionManager.getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnDownloadResultListener() { // @Override // public void onSuccess(Object o) { @@ -561,30 +576,36 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity { Log.e("--卸货信息", gson.toJson(lub)); if (locationKey) { if (keys) { - - NewLJUtils.getInstance().getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnGDDownloadResultListener() { - @Override - public void onSuccess(String var1) { - if (var1.equals("40")) {//安联装货,单平台未装货 - //卸货状态-平台 - isFinish = true; - hyr.dischargeCargo(lub); - } else { - nfc(); - uploadInfo(); - } - upLocation(lgdu.getLatitude() + "", lgdu.getLongitude() + "",sob.getData().getShippingNoteNumber()); + if (1==reportAlct){ + NewLJUtils.getInstance().getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnGDDownloadResultListener() { + @Override + public void onSuccess(String var1) { + if (var1.equals("40")) {//安联装货,单平台未装货 + //卸货状态-平台 + isFinish = true; + hyr.dischargeCargo(lub); + } else { + nfc(); + uploadInfo(); + } + upLocation(lgdu.getLatitude() + "", lgdu.getLongitude() + "",sob.getData().getShippingNoteNumber()); // NewLJUtils.getInstance().stopLocationService(); - } - - @Override - public void onFailure(String var1, String var2) { - if (!isFinishing() && customDialog != null && customDialog.isShowing()) { - customDialog.dismiss(); } - ToastUtils.showToast(con, var2); - } - }); + + @Override + public void onFailure(String var1, String var2) { + if (!isFinishing() && customDialog != null && customDialog.isShowing()) { + customDialog.dismiss(); + } + ToastUtils.showToast(con, var2); + } + }); + + }else { + //卸货状态-平台 + isFinish = true; + hyr.dischargeCargo(lub); + } // MDPLocationCollectionManager.getShipmentStatus(con, sob.getData().getShippingNoteNumber(), new OnDownloadResultListener() { // @Override @@ -643,7 +664,9 @@ public class ShangChuangImgActivity extends BaseAppCompatActivity { Log.e("--回单信息", gson.toJson(urib)); if (locationKey) { if (index == 2 && keys) { - up_trafficSign(); + if (1==reportAlct){ + up_trafficSign(); + } // up_trafficReceipt(); // receipt_image(); } diff --git a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/util/NewLJUtils.java b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/util/NewLJUtils.java index 78da3ea..dfb53fe 100644 --- a/app/src/main/java/com/arpa/hndahesudintocctmsdriver/util/NewLJUtils.java +++ b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/util/NewLJUtils.java @@ -42,6 +42,8 @@ import com.express.mdp.Callback; import com.google.gson.Gson; +import java.util.Arrays; + import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.schedulers.Schedulers; @@ -761,4 +763,48 @@ public class NewLJUtils { })); } + /** + * 人车绑定关系 + * @param ctx + * @param idCard + * @param listener + */ + public void trucks(Context ctx, String idCard,String carNum, OnGDDownloadResultListener listener){ + DataManager.getInstance().trucks(idCard) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new BaseObserver(ctx, new RxHttpCallBack() { + @Override + public void onSuccess(CommonResponseBean t) { + super.onSuccess(t); + String[] licensePlateNos = t.getLicensePlateNos(); + if (listener!=null){ + if (licensePlateNos.length==0){ + listener.onFailure(t.getCode(), "该司机暂未绑定任何车辆"); + }else{ + boolean isHasCar = false; + for (int i = 0; i < licensePlateNos.length; i++) { + if (licensePlateNos[i].equals(carNum)){ + isHasCar = true; + break; + } + } + if (isHasCar){ + listener.onSuccess("人车绑定正常"); + }else{ + listener.onFailure(t.getCode(), "司机车辆绑定异常"); + } + } + } + } + + @Override + public void onCodeError(Context mContext, CommonResponseBean t) { + super.onCodeError(mContext, t); + if (listener != null) + listener.onFailure(t.getCode(), TextUtils.isEmpty(t.getMessage()) ? "司机异常" : t.getMessage()); + } + })); + } + } diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/net/CommonResponseBean.java b/mylibrary/src/main/java/com/dahe/mylibrary/net/CommonResponseBean.java index eea6610..fe8df13 100644 --- a/mylibrary/src/main/java/com/dahe/mylibrary/net/CommonResponseBean.java +++ b/mylibrary/src/main/java/com/dahe/mylibrary/net/CommonResponseBean.java @@ -21,6 +21,16 @@ public class CommonResponseBean implements Serializable { private String statusCode; private boolean success; + private String[] LicensePlateNos; + + public String[] getLicensePlateNos() { + return LicensePlateNos; + } + + public void setLicensePlateNos(String[] licensePlateNos) { + LicensePlateNos = licensePlateNos; + } + private DriverBean driver; public DriverBean getDriver() { diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/utils/PermissionUtils.java b/mylibrary/src/main/java/com/dahe/mylibrary/utils/PermissionUtils.java new file mode 100644 index 0000000..68eb34a --- /dev/null +++ b/mylibrary/src/main/java/com/dahe/mylibrary/utils/PermissionUtils.java @@ -0,0 +1,112 @@ +package com.dahe.mylibrary.utils; +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.os.Build; +import android.provider.Settings; + +/** + * @ClassName PermissionUtils + * @Author john + * @Date 2024/12/19 14:59 + * @Description TODO + */ +public class PermissionUtils { + + // 私有静态实例,防止被外部实例化 + private static PermissionUtils instance; + + // 私有构造方法,防止通过 new 关键字创建实例 + private PermissionUtils() { + } + + // 获取单例实例 + public static PermissionUtils getInstance() { + if (instance == null) { + synchronized (PermissionUtils.class) { + if (instance == null) { + instance = new PermissionUtils(); + } + } + } + return instance; + } + + /** + * 根据不同手机机型跳转到权限设置页面 + * + * @param context 上下文 + */ + public void goToAppPermissionSettings(Context context) { + Intent intent = new Intent(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (Build.FINGERPRINT.startsWith("Huawei") || Build.BRAND.startsWith("Huawei")) { + // 华为手机 + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + Uri uri = Uri.fromParts("package", context.getPackageName(), null); + intent.setData(uri); + } else if (Build.FINGERPRINT.startsWith("Xiaomi") || Build.BRAND.startsWith("Xiaomi")) { + // 小米手机 + intent.setAction(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION); + Uri uri = Uri.parse("package:" + context.getPackageName()); + intent.setData(uri); + } else if (Build.BRAND.equals("Meizu")) { + // 魅族手机 + intent.setAction("com.meizu.safe.security.SHOW_APPSEC"); + intent.addCategory(Intent.CATEGORY_DEFAULT); + intent.putExtra("packageName", context.getPackageName()); + } else if (Build.FINGERPRINT.startsWith("OPPO") || Build.BRAND.startsWith("OPPO")) { + // OPPO手机 + try { + String pkgName = context.getPackageName(); + String className = "com.coloros.safecenter.permission.PermissionManagerActivity"; + intent.setClassName("com.coloros.safecenter", className); + intent.putExtra("packageName", pkgName); + intent.putExtra("appName", context.getResources().getString(context.getApplicationInfo().labelRes)); + intent.putExtra("opType", "4"); // 4 表示权限管理页面 + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + } catch (Exception e) { + // 如果找不到OPPO的特定页面,则使用通用页面 + intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + Uri uri = Uri.fromParts("package", context.getPackageName(), null); + intent.setData(uri); + } + } else if (Build.FINGERPRINT.startsWith("vivo") || Build.BRAND.startsWith("vivo")) { + // vivo手机 + intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + Uri uri = Uri.fromParts("package", context.getPackageName(), null); + intent.setData(uri); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.putExtra(Settings.EXTRA_APP_PACKAGE, context.getPackageName()); + } else if (Build.BRAND.equals("samsung")) { + // 三星手机 + try { + String pkgName = context.getPackageName(); + Intent intent2 = new Intent("android.settings.APPLICATION_DETAILS_SETTINGS"); + intent2.addCategory(Intent.CATEGORY_DEFAULT); + intent2.setData(Uri.parse("package:" + pkgName)); + intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent2.putExtra("com.android.providers.media.EXTRA_APP_PACKAGE", pkgName); + context.startActivity(intent2); + return; // 使用三星特定的页面,不需要继续执行通用代码 + } catch (Exception e) { + // 如果三星特定页面失败,则使用通用页面 + } + } else { + // 其他手机使用通用页面 + intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + Uri uri = Uri.fromParts("package", context.getPackageName(), null); + intent.setData(uri); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.putExtra(Settings.EXTRA_APP_PACKAGE, context.getPackageName()); + } + } else { + // 低于Android 6.0(M)的版本,使用通用页面 + intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + Uri uri = Uri.fromParts("package", context.getPackageName(), null); + intent.setData(uri); + } + context.startActivity(intent); + } +} \ No newline at end of file diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/utils/TimeUtil.java b/mylibrary/src/main/java/com/dahe/mylibrary/utils/TimeUtil.java index 45a0aee..1b479e8 100644 --- a/mylibrary/src/main/java/com/dahe/mylibrary/utils/TimeUtil.java +++ b/mylibrary/src/main/java/com/dahe/mylibrary/utils/TimeUtil.java @@ -307,6 +307,27 @@ public final class TimeUtil { return format.format(date); } + + + /** + * 验证时间字符串是否是yyyy-MM-dd格式 + * + * @param dateStr 需要验证的时间字符串 + * @return 如果是yyyy-MM-dd格式,返回true;否则返回false + */ + public static boolean isValidDate(String dateStr) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); + sdf.setLenient(false); // 设置不宽容,严格解析 + try { + Date date = sdf.parse(dateStr); + // 可以进一步验证解析后的日期是否合法(例如:检查月份天数、闰年等) + // 但对于简单的格式验证,这一步通常不是必需的 + return true; + } catch (ParseException e) { + return false; + } + } + /** * 将Date类型转为时间戳 *