ソースを参照

Merge branch 'master' of http://192.168.40.220/dmc/jz_app into master

master
wq 2年前
コミット
3a284acf37
17個のファイルの変更227行の追加120行の削除
  1. 2
    0
      app/src/main/java/com/huntersun/vkyes/etcopencard/project/api/MyRetrofit.java
  2. 3
    3
      app/src/main/java/com/huntersun/vkyes/etcopencard/project/api/bean/IFCode.java
  3. 10
    0
      app/src/main/java/com/huntersun/vkyes/etcopencard/project/api/bean/ResultBean.java
  4. 8
    12
      app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/activity/after/CheckRunningWaterStep1Activity.java
  5. 3
    8
      app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/activity/after/CheckRunningWaterStep2Activity.java
  6. 121
    48
      app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/activity/after/CheckRunningWaterStep3Activity.java
  7. 1
    0
      app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/activity/after/ReplaceEtcStep4Activity.java
  8. 18
    15
      app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/activity/mail/ListDeliveryActivity.java
  9. 17
    13
      app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/adapter/CheckRunningAdapter.java
  10. 15
    2
      app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/adapter/CheckRunningCardListAdapter.java
  11. 2
    2
      app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/fragment/FragmentHomeTow.java
  12. 19
    14
      app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/fragment/FragmentSonOne.java
  13. 1
    2
      app/src/main/java/com/huntersun/vkyes/etcopencard/project/utils/SearchCarInfoUtils.java
  14. 1
    1
      app/src/main/res/layout/activity_check_running_water_step3.xml
  15. 2
    0
      app/src/main/res/layout/item_check_running_water.xml
  16. 2
    0
      app/src/main/res/layout/item_list_pay_the_arrears.xml
  17. 2
    0
      app/src/main/res/layout/layout_pay_the_arrears_info.xml

+ 2
- 0
app/src/main/java/com/huntersun/vkyes/etcopencard/project/api/MyRetrofit.java ファイルの表示

// private final String BaseUrl = "http://192.168.100.63:8087/ifzt/api/"; //VPN访问请求地址 // private final String BaseUrl = "http://192.168.100.63:8087/ifzt/api/"; //VPN访问请求地址


private final String FileUrl = "http://222.85.144.89:19003/ifzt/api/"; //文件服务 private final String FileUrl = "http://222.85.144.89:19003/ifzt/api/"; //文件服务
public static final String URL_DOWNLOAD_FILE = "http://192.168.100.63:8087/user-export-excel/";//通行流水下载路径前缀

private final String appId = "admin001"; private final String appId = "admin001";
private final String IFCODE = ""; private final String IFCODE = "";
private final String bizContent = ""; private final String bizContent = "";

+ 3
- 3
app/src/main/java/com/huntersun/vkyes/etcopencard/project/api/bean/IFCode.java ファイルの表示

public static final String IFCODE916 = "916"; //欠费补缴支付下单接口 public static final String IFCODE916 = "916"; //欠费补缴支付下单接口
public static final String IFCODE915 = "915"; //欠费补缴支付查询接口 public static final String IFCODE915 = "915"; //欠费补缴支付查询接口


public static final String IFCODEXX1 = "XX1"; //用户卡列表查询(等待提供)
public static final String IFCODEXX2 = "XX2"; //用户通行流水统计(等待提供)
public static final String IFCODEXX3 = "XX3"; //用户通行流水记录下载(等待提供)
public static final String IFCODE152 = "152"; //用户卡列表查询
public static final String IFCODE_FLOWING_COUNT = "db62a6c55461498ab2f412868eea6d24"; //用户通行流水统计(等待提供)
public static final String IFCODE_FLOWING_DOWNLOAD = "558c8a96265445c78b59b4473ad01d42"; //用户通行流水记录下载(等待提供)
public static final String IFCODE925 = "925"; //车辆通行流水分页查询接口 public static final String IFCODE925 = "925"; //车辆通行流水分页查询接口


public static final String IFCODE151 = "151"; //通过证件号 + 证件类型查询用户信息 public static final String IFCODE151 = "151"; //通过证件号 + 证件类型查询用户信息

+ 10
- 0
app/src/main/java/com/huntersun/vkyes/etcopencard/project/api/bean/ResultBean.java ファイルの表示

public List<BizContent> customers; //用户信息查询列表 public List<BizContent> customers; //用户信息查询列表
public List<BizContent> vehicles; //车辆信息查询列表 public List<BizContent> vehicles; //车辆信息查询列表
public List<BizContent> transferLogs; //卡签列表 public List<BizContent> transferLogs; //卡签列表
public List<BizContent> cards; //卡列表
public long passTotal; //通行合计
public long parkTotal; //停车合计
public long aggregateAmount; //总金额
public String DetailDownLoadURL; //下载 文件服务地址
public String cardType; //卡类型
public String tel; //用户手机
public boolean hasMore; //是否有更多数据


private String customerIdnum; private String customerIdnum;
private String customerIdtype; private String customerIdtype;
public Long serviceFee; //服务金额 public Long serviceFee; //服务金额
public String totalFee; //服务金额 + 消费金额 public String totalFee; //服务金额 + 消费金额
public String entolllaneName; //入口站名 public String entolllaneName; //入口站名
public String enName; //入口站名
public String enTime; //入口站时间 public String enTime; //入口站时间
public String extolllaneName; //出口站站名 public String extolllaneName; //出口站站名
public String exName; //出口站站名
public String exTime; //出口站时间 public String exTime; //出口站时间
public String customerPosImgUrl; //开户人正面图片地址、营业执照 public String customerPosImgUrl; //开户人正面图片地址、营业执照
public String customerNegImgUrl; //开户人反面图片地址 public String customerNegImgUrl; //开户人反面图片地址

