From 58a3f502da26ae6f2049ed29d8cf31e19bb88c5c Mon Sep 17 00:00:00 2001 From: lijia Date: Fri, 20 Dec 2024 08:32:00 +0800 Subject: [PATCH 1/6] =?UTF-8?q?76=E7=89=88=20=E6=89=93=E5=BC=80=E6=9D=83?= =?UTF-8?q?=E9=99=90=E8=AE=BE=E7=BD=AE=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- .../dahe/mylibrary/utils/PermissionUtils.java | 112 ++++++++++++++++++ 2 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 mylibrary/src/main/java/com/dahe/mylibrary/utils/PermissionUtils.java diff --git a/app/build.gradle b/app/build.gradle index 7856802..f295edd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,8 +38,8 @@ android { applicationId "com.arpa.hndahesudintocctmsdriver" minSdkVersion 24 targetSdkVersion 30 - versionCode 75 - versionName "3.4.5" + versionCode 76 + versionName "3.4.6" flavorDimensions "CHANNEL_VALUE" flavorDimensions "app_icon" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 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 From e3b6ba4f1c41ac51c8a67cafb363c4d33592590d Mon Sep 17 00:00:00 2001 From: lijia Date: Wed, 25 Dec 2024 10:54:28 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E5=AE=9E=E5=90=8D=E8=AE=A4=E8=AF=81url?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/arpa/hndahesudintocctmsdriver/H5Activity.java | 4 ++++ .../com/arpa/hndahesudintocctmsdriver/report/JTTProcess.java | 3 +++ 2 files changed, 7 insertions(+) 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/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()); From d8e5cbeb90e12afb237c942fa8831536e1cd4dfe Mon Sep 17 00:00:00 2001 From: lijia Date: Wed, 25 Dec 2024 15:48:05 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E6=8E=A5=E5=8D=95=E5=89=8D=E4=BA=BA?= =?UTF-8?q?=E8=BD=A6=E7=BB=91=E5=AE=9A=E5=85=B3=E7=B3=BB=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cuspop/MessagePop.kt | 8 ++-- .../report/ALProcess.java | 22 ++++++++- .../request/net/Api.java | 9 ++++ .../ui/home/HuoYunDelActivity.java | 10 ++-- .../util/NewLJUtils.java | 46 +++++++++++++++++++ .../mylibrary/net/CommonResponseBean.java | 10 ++++ 6 files changed, 96 insertions(+), 9 deletions(-) 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/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/home/HuoYunDelActivity.java b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/HuoYunDelActivity.java index 1aabcc8..4d2f26c 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,7 @@ public class HuoYunDelActivity extends BaseAppCompatActivity { private BasePopupView xp; private TextView car; private String cid; + private String selectCarNum = ""; @Override public void msgMethod(Message m) { @@ -189,6 +190,7 @@ 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(); cid = clb.getData().get(index).getCarId(); break; @@ -319,9 +321,11 @@ public class HuoYunDelActivity extends BaseAppCompatActivity { if (hyd!=null&&hyd.getData()!=null&& !TextUtils.isEmpty(hyd.getData().getCarNumber())){ cid = hyd.getData().getCarId(); car.setText("选择车辆:" + hyd.getData().getCarNumber()); + selectCarNum = hyd.getData().getCarNumber(); }else if (clb != null && clb.getData().size() == 1) { cid = clb.getData().get(0).getCarId(); car.setText("选择车辆:" + clb.getData().get(0).getCarNumber()); + selectCarNum = clb.getData().get(0).getCarNumber(); } xuanze.setOnClickListener(v1 -> { if (clb.getData().size() > 0) { @@ -502,7 +506,7 @@ public class HuoYunDelActivity extends BaseAppCompatActivity { customDialog = new CustomDialog(con, "正在接单..."); customDialog.show(); //验证安联用户是否通过 - ALProcess.verification(con, hd); + ALProcess.verification(con,selectCarNum, hd); } else { boolean accessCoarseLocation = deniedList.contains("android.permission.ACCESS_FINE_LOCATION"); boolean contains = deniedList.contains("android.permission.WRITE_EXTERNAL_STORAGE"); @@ -522,14 +526,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/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() { From 7d86e5cbc6af22dcac852eabab87751478798657 Mon Sep 17 00:00:00 2001 From: lijia Date: Wed, 25 Dec 2024 17:08:48 +0800 Subject: [PATCH 4/6] =?UTF-8?q?77=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ae9a4dc..f74fc06 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" From 205a6ee7f54153106b696d27d0251116d342cb3f Mon Sep 17 00:00:00 2001 From: lijia Date: Tue, 31 Dec 2024 11:03:17 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E9=A9=BE=E9=A9=B6=E8=AF=81=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E8=B5=B7=E5=A7=8B=E6=88=AA=E6=AD=A2=E6=97=A5=E6=9C=9F?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/auth/CertificatesActivity.java | 19 +++++++++++++++-- .../com/dahe/mylibrary/utils/TimeUtil.java | 21 +++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) 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/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类型转为时间戳 * From d9a9b9b6345122a6ecc1a4f7a3a9be70eb62253a Mon Sep 17 00:00:00 2001 From: lijia Date: Tue, 31 Dec 2024 16:39:47 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=8D=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E5=AE=89=E8=81=94=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bean/CarListBean.java | 9 ++ .../ui/home/HomeFragment.java | 4 + .../ui/home/HuoYunDelActivity.java | 39 ++++-- .../ui/home/StartYunDanActivity.java | 4 + .../shangchuan/ShangChuangImgActivity.java | 113 +++++++++++------- 5 files changed, 114 insertions(+), 55 deletions(-) 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/ui/home/HomeFragment.java b/app/src/main/java/com/arpa/hndahesudintocctmsdriver/ui/home/HomeFragment.java index 24ddba3..e72a318 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 @@ -730,6 +730,7 @@ public class HomeFragment extends BaseFragment { if (zStatus == 0) {//未装货 Intent in = new Intent(con, ShangChuangImgActivity.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); @@ -737,6 +738,7 @@ public class HomeFragment extends BaseFragment { } else if (zStatus == 1 && xStatus == 4) {//已装货未上传回单 Intent in = new Intent(con, ShangChuangImgActivity.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)); @@ -746,6 +748,7 @@ public class HomeFragment extends BaseFragment { if (dis > 5) {//大于五分钟可以接单 Intent in = new Intent(con, ShangChuangImgActivity.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); @@ -757,6 +760,7 @@ public class HomeFragment extends BaseFragment { } else if (zStatus == 3 && xStatus == 2) {//已卸货,未上传卸货回单 Intent in = new Intent(con, ShangChuangImgActivity.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 4d2f26c..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 @@ -96,6 +96,8 @@ public class HuoYunDelActivity extends BaseAppCompatActivity { private String cid; private String selectCarNum = ""; + private String currOutInvoice = "0"; + @Override public void msgMethod(Message m) { super.msgMethod(m); @@ -191,6 +193,7 @@ public class HuoYunDelActivity extends BaseAppCompatActivity { 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; @@ -318,13 +321,24 @@ 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()); - selectCarNum = 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 -> { @@ -416,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(); @@ -505,8 +519,13 @@ public class HuoYunDelActivity extends BaseAppCompatActivity { if (allGranted) { customDialog = new CustomDialog(con, "正在接单..."); customDialog.show(); - //验证安联用户是否通过 - ALProcess.verification(con,selectCarNum, 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"); @@ -526,14 +545,14 @@ public class HuoYunDelActivity extends BaseAppCompatActivity { customDialog = new CustomDialog(con, "正在接单..."); customDialog.show(); //验证安联用户是否通过 - ALProcess.verification(con,selectCarNum, hd); + ALProcess.verification(con, selectCarNum, hd); } } else { customDialog = new CustomDialog(con, "正在接单..."); customDialog.show(); //验证安联用户是否通过 - ALProcess.verification(con,selectCarNum, 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 c3f090c..5366073 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 @@ -387,6 +387,7 @@ public class StartYunDanActivity extends BaseActivity { if (type == 0) { Intent in = new Intent(con, ShangChuangImgActivity.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); @@ -397,6 +398,7 @@ public class StartYunDanActivity extends BaseActivity { } else if (sdw.getStatus() == 1) {//装货回单 Intent in = new Intent(con, ShangChuangImgActivity.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)); @@ -404,6 +406,7 @@ public class StartYunDanActivity extends BaseActivity { } else if (sdw.getStatus() == 2) {//上传收货单(卸货回单) Intent in = new Intent(con, ShangChuangImgActivity.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)); @@ -423,6 +426,7 @@ public class StartYunDanActivity extends BaseActivity { if (dis > 5) {//大于五分钟可以接单 Intent in = new Intent(con, ShangChuangImgActivity.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(); }