package com.dayu.qiheonlinelibrary.activity; import android.annotation.SuppressLint; 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.MornyUtil; import com.dayu.baselibrary.utils.TipUtil; import com.dayu.qiheonlinelibrary.R; 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.UserCardBean; import com.dayu.qiheonlinelibrary.tools.NfcReadHelper; import com.dayu.qiheonlinelibrary.utils.CardCommon; import com.tencent.bugly.crashreport.CrashReport; import java.util.Calendar; import java.util.List; /** * 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; AdminDataBean adminData; String userName; String cardNumber = null; UserCardBean userCardBean; int waterPrice; String rechageWater;//充值的水量 ElectricPriceBean priceBean; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { binding = ActivityRechargeQhlBinding.inflate(LayoutInflater.from(this)); setContentView(binding.getRoot()); setPricePoint(binding.rechargeWater); rechargeActivity = this; waterPrice = baseDao.adminDao().findFirst().getWaterPrice(); 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() { String cardType = NfcReadHelper.getInstence(intent, this).getCradTypeAndCardNumber(); String[] cardTypes = cardType.split(","); if (cardTypes != null && cardTypes.length == 2) { cardNumber = cardType.split(",")[0]; cardNumber = HexUtil.spaceHex(cardNumber); cardNumber = HexUtil.HighLowHex(cardNumber); cardType = cardType.split(",")[1]; } List data = NfcReadHelper.getInstence(intent, this).getOnesectorData(); if (!data.isEmpty()) { if (!TextUtils.isEmpty(cardNumber)) { setUserData(cardType, cardNumber, data); if(priceBean!=null){ binding.redRechargeElectric.setText("电量单价:"+priceBean.getPrice()+"元/度"); } } else { TipUtil.show(this, "读取卡片失败,请重新贴卡"); } } else { TipUtil.show(this, "卡片识别错误,请重试!"); } } @SuppressLint("ResourceAsColor") private void setUserData(String cardType, String cardNumber, List 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(R.color.black); } else if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_2)) { state = "未刷卡关泵,当前不可充值"; binding.rechargeLL.setVisibility(View.GONE); binding.rechargeRegistBtn.setVisibility(View.GONE); binding.redStatu.setTextColor(com.dayu.baselibrary.R.color.red); } else if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_3)) { state = "叠加充值"; binding.rechargeLL.setVisibility(View.GONE); binding.rechargeRegistBtn.setVisibility(View.GONE); } else { TipUtil.show(this, "非用户卡,不能充值"); return; } userCard = UserCard.getBean(data); List userCardBeans = baseDao.userCardDao().findUserName(cardNumber); AdminDataBean adminDataBean = baseDao.adminDao().findFirst(); if (Integer.valueOf(adminDataBean.getAddressCode()) == userCard.getArerNumber()) { if (!userCardBeans.isEmpty()) { userCardBean = userCardBeans.get(0); this.userName = userCardBean.getUserName(); } else { userCardBean = new UserCardBean(); userCardBean.setCardNumber(cardNumber); userCardBean.setUserName("未知用户"); userCardBean.setPhone("未知"); userCardBean.setUserID("未知"); userCardBean.setAddressCode(String.valueOf(userCard.getArerNumber())); userCardBean.setSerial(String.valueOf(userCard.getArerNumber())); this.userName = "未知用户"; } binding.rechargeReadLL.setVisibility(View.GONE); binding.rechargeTextLL.setVisibility(View.VISIBLE); binding.userName.setText(userName); binding.redStatu.setText(state); if (userCard != null) { Calendar calendar = userCard.getRechargeDate(); if (calendar != null) { int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); // 月份从0开始,所以需要加1 int day = calendar.get(Calendar.DAY_OF_MONTH); binding.redRechargeDate.setText("本卡最后购水日期:" + year + "年" + month + "月" + day + "日"); } else { binding.redRechargeDate.setText("本卡最后购水日期:无"); } binding.redInitCode.setText(cardNumber); // binding.redRechargeNumber.setText("本卡充值次数:" + userCard.getRechargeTimes() + " 次"); // binding.redTotalWater.setText("总用水量:" + MornyUtil.changeF2Y(userCard.getTotalWater()) + " 吨"); // binding.redTotalPower.setText("总用电量:" + MornyUtil.changeF2Y(userCard.getTotalElectric()) + " 度"); binding.redRemainderBlance.setText(MornyUtil.changeF2Y(userCard.getBalance()) + " 元"); binding.redRemainderWater.setText("剩余水量:" + MornyUtil.changeF2Y(userCard.getSurplusWater()) + " 吨"); // binding.redWaterPrice.setText("每立方米水价格:" + MornyUtil.changeF2Y(adminData.getWaterPrice()) + " 元"); } } else { TipUtil.show(this, "非本区域卡\n不能充值!!!"); } } private void initView() { try { adminData = baseDao.adminDao().findFirst(); priceBean = baseDao.electricPriceDao().findFirst(); } catch (Exception e) { e.printStackTrace(); CrashReport.postCatchedException(e); } binding.rechargeRegistBtn.setOnClickListener(v -> { String morny = binding.rechargeWater.getText().toString(); if (!TextUtils.isEmpty(morny)) { Intent intent = new Intent(RechargeActivity.this, NFCWreatActivity.class); //当前金额单位为元 intent.putExtra("morny", morny); intent.putExtra("userName", userName); intent.putExtra("cardNumber", cardNumber); intent.putExtra("userCard", userCard); intent.putExtra("userCardBean", userCardBean); // intent.putExtra("rechageWater", rechageWater); startActivity(intent); } 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; } }