+ 8
- 12
app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/activity/after/CheckRunningWaterStep1Activity.java ファイルの表示

import android.widget.EditText; import android.widget.EditText;


import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.huntersun.vkyes.etcopencard.databinding.ActivityCheckRunningWaterStep1Binding; import com.huntersun.vkyes.etcopencard.databinding.ActivityCheckRunningWaterStep1Binding;
import com.huntersun.vkyes.etcopencard.project.api.MyRetrofit; import com.huntersun.vkyes.etcopencard.project.api.MyRetrofit;
import com.huntersun.vkyes.etcopencard.project.api.Result; import com.huntersun.vkyes.etcopencard.project.api.Result;
import com.huntersun.vkyes.etcopencard.project.api.bean.IFCode; import com.huntersun.vkyes.etcopencard.project.api.bean.IFCode;
import com.huntersun.vkyes.etcopencard.project.api.bean.ResultBean; import com.huntersun.vkyes.etcopencard.project.api.bean.ResultBean;
import com.huntersun.vkyes.etcopencard.project.ui.adapter.BalanceReplacementAdapter;
import com.huntersun.vkyes.etcopencard.project.ui.adapter.CheckRunningCardListAdapter; import com.huntersun.vkyes.etcopencard.project.ui.adapter.CheckRunningCardListAdapter;
import com.huntersun.vkyes.etcopencard.project.utils.FunHelper; import com.huntersun.vkyes.etcopencard.project.utils.FunHelper;
import com.huntersun.vkyes.etcopencard.project.utils.SearchCarInfoUtils; import com.huntersun.vkyes.etcopencard.project.utils.SearchCarInfoUtils;
import com.huntersun.vkyes.etcopencard.src.action.StatusAction; import com.huntersun.vkyes.etcopencard.src.action.StatusAction;
import com.huntersun.vkyes.etcopencard.src.aop.SingleClick;
import com.huntersun.vkyes.etcopencard.src.app.AppActivity; import com.huntersun.vkyes.etcopencard.src.app.AppActivity;
import com.huntersun.vkyes.etcopencard.src.other.CodeCountDown;
import com.huntersun.vkyes.etcopencard.src.widget.StatusLayout; import com.huntersun.vkyes.etcopencard.src.widget.StatusLayout;
import com.scwang.smart.refresh.layout.api.RefreshLayout; import com.scwang.smart.refresh.layout.api.RefreshLayout;
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener; import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener;


import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;


import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;


import androidx.annotation.NonNull; import androidx.annotation.NonNull;
private ActivityCheckRunningWaterStep1Binding binding; private ActivityCheckRunningWaterStep1Binding binding;


private CheckRunningCardListAdapter adapter; private CheckRunningCardListAdapter adapter;
private List<ResultBean.BizContent> list;
private String curVehicleId; private String curVehicleId;
private EditText etSearch; private EditText etSearch;




