From 32d1501e6fe6338eb6dc51c26df7fe0808caac0d Mon Sep 17 00:00:00 2001 From: zuoxiao <lf_zuo@163.com> Date: 星期四, 26 六月 2025 15:05:28 +0800 Subject: [PATCH] feat(general): 优化写卡成功界面并添加开卡功能- 重新设计写卡成功界面布局,增加滚动视图以支持长文本显示 - 添加开卡功能相关的UI和逻辑,包括工本费和充值金额的展示- 增加用户姓名和卡片信息的显示 - 优化打印凭证的内容和格式 -调整NFC连接逻辑,提高连接成功率 --- generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt | 307 +++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 236 insertions(+), 71 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 6452333..6872853 100644 --- a/generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt +++ b/generallibrary/src/main/java/com/dayu/general/activity/CardWriteSuccessActivity.kt @@ -6,6 +6,7 @@ import com.dayu.baselibrary.utils.MornyUtil import com.dayu.general.BaseApplication import com.dayu.general.bean.card.UserCard +import com.dayu.general.bean.net.CardInfoResult import com.dayu.general.databinding.ActivityCardWriteSuccessBinding import com.dayu.general.tool.CardOperationType @@ -22,11 +23,12 @@ private var operationTypeCode: Int = -1 private var userCard: UserCard? = null private var orderNumber: String? = null - + private var cardInfo: CardInfoResult? = null + // 鍏呭�肩浉鍏冲弬鏁� private var rechargeAmount = 0.0 private var bonusAmount = 0.0 - + // 鍏朵粬鎿嶄綔鐩稿叧鍙傛暟 private var refundAmount = 0.0 private var cardBalance = 0.0 @@ -34,6 +36,7 @@ private var deductAmount = 0.0 private var cardCost = 0.0 private var reissueAmount = 0.0 + private var cardFee = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -45,11 +48,13 @@ cardAddr = intent.getStringExtra("cardAddr") operationTypeCode = intent.getIntExtra("operationTypeCode", -1) orderNumber = intent.getStringExtra("orderNumber") - + + cardFee = intent.getIntExtra("cardFee", 0); + // 鑾峰彇鍏呭�肩浉鍏冲弬鏁� rechargeAmount = intent.getDoubleExtra("rechargeAmount", 0.0) bonusAmount = intent.getDoubleExtra("bonusAmount", 0.0) - + // 鑾峰彇鍏朵粬鎿嶄綔鐩稿叧鍙傛暟 refundAmount = intent.getDoubleExtra("refundAmount", 0.0) cardBalance = intent.getDoubleExtra("cardBalance", 0.0) @@ -57,9 +62,13 @@ 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 + } + + if (intent.hasExtra("cardInfo")) { + cardInfo = intent.getSerializableExtra("cardInfo") as CardInfoResult } initView() @@ -84,7 +93,7 @@ "鍗$墖宸叉垚鍔熼攢鍗″苟娓呴櫎鍐呭\n鍗″彿锛�$cardNumber\n璇ュ崱鐗囧皢鏃犳硶鍐嶆浣跨敤" } binding.successMessage.text = message - + // 閿�鍗℃垚鍔熷悗鑷姩鎵撳嵃 userCard?.let { card -> doPrint(card) @@ -105,7 +114,7 @@ "鍗$墖杩旇繕鎿嶄綔宸叉垚鍔熷畬鎴怽n鍗″彿锛�$cardNumber\n鍗″唴浣欓宸叉洿鏂�" } binding.successMessage.text = message - + // 杩旇繕鎴愬姛鍚庤嚜鍔ㄦ墦鍗� userCard?.let { card -> doPrint(card) @@ -126,7 +135,7 @@ "鍗$墖琛ユ墸鎿嶄綔宸叉垚鍔熷畬鎴怽n鍗″彿锛�$cardNumber\n鍗″唴浣欓宸叉洿鏂�" } binding.successMessage.text = message - + // 琛ユ墸鎴愬姛鍚庤嚜鍔ㄦ墦鍗� userCard?.let { card -> doPrint(card) @@ -152,22 +161,36 @@ CardOperationType.Recharge -> { 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) + } + } + + CardOperationType.OpenCard -> { + binding.titleBar.setCenterText("寮�鍗℃垚鍔�") + binding.successTitle.text = "寮�鍗℃垚鍔�" + val messageBuilder = StringBuilder() + if (rechargeAmount > 0) { + messageBuilder.append("鍏呭�奸噾棰濓細${String.format("%.2f", rechargeAmount)}鍏僜n") + } + messageBuilder.append("鍗″唴浣欓锛�${MornyUtil.changeF2Y(userCard?.balance ?: 0)}鍏�") // 鍏呭�兼垚鍔熷悗鑷姩鎵撳嵃 userCard?.let { card -> doPrint(card) @@ -193,6 +216,13 @@ finish() } + // 璁剧疆鍐嶆鎵撳嵃鎸夐挳鐐瑰嚮鐩戝惉鍣� + binding.btnReprint.setOnClickListener { + userCard?.let { card -> + doPrint(card) + } + } + // 璁剧疆鏍囬鏍忚繑鍥炴寜閽� binding.titleBar.setOnItemclickListner(com.dayu.baselibrary.view.TitleBar.ClickType_LEFT_IMAGE) { finish() @@ -208,206 +238,341 @@ try { // 鍒涘缓鎵撳嵃鏁版嵁鍒楄〃 val data: MutableList<String> = ArrayList() - + // 鏍规嵁鎿嶄綔绫诲瀷璁剧疆涓嶅悓鐨勬墦鍗板唴瀹� val operationType = CardOperationType.fromCode(operationTypeCode) - + when (operationType) { CardOperationType.Recharge -> { // 鍏呭�兼墦鍗板唴瀹� data.add("*****************************") - data.add(" 鍏呭�煎嚟璇�") + data.add(" 鍏呭�煎嚟璇�") data.add("*****************************") - - // 娣诲姞鐢ㄦ埛缂栧彿锛堜粠UserCard涓幏鍙栵級 - if (!userCard.userCode.isNullOrEmpty()) { - data.add("鐢ㄦ埛缂栧彿锛�${userCard.userCode}") + + // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級 + cardInfo?.userName?.let { userName -> + if (userName.isNotEmpty()) { + data.add("鐢ㄦ埛濮撳悕锛�$userName") + } } - + // 娣诲姞鍗″湴鍧� 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( + "鏃� 鏈燂細${ + DateUtil.dateToStamp( + System.currentTimeMillis(), + DateUtil.type2 + ) + }" + ) data.add("*****************************") } - + CardOperationType.ReplaceCard -> { // 琛ュ崱鎵撳嵃鍐呭 data.add("*****************************") data.add(" 琛ュ崱鍑瘉") data.add("*****************************") - + + // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級 + cardInfo?.userName?.let { userName -> + if (userName.isNotEmpty()) { + data.add("鐢ㄦ埛濮撳悕锛�$userName") + } + } + 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( + "鏃� 鏈燂細${ + DateUtil.dateToStamp( + System.currentTimeMillis(), + DateUtil.type2 + ) + }" + ) data.add("*****************************") } - + CardOperationType.CancelCard -> { // 閿�鍗℃墦鍗板唴瀹� data.add("*****************************") data.add(" 閿�鍗″嚟璇�") data.add("*****************************") - + + // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級 + cardInfo?.userName?.let { userName -> + if (userName.isNotEmpty()) { + data.add("鐢ㄦ埛濮撳悕锛�$userName") + } + } + 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( + "鏃� 鏈燂細${ + DateUtil.dateToStamp( + System.currentTimeMillis(), + DateUtil.type2 + ) + }" + ) data.add("*****************************") } - - CardOperationType.SUPPLEMENT -> { + + CardOperationType.SUPPLEMENT -> { // 杩旇繕鎵撳嵃鍐呭 data.add("*****************************") data.add(" 杩旇繕鍑瘉") data.add("*****************************") - + + // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級 + cardInfo?.userName?.let { userName -> + if (userName.isNotEmpty()) { + data.add("鐢ㄦ埛濮撳悕锛�$userName") + } + } + 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( + "鏃� 鏈燂細${ + DateUtil.dateToStamp( + System.currentTimeMillis(), + DateUtil.type2 + ) + }" + ) data.add("*****************************") } - + CardOperationType.DeductCard -> { // 琛ユ墸鎵撳嵃鍐呭 data.add("*****************************") data.add(" 琛ユ墸鍑瘉") data.add("*****************************") - + + // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級 + cardInfo?.userName?.let { userName -> + if (userName.isNotEmpty()) { + data.add("鐢ㄦ埛濮撳悕锛�$userName") + } + } + 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( + "鏃� 鏈燂細${ + DateUtil.dateToStamp( + System.currentTimeMillis(), + DateUtil.type2 + ) + }" + ) data.add("*****************************") } - + + CardOperationType.OpenCard -> { + data.add("*****************************") + data.add(" 寮�鍗″嚟璇�") + data.add("*****************************") + + // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級 + cardInfo?.userName?.let { userName -> + if (userName.isNotEmpty()) { + data.add("鐢ㄦ埛濮撳悕锛�$userName") + } + } + + // 娣诲姞鍗″湴鍧� + 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)} 鍏�") + // 娣诲姞鍏呭�煎悗浣欓 + data.add("鍏呭�煎悗浣欓锛�${MornyUtil.changeF2Y(userCard.balance)} 鍏�") + } + + // 娣诲姞璧犻�侀噾棰� + if (cardFee > 0) { + data.add("宸ユ湰璐癸細" + MornyUtil.changeF2Y(cardFee) + "鍏�") + } + + // 娣诲姞璁㈠崟鍙� + if (!orderNumber.isNullOrEmpty()) { + data.add("璁㈠崟鍙凤細$orderNumber") + } + + // 娣诲姞璁惧鎿嶄綔鍛樹俊鎭� + data.add("璁惧鎿嶄綔鍛橈細${BaseApplication.userName}") + // 娣诲姞鏃ユ湡淇℃伅 + data.add( + "鏃� 鏈燂細${ + DateUtil.dateToStamp( + System.currentTimeMillis(), + DateUtil.type2 + ) + }" + ) + data.add("*****************************") + } + else -> { // 鍏朵粬鎿嶄綔鐨勯�氱敤鎵撳嵃鍐呭 data.add("*****************************") data.add(" 鎿嶄綔鍑瘉") data.add("*****************************") - + + // 娣诲姞鐢ㄦ埛鍚嶏紙浠嶤ardInfo涓幏鍙栵級 + cardInfo?.userName?.let { userName -> + if (userName.isNotEmpty()) { + data.add("鐢ㄦ埛濮撳悕锛�$userName") + } + } + 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( + "鏃� 鏈燂細${ + DateUtil.dateToStamp( + System.currentTimeMillis(), + DateUtil.type2 + ) + }" + ) data.add("*****************************") } } - + // 璁剧疆鎵撳嵃瀛椾綋澶у皬 val size = 26f // 鎵ц鎵撳嵃鎿嶄綔 PrintAdater.printText(data, size, true, false) - + } catch (e: Exception) { // 鎵撳嵃寮傚父淇℃伅 e.printStackTrace() -- Gitblit v1.8.0