|  |  | 
 |  |  | 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.dayu.qihealonelibrary.utils.DeviceNumberUtils; | 
 |  |  | import com.dayu.qihealonelibrary.view.ProgressDialog; | 
 |  |  | import com.tencent.bugly.crashreport.CrashReport; | 
 |  |  |  | 
 |  |  | import java.util.Calendar; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  |  | 
 |  |  | /** | 
 |  |  | 
 |  |  |  | 
 |  |  |     AdminDataBean adminData; | 
 |  |  |     String userName; | 
 |  |  |     String cardNumber = null; | 
 |  |  |     UserCardBean userCardBean; | 
 |  |  |     int waterPrice; | 
 |  |  |     String rechageWater;//充值的水量 | 
 |  |  |     ElectricPriceBean priceBean; | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     protected void onCreate(Bundle savedInstanceState) { | 
 |  |  | 
 |  |  |             setContentView(binding.getRoot()); | 
 |  |  |             setPricePoint(binding.rechargeWater); | 
 |  |  |             rechargeActivity = this; | 
 |  |  |             waterPrice = baseDao.adminDao().findFirst().getWaterPrice(); | 
 |  |  |             initView(); | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public void onNewIntent(Intent intent) { | 
 |  |  |  | 
 |  |  |         this.intent = intent; | 
 |  |  |         try { | 
 |  |  |             this.intent = intent; | 
 |  |  |             userCard = NfcReadHelper.getInstence(intent, this).getUserCardData(); | 
 |  |  |             if (userCard != null) { | 
 |  |  |                 ProgressDialog.show(this); | 
 |  |  | //                selectBalance(userCard.getInitPeasantCode()); | 
 |  |  |             } else { | 
 |  |  |                 TipUtil.show(RechargeActivity.this, "卡片读取失败"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  | //            readAllData(intent); | 
 |  |  |             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<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 = 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)) { | 
 |  |  |                 String initCode = DeviceNumberUtils.getDeviceNumber(); | 
 |  |  |                 if (TextUtils.isEmpty(initCode)) { | 
 |  |  |                     TipUtil.show(RechargeActivity.this, "设备注册号为空,请先设置IP和管理员地址"); | 
 |  |  |                     return; | 
 |  |  |                 } | 
 |  |  |                 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 static void setPricePoint(final EditText editText) { | 
 |  |  |     public void setPricePoint(final EditText editText) { | 
 |  |  |         editText.addTextChangedListener(new TextWatcher() { | 
 |  |  |             @Override | 
 |  |  |             public void onTextChanged(CharSequence s, int start, int before, | 
 |  |  | 
 |  |  |                         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 |