From 4ceacd9e21e09989287e8dc4e526d182091af282 Mon Sep 17 00:00:00 2001 From: zuoxiao <lf_zuo@163.com> Date: 星期四, 26 六月 2025 13:39:52 +0800 Subject: [PATCH] feat(nfc): 优化 NFC卡片处理流程 --- generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt | 293 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 289 insertions(+), 4 deletions(-) diff --git a/generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt index 9e08bf7..6452333 100644 --- a/generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt +++ b/generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt @@ -1,7 +1,10 @@ package com.dayu.general.activity import android.os.Bundle +import com.dayu.baselibrary.tools.print.PrintAdater +import com.dayu.baselibrary.utils.DateUtil import com.dayu.baselibrary.utils.MornyUtil +import com.dayu.general.BaseApplication import com.dayu.general.bean.card.UserCard import com.dayu.general.databinding.ActivityCardWriteSuccessBinding import com.dayu.general.tool.CardOperationType @@ -15,8 +18,22 @@ private lateinit var binding: ActivityCardWriteSuccessBinding private var cardNumber: String? = null + private var cardAddr: String? = null private var operationTypeCode: Int = -1 private var userCard: UserCard? = null + private var orderNumber: String? = null + + // 鍏呭�肩浉鍏冲弬鏁� + private var rechargeAmount = 0.0 + private var bonusAmount = 0.0 + + // 鍏朵粬鎿嶄綔鐩稿叧鍙傛暟 + private var refundAmount = 0.0 + private var cardBalance = 0.0 + private var returnAmount = 0.0 + private var deductAmount = 0.0 + private var cardCost = 0.0 + private var reissueAmount = 0.0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -25,7 +42,22 @@ // 鑾峰彇浼犲叆鐨勫崱鍙峰拰鎿嶄綔绫诲瀷 cardNumber = intent.getStringExtra("cardNumber") + cardAddr = intent.getStringExtra("cardAddr") operationTypeCode = intent.getIntExtra("operationTypeCode", -1) + orderNumber = intent.getStringExtra("orderNumber") + + // 鑾峰彇鍏呭�肩浉鍏冲弬鏁� + rechargeAmount = intent.getDoubleExtra("rechargeAmount", 0.0) + bonusAmount = intent.getDoubleExtra("bonusAmount", 0.0) + + // 鑾峰彇鍏朵粬鎿嶄綔鐩稿叧鍙傛暟 + refundAmount = intent.getDoubleExtra("refundAmount", 0.0) + cardBalance = intent.getDoubleExtra("cardBalance", 0.0) + returnAmount = intent.getDoubleExtra("returnAmount", 0.0) + deductAmount = intent.getDoubleExtra("deductAmount", 0.0) + cardCost = intent.getDoubleExtra("cardCost", 0.0) + reissueAmount = intent.getDoubleExtra("reissueAmount", 0.0) + if (intent.hasExtra("userCard")) { userCard = intent.getSerializableExtra("userCard") as UserCard } @@ -52,6 +84,11 @@ "鍗$墖宸叉垚鍔熼攢鍗″苟娓呴櫎鍐呭\n鍗″彿锛�$cardNumber\n璇ュ崱鐗囧皢鏃犳硶鍐嶆浣跨敤" } binding.successMessage.text = message + + // 閿�鍗℃垚鍔熷悗鑷姩鎵撳嵃 + userCard?.let { card -> + doPrint(card) + } } CardOperationType.SUPPLEMENT -> { @@ -68,6 +105,11 @@ "鍗$墖杩旇繕鎿嶄綔宸叉垚鍔熷畬鎴怽n鍗″彿锛�$cardNumber\n鍗″唴浣欓宸叉洿鏂�" } binding.successMessage.text = message + + // 杩旇繕鎴愬姛鍚庤嚜鍔ㄦ墦鍗� + userCard?.let { card -> + doPrint(card) + } } CardOperationType.DeductCard -> { @@ -84,6 +126,11 @@ "鍗$墖琛ユ墸鎿嶄綔宸叉垚鍔熷畬鎴怽n鍗″彿锛�$cardNumber\n鍗″唴浣欓宸叉洿鏂�" } binding.successMessage.text = message + + // 琛ユ墸鎴愬姛鍚庤嚜鍔ㄦ墦鍗� + userCard?.let { card -> + doPrint(card) + } } CardOperationType.ReplaceCard -> { @@ -103,10 +150,28 @@ } CardOperationType.Recharge -> { - binding.titleBar.setCenterText("鍐欏崱鎴愬姛") - binding.successTitle.text = "鍐欏崱鎴愬姛" - binding.successMessage.text = - "鍗″唴浣欓宸叉洿鏂颁负"+MornyUtil.changeF2Y(userCard?.balance?:0.toInt()) +"鍏�" + binding.titleBar.setCenterText("鍏呭�兼垚鍔�") + binding.successTitle.text = "鍏呭�兼垚鍔�" + + val messageBuilder = StringBuilder() + messageBuilder.append("鍏呭�兼搷浣滃凡鎴愬姛瀹屾垚\n") + + if (rechargeAmount > 0) { + messageBuilder.append("鍏呭�奸噾棰濓細${String.format("%.2f", rechargeAmount)}鍏僜n") + } + + if (bonusAmount > 0) { + messageBuilder.append("璧犻�侀噾棰濓細${String.format("%.2f", bonusAmount)}鍏僜n") + } + + messageBuilder.append("鍗″唴浣欓锛�${MornyUtil.changeF2Y(userCard?.balance ?: 0)}鍏�") + + binding.successMessage.text = messageBuilder.toString() + + // 鍏呭�兼垚鍔熷悗鑷姩鎵撳嵃 + userCard?.let { card -> + doPrint(card) + } } else -> { @@ -133,4 +198,224 @@ finish() } } + + /** + * 鎵撳嵃鍏呭�兼垚鍔熶俊鎭埌鎵撳嵃鏈� + * @param userCard 鐢ㄦ埛鍗$墖淇℃伅锛屽寘鍚綑棰濈瓑淇℃伅 + * 鍑芥暟浼氭瀯寤烘墦鍗版暟鎹苟璋冪敤鎵撳嵃閫傞厤鍣ㄨ繘琛屾墦鍗� + */ + private fun doPrint(userCard: UserCard) { + try { + // 鍒涘缓鎵撳嵃鏁版嵁鍒楄〃 + val data: MutableList<String> = ArrayList() + + // 鏍规嵁鎿嶄綔绫诲瀷璁剧疆涓嶅悓鐨勬墦鍗板唴瀹� + val operationType = CardOperationType.fromCode(operationTypeCode) + + when (operationType) { + CardOperationType.Recharge -> { + // 鍏呭�兼墦鍗板唴瀹� + data.add("*****************************") + data.add(" 鍏呭�煎嚟璇�") + data.add("*****************************") + + // 娣诲姞鐢ㄦ埛缂栧彿锛堜粠UserCard涓幏鍙栵級 + if (!userCard.userCode.isNullOrEmpty()) { + data.add("鐢ㄦ埛缂栧彿锛�${userCard.userCode}") + } + + // 娣诲姞鍗″湴鍧� + val cardAddress = cardNumber ?: cardAddr + if (!cardAddress.isNullOrEmpty()) { + data.add("鍗� 鍦� 鍧�锛�$cardAddress") + } + + // 娣诲姞鐢ㄦ埛缂栧彿锛堜粠UserCard涓幏鍙栵級 + if (!userCard.userCode.isNullOrEmpty()) { + data.add("鐢ㄦ埛缂栧彿锛�${userCard.getMyUserCode()}") + } + + // 娣诲姞鍏呭�奸噾棰� + if (rechargeAmount > 0) { + data.add("鍏呭�奸噾棰濓細${String.format("%.2f", rechargeAmount)} 鍏�") + } + + // 娣诲姞璧犻�侀噾棰� + if (bonusAmount > 0) { + data.add("璧犻�侀噾棰濓細${String.format("%.2f", bonusAmount)} 鍏�") + } + + // 娣诲姞鍏呭�煎悗浣欓 + data.add("鍏呭�煎悗浣欓锛�${MornyUtil.changeF2Y(userCard.balance)} 鍏�") + + // 娣诲姞鏃ユ湡淇℃伅 + data.add("鏃� 鏈燂細${DateUtil.dateToStamp(System.currentTimeMillis(), DateUtil.type2)}") + + // 娣诲姞璁㈠崟鍙� + if (!orderNumber.isNullOrEmpty()) { + data.add("璁㈠崟鍙凤細$orderNumber") + } + + // 娣诲姞璁惧鎿嶄綔鍛樹俊鎭� + data.add("璁惧鎿嶄綔鍛橈細${BaseApplication.userName}") + data.add("*****************************") + } + + CardOperationType.ReplaceCard -> { + // 琛ュ崱鎵撳嵃鍐呭 + data.add("*****************************") + data.add(" 琛ュ崱鍑瘉") + data.add("*****************************") + + val cardAddress = cardNumber ?: cardAddr + if (!cardAddress.isNullOrEmpty()) { + data.add("鍗� 鍦� 鍧�锛�$cardAddress") + } + + if (!userCard.userCode.isNullOrEmpty()) { + data.add("鐢ㄦ埛缂栧彿锛�${userCard.getMyUserCode()}") + } + + if (cardCost > 0) { + data.add("宸� 鏈� 璐癸細${String.format("%.2f", cardCost)} 鍏�") + } + + if (reissueAmount > 0) { + data.add("杩旇繕閲戦锛�${String.format("%.2f", reissueAmount)} 鍏�") + } + + data.add("鍗″唴浣欓锛�${MornyUtil.changeF2Y(userCard.balance)} 鍏�") + data.add("鏃� 鏈燂細${DateUtil.dateToStamp(System.currentTimeMillis(), DateUtil.type2)}") + + if (!orderNumber.isNullOrEmpty()) { + data.add("璁㈠崟鍙凤細$orderNumber") + } + + data.add("璁惧鎿嶄綔鍛橈細${BaseApplication.userName}") + data.add("*****************************") + } + + CardOperationType.CancelCard -> { + // 閿�鍗℃墦鍗板唴瀹� + data.add("*****************************") + data.add(" 閿�鍗″嚟璇�") + data.add("*****************************") + + val cardAddress = cardNumber ?: cardAddr + if (!cardAddress.isNullOrEmpty()) { + data.add("鍗� 鍦� 鍧�锛�$cardAddress") + } + + if (!userCard.userCode.isNullOrEmpty()) { + data.add("鐢ㄦ埛缂栧彿锛�${userCard.getMyUserCode()}") + } + + if (refundAmount > 0) { + data.add("閫�娆鹃噾棰濓細${String.format("%.2f", refundAmount)} 鍏�") + } + + data.add("鍘熷崱浣欓锛�${String.format("%.2f", cardBalance)} 鍏�") + data.add("鏃� 鏈燂細${DateUtil.dateToStamp(System.currentTimeMillis(), DateUtil.type2)}") + + if (!orderNumber.isNullOrEmpty()) { + data.add("璁㈠崟鍙凤細$orderNumber") + } + + data.add("璁惧鎿嶄綔鍛橈細${BaseApplication.userName}") + data.add("*****************************") + } + + CardOperationType.SUPPLEMENT -> { + // 杩旇繕鎵撳嵃鍐呭 + data.add("*****************************") + data.add(" 杩旇繕鍑瘉") + data.add("*****************************") + + val cardAddress = cardNumber ?: cardAddr + if (!cardAddress.isNullOrEmpty()) { + data.add("鍗� 鍦� 鍧�锛�$cardAddress") + } + + if (!userCard.userCode.isNullOrEmpty()) { + data.add("鐢ㄦ埛缂栧彿锛�${userCard.getMyUserCode()}") + } + + if (returnAmount > 0) { + data.add("杩旇繕閲戦锛�${String.format("%.2f", returnAmount)} 鍏�") + } + + data.add("鍗″唴浣欓锛�${MornyUtil.changeF2Y(userCard.balance)} 鍏�") + data.add("鏃� 鏈燂細${DateUtil.dateToStamp(System.currentTimeMillis(), DateUtil.type2)}") + + if (!orderNumber.isNullOrEmpty()) { + data.add("璁㈠崟鍙凤細$orderNumber") + } + + data.add("璁惧鎿嶄綔鍛橈細${BaseApplication.userName}") + data.add("*****************************") + } + + CardOperationType.DeductCard -> { + // 琛ユ墸鎵撳嵃鍐呭 + data.add("*****************************") + data.add(" 琛ユ墸鍑瘉") + data.add("*****************************") + + val cardAddress = cardNumber ?: cardAddr + if (!cardAddress.isNullOrEmpty()) { + data.add("鍗� 鍦� 鍧�锛�$cardAddress") + } + + if (!userCard.userCode.isNullOrEmpty()) { + data.add("鐢ㄦ埛缂栧彿锛�${userCard.getMyUserCode()}") + } + + if (deductAmount > 0) { + data.add("琛ユ墸閲戦锛�${String.format("%.2f", deductAmount)} 鍏�") + } + + data.add("鍗″唴浣欓锛�${MornyUtil.changeF2Y(userCard.balance)} 鍏�") + data.add("鏃� 鏈燂細${DateUtil.dateToStamp(System.currentTimeMillis(), DateUtil.type2)}") + + if (!orderNumber.isNullOrEmpty()) { + data.add("璁㈠崟鍙凤細$orderNumber") + } + + data.add("璁惧鎿嶄綔鍛橈細${BaseApplication.userName}") + data.add("*****************************") + } + + else -> { + // 鍏朵粬鎿嶄綔鐨勯�氱敤鎵撳嵃鍐呭 + data.add("*****************************") + data.add(" 鎿嶄綔鍑瘉") + data.add("*****************************") + + val cardAddress = cardNumber ?: cardAddr + if (!cardAddress.isNullOrEmpty()) { + data.add("鍗� 鍦� 鍧�锛�$cardAddress") + } + + data.add("鎿嶄綔绫诲瀷锛�${operationType?.description ?: "鏈煡鎿嶄綔"}") + data.add("鏃� 鏈燂細${DateUtil.dateToStamp(System.currentTimeMillis(), DateUtil.type2)}") + data.add("璁惧鎿嶄綔鍛橈細${BaseApplication.userName}") + data.add("*****************************") + } + } + + // 璁剧疆鎵撳嵃瀛椾綋澶у皬 + val size = 26f + // 鎵ц鎵撳嵃鎿嶄綔 + PrintAdater.printText(data, size, true, false) + + } catch (e: Exception) { + // 鎵撳嵃寮傚父淇℃伅 + e.printStackTrace() + // 鍙互娣诲姞Toast鎻愮ず鐢ㄦ埛鎵撳嵃澶辫触 + runOnUiThread { + com.dayu.baselibrary.utils.ToastUtil.show("鎵撳嵃澶辫触锛�${e.message}") + } + } + } + } \ No newline at end of file -- Gitblit v1.8.0