左晓为主开发手持机充值管理机
zuoxiao
3 天以前 4ceacd9e21e09989287e8dc4e526d182091af282
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}")
            }
        }
    }