From 80eb39909e0d5c181dc8d6e282a292146ec51e21 Mon Sep 17 00:00:00 2001
From: zuoxiao <lf_zuo@163.com>
Date: 星期三, 25 六月 2025 14:36:04 +0800
Subject: [PATCH] refactor(card): 重构卡片制作流程并添加项目号支持
---
generallibrary/src/main/java/com/dayu/general/activity/ManagerReadActivity.kt | 293 ++++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 212 insertions(+), 81 deletions(-)
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/ManagerReadActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/ManagerReadActivity.kt
index a90feb8..a58bf9a 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/ManagerReadActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/ManagerReadActivity.kt
@@ -15,6 +15,7 @@
import com.dayu.general.model.CardInfoModel
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
import com.dayu.general.tool.NfcReadHelper
@@ -48,18 +49,34 @@
CardCommon.CLEAN_CARD_TYPE -> binding.titleBar.setCenterText("鍒朵綔娓呴浂鍗�")
else -> binding.titleBar.setCenterText("璇诲崱")
}
-
+
binding.titleBar.setOnItemclickListner(ClickType_LEFT_IMAGE) { this.finish() }
-
+
// 鏍规嵁鍗$被鍨嬭缃緭鍏ユ鍙鎬�
when (cardType) {
CardCommon.REGION_CARD -> {
- // 鍖哄煙琛ㄥ彿鍗★細鏄剧ず鍖哄煙鍙疯緭鍏ユ
+ // 鍖哄煙琛ㄥ彿鍗★細鏄剧ず鍖哄煙鍙峰拰椤圭洰鍙疯緭鍏ユ
binding.regionNumberLayout.visibility = View.VISIBLE
+ binding.projectNumberLayout.visibility = View.VISIBLE
+
// 涓哄尯鍩熷彿杈撳叆妗嗘坊鍔犺緭鍏ラ獙璇�
binding.regionNumberEt.addTextChangedListener(object : TextWatcher {
- override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
- override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
+ override fun beforeTextChanged(
+ s: CharSequence?,
+ start: Int,
+ count: Int,
+ after: Int
+ ) {
+ }
+
+ override fun onTextChanged(
+ s: CharSequence?,
+ start: Int,
+ before: Int,
+ count: Int
+ ) {
+ }
+
override fun afterTextChanged(s: Editable?) {
val text = s.toString()
if (text.length > 12) {
@@ -68,35 +85,96 @@
}
}
})
+
+ // 涓洪」鐩彿杈撳叆妗嗘坊鍔犺緭鍏ラ獙璇侊紙鑼冨洿1-255锛�
+ binding.projectNumberEt.addTextChangedListener(object : TextWatcher {
+ override fun beforeTextChanged(
+ s: CharSequence?,
+ start: Int,
+ count: Int,
+ after: Int
+ ) {
+ }
+
+ override fun onTextChanged(
+ s: CharSequence?,
+ start: Int,
+ before: Int,
+ count: Int
+ ) {
+ }
+
+ override fun afterTextChanged(s: Editable?) {
+ val text = s.toString()
+ if (text.isNotEmpty()) {
+ try {
+ val number = text.toInt()
+ if (number > 255) {
+ binding.projectNumberEt.setText("255")
+ binding.projectNumberEt.setSelection(3)
+ } else if (number < 1 && text.length > 1) {
+ binding.projectNumberEt.setText("1")
+ binding.projectNumberEt.setSelection(1)
+ }
+ } catch (e: NumberFormatException) {
+ // 濡傛灉杈撳叆鐨勪笉鏄暟瀛楋紝娓呯┖
+ binding.projectNumberEt.setText("")
+ }
+ }
+ }
+ })
}
+
CardCommon.CHECK_CARD,
CardCommon.DEBUG_CARD,
CardCommon.CLEAN_CARD_TYPE -> {
- // 妫�鏌ュ崱銆佽皟璇曞崱銆佹竻闆跺崱锛氶殣钘忓尯鍩熷彿杈撳叆妗嗭紝鍙樉绀哄崱鍦板潃鍜屽娉�
+ // 妫�鏌ュ崱銆佽皟璇曞崱銆佹竻闆跺崱锛氶殣钘忓尯鍩熷彿鍜岄」鐩彿杈撳叆妗嗭紝鍙樉绀哄崱鍦板潃鍜屽娉�
binding.regionNumberLayout.visibility = View.GONE
+ binding.projectNumberLayout.visibility = View.GONE
}
+
else -> {
- // 鍏朵粬鍗$被鍨嬶細闅愯棌鍖哄煙鍙疯緭鍏ユ
+ // 鍏朵粬鍗$被鍨嬶細闅愯棌鍖哄煙鍙峰拰椤圭洰鍙疯緭鍏ユ
binding.regionNumberLayout.visibility = View.GONE
+ binding.projectNumberLayout.visibility = View.GONE
}
}
-
+
binding.btnNext.setOnClickListener {
- if (viewModel.cardNumber.value.isNullOrEmpty()) {
+ if (viewModel.cardNumber.get().isNullOrEmpty()) {
ToastUtil.show("璇峰厛璇诲彇鍗″彿")
} else if (cardType == CardCommon.REGION_CARD) {
- // 鍖哄煙琛ㄥ彿鍗¢渶瑕侀獙璇佸尯鍩熷彿
- val regionNumber = viewModel.regionNumber.value
+ // 鍖哄煙琛ㄥ彿鍗¢渶瑕侀獙璇佸尯鍩熷彿鍜岄」鐩彿
+ val regionNumber = viewModel.regionNumber.get()
+ val projectNumber = viewModel.projectNumber.get()
+
if (regionNumber.isNullOrEmpty()) {
ToastUtil.show("璇疯緭鍏ュ尯鍩熷彿")
} else if (regionNumber.length != 12) {
ToastUtil.show("鍖哄煙鍙峰繀椤讳负12浣嶆暟瀛�")
+ } else if (projectNumber.isNullOrEmpty()) {
+ ToastUtil.show("璇疯緭鍏ラ」鐩彿")
} else {
- postCardData(cardType, viewModel.cardNumber.value!!, getRemark(), regionNumber)
+ try {
+ val projectNum = projectNumber.toInt()
+ if (projectNum < 1 || projectNum > 255) {
+ ToastUtil.show("椤圭洰鍙峰繀椤诲湪1-255鑼冨洿鍐�")
+ } else {
+ postCardData(
+ cardType,
+ viewModel.cardNumber.get()!!,
+ getRemark(),
+ regionNumber,
+ projectNumber
+ )
+ }
+ } catch (e: NumberFormatException) {
+ ToastUtil.show("椤圭洰鍙峰繀椤讳负鏁板瓧")
+ }
}
} else {
- // 鍏朵粬鍗$被鍨嬶紙鍖呮嫭璋冭瘯鍗°�佹鏌ュ崱銆佹竻闆跺崱锛変笉闇�瑕佸尯鍩熷彿
- postCardData(cardType, viewModel.cardNumber.value!!, getRemark())
+ // 鍏朵粬鍗$被鍨嬶紙鍖呮嫭璋冭瘯鍗°�佹鏌ュ崱銆佹竻闆跺崱锛変笉闇�瑕佸尯鍩熷彿鍜岄」鐩彿
+ postCardData(cardType, viewModel.cardNumber.get()!!, getRemark())
}
}
}
@@ -115,7 +193,7 @@
/**
* 鑾峰彇澶囨敞淇℃伅
*/
- fun getRemark(): String = viewModel.remark.value ?: ""
+ fun getRemark(): String = viewModel.remark.get() ?: ""
override fun onNfcBack(intent: Intent) {
// 澶勭悊NFC璇诲彇缁撴灉
@@ -132,81 +210,134 @@
}
-private fun bytesToHexString(bytes: ByteArray?): String? {
- if (bytes == null || bytes.isEmpty()) return null
- val sb = StringBuilder()
- for (b in bytes) {
- sb.append(String.format("%02X", b))
- }
- return sb.toString()
-}
-
-
-/**
- * 鎻愪氦鏁版嵁 - 涓嶅甫鍖哄煙鍙风殑鐗堟湰
- */
-fun postCardData(cardType: String, cardAddr: String, remark: String) {
- postCardData(cardType, cardAddr, remark, null)
-}
-
-/**
- * 鎻愪氦鏁版嵁 - 甯﹀尯鍩熷彿鐨勭増鏈�
- */
-fun postCardData(cardType: String, cardAddr: String, remark: String, regionNumber: String?) {
-
- val map = mutableMapOf<String, Any>()
-
- if (cardAddr.isNotEmpty()) {
- map["cardAddr"] = cardAddr
+ private fun bytesToHexString(bytes: ByteArray?): String? {
+ if (bytes == null || bytes.isEmpty()) return null
+ val sb = StringBuilder()
+ for (b in bytes) {
+ sb.append(String.format("%02X", b))
+ }
+ return sb.toString()
}
- if (cardType.isNotEmpty()) {
-// map["cardType"] = cardType
- map["cardType"] = "5"
+
+ /**
+ * 鎻愪氦鏁版嵁 - 涓嶅甫鍖哄煙鍙风殑鐗堟湰
+ */
+ fun postCardData(cardType: String, cardAddr: String, remark: String) {
+ postCardData(cardType, cardAddr, remark, null, null)
}
- if (remark.isNotEmpty()) {
- map["remarks"] = remark
+
+ /**
+ * 鎻愪氦鏁版嵁 - 甯﹀尯鍩熷彿鐨勭増鏈�
+ */
+ fun postCardData(cardType: String, cardAddr: String, remark: String, regionNumber: String?) {
+ postCardData(cardType, cardAddr, remark, regionNumber, null)
}
-
- // 濡傛灉鏄尯鍩熻〃鍙峰崱骞朵笖鏈夊尯鍩熷彿锛屾坊鍔犲埌璇锋眰鍙傛暟涓�
- if (cardType == CardCommon.REGION_CARD && !regionNumber.isNullOrEmpty()) {
- map["regionNumber"] = regionNumber
- }
-
- // 浣跨敤姝g‘鐨勭被鍨嬪弬鏁�
- ApiManager.getInstance().requestPostLoading(
- this,
- "/sell/card/create_manager_card",
- String::class.java,
- map,
- object : SubscriberListener<BaseResponse<String>>() {
- override fun onNext(t: BaseResponse<String>) {
- if (t.success) {
- var intent = Intent(this@ManagerReadActivity, NfcWreatActivity::class.java).apply {
- putExtra("cardAddr", cardAddr)
- putExtra("orderId", t.content)
- putExtra("cardType", cardType)
- if (cardType == CardCommon.REGION_CARD && !regionNumber.isNullOrEmpty()) {
- putExtra("regionNumber", regionNumber)
- }
+
+ /**
+ * 鎻愪氦鏁版嵁 - 瀹屾暣鐗堟湰锛屾敮鎸佸尯鍩熷彿鍜岄」鐩彿
+ */
+ fun postCardData(
+ cardType: String,
+ cardAddr: String,
+ remark: String,
+ regionNumber: String?,
+ projectNumber: String?
+ ) {
+
+ val map = mutableMapOf<String, Any>()
+
+ if (cardAddr.isNotEmpty()) {
+ map["cardAddr"] = cardAddr
+ }
+
+ if (cardType.isNotEmpty()) {
+ // 鏍规嵁鍗$被鍨嬭缃搴旂殑鏁板瓧缂栧彿
+ val cardTypeNumber = when (cardType) {
+ CardCommon.REGION_CARD -> "2" // 璁剧疆鍖哄煙琛ㄥ彿鍗�
+ CardCommon.ELECTRIC_PRICE_CARD -> "3" // 鍙栨暟鍗�
+ CardCommon.CHECK_CARD -> "4" // 妫�鏌ュ崱
+ CardCommon.DEBUG_CARD -> "5" // 娴嬭瘯鍗�
+ CardCommon.CLEAN_CARD_TYPE -> "6" // 娓呴浂鍗�
+ CardCommon.IP_CARD -> "7" // IP璁剧疆鍗�
+ CardCommon.AREA_CARD -> "8" // 鍩熷悕璁剧疆鍗★紙鍖哄煙璁剧疆鍗★級
+ CardCommon.GPS_CARD -> "9" // GPS鍗�
+ CardCommon.VALVE_TIME_CARD -> "10" // 鏃堕棿閰嶇疆鍗★紙閰嶇疆寮�鍏抽榾鏃堕棿锛�
+ else -> "5" // 榛樿鍊�
+ }
+ map["cardType"] = cardTypeNumber
+ }
+ if (remark.isNotEmpty()) {
+ map["remarks"] = remark
+ }
+
+ // 濡傛灉鏄尯鍩熻〃鍙峰崱骞朵笖鏈夊尯鍩熷彿锛屾坊鍔犲埌璇锋眰鍙傛暟涓�
+ if (cardType == CardCommon.REGION_CARD && !regionNumber.isNullOrEmpty()) {
+ map["regionNumber"] = regionNumber
+ }
+
+ // 濡傛灉鏄尯鍩熻〃鍙峰崱骞朵笖鏈夐」鐩彿锛屾坊鍔犲埌璇锋眰鍙傛暟涓�
+ if (cardType == CardCommon.REGION_CARD && !projectNumber.isNullOrEmpty()) {
+ map["projectNumber"] = projectNumber
+ }
+ map["protocol"] = protocol
+ map["securityCode"]="A0B1C289"
+
+ // 浣跨敤姝g‘鐨勭被鍨嬪弬鏁�
+ ApiManager.getInstance().requestPostLoading(
+ this,
+ "terminal/card/createManagementCard",
+ String::class.java,
+ map,
+ object : SubscriberListener<BaseResponse<String>>() {
+ override fun onNext(t: BaseResponse<String>) {
+ if (t.success) {
+ var intent =
+ Intent(this@ManagerReadActivity, NfcWreatActivity::class.java).apply {
+ putExtra("cardAddr", cardAddr)
+ putExtra("orderNumber", t.content)
+ putExtra("cardType", cardType)
+
+ // 鏍规嵁鍗$被鍨嬭缃搷浣滅被鍨嬩唬鐮�
+ val operationTypeCode = when (cardType) {
+ CardCommon.REGION_CARD -> 100 // 鍖哄煙琛ㄥ彿鍗℃搷浣滅被鍨�
+ CardCommon.CHECK_CARD -> 101 // 妫�鏌ュ崱鎿嶄綔绫诲瀷
+ CardCommon.DEBUG_CARD -> 102 // 璋冭瘯鍗℃搷浣滅被鍨�
+ CardCommon.CLEAN_CARD_TYPE -> 103 // 娓呴浂鍗℃搷浣滅被鍨�
+ CardCommon.IP_CARD -> 104 // IP璁剧疆鍗℃搷浣滅被鍨�
+ CardCommon.AREA_CARD -> 105 // 鍩熷悕璁剧疆鍗℃搷浣滅被鍨�
+ CardCommon.GPS_CARD -> 106 // GPS鍗℃搷浣滅被鍨�
+ CardCommon.VALVE_TIME_CARD -> 107 // 鏃堕棿閰嶇疆鍗℃搷浣滅被鍨�
+ CardCommon.ELECTRIC_PRICE_CARD -> 108 // 鍙栨暟鍗℃搷浣滅被鍨�
+ else -> -1
+ }
+ putExtra("operationTypeCode", operationTypeCode)
+
+ // 浼犻�掑尯鍩熷彿鍜岄」鐩彿锛堜粎褰撴槸鍖哄煙琛ㄥ彿鍗℃椂锛�
+ if (cardType == CardCommon.REGION_CARD && !regionNumber.isNullOrEmpty()) {
+ putExtra("regionNumber", regionNumber)
+ }
+ if (cardType == CardCommon.REGION_CARD && !projectNumber.isNullOrEmpty()) {
+ putExtra("projectNumber", projectNumber)
+ }
+ }
+ this@ManagerReadActivity.finish()
+ startActivity(intent)
+ } else {
+ // 澶勭悊鎼滅储澶辫触鐨勬儏鍐�
+ ToastUtil.show(t.msg)
}
- this@ManagerReadActivity.finish()
- startActivity(intent)
- } else {
- // 澶勭悊鎼滅储澶辫触鐨勬儏鍐�
- ToastUtil.show(t.msg)
+ }
+
+ override fun onError(e: Throwable?) {
+ super.onError(e)
+ ToastUtil.show("鎺ュ彛璋冨彇澶辫触: ${e?.message ?: "鏈煡閿欒"}")
}
}
-
- override fun onError(e: Throwable?) {
- super.onError(e)
- ToastUtil.show("鎼滅储澶辫触: ${e?.message ?: "鏈煡閿欒"}")
- }
- }
- )
+ )
-}
+ }
}
\ No newline at end of file
--
Gitblit v1.8.0