| package com.dayu.qiheonlinelibrary.activity; | 
|   | 
| import android.content.Intent; | 
| import android.nfc.NfcAdapter; | 
| import android.os.Bundle; | 
| import android.text.TextUtils; | 
| import android.view.LayoutInflater; | 
| import android.view.View; | 
|   | 
| import com.dayu.baselibrary.net.subscribers.SubscriberListener; | 
| import com.dayu.baselibrary.utils.MornyUtil; | 
| import com.dayu.baselibrary.utils.TipUtil; | 
| import com.dayu.baselibrary.view.ConfirmDialog; | 
| import com.dayu.qiheonlinelibrary.bean.CardInfoResult; | 
| import com.dayu.qiheonlinelibrary.card.BlackCard; | 
| import com.dayu.qiheonlinelibrary.card.ConfigurationPowerCard; | 
| import com.dayu.qiheonlinelibrary.card.DomainCard; | 
| import com.dayu.qiheonlinelibrary.card.ElectricPriceCard; | 
| import com.dayu.qiheonlinelibrary.card.ManageCard; | 
| import com.dayu.qiheonlinelibrary.card.RegionCard; | 
| import com.dayu.qiheonlinelibrary.card.UserCard; | 
| import com.dayu.qiheonlinelibrary.databinding.ActivityRedCardQhlBinding; | 
| import com.dayu.qiheonlinelibrary.dbBean.AdminDataBean; | 
| import com.dayu.qiheonlinelibrary.net.ApiManager; | 
| import com.dayu.qiheonlinelibrary.net.BaseResponse; | 
| import com.dayu.qiheonlinelibrary.tools.NfcReadHelper; | 
| import com.dayu.qiheonlinelibrary.utils.CardCommon; | 
| import com.dayu.qiheonlinelibrary.view.ProgressDialog; | 
|   | 
| import java.util.HashMap; | 
| import java.util.List; | 
| import java.util.Map; | 
|   | 
| /** | 
|  * Copyright (C), 2023, | 
|  * Author: zuo | 
|  * Date: 2023-11-10 19:52 | 
|  * Description: 读卡界面 | 
|  */ | 
| public class ReadCardAcitivy extends QHOlineBaseNfcActivity { | 
|   | 
|     volatile UserCard userCard; | 
|     ActivityRedCardQhlBinding redCardBinding; | 
|   | 
|   | 
|     Intent intent; | 
|     ConfirmDialog confirmDialog; | 
|     AdminDataBean adminData; | 
|     String cardNumber; | 
|     String userCardStr; | 
|   | 
|     @Override | 
|     protected void onCreate(Bundle savedInstanceState) { | 
|         super.onCreate(savedInstanceState); | 
|         redCardBinding = ActivityRedCardQhlBinding.inflate(LayoutInflater.from(this)); | 
|         setContentView(redCardBinding.getRoot()); | 
|     } | 
|   | 
|   | 
|   | 
|     @Override | 
|     public void onNfcBack(Intent intent) { | 
|         this.intent = intent; | 
|         ProgressDialog.show(this); | 
|         if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) { | 
|             readAllData(intent); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 读取全部数据 | 
|      */ | 
|   | 
|     public void readAllData(Intent intent) { | 
|   | 
|   | 
|         String cardType = NfcReadHelper.getInstence(intent, this).getCradTypeAndCardNumber(); | 
|   | 
|         String[] cardTypes = cardType.split(","); | 
|         if (cardTypes != null && cardTypes.length == 2) { | 
|             cardNumber = cardType.split(",")[0]; | 
|             cardType = cardType.split(",")[1]; | 
|         } | 
|         List<byte[]> data = NfcReadHelper.getInstence(intent, this).getOnesectorData(); | 
|         String state = ""; | 
|         if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_1)) { | 
|             state = "终端写卡"; | 
|         } else if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_2)) { | 
|             state = "刷卡开泵后"; | 
|         } else if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_3)) { | 
|             state = "叠加充值"; | 
|         } | 
|         switch (cardType) { | 
|             case CardCommon.USER_CARD_TYPE_1: | 
|             case CardCommon.USER_CARD_TYPE_2: | 
|             case CardCommon.USER_CARD_TYPE_3: | 
|   | 
|                 if (!data.isEmpty()) { | 
|                     if (!TextUtils.isEmpty(cardNumber)) { | 
|                         userCard = new UserCard().getBean(data); | 
|                         getUserInfoAndCardInfo(cardNumber,userCard.getMyUserCode()); | 
|                     } else { | 
|   | 
|                     } | 
|                 } else { | 
|                     TipUtil.show("卡片识别错误,请重试!"); | 
|                 } | 
|   | 
|                 break; | 
|             case CardCommon.MANAGE_CRAD://管理卡 | 
|                 ManageCard manageCard = ManageCard.getBean(data); | 
|                 if (manageCard != null) { | 
|                     viweGone(false); | 
|                     userCardStr = manageCard.getUserCard().toUpperCase(); | 
|                     redCardBinding.readCardTypeTV.setText("当前为管理卡" + "\n\n" | 
|                             + "原始卡号:" + userCardStr); | 
|                 } | 
|                 break; | 
|             case CardCommon.CLEAN_CARD_TYPE: | 
|                 viweGone(false); | 
|                 redCardBinding.readCardTypeTV.setText("当前为清零卡"); | 
|                 break; | 
|             case CardCommon.REGISTERED_CARD_TYPE: | 
|                 viweGone(false); | 
|                 redCardBinding.readCardTypeTV.setText("当前为重新注册设备卡"); | 
|                 break; | 
|             case CardCommon.CLEAN_ALL_USER_CARD_TYPE: | 
|                 viweGone(false); | 
|                 redCardBinding.readCardTypeTV.setText("当前为删除全部用户卡"); | 
|                 break; | 
|             case CardCommon.DOMAIN_CARD_TYPE: | 
|                 viweGone(false); | 
|                 redCardBinding.readCardTypeTV.setText("当前为设置域名卡"); | 
|                 if (!data.isEmpty()) { | 
|                     DomainCard domainCard = DomainCard.toBean(data); | 
|                     assert domainCard != null; | 
|                     redCardBinding.readCardDataTV.setText("序号:" + domainCard.getDomainNumber() + "\n" + "域名:" + domainCard.getDomainName() + "\n" + "端口号:" + domainCard.getPort()); | 
|                 } else { | 
|                     TipUtil.show("卡片识别错误,请重试!"); | 
|                 } | 
|                 break; | 
|             case CardCommon.TEST_CARD_TYPE: | 
|                 viweGone(false); | 
|                 redCardBinding.readCardTypeTV.setText("当前为测试卡"); | 
|                 break; | 
|             case CardCommon.CONFIGURATION_CARD_TYPE: | 
|                 viweGone(false); | 
|                 redCardBinding.readCardTypeTV.setText("当前为配置设备注册信息卡"); | 
|                 break; | 
|             case CardCommon.CONFIGURATION_POWER_CARD_TYPE: | 
|                 viweGone(false); | 
|                 redCardBinding.readCardTypeTV.setText("当前配置水泵功率卡"); | 
|                 if (!data.isEmpty()) { | 
|                     ConfigurationPowerCard powerCard = ConfigurationPowerCard.toBean(data.get(0)); | 
|                     redCardBinding.readCardDataTV.setText(powerCard.getPower()); | 
|                 } else { | 
|                     TipUtil.show("卡片识别错误,请重试!"); | 
|                 } | 
|                 break; | 
|             case CardCommon.BLACK: | 
|                 viweGone(false); | 
|                 redCardBinding.readCardTypeTV.setText("当前为黑卡"); | 
|                 BlackCard blackCard = BlackCard.getBean(data); | 
|                 redCardBinding.readCardDataTV.setText("当前黑卡用户号为:" + blackCard.getBlackCard()); | 
|                 break; | 
|             case CardCommon.REGION: | 
|                 viweGone(false); | 
|                 redCardBinding.readCardTypeTV.setText("当前为区域表号卡"); | 
|                 if (!data.isEmpty()) { | 
|                     RegionCard regionCard = RegionCard.getBean(data); | 
|                     StringBuilder stringBuilder = new StringBuilder(); | 
|                     stringBuilder.append("区域号:").append(regionCard.getArerNumber()); | 
|                     redCardBinding.readCardDataTV.setText(stringBuilder.toString()); | 
|                 } else { | 
|                     TipUtil.show("卡片识别错误,请重试!"); | 
|                 } | 
|   | 
|                 break; | 
|             case CardCommon.ELECTRIC_PRICE: | 
|                 viweGone(false); | 
|                 redCardBinding.readCardTypeTV.setText("当前为电量单价卡"); | 
|                 if (!data.isEmpty()) { | 
|                     ElectricPriceCard electricPriceCard = ElectricPriceCard.getBean(data); | 
|                     StringBuilder electricPriceBuilder = new StringBuilder(); | 
|                     electricPriceBuilder.append("电量单价:").append(electricPriceCard.getElectricPrice()); | 
|                     electricPriceBuilder.append("元"); | 
|                     redCardBinding.readCardDataTV.setText(electricPriceBuilder.toString()); | 
|                 } else { | 
|                     TipUtil.show("卡片识别错误,请重试!"); | 
|                 } | 
|                 break; | 
|             default: | 
|                 TipUtil.show(ReadCardAcitivy.this, "卡片无法识别"); | 
|                 break; | 
|         } | 
|         stopAnim(); | 
|   | 
|     } | 
|   | 
|   | 
|     private void viweGone(boolean isUSerCard) { | 
|         redCardBinding.readImgLL.setVisibility(View.GONE); | 
|         if (isUSerCard) { | 
|             redCardBinding.readCardTypeLL.setVisibility(View.GONE); | 
|             redCardBinding.readUserLL.setVisibility(View.VISIBLE); | 
|         } else { | 
|             redCardBinding.readCardTypeLL.setVisibility(View.VISIBLE); | 
|             redCardBinding.readUserLL.setVisibility(View.GONE); | 
|         } | 
|   | 
|     } | 
|   | 
|   | 
|     void stopAnim() { | 
|         ProgressDialog.dismiss(); | 
|         // or avi.smoothToHide(); | 
|     } | 
|   | 
|     /** | 
|      * 获取卡信息和用户信息 | 
|      * | 
|      * @param iccardCode | 
|      */ | 
|     public void getUserInfoAndCardInfo(String iccardNum,String iccardCode) { | 
|         Map<String, Object> data = new HashMap<>(); | 
|         //ic卡信息id | 
|         data.put("iccardNum", iccardNum); | 
|         data.put("iccardCode", iccardCode); | 
|         ApiManager.getInstance().requestPostLoading(this, "iccard/peasant/getIccardInfoVoByCardCode", CardInfoResult.class, data, new SubscriberListener<BaseResponse<CardInfoResult>>() { | 
|             @Override | 
|             public void onNext(BaseResponse<CardInfoResult> t) { | 
|                 String state = ""; | 
|                 if (t.isSuccess() && t.getData() instanceof CardInfoResult) { | 
|                     setUserData(t.getData()); | 
|                 } else { | 
|                     TipUtil.show(ReadCardAcitivy.this, "从获取平台卡信息失败!"); | 
|                 } | 
|             } | 
|         }); | 
|     } | 
|   | 
|     private void setUserData(CardInfoResult cardInfoResult) { | 
|         viweGone(true); | 
|         if (cardInfoResult != null) { | 
|             redCardBinding.redName.setText(cardInfoResult.getPeasantName()); | 
|             redCardBinding.redCardCode.setText(cardNumber); | 
|             redCardBinding.redUserCode.setText(cardInfoResult.getIccardCode()); | 
|             redCardBinding.redBlance.setText(MornyUtil.changeF2Y(userCard.getBalance()) + "元"); | 
|             redCardBinding.redElectric.setText(MornyUtil.changeF2Y(userCard.getSurplusElecticity()) + "度"); | 
|             redCardBinding.redTotalMorny.setText(cardInfoResult.getTotalRechargeMoney() + "元"); | 
|             redCardBinding.redPhone.setText(cardInfoResult.getPeasantPhone()); | 
|             redCardBinding.redCodeId.setText(cardInfoResult.getPeasantIdNumber()); | 
|             if (cardInfoResult.getIccardStatus() == 0) { | 
|                 redCardBinding.redStatu.setText("正常"); | 
|             } else if (cardInfoResult.getIccardStatus() == 1) { | 
|                 redCardBinding.redStatu.setText("已注销"); | 
|             } else { | 
|                 redCardBinding.redStatu.setText("已挂失"); | 
|             } | 
|   | 
|         } | 
|   | 
|   | 
|     } | 
|   | 
| } |