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.tools.HexUtil; 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.ManagerToUserCard; 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.dbBean.UserCardBean; import com.dayu.qiheonlinelibrary.net.ApiManager; import com.dayu.qiheonlinelibrary.net.BaseResponse; import com.dayu.qiheonlinelibrary.net.subscribers.SubscriberListener; import com.dayu.qiheonlinelibrary.tools.NFCWriteHelper; import com.dayu.qiheonlinelibrary.tools.NfcReadHelper; import com.dayu.qiheonlinelibrary.utils.CardCommon; import com.dayu.qiheonlinelibrary.view.ProgressDialog; import java.util.Calendar; 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 BaseNfcActivity { 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 onNewIntent(Intent intent) { this.intent = intent; ProgressDialog.show(this); if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) { readAllData(intent); } super.onNewIntent(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 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 = UserCard.getBean(data); getUserInfoAndCardInfo(cardNumber); } else { } } else { TipUtil.show("卡片识别错误,请重试!"); } break; case CardCommon.MANAGE_CRAD://管理卡 ManageCard manageCard = ManageCard.getBean(data); 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 iccardCode) { Map data = new HashMap<>(); //ic卡信息id data.put("iccardNum", iccardCode); ApiManager.getInstance().requestPostLoading(this, "api/sjgg/iccard/peasant/getIccardInfoVoByCardCode", CardInfoResult.class, data, new SubscriberListener>() { @Override public void onNext(BaseResponse t) { String state = ""; if (t.isSuccess()) { setUserData(t.getData()); } } }); } 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(MornyUtil.changeF2Y(userCard.getTotalMorny()) + "元"); 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("已挂失"); } } } }