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/NewCard2Activity.kt |  144 ++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 120 insertions(+), 24 deletions(-)

diff --git a/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt b/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
index 045f203..1be8768 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/NewCard2Activity.kt
@@ -24,6 +24,7 @@
 import com.dayu.general.databinding.ActivityNewCardGeBinding
 import com.dayu.general.net.ApiManager
 import com.dayu.general.net.BaseResponse
+import com.dayu.general.tool.BaseCommon.Companion.protocol
 import com.dayu.general.tool.CardCommon.Companion.USER_CARD_TYPE_1
 import com.dayu.general.tool.CardOperationType
 import com.dayu.general.tool.NfcReadHelper
@@ -46,7 +47,7 @@
     private var paymentMethod: String = "鐜伴噾"
 
     // 鏀粯鏂瑰紡ID
-    private var paymentId: Long = 0
+    private var paymentId: String = ""
 
     // 鏀粯鏂瑰紡鍒楄〃
     private var paymentMethodList: List<PaymentMethod> = listOf()
@@ -60,12 +61,12 @@
     // 瀹㈡埛ID
     private var clientId: String = ""
 
-    private lateinit var clientInfo : ClientInfo
+    private lateinit var clientInfo: ClientInfo
 
     // 鏄惁宸茶鍗�
     private var isReadCard: Boolean = false
 
