| package com.dayu.qihealonelibrary.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.qihealonelibrary.R; | 
| import com.dayu.qihealonelibrary.card.UserCard; | 
| import com.dayu.qihealonelibrary.databinding.ActivityRechargeQhaBinding; | 
| import com.dayu.qihealonelibrary.dbBean.AdminDataBean; | 
| import com.dayu.qihealonelibrary.dbBean.ElectricPriceBean; | 
| import com.dayu.qihealonelibrary.dbBean.UserCardBean; | 
| import com.dayu.qihealonelibrary.tools.NfcReadHelper; | 
| import com.dayu.qihealonelibrary.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 RechargeActivityQHAlone extends QHAloneBaseNfcActivity { | 
|   | 
|     Intent intent; | 
|   | 
|     ActivityRechargeQhaBinding binding; | 
|     public static RechargeActivityQHAlone 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 = ActivityRechargeQhaBinding.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); | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public void onNfcBack(Intent intent) { | 
|         this.intent = intent; | 
|         try { | 
|             readAllData(); | 
|         } catch (Exception e) { | 
|             e.printStackTrace(); | 
|             CrashReport.postCatchedException(e); | 
|         } | 
|     } | 
|   | 
|   | 
|     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<byte[]> 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<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(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 = new UserCard().getBean(data); | 
|         List<UserCardBean> 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(RechargeActivityQHAlone.this, NFCWreatActivityQHAlone.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(RechargeActivityQHAlone.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; | 
|     } | 
| } |