@Override @Override
protected void initView() { protected void initView() {
list = new ArrayList<>();
adapter = new CheckRunningCardListAdapter(this, new CheckRunningCardListAdapter.OnItemClickListener() { adapter = new CheckRunningCardListAdapter(this, new CheckRunningCardListAdapter.OnItemClickListener() {
@Override @Override
public void doItemClick(ResultBean.BizContent bizContent) { public void doItemClick(ResultBean.BizContent bizContent) {
if (FunHelper.isEmpty(bizContent.tel)){
toast("获取用户手机号为空!");
return;
}

Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putString("dataJson",JSON.toJSONString(bizContent)); bundle.putString("dataJson",JSON.toJSONString(bizContent));
jumpToPage(CheckRunningWaterStep2Activity.class,bundle); jumpToPage(CheckRunningWaterStep2Activity.class,bundle);
private void getList() { private void getList() {
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
params.put("vehicleId", curVehicleId); params.put("vehicleId", curVehicleId);
MyRetrofit.newInstance(IFCode.IFCODE924, params, new MyRetrofit.ReturnResult() {
MyRetrofit.newInstance(IFCode.IFCODE152, params, new MyRetrofit.ReturnResult() {
@Override @Override
public void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent) { public void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent) {
FunHelper.closeKeyboard(etSearch); FunHelper.closeKeyboard(etSearch);
if (FunHelper.isEmpty(bizContent.getData())) {
if (FunHelper.isEmpty(bizContent.cards)) {
postDelayed(CheckRunningWaterStep1Activity.this::showEmpty, 300); postDelayed(CheckRunningWaterStep1Activity.this::showEmpty, 300);
return; return;
} }
showComplete(); showComplete();
adapter.replaceData(bizContent.getData());

adapter.replaceData(bizContent.cards);
} }


@Override @Override

+ 3
- 8
app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/activity/after/CheckRunningWaterStep2Activity.java ファイルの表示

curBizContent = JSON.parseObject(json, ResultBean.BizContent.class); curBizContent = JSON.parseObject(json, ResultBean.BizContent.class);
} }


binding.tvMobile.setText(FunHelper.isEmpty(curBizContent.getCustomerTel()) ? "" : curBizContent.getCustomerTel());
binding.tvMobile.setText(FunHelper.isEmpty(curBizContent.tel) ? "" : curBizContent.tel);
binding.btnNext.setOnClickListener(new View.OnClickListener() { binding.btnNext.setOnClickListener(new View.OnClickListener() {
@Override @Override
@SingleClick @SingleClick
private void checkUser() { private void checkUser() {
showDialog("用户校验中..."); showDialog("用户校验中...");
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
params.put("mobile", curBizContent.getCustomerTel());
params.put("mobile", curBizContent.tel);
params.put("code", FunHelper.getText(binding.etCode)); params.put("code", FunHelper.getText(binding.etCode));
MyRetrofit.newInstance(IFCode.IFCODE966, params, new MyRetrofit.ReturnResult() { MyRetrofit.newInstance(IFCode.IFCODE966, params, new MyRetrofit.ReturnResult() {
@Override @Override
public void onError() { public void onError() {
MyRetrofit.ReturnResult.super.onError(); MyRetrofit.ReturnResult.super.onError();
hideDialog(); hideDialog();

//TODO 测试
Bundle bundle = new Bundle();
bundle.putString("dataJson", JSON.toJSONString(curBizContent));
jumpToPage(CheckRunningWaterStep3Activity.class, bundle);
} }
}); });
} }
private void sendCode() { private void sendCode() {
showDialog("发送中..."); showDialog("发送中...");
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
params.put("mobile", curBizContent.getCustomerTel());
params.put("mobile", curBizContent.tel);
MyRetrofit.newInstance(IFCode.IFCODE2, params, new MyRetrofit.ReturnResult() { MyRetrofit.newInstance(IFCode.IFCODE2, params, new MyRetrofit.ReturnResult() {
@Override @Override
public void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent) { public void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent) {

+ 121
- 48
app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/activity/after/CheckRunningWaterStep3Activity.java ファイルの表示

import android.content.Intent; import android.content.Intent;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.os.Build; import android.os.Build;
import android.os.Bundle;
import android.os.Environment; import android.os.Environment;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import com.huntersun.vkyes.etcopencard.project.api.bean.ResultBean; import com.huntersun.vkyes.etcopencard.project.api.bean.ResultBean;
import com.huntersun.vkyes.etcopencard.project.dialog.ConfirmDialog; import com.huntersun.vkyes.etcopencard.project.dialog.ConfirmDialog;
import com.huntersun.vkyes.etcopencard.project.tool.DateUtils; import com.huntersun.vkyes.etcopencard.project.tool.DateUtils;
import com.huntersun.vkyes.etcopencard.project.tool.Utils;
import com.huntersun.vkyes.etcopencard.project.ui.adapter.CheckRunningAdapter; import com.huntersun.vkyes.etcopencard.project.ui.adapter.CheckRunningAdapter;
import com.huntersun.vkyes.etcopencard.project.utils.Constants; import com.huntersun.vkyes.etcopencard.project.utils.Constants;
import com.huntersun.vkyes.etcopencard.project.utils.FunHelper; import com.huntersun.vkyes.etcopencard.project.utils.FunHelper;
import com.huntersun.vkyes.etcopencard.src.aop.Permissions; import com.huntersun.vkyes.etcopencard.src.aop.Permissions;
import com.huntersun.vkyes.etcopencard.src.aop.SingleClick; import com.huntersun.vkyes.etcopencard.src.aop.SingleClick;
import com.huntersun.vkyes.etcopencard.src.app.AppActivity; import com.huntersun.vkyes.etcopencard.src.app.AppActivity;
import com.huntersun.vkyes.etcopencard.src.manager.ActivityManager;
import com.huntersun.vkyes.etcopencard.src.ui.activity.LoginActivity;
import com.huntersun.vkyes.etcopencard.src.ui.dialog.DateDialog; import com.huntersun.vkyes.etcopencard.src.ui.dialog.DateDialog;
import com.huntersun.vkyes.etcopencard.src.widget.StatusLayout; import com.huntersun.vkyes.etcopencard.src.widget.StatusLayout;
import com.scwang.smart.refresh.layout.api.RefreshLayout; import com.scwang.smart.refresh.layout.api.RefreshLayout;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;


import java.io.File; import java.io.File;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;


import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
//当前是否下载完毕 //当前是否下载完毕
private boolean mDownloadComplete; private boolean mDownloadComplete;


//是否有下一页
private boolean hasMore;

@Override @Override
protected View getLayoutView() { protected View getLayoutView() {
binding = ActivityCheckRunningWaterStep3Binding.inflate(getLayoutInflater()); binding = ActivityCheckRunningWaterStep3Binding.inflate(getLayoutInflater());
binding.tvEndTime.setOnClickListener(this::initClick); binding.tvEndTime.setOnClickListener(this::initClick);
binding.LLEndTime.setOnClickListener(this::initClick); binding.LLEndTime.setOnClickListener(this::initClick);
binding.btnDownload.setOnClickListener(this::initClick); binding.btnDownload.setOnClickListener(this::initClick);
binding.btnCheck.setOnClickListener(this::initClick);


binding.tvTotalFee.setText("金额合计:0");
binding.tvTotalFee.setText("金额合计:¥ 0");
binding.tvTotalPassNum.setText("通行次数:0"); binding.tvTotalPassNum.setText("通行次数:0");
binding.tvStopNum.setText("停车次数:0"); binding.tvStopNum.setText("停车次数:0");


days = DateUtils.daysBetween(FunHelper.getText(binding.tvStartTime),time); days = DateUtils.daysBetween(FunHelper.getText(binding.tvStartTime),time);
} }


if (days > 62){
//TODO 测试
/*if (days > 62){
toast("最大查询月份只能为2个月"); toast("最大查询月份只能为2个月");
return; return;
}
}*/
textView.setText(time); textView.setText(time);

}).show(); }).show();
} }


@Override @Override
protected void initData() { protected void initData() {
showLoading(); showLoading();
LoadData();
refreshList();
} }


@Override @Override
public StatusLayout getStatusLayout() {
return binding.hlStatusHint;
}

@RequiresApi(api = Build.VERSION_CODES.M)
@SingleClick
private void initClick(View view) {
if (view == binding.tvStartTime || view == binding.LLStartTime) {
showTimeDialog(binding.tvStartTime,true);
refreshList();
} else if (view == binding.tvEndTime || view == binding.LLEndTime) {
showTimeDialog(binding.tvEndTime,false);
refreshList();
} else if (view == binding.btnDownload) {
String msg = "请确认是否下载" + bizContent.getCardId() + "卡在" + FunHelper.getText(binding.tvStartTime) + "~" + FunHelper.getText(binding.tvEndTime) + "时间内的通行流水?";
new ConfirmDialog.Builder(CheckRunningWaterStep3Activity.this).setMsg(msg, "下载提示", "确定", "取消", R.mipmap.icon_lotgout_etc_hint, 0, false)
.onClick(new ConfirmDialog.Result() {
@Override
public void confirm() {
downLoadExcel("http://cachefly.cachefly.net/100mb.test");
}
}).show();
public void onLoadMore(@NonNull @NotNull RefreshLayout refreshLayout) {
if (!hasMore) {
binding.rlStatusRefresh.finishLoadMore();
return;
} }
}



@Override
public void onLoadMore(@NonNull @NotNull RefreshLayout refreshLayout) {
postDelayed(() -> { postDelayed(() -> {
refreshList();
page = page + 1;
loadData();
binding.rlStatusRefresh.finishLoadMore();
}, 1000); }, 1000);
} }


@Override @Override
public void onRefresh(@NonNull @NotNull RefreshLayout refreshLayout) { public void onRefresh(@NonNull @NotNull RefreshLayout refreshLayout) {
postDelayed(() -> { postDelayed(() -> {
page = 1;
LoadData();
binding.rlStatusRefresh.finishRefresh();
refreshList();
}, 1000); }, 1000);
} }


/**
* 刷新数据
*/
private void refreshList() { private void refreshList() {
page = page + 1;
LoadData();
binding.rlStatusRefresh.finishLoadMore();
loadCountData();
page = 1;
loadData();
binding.rlStatusRefresh.finishRefresh();
}

/**
* 账单合计接口
*/
private void loadCountData(){
showDialog("查询中...");
Map<String, String> params = new HashMap<>();
params.put("cardId", bizContent.getCardId());
params.put("starDate",FunHelper.getText(binding.tvStartTime));
params.put("endDate",FunHelper.getText(binding.tvEndTime));
MyRetrofit.newInstance(IFCode.IFCODE_FLOWING_COUNT, params, new MyRetrofit.ReturnResult() {
@Override
public void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent) {
hideDialog();
binding.tvTotalFee.setText("金额合计:¥" + FunHelper.changeF2Y(bizContent.aggregateAmount));
binding.tvTotalPassNum.setText("通行次数:" + bizContent.passTotal);
binding.tvStopNum.setText("停车次数:" + bizContent.parkTotal);
}

@Override
public void onError() {
MyRetrofit.ReturnResult.super.onError();
hideDialog();
}
});
}

/**
* 下载
*/
private void downloadData(){
showDialog("下载中...");
Map<String, String> params = new HashMap<>();
params.put("cardId", bizContent.getCardId());
params.put("starDate",FunHelper.getText(binding.tvStartTime));
params.put("endDate",FunHelper.getText(binding.tvEndTime));
MyRetrofit.newInstance(IFCode.IFCODE_FLOWING_DOWNLOAD, params, new MyRetrofit.ReturnResult() {
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent) {
hideDialog();
LogUtils.e(">>>>>",JSON.toJSONString(bizContent));
if (!FunHelper.isEmpty(bizContent.DetailDownLoadURL)){
downLoadExcel(MyRetrofit.URL_DOWNLOAD_FILE + bizContent.DetailDownLoadURL);
}else{
toast("下载链接不存在");
}
}

@Override
public void onError() {
MyRetrofit.ReturnResult.super.onError();
hideDialog();
}
});
} }


/* 获取列表 */ /* 获取列表 */
private void LoadData() {
private void loadData() {
Parameters parameters = new Parameters(); Parameters parameters = new Parameters();
parameters.setCardId(bizContent.getCardId());
parameters.setPageNo(String.valueOf(page)); parameters.setPageNo(String.valueOf(page));
parameters.setPageSize(Constants.pageSize); parameters.setPageSize(Constants.pageSize);
parameters.setCardId(bizContent.getCardId());
if (!FunHelper.isEmpty(FunHelper.getText(binding.tvStartTime))) { if (!FunHelper.isEmpty(FunHelper.getText(binding.tvStartTime))) {
parameters.setBeforeDate(FunHelper.getText(binding.tvStartTime)); parameters.setBeforeDate(FunHelper.getText(binding.tvStartTime));
} }
if (!FunHelper.isEmpty(FunHelper.getText(binding.tvEndTime))) { if (!FunHelper.isEmpty(FunHelper.getText(binding.tvEndTime))) {
parameters.setAfterDate(FunHelper.getText(binding.tvEndTime)); parameters.setAfterDate(FunHelper.getText(binding.tvEndTime));
} }

RequestParameters parameters1 = new RequestParameters(IFCode.IFCODE925, new Gson().toJson(parameters)); RequestParameters parameters1 = new RequestParameters(IFCode.IFCODE925, new Gson().toJson(parameters));
if (page == 1) { if (page == 1) {
showLoading(); showLoading();
@SuppressLint("NotifyDataSetChanged") @SuppressLint("NotifyDataSetChanged")
@Override @Override
protected void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent1) { protected void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent1) {
showComplete();
if (bizContent1.getData() == null) { if (bizContent1.getData() == null) {
postDelayed(CheckRunningWaterStep3Activity.this::showEmpty, 300);
showEmpty();
return; return;
} }
int pageSize = 10;
int totalSize = Integer.parseInt(bizContent1.getTotalCount());
List<ResultBean.BizContent> list = bizContent1.getData();

hasMore = bizContent1.hasMore;
if (page == 1) { if (page == 1) {
adapter.replaceData(list);
adapter.replaceData(bizContent1.getData());
} else { } else {
if (totalSize % pageSize == 0) {
adapter.addData(list);
if (!FunHelper.isEmpty(bizContent1.getData())){
adapter.addData(bizContent1.getData());
} }
} }
if (list.size() == 0 && page == 1) {
if (FunHelper.isEmpty(bizContent1.getData()) && page == 1) {
showEmpty(); showEmpty();
} else { } else {
showComplete(); showComplete();
showError(new StatusLayout.OnRetryListener() { showError(new StatusLayout.OnRetryListener() {
@Override @Override
public void onRetry(StatusLayout layout) { public void onRetry(StatusLayout layout) {
LoadData();
refreshList();
} }
}); });
} }
}); });
} }


@Override
public StatusLayout getStatusLayout() {
return binding.hlStatusHint;
}

@RequiresApi(api = Build.VERSION_CODES.M)
@SingleClick
private void initClick(View view) {
if (view == binding.tvStartTime || view == binding.LLStartTime) {
showTimeDialog(binding.tvStartTime,true);
} else if (view == binding.tvEndTime || view == binding.LLEndTime) {
showTimeDialog(binding.tvEndTime,false);
} else if (view == binding.btnDownload) {
String msg = "请确认是否下载" + bizContent.getCardId() + "卡在" + FunHelper.getText(binding.tvStartTime) + "~" + FunHelper.getText(binding.tvEndTime) + "时间内的通行流水?";
new Utils().showMessDialog(getActivity(), msg, dialog -> {
downloadData();
});
}else if (view == binding.btnCheck){
refreshList();
}
}

/** /**
* 下载 文件 * 下载 文件
*/ */

+ 1
- 0
app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/activity/after/ReplaceEtcStep4Activity.java ファイルの表示

@Override @Override
public void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent) { public void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent) {
hideDialog(); hideDialog();
//TODO 据说要改成只有一条
if (!FunHelper.isEmpty(bizContent.list)){ if (!FunHelper.isEmpty(bizContent.list)){
//永远获取最新一条 //永远获取最新一条
applyData = (ResultBean.BizContent) bizContent.list.get(bizContent.list.size() - 1); applyData = (ResultBean.BizContent) bizContent.list.get(bizContent.list.size() - 1);

+ 18
- 15
app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/activity/mail/ListDeliveryActivity.java ファイルの表示

import com.huntersun.vkyes.etcopencard.project.api.bean.IFCode; import com.huntersun.vkyes.etcopencard.project.api.bean.IFCode;
import com.huntersun.vkyes.etcopencard.project.api.bean.ResultBean; import com.huntersun.vkyes.etcopencard.project.api.bean.ResultBean;
import com.huntersun.vkyes.etcopencard.project.api.bean.SendTheVerificationCodeBean; import com.huntersun.vkyes.etcopencard.project.api.bean.SendTheVerificationCodeBean;
import com.huntersun.vkyes.etcopencard.project.utils.FunHelper;
import com.huntersun.vkyes.etcopencard.src.action.StatusAction; import com.huntersun.vkyes.etcopencard.src.action.StatusAction;
import com.huntersun.vkyes.etcopencard.src.aop.SingleClick; import com.huntersun.vkyes.etcopencard.src.aop.SingleClick;
import com.huntersun.vkyes.etcopencard.src.app.AppActivity; import com.huntersun.vkyes.etcopencard.src.app.AppActivity;
public class ListDeliveryActivity extends AppActivity implements OnRefreshLoadMoreListener, StatusAction { public class ListDeliveryActivity extends AppActivity implements OnRefreshLoadMoreListener, StatusAction {
private ActivityListDeliveryBinding binding; private ActivityListDeliveryBinding binding;
private int Page = 1; private int Page = 1;
private boolean hasMore;


@Override @Override
protected View getLayoutView() { protected View getLayoutView() {


@Override @Override
protected void initData() { protected void initData() {
if (Page == 1) hasMore = true;
SendTheVerificationCodeBean bizContent = new SendTheVerificationCodeBean(); SendTheVerificationCodeBean bizContent = new SendTheVerificationCodeBean();
bizContent.setPageNo(Page); bizContent.setPageNo(Page);
RequestParameters parameters = RequestParameters parameters =
.enqueue(new Converter<Result>(this, "列表数据加载中...") { .enqueue(new Converter<Result>(this, "列表数据加载中...") {
@Override @Override
protected void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent) { protected void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent) {
showComplete();
if (bizContent.getData() == null) {
showEmpty();
return;
}

int pageSize = 10; // 每页的数据条数
int totalSize = Integer.parseInt(bizContent.getTotalCount()); // 获取总的数据条数 int totalSize = Integer.parseInt(bizContent.getTotalCount()); // 获取总的数据条数
int pageCount = totalSize / pageSize; // 计算总页数
List<ResultBean.BizContent> list = bizContent.getData();
if (Page == 1) { if (Page == 1) {
adapter.replaceData(list);
adapter.replaceData(bizContent.getData());
} else { } else {
if (totalSize % pageSize == 0) {
adapter.addData(list);
} else {
toast("没有更多数据了!");
if (!FunHelper.isEmpty(bizContent.getData())){
adapter.addData(bizContent.getData());
} }
} }
if (list.size() == 0 && Page == 1) {
if (FunHelper.isEmpty(bizContent.getData()) && Page == 1) {
showEmpty(); showEmpty();
} else { } else {
showComplete(); showComplete();
} }

if (adapter.getData().size() >= totalSize){
hasMore = false;
}else{
hasMore = true;
}
} }


@Override @Override


@Override @Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) { public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
if (!hasMore) {
binding.rlStatusRefresh.finishLoadMore();
return;
}

postDelayed(() -> { postDelayed(() -> {
Page++; Page++;
initData(); initData();

+ 17
- 13
app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/adapter/CheckRunningAdapter.java ファイルの表示

* Date :2023-03-17 * Date :2023-03-17
* Description:通行流水查询adapter * Description:通行流水查询adapter
*/ */
public class CheckRunningAdapter extends BaseQuickAdapter<ResultBean.BizContent, BaseViewHolder>{
public class CheckRunningAdapter extends BaseQuickAdapter<ResultBean.BizContent, BaseViewHolder> {
private Context mContext; private Context mContext;


public CheckRunningAdapter(Context mContext) { public CheckRunningAdapter(Context mContext) {
holder.setText(R.id.tvVehiclePlate, FunHelper.isEmpty(bizContent.getVehiclePlate()) ? "" : bizContent.getVehiclePlate()); holder.setText(R.id.tvVehiclePlate, FunHelper.isEmpty(bizContent.getVehiclePlate()) ? "" : bizContent.getVehiclePlate());
holder.setText(R.id.tvEtcNum, FunHelper.isEmpty(bizContent.getCardId()) ? "" : bizContent.getCardId()); holder.setText(R.id.tvEtcNum, FunHelper.isEmpty(bizContent.getCardId()) ? "" : bizContent.getCardId());
holder.setText(R.id.tvFee, "¥" + (FunHelper.changeF2Y(bizContent.fee))); holder.setText(R.id.tvFee, "¥" + (FunHelper.changeF2Y(bizContent.fee)));
holder.setText(R.id.tvServiceFee, "¥" + (FunHelper.changeF2Y(bizContent.serviceFee)));
holder.setText(R.id.tvTotalFee, (FunHelper.changeF2Y(Long.parseLong(FunHelper.isEmpty(bizContent.totalFee) ? "0" : bizContent.totalFee))));

holder.setText(R.id.tvStartAddr,FunHelper.isEmpty(bizContent.entolllaneName) ? "" : bizContent.entolllaneName);
holder.setText(R.id.tvEndAddr,FunHelper.isEmpty(bizContent.extolllaneName) ? "" : bizContent.extolllaneName);
if (!FunHelper.isEmpty(bizContent.enTime)){//入站时间
String[] times = bizContent.enTime.split("T");
holder.setText(R.id.tvStartTime,FunHelper.isEmpty(times[1]) ? "00:00" : times[1]);
holder.setText(R.id.tvDate,FunHelper.isEmpty(times[0]) ? "0000-00-00" : times[0]);
holder.setText(R.id.tvServiceFee, "¥ 0.00");
holder.setText(R.id.tvTotalFee,"¥" + FunHelper.changeF2Y(bizContent.fee) );

holder.setText(R.id.tvStartAddr, FunHelper.isEmpty(bizContent.enName) ? "" : bizContent.enName);
holder.setText(R.id.tvEndAddr, FunHelper.isEmpty(bizContent.exName) ? "" : bizContent.exName);
if (!FunHelper.isEmpty(bizContent.enTime)) {//入站时间
String[] times = bizContent.enTime.split(" ");
if (times.length > 1) {
holder.setText(R.id.tvStartTime, FunHelper.isEmpty(times[1]) ? "00:00" : times[1]);
holder.setText(R.id.tvDate, FunHelper.isEmpty(times[0]) ? "0000-00-00" : times[0]);
}
} }
if (!FunHelper.isEmpty(bizContent.exTime)) {//出站时间 if (!FunHelper.isEmpty(bizContent.exTime)) {//出站时间
String[] times = bizContent.exTime.split("T");
holder.setText(R.id.tvEndTime, FunHelper.isEmpty(times[1]) ? "00:00" : times[1]);
holder.setText(R.id.tvEndDate, FunHelper.isEmpty(times[0]) ? "0000-00-00" : times[0]);
String[] times = bizContent.exTime.split(" ");
if (times.length > 1) {
holder.setText(R.id.tvEndTime, FunHelper.isEmpty(times[1]) ? "00:00" : times[1]);
holder.setText(R.id.tvEndDate, FunHelper.isEmpty(times[0]) ? "0000-00-00" : times[0]);
}
} }
} }



+ 15
- 2
app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/adapter/CheckRunningCardListAdapter.java ファイルの表示

public class CheckRunningCardListAdapter extends BaseQuickAdapter<ResultBean.BizContent, BaseViewHolder>{ public class CheckRunningCardListAdapter extends BaseQuickAdapter<ResultBean.BizContent, BaseViewHolder>{
private Context mContext; private Context mContext;
private OnItemClickListener listener; private OnItemClickListener listener;
private ResultBean.BizContent beforeBean;


public CheckRunningCardListAdapter(Context mContext,OnItemClickListener listener) { public CheckRunningCardListAdapter(Context mContext,OnItemClickListener listener) {
super(R.layout.layout_check_running_water_card_item); super(R.layout.layout_check_running_water_card_item);
protected void convert(@NonNull @NotNull BaseViewHolder holder, ResultBean.BizContent bizContent) { protected void convert(@NonNull @NotNull BaseViewHolder holder, ResultBean.BizContent bizContent) {
if (!FunHelper.isEmpty(bizContent.getCardStatus()) && bizContent.getCardStatus().equals("1")){ if (!FunHelper.isEmpty(bizContent.getCardStatus()) && bizContent.getCardStatus().equals("1")){
holder.setText(R.id.tvTitle,"正常卡信息"); holder.setText(R.id.tvTitle,"正常卡信息");
//holder.setVisible(R.id.tvTitle,true);
if (beforeBean != null && beforeBean.getCardStatus().equals("1")){
holder.setVisible(R.id.tvTitle,false);
}else{
holder.setVisible(R.id.tvTitle,true);
}

}else{ }else{
holder.setText(R.id.tvTitle,"异常卡信息"); holder.setText(R.id.tvTitle,"异常卡信息");
if (beforeBean != null && !beforeBean.getCardStatus().equals("1")){
holder.setVisible(R.id.tvTitle,false);
}else{
holder.setVisible(R.id.tvTitle,true);
}
} }

holder.setText(R.id.tvCardId, FunHelper.isEmpty(bizContent.getCardId()) ? "" : bizContent.getCardId()); holder.setText(R.id.tvCardId, FunHelper.isEmpty(bizContent.getCardId()) ? "" : bizContent.getCardId());
holder.setText(R.id.tvCardType, FunHelper.isEmpty(bizContent.getIsValueCard()) ? "" : (bizContent.getIsValueCard().equals("1") ? "记账卡" : "储值卡"));
holder.setText(R.id.tvCardType, FunHelper.isEmpty(bizContent.cardType) ? "" : (bizContent.cardType.startsWith("1") ? "记账卡" : "储值卡"));
holder.setText(R.id.tvCardStatus, FunHelper.isEmpty(bizContent.getCardStatus()) ? "" : (FunHelper.getETCStatusName(Integer.parseInt(bizContent.getCardStatus())))); holder.setText(R.id.tvCardStatus, FunHelper.isEmpty(bizContent.getCardStatus()) ? "" : (FunHelper.getETCStatusName(Integer.parseInt(bizContent.getCardStatus()))));
beforeBean = bizContent;


holder.setOnClickListener(R.id.btnNext, new View.OnClickListener() { holder.setOnClickListener(R.id.btnNext, new View.OnClickListener() {
@Override @Override

+ 2
- 2
app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/fragment/FragmentHomeTow.java ファイルの表示

{R.mipmap.card3, "充值圈存"}, {R.mipmap.card3, "充值圈存"},
{R.mipmap.card1, "卡签信息查询"}, {R.mipmap.card1, "卡签信息查询"},
{R.mipmap.card5, "卡签挂失/解挂"}, {R.mipmap.card5, "卡签挂失/解挂"},
{R.mipmap.card6, "卡签挂起/解挂"},
{R.mipmap.card4, "卡签注销"}, {R.mipmap.card4, "卡签注销"},
{R.mipmap.card10, "更换卡签"}, {R.mipmap.card10, "更换卡签"},
{R.mipmap.card9, "储值卡转记账卡"}, {R.mipmap.card9, "储值卡转记账卡"},
{R.mipmap.card7, "满意度评价"}, {R.mipmap.card7, "满意度评价"},
{R.mipmap.card18, "发票管理"}, {R.mipmap.card18, "发票管理"},
{R.mipmap.card3, "卡签版本查询"}, {R.mipmap.card3, "卡签版本查询"},
{R.mipmap.card6, "公务车发行"},*/
{R.mipmap.card6, "公务车发行"},
{R.mipmap.card6, "卡签挂起/解挂"}, APP端 */
}; };


public static AppFragment<MainActivity> newInstance() { public static AppFragment<MainActivity> newInstance() {

+ 19
- 14
app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/fragment/FragmentSonOne.java ファイルの表示

import com.huntersun.vkyes.etcopencard.project.ui.activity.MainActivity; import com.huntersun.vkyes.etcopencard.project.ui.activity.MainActivity;
import com.huntersun.vkyes.etcopencard.project.ui.activity.order.OrderUtils; import com.huntersun.vkyes.etcopencard.project.ui.activity.order.OrderUtils;
import com.huntersun.vkyes.etcopencard.project.utils.Constants; import com.huntersun.vkyes.etcopencard.project.utils.Constants;
import com.huntersun.vkyes.etcopencard.project.utils.FunHelper;
import com.huntersun.vkyes.etcopencard.src.action.StatusAction; import com.huntersun.vkyes.etcopencard.src.action.StatusAction;
import com.huntersun.vkyes.etcopencard.src.aop.SingleClick; import com.huntersun.vkyes.etcopencard.src.aop.SingleClick;
import com.huntersun.vkyes.etcopencard.src.app.AppFragment; import com.huntersun.vkyes.etcopencard.src.app.AppFragment;
private int page = 1; private int page = 1;
private int orderStep = 0; private int orderStep = 0;
private String licensePlate; private String licensePlate;
private boolean hasMore;


public static AppFragment<MainActivity> newInstance(int start) { public static AppFragment<MainActivity> newInstance(int start) {
return new FragmentSonOne(start); return new FragmentSonOne(start);
} }


public void LoadData() { public void LoadData() {
if (page == 1 ) hasMore = true;

List<String> list = null; List<String> list = null;
Parameters parameters = new Parameters(); Parameters parameters = new Parameters();
//0 - 全部 1 - 申办中 2 - 待发货 3 - 待激活 4 - 已完成 //0 - 全部 1 - 申办中 2 - 待发货 3 - 待激活 4 - 已完成
@SuppressLint("NotifyDataSetChanged") @SuppressLint("NotifyDataSetChanged")
@Override @Override
protected void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent1) { protected void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent1) {
if (bizContent1.getData() == null) {
postDelayed(FragmentSonOne.this::showEmpty, 300);
return;
}

int pageSize = 10; // 每页的数据条数
int totalSize = Integer.parseInt(bizContent1.getTotalCount()); // 获取总的数据条数 int totalSize = Integer.parseInt(bizContent1.getTotalCount()); // 获取总的数据条数
int pageCount = totalSize / pageSize; // 计算总页数
List<ResultBean.BizContent> list = bizContent1.getData();
if (page == 1) { if (page == 1) {
adapter.replaceData(list);
adapter.replaceData(bizContent1.getData());
} else { } else {
if (totalSize % pageSize == 0) {
adapter.addData(list);
} else {
toast("没有更多数据了!");
if (!FunHelper.isEmpty(bizContent1.getData())){
adapter.addData(bizContent1.getData());
} }
} }
if (list.size() == 0 && page == 1) {
if (FunHelper.isEmpty(bizContent1.getData()) && page == 1) {
showEmpty(); showEmpty();
} else { } else {
showComplete(); showComplete();
} }

if (adapter.getData().size() >= totalSize){
hasMore = false;
}else{
hasMore = true;
}
} }


@Override @Override


@Override @Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) { public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
if (!hasMore) {
binding.rlStatusRefresh.finishLoadMore();
return;
}

postDelayed(() -> { postDelayed(() -> {
page = page + 1; page = page + 1;
LoadData(); LoadData();

+ 1
- 2
app/src/main/java/com/huntersun/vkyes/etcopencard/project/utils/SearchCarInfoUtils.java ファイルの表示

package com.huntersun.vkyes.etcopencard.project.utils; package com.huntersun.vkyes.etcopencard.project.utils;


import android.content.Context;
import android.view.View; import android.view.View;
import android.view.animation.AnimationUtils; import android.view.animation.AnimationUtils;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import android.widget.LinearLayout; import android.widget.LinearLayout;
btnYellowGreen.setOnClickListener(this::initClick); btnYellowGreen.setOnClickListener(this::initClick);
btnGreen.setOnClickListener(this::initClick); btnGreen.setOnClickListener(this::initClick);
btnSearch.setOnClickListener(this::initClick); btnSearch.setOnClickListener(this::initClick);

} }


private void initClick(View view) { private void initClick(View view) {

+ 1
- 1
app/src/main/res/layout/activity_check_running_water_step3.xml ファイルの表示

android:layout_height="match_parent"> android:layout_height="match_parent">
<com.scwang.smart.refresh.layout.SmartRefreshLayout <com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/rl_status_refresh" android:id="@+id/rl_status_refresh"
android:layout_marginBottom="@dimen/dp_65"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
app:srlEnablePreviewInEditMode="false"> app:srlEnablePreviewInEditMode="false">
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler" android:id="@+id/recycler"
style="@style/MatchMatch" style="@style/MatchMatch"
android:layout_marginBottom="@dimen/dp_65"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_check_running_water" /> tools:listitem="@layout/item_check_running_water" />
</com.scwang.smart.refresh.layout.SmartRefreshLayout> </com.scwang.smart.refresh.layout.SmartRefreshLayout>

+ 2
- 0
app/src/main/res/layout/item_check_running_water.xml ファイルの表示

android:gravity="center"> android:gravity="center">
<TextView <TextView
android:id="@+id/tvStartAddr" android:id="@+id/tvStartAddr"
android:maxWidth="@dimen/dp_80"
style="@style/WrapWrap" style="@style/WrapWrap"
android:textColor="@color/color_333333" android:textColor="@color/color_333333"
android:textSize="@dimen/sp_15"/> android:textSize="@dimen/sp_15"/>
<TextView <TextView
android:id="@+id/tvEndAddr" android:id="@+id/tvEndAddr"
style="@style/WrapWrap" style="@style/WrapWrap"
android:maxWidth="@dimen/dp_80"
android:textColor="@color/color_333333" android:textColor="@color/color_333333"
android:textSize="@dimen/sp_15"/> android:textSize="@dimen/sp_15"/>



+ 2
- 0
app/src/main/res/layout/item_list_pay_the_arrears.xml ファイルの表示

<TextView <TextView
android:id="@+id/tvStartAddr" android:id="@+id/tvStartAddr"
style="@style/WrapWrap" style="@style/WrapWrap"
android:maxWidth="@dimen/dp_80"
android:textColor="@color/color_333333" android:textColor="@color/color_333333"
android:textSize="@dimen/sp_15"/> android:textSize="@dimen/sp_15"/>


<TextView <TextView
android:id="@+id/tvEndAddr" android:id="@+id/tvEndAddr"
style="@style/WrapWrap" style="@style/WrapWrap"
android:maxWidth="@dimen/dp_80"
android:textColor="@color/color_333333" android:textColor="@color/color_333333"
android:textSize="@dimen/sp_15"/> android:textSize="@dimen/sp_15"/>



+ 2
- 0
app/src/main/res/layout/layout_pay_the_arrears_info.xml ファイルの表示

android:id="@+id/tvStartAddr" android:id="@+id/tvStartAddr"
style="@style/WrapWrap" style="@style/WrapWrap"
android:text="贵阳西" android:text="贵阳西"
android:maxWidth="@dimen/dp_80"
android:textColor="@color/color_333333" android:textColor="@color/color_333333"
android:textSize="@dimen/sp_15" /> android:textSize="@dimen/sp_15" />


<TextView <TextView
android:id="@+id/tvEndAddr" android:id="@+id/tvEndAddr"
style="@style/WrapWrap" style="@style/WrapWrap"
android:maxWidth="@dimen/dp_80"
android:text="贵阳西" android:text="贵阳西"
android:textColor="@color/color_333333" android:textColor="@color/color_333333"
android:textSize="@dimen/sp_15" /> android:textSize="@dimen/sp_15" />

読み込み中…
キャンセル
保存