-    private var orderId:String=""
+    private var orderId: String = ""
 
     companion object {
         private const val TAG = "NewCard2Activity"
@@ -170,18 +171,49 @@
     private fun getPaymentMethods() {
         ApiManager.getInstance().requestGetLoading(
             this,
-            "sell/paymentmethod/get",
-            PaymentMethodResponse::class.java,
+            "terminal/paymentmethod/get",
+            Any::class.java,
             null,
-            object : SubscriberListener<BaseResponse<PaymentMethodResponse>>() {
-                override fun onNext(response: BaseResponse<PaymentMethodResponse>) {
+            object : SubscriberListener<BaseResponse<Any>>() {
+                override fun onNext(response: BaseResponse<Any>) {
                     if (response.success) {
-                        // 鑾峰彇鏀粯鏂瑰紡鍒楄〃
-                        val paymentMethods = response.content?.obj ?: listOf()
-                        if (paymentMethods.isNotEmpty()) {
-                            paymentMethodList = paymentMethods
-                            // 鏇存柊鏀粯鏂瑰紡鏄剧ず
-                            updatePaymentMethodRadioGroup()
+                        try {
+                            // 瀹夊叏鍦板鐞嗚繑鍥炵殑content锛屾湇鍔″櫒杩斿洖鐨勬槸ArrayList<LinkedHashMap>
+                            val paymentMethods = mutableListOf<PaymentMethod>()
+                            val content = response.content
+                            
+                            if (content is List<*>) {
+                                content.forEach { item ->
+                                    if (item is Map<*, *>) {
+                                        val id = item["id"]?.toString() ?: ""
+                                        val name = item["name"]?.toString() ?: ""
+                                        if (id.isNotEmpty() && name.isNotEmpty()) {
+                                            paymentMethods.add(PaymentMethod(id, name))
+                                        }
+                                    }
+                                }
+                            }
+                            
+                            if (paymentMethods.isNotEmpty()) {
+                                paymentMethodList = paymentMethods
+                                // 鏇存柊鏀粯鏂瑰紡鏄剧ず
+                                updatePaymentMethodRadioGroup()
+                            } else {
+                                Toast.makeText(
+                                    this@NewCard2Activity,
+                                    "鑾峰彇鏀粯鏂瑰紡澶辫触锛氳繑鍥炴暟鎹负绌�",
+                                    Toast.LENGTH_SHORT
+                                ).show()
+                            }
+                        } catch (e: Exception) {
+                            android.util.Log.e("NewCard2Activity", "瑙f瀽鏀粯鏂瑰紡鏁版嵁澶辫触", e)
+                            android.util.Log.e("NewCard2Activity", "鍘熷鏁版嵁绫诲瀷: ${response.content?.javaClass?.name}")
+                            android.util.Log.e("NewCard2Activity", "鍘熷鏁版嵁鍐呭: ${response.content}")
+                            Toast.makeText(
+                                this@NewCard2Activity,
+                                "瑙f瀽鏀粯鏂瑰紡鏁版嵁澶辫触: ${e.message}",
+                                Toast.LENGTH_SHORT
+                            ).show()
                         }
                     } else {
                         Toast.makeText(
@@ -194,6 +226,7 @@
 
                 override fun onError(e: Throwable?) {
                     super.onError(e)
+                    android.util.Log.e("NewCard2Activity", "缃戠粶璇锋眰澶辫触", e)
                     Toast.makeText(
                         this@NewCard2Activity,
                         "鑾峰彇鏀粯鏂瑰紡澶辫触: ${e?.message ?: "缃戠粶寮傚父"}",
@@ -323,7 +356,7 @@
         params["amount"] = rechargeAmount  // 鍏呭�奸噾棰�(鍏�)
         params["paymentId"] = paymentId // 鏀粯鏂瑰紡ID
         params["remarks"] = remark // 澶囨敞
-        params["protocol"] = "p206V1_0_1" // 鍗忚
+        params["protocol"] = protocol // 鍗忚
         params["operator"] = BaseApplication.userId // 鎿嶄綔浜篒D
 
         // 鎵ц鍗$墖婵�娲籄PI璇锋眰
@@ -335,7 +368,7 @@
             object : SubscriberListener<BaseResponse<NewCardDataResult>>() {
                 override fun onNext(response: BaseResponse<NewCardDataResult>) {
                     if (response.success) {
-                        orderId=response.content?.orderNo.toString()
+                        orderId = response.content?.orderNo.toString()
                         // 淇濆瓨寮�鍗′俊鎭埌鏁版嵁搴�
                         val cardRegistration = CardRegistrationBean(
                             cardNumber = cardPhysicalId,
@@ -344,7 +377,7 @@
                             clientId = clientId,
                             cardFee = cardFee,
                             remark = binding.newCardRemark.text.toString(),
-                            paymentMethod = paymentId.toInt(),
+                            paymentMethod = paymentId.toLongOrNull()?.toInt() ?: 0,
                             isReported = true,
                             isCardWritten = false, // 鍒濆璁剧疆涓篺alse锛屽啓鍗℃垚鍔熷悗鍐嶆洿鏂颁负true
                             operatorId = orderId,
@@ -362,19 +395,82 @@
                                     putExtra("orderNumber", orderId)
                                     putExtra("cardAddr", cardPhysicalId)
                                     var userCard = UserCard()
-                                    userCard.areaNumber = response.content?.cardNum?.substring(0, 12).toString()
-                                    userCard.userCode =clientInfo.clientNum
-                                    userCard.phoneNumber =clientInfo.phone
-                                    userCard.userCodeNumber = response.content?.cardNum?.substring(12)?.toInt()!!
+                                    userCard.areaNumber =
+                                        response.content?.cardNum?.substring(0, 12).toString()
+                                    userCard.userCode = clientInfo.clientNum
+                                    userCard.phoneNumber = clientInfo.phone
+                                    userCard.userCodeNumber =
+                                        response.content?.cardNum?.substring(12)?.toInt()!!
                                     userCard.projectCode = response.content?.projectNo!!
-                                    userCard.balance = MornyUtil.changeY2F(response.content?.balance)
+                                    userCard.balance =
+                                        MornyUtil.changeY2F(response.content?.balance)
 //                                    userCard.surplusWater = response.content?.surplusWater?.toInt()!!
-                                    userCard.waterPrice = response.content?.waterPrice?.toFloat()!!
-//                                    userCard.electricPrice = response.content?.electricPrice?.toFloat()!!
-                                    userCard.rechargeDate = DateUtils.parseStringToCalendar(response.content?.time)
+                                    userCard.waterPrice =
+                                        MornyUtil.changeY2F(response.content?.waterPrice)
+                                    userCard.electricPrice =
+                                        MornyUtil.changeY2F(response.content?.waterPrice)
+                                    userCard.rechargeDate =
+                                        DateUtils.parseStringToCalendar(response.content?.time)
+
+                                    // 杈撳嚭userCard鐨勬墍鏈変俊鎭埌鏃ュ織
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "=== 寮�鍗serCard淇℃伅 ==="
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "鍗$墖绫诲瀷: ${userCard.cardType}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "鍥藉琛屾斂鍖哄煙鍙�: ${userCard.areaNumber}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "鐢ㄦ埛缂栧彿: ${userCard.userCode}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "鐢ㄦ埛鍗$紪鍙�: ${userCard.userCodeNumber}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "瀹屾暣鐢ㄦ埛缂栧彿: ${userCard.getMyUserCode()}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "鎵嬫満鍙�: ${userCard.phoneNumber}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "椤圭洰缂栫爜: ${userCard.projectCode}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "鍗″唴浣欓: ${userCard.balance}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "鍓╀綑姘撮噺: ${userCard.surplusWater}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "姘撮噺鍗曚环: ${userCard.waterPrice}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "鐢甸噺鍗曚环: ${userCard.electricPrice}"
+                                    )
+                                    android.util.Log.d(
+                                        "NewCard2Activity",
+                                        "鍏呭�兼椂闂�: ${userCard.rechargeDate}"
+                                    )
+                                    android.util.Log.d("NewCard2Activity", "==================")
+
                                     putExtra("userCard", userCard)
                                     putExtra("operationTypeCode", CardOperationType.OpenCard.code)
                                     putExtra("cardFee", cardFee)
+
                                     startActivityForResult(this, REQUEST_CODE_NFC_WRITE)
                                 }
                             } catch (e: Exception) {

--
Gitblit v1.8.0