package com.dayu.qiheonlinelibrary.activity;
|
|
import android.annotation.SuppressLint;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.os.Bundle;
|
import android.text.Editable;
|
import android.text.TextUtils;
|
import android.text.TextWatcher;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.widget.EditText;
|
|
import com.dayu.baselibrary.tools.HexUtil;
|
import com.dayu.baselibrary.utils.DeviceUtils;
|
import com.dayu.baselibrary.utils.MornyUtil;
|
import com.dayu.baselibrary.utils.TipUtil;
|
|
|
import com.dayu.baselibrary.utils.ToastUtil;
|
import com.dayu.baselibrary.view.TipDialog;
|
import com.dayu.qiheonlinelibrary.QHOnLineApplication;
|
import com.dayu.qiheonlinelibrary.R;
|
import com.dayu.qiheonlinelibrary.bean.CardInfoResult;
|
import com.dayu.qiheonlinelibrary.bean.RechargeResult;
|
import com.dayu.qiheonlinelibrary.card.UserCard;
|
import com.dayu.qiheonlinelibrary.databinding.ActivityRechargeQhlBinding;
|
import com.dayu.qiheonlinelibrary.dbBean.AdminDataBean;
|
import com.dayu.qiheonlinelibrary.dbBean.ElectricPriceBean;
|
import com.dayu.qiheonlinelibrary.dbBean.RechargeBean;
|
import com.dayu.qiheonlinelibrary.dbBean.UserCardBean;
|
import com.dayu.qiheonlinelibrary.net.ApiManager;
|
import com.dayu.qiheonlinelibrary.net.BaseResponse;
|
import com.dayu.qiheonlinelibrary.net.RSAUtile;
|
import com.dayu.qiheonlinelibrary.net.subscribers.SubscriberListener;
|
import com.dayu.qiheonlinelibrary.tools.NfcReadHelper;
|
import com.dayu.qiheonlinelibrary.utils.CardCommon;
|
import com.tencent.bugly.crashreport.CrashReport;
|
|
import java.text.SimpleDateFormat;
|
import java.util.Calendar;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
|
/**
|
* Copyright (C), 2023,
|
* Author: zuo
|
* Date: 2023-11-5 09:52
|
* Description: 充值界面
|
*/
|
public class RechargeActivity extends BaseNfcActivity {
|
|
Intent intent;
|
|
ActivityRechargeQhlBinding binding;
|
public static RechargeActivity rechargeActivity;
|
|
|
String cardNumber = null;//实体卡号
|
RechargeBean rechargeBean;
|
|
String rechageWater;//充值的水量
|
|
String cardType;//卡状态
|
|
CardInfoResult cardInfoResult;
|
|
UserCard mOldUserCard;
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
try {
|
binding = ActivityRechargeQhlBinding.inflate(LayoutInflater.from(this));
|
setContentView(binding.getRoot());
|
setPricePoint(binding.rechargeWater);
|
rechargeActivity = this;
|
initView();
|
} catch (Exception e) {
|
e.printStackTrace();
|
CrashReport.postCatchedException(e);
|
}
|
}
|
|
public void onNewIntent(Intent intent) {
|
this.intent = intent;
|
try {
|
readAllData();
|
} catch (Exception e) {
|
e.printStackTrace();
|
CrashReport.postCatchedException(e);
|
}
|
super.onNewIntent(intent);
|
}
|
|
|
private void readAllData() {
|
cardType = NfcReadHelper.getInstence(intent, this).getCradTypeAndCardNumber();
|
|
String[] cardTypes = cardType.split(",");
|
if (cardTypes != null && cardTypes.length == 2) {
|
cardNumber = cardType.split(",")[0];
|
cardType = cardType.split(",")[1];
|
}
|
//获取卡内信息
|
mOldUserCard = NfcReadHelper.getInstence(intent, this).getUserCardData();
|
getUserInfoAndCardInfo(cardNumber);
|
|
}
|
|
|
private void setUserData(String cardNumber, String userName, String lastRechargeTime, float iccardBalanceMoney, List<byte[]> data) {
|
String state = "";
|
if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_1)) {
|
state = "终端写卡";
|
binding.rechargeLL.setVisibility(View.VISIBLE);
|
binding.rechargeRegistBtn.setVisibility(View.VISIBLE);
|
binding.redStatu.setTextColor(this.getResources().getColor(R.color.black));
|
} else if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_2)) {
|
setCardState("未刷卡关泵,当前不可充值");
|
} else if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_3)) {
|
setCardState("叠加充值");
|
} else {
|
TipUtil.show(this, "非用户卡,不能充值");
|
return;
|
}
|
|
userCard = UserCard.getBean(data);
|
|
if (Integer.valueOf(QHOnLineApplication.getInstance().arerNumber) == userCard.getArerNumber()) {
|
|
binding.rechargeReadLL.setVisibility(View.GONE);
|
binding.rechargeTextLL.setVisibility(View.VISIBLE);
|
binding.userName.setText(userName);
|
binding.redStatu.setText(state);
|
binding.redInitCode.setText(cardNumber);
|
binding.redRechargeDate.setText("本卡最后购水日期:\n\n" + lastRechargeTime);
|
binding.redUserCode.setText(cardInfoResult.getIccardCode());
|
if (userCard != null) {
|
|
binding.redRemainderBlance.setText(String.valueOf(iccardBalanceMoney) + " 元");
|
}
|
|
binding.redRechargeElectric.setText("电量单价:" + QHOnLineApplication.getInstance().electriclePriceStr + "元/度");
|
|
} else {
|
TipUtil.show(this, "非本区域卡\n不能充值!!!");
|
}
|
|
|
}
|
|
private void initView() {
|
binding.rechargeRegistBtn.setOnClickListener(v -> {
|
String morny = binding.rechargeWater.getText().toString();
|
if (!TextUtils.isEmpty(morny)) {
|
rechaege(morny);
|
} else {
|
TipUtil.show(RechargeActivity.this, "请输入充值金额");
|
}
|
});
|
}
|
|
|
//校验金额
|
public void setPricePoint(final EditText editText) {
|
editText.addTextChangedListener(new TextWatcher() {
|
@Override
|
public void onTextChanged(CharSequence s, int start, int before,
|
int count) {
|
if (s.toString().contains(".")) {
|
if (s.length() - 1 - s.toString().indexOf(".") > 2) {
|
s = s.toString().subSequence(0,
|
s.toString().indexOf(".") + 3);
|
editText.setText(s);
|
editText.setSelection(s.length());
|
}
|
}
|
if (s.toString().trim().substring(0).equals(".")) {
|
s = "0" + s;
|
editText.setText(s);
|
editText.setSelection(2);
|
}
|
|
if (s.toString().startsWith("0")
|
&& s.toString().trim().length() > 1) {
|
if (!s.toString().substring(1, 2).equals(".")) {
|
editText.setText(s.subSequence(0, 1));
|
editText.setSelection(1);
|
}
|
}
|
String morny = editText.getText().toString();
|
if (!TextUtils.isEmpty(morny)) {
|
// rechageWater = MornyUtil.intDiv(MornyUtil.changeY2F(editText.getText().toString()), waterPrice);
|
// binding.redRechargeWater.setText("充值水量:" + rechageWater + " 立方米(吨)");
|
}
|
|
|
}
|
|
@Override
|
public void beforeTextChanged(CharSequence s, int start, int count,
|
int after) {
|
|
}
|
|
@Override
|
public void afterTextChanged(Editable s) {
|
// TODO Auto-generated method stub
|
|
}
|
|
});
|
|
}
|
|
|
protected void onDestroy() {
|
super.onDestroy();
|
rechargeActivity = null;
|
}
|
|
|
private void startNfcActivity(String morny, String balance, float rechargeElectric, float iccardBalanceElectric, float totalMorny, String iccardRechargeRecordId) {
|
//先处理补扣
|
//充值补扣金额=充值金额+充值前读取的卡内余额-充值回调返回卡内余额
|
int deductionMorny = MornyUtil.changeY2F(morny) + mOldUserCard.getBalance() - MornyUtil.changeY2F(balance);
|
|
|
//添加充值信息
|
rechargeBean = new RechargeBean();
|
rechargeBean.setCardNumber(cardNumber);
|
rechargeBean.setUserCode(userCard.getUserCode() + userCard.getUserCodeNumber());
|
rechargeBean.setUserName(cardInfoResult.getPeasantName());
|
rechargeBean.setPersonId(cardInfoResult.getPeasantId());
|
rechargeBean.setSerial(DeviceUtils.getSN());
|
rechargeBean.setArerNumber(QHOnLineApplication.getInstance().arerNumber);
|
rechargeBean.setMorny(morny);
|
rechargeBean.setBalance(balance);
|
rechargeBean.setRechargeElectric(String.valueOf(rechargeElectric));
|
rechargeBean.setPrice(QHOnLineApplication.getInstance().electriclePriceStr);
|
rechargeBean.setSurplusElectic(String.valueOf(iccardBalanceElectric));
|
long time = System.currentTimeMillis();
|
rechargeBean.setRechargeDate(time);
|
rechargeBean.setUserId("");
|
rechargeBean.setTotalMorny(String.valueOf(totalMorny));
|
rechargeBean.setState(1);
|
rechargeBean.setOrderId(iccardRechargeRecordId);
|
rechargeBean.setDeductionMorny(MornyUtil.changeF2Y(deductionMorny));
|
|
userCard.setCardWriteState(0);
|
userCard.setCardState(1);
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTimeInMillis(time);
|
userCard.setBalance(MornyUtil.changeY2F(String.valueOf(balance)));
|
userCard.setSurplusElecticity(MornyUtil.changeY2F(String.valueOf(iccardBalanceElectric)));
|
String sumMorny = MornyUtil.sumPrice(Float.valueOf(MornyUtil.changeF2Y(userCard.getTotalMorny())), Float.valueOf(morny));
|
userCard.setTotalMorny(MornyUtil.changeY2F(sumMorny));
|
userCard.setRechargeDate(calendar);
|
userCard.setElectricPrice(Float.valueOf(QHOnLineApplication.getInstance().electriclePriceStr));
|
if (deductionMorny == 0) {
|
Intent intent = new Intent(RechargeActivity.this, NFCWreatActivity.class);
|
intent.putExtra("morny", morny);
|
intent.putExtra("userCard", userCard);
|
intent.putExtra("rechargeBean", rechargeBean);
|
startActivity(intent);
|
} else {
|
TipUtil.show(RechargeActivity.this, "挂失卡后有补交金额!补交金额为:" + MornyUtil.changeF2Y(deductionMorny) + "元,详情可在平台查询。", new TipUtil.TipListener() {
|
@Override
|
public void onCancle() {
|
Intent intent = new Intent(RechargeActivity.this, NFCWreatActivity.class);
|
intent.putExtra("morny", morny);
|
intent.putExtra("userCard", userCard);
|
intent.putExtra("rechargeBean", rechargeBean);
|
startActivity(intent);
|
}
|
});
|
}
|
|
}
|
|
|
/**
|
* IC卡充值
|
*
|
* @param morny
|
*/
|
public void rechaege(String morny) {
|
Map<String, Object> data = new HashMap<>();
|
//终端设备号
|
data.put("equipCode", DeviceUtils.getSN());
|
//ic卡信息id
|
data.put("iccardNum", cardNumber);
|
//交易水费金额(元)
|
data.put("rechargeWaterMoney", morny);
|
//卡内剩余金额(元)
|
data.put("iccardBalanceMoney", MornyUtil.changeF2Y(userCard.getBalance()));
|
//卡内剩余水量(m³)
|
data.put("iccardBalanceAmonunt", "0");
|
//卡内剩余电量
|
data.put("iccardBalanceElectric", MornyUtil.changeF2Y(userCard.getSurplusElecticity()));
|
ApiManager.getInstance().requestPostLoading(this, "api/sjgg/iccard/recharge/rechargeCard", RechargeResult.class, data, new SubscriberListener<BaseResponse<RechargeResult>>() {
|
@Override
|
public void onNext(BaseResponse<RechargeResult> t) {
|
if (t.isSuccess()) {
|
RechargeResult rechargeResult = t.getData();
|
startNfcActivity(morny, rechargeResult.getIccardBalanceMoney(), rechargeResult.getRechargeElectricAmount(), rechargeResult.getIccardBalanceElectric(), rechargeResult.getTotalRechargeMoney(), rechargeResult.getIccardRechargeRecordId());
|
}
|
}
|
});
|
}
|
|
|
/**
|
* 获取卡信息和用户信息
|
*
|
* @param iccardCode
|
*/
|
public void getUserInfoAndCardInfo(String iccardCode) {
|
Map<String, Object> data = new HashMap<>();
|
//ic卡信息id
|
data.put("iccardNum", iccardCode);
|
ApiManager.getInstance().requestPostLoading(this, "api/sjgg/iccard/peasant/getIccardInfoVoByCardCode", CardInfoResult.class, data, new SubscriberListener<BaseResponse<CardInfoResult>>() {
|
@Override
|
public void onNext(BaseResponse<CardInfoResult> t) {
|
String state = "";
|
if (t.isSuccess()) {
|
//ic卡状态 0 正常 1 已注销 2 已挂失
|
if (t.getData().getIccardStatus() == 0) {
|
List<byte[]> data = NfcReadHelper.getInstence(intent, RechargeActivity.this).getOnesectorData();
|
if (!data.isEmpty()) {
|
if (!TextUtils.isEmpty(cardNumber)) {
|
cardInfoResult = t.getData();
|
setUserData(cardNumber, cardInfoResult.getPeasantName(), cardInfoResult.getLastRechargeTime(), cardInfoResult.getIccardBalanceMoney(), data);
|
} else {
|
TipUtil.show(RechargeActivity.this, "读取卡片失败,请重新贴卡");
|
}
|
} else {
|
TipUtil.show(RechargeActivity.this, "卡片识别错误,请重试!");
|
}
|
} else if (t.getData().getIccardStatus() == 1) {
|
TipUtil.show(RechargeActivity.this, "当前卡已注销");
|
} else {
|
TipUtil.show(RechargeActivity.this, "当前卡已挂失");
|
}
|
|
|
}
|
}
|
});
|
}
|
|
|
private void setCardState(String state) {
|
binding.rechargeLL.setVisibility(View.GONE);
|
binding.rechargeRegistBtn.setVisibility(View.GONE);
|
binding.redStatu.setTextColor(RechargeActivity.this.getResources().getColor(com.dayu.baselibrary.R.color.red));
|
binding.redStatu.setText(state);
|
}
|
|
|
}
|