| | |
| | | package com.dayu.general.activity |
| | | |
| | | import android.content.Intent |
| | | 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.bean.net.CardInfoResult |
| | | import com.dayu.general.bean.net.ClientInfo |
| | | import com.dayu.general.databinding.ActivityCardWriteSuccessBinding |
| | | import com.dayu.general.tool.CardOperationType |
| | | |
| | | /** |
| | | * @author: zuo |
| | |
| | | * @description: 写卡成功页面 |
| | | */ |
| | | class CardWriteSuccessActivity : BaseActivity() { |
| | | |
| | | |
| | | 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 cardInfo: CardInfoResult? = null |
| | | private var clientInfo: ClientInfo? = 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 |
| | | private var cardFee = 0 |
| | | |
| | | override fun onCreate(savedInstanceState: Bundle?) { |
| | | super.onCreate(savedInstanceState) |
| | | binding = ActivityCardWriteSuccessBinding.inflate(layoutInflater) |
| | | setContentView(binding.root) |
| | | |
| | | // 获取传入的卡号 |
| | | |
| | | // 获取传入的卡号和操作类型 |
| | | cardNumber = intent.getStringExtra("cardNumber") |
| | | |
| | | 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) |
| | | 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 |
| | | } |
| | | |
| | | if (intent.hasExtra("cardInfo")) { |
| | | cardInfo = intent.getSerializableExtra("cardInfo") as CardInfoResult |
| | | } |
| | | |
| | | if (intent.hasExtra("clientInfo")) { |
| | | clientInfo = intent.getSerializableExtra("clientInfo") as ClientInfo |
| | | } |
| | | |
| | | initView() |
| | | } |
| | | |
| | | |
| | | private fun initView() { |
| | | // 设置标题 |
| | | binding.titleBar.setCenterText("销卡成功") |
| | | |
| | | // 设置成功信息 |
| | | binding.successTitle.text = "销卡成功" |
| | | |
| | | // 设置详细信息 |
| | | val message = if (cardNumber.isNullOrBlank()) { |
| | | "卡片已成功销卡并清除内容\n该卡片将无法再次使用" |
| | | } else { |
| | | "卡片已成功销卡并清除内容\n卡号:$cardNumber\n该卡片将无法再次使用" |
| | | val operationType = CardOperationType.fromCode(operationTypeCode) |
| | | |
| | | // 根据操作类型设置不同的标题和信息 |
| | | when (operationType) { |
| | | CardOperationType.CancelCard -> { |
| | | // 设置标题 |
| | | binding.titleBar.setCenterText("销卡成功") |
| | | |
| | | // 设置成功信息 |
| | | binding.successTitle.text = "销卡成功" |
| | | |
| | | // 设置详细信息 |
| | | val message = if (cardNumber.isNullOrBlank()) { |
| | | "卡片已成功销卡并清除内容\n该卡片将无法再次使用" |
| | | } else { |
| | | "卡片已成功销卡并清除内容\n卡号:$cardNumber\n该卡片将无法再次使用" |
| | | } |
| | | binding.successMessage.text = message |
| | | |
| | | // 销卡成功后自动打印 |
| | | userCard?.let { card -> |
| | | doPrint(card) |
| | | } |
| | | } |
| | | |
| | | CardOperationType.SUPPLEMENT -> { |
| | | // 设置标题 |
| | | binding.titleBar.setCenterText("返还成功") |
| | | |
| | | // 设置成功信息 |
| | | binding.successTitle.text = "返还成功" |
| | | |
| | | // 设置详细信息 |
| | | val message = if (cardNumber.isNullOrBlank()) { |
| | | "卡片返还操作已成功完成\n卡内余额已更新" |
| | | } else { |
| | | "卡片返还操作已成功完成\n卡号:$cardNumber\n卡内余额已更新" |
| | | } |
| | | binding.successMessage.text = message |
| | | |
| | | // 返还成功后自动打印 |
| | | userCard?.let { card -> |
| | | doPrint(card) |
| | | } |
| | | } |
| | | |
| | | CardOperationType.DeductCard -> { |
| | | // 设置标题 |
| | | binding.titleBar.setCenterText("补扣成功") |
| | | |
| | | // 设置成功信息 |
| | | binding.successTitle.text = "补扣成功" |
| | | |
| | | // 设置详细信息 |
| | | val message = if (cardNumber.isNullOrBlank()) { |
| | | "卡片补扣操作已成功完成\n卡内余额已更新" |
| | | } else { |
| | | "卡片补扣操作已成功完成\n卡号:$cardNumber\n卡内余额已更新" |
| | | } |
| | | binding.successMessage.text = message |
| | | |
| | | // 补扣成功后自动打印 |
| | | userCard?.let { card -> |
| | | doPrint(card) |
| | | } |
| | | } |
| | | |
| | | CardOperationType.ReplaceCard -> { |
| | | // 设置标题 |
| | | binding.titleBar.setCenterText("补卡成功") |
| | | |
| | | // 设置成功信息 |
| | | binding.successTitle.text = "补卡成功" |
| | | |
| | | // 设置详细信息 |
| | | val message = if (cardNumber.isNullOrBlank()) { |
| | | "补卡操作已成功完成\n新卡已写入数据,可正常使用" |
| | | } else { |
| | | "补卡操作已成功完成\n卡号:$cardNumber\n新卡已写入数据,可正常使用" |
| | | } |
| | | binding.successMessage.text = message |
| | | } |
| | | |
| | | 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() |
| | | messageBuilder.append("开卡操作已成功完成\n") |
| | | |
| | | // 显示用户姓名 |
| | | val userName = getUserName() |
| | | if (!userName.isNullOrEmpty()) { |
| | | messageBuilder.append("用户姓名:$userName\n") |
| | | } |
| | | |
| | | // 显示卡地址 |
| | | val cardAddress = cardNumber ?: cardAddr |
| | | if (!cardAddress.isNullOrEmpty()) { |
| | | messageBuilder.append("卡地址:$cardAddress\n") |
| | | } |
| | | |
| | | // 显示工本费 |
| | | if (cardFee > 0) { |
| | | messageBuilder.append("工本费:${cardFee}元\n") |
| | | } |
| | | |
| | | // 显示充值金额 |
| | | if (rechargeAmount > 0) { |
| | | messageBuilder.append("充值金额:${String.format("%.2f", rechargeAmount)}元\n") |
| | | } |
| | | |
| | | // 显示卡内余额 |
| | | messageBuilder.append("卡内余额:${MornyUtil.changeF2Y(userCard?.balance ?: 0)}元") |
| | | |
| | | binding.successMessage.text = messageBuilder.toString() |
| | | |
| | | // 开卡成功后自动打印 |
| | | userCard?.let { card -> |
| | | doPrint(card) |
| | | } |
| | | } |
| | | |
| | | else -> { |
| | | // 默认显示写卡成功 |
| | | binding.titleBar.setCenterText("写卡成功") |
| | | binding.successTitle.text = "写卡成功" |
| | | |
| | | val message = if (cardNumber.isNullOrBlank()) { |
| | | "卡片操作已成功完成" |
| | | } else { |
| | | "卡片操作已成功完成\n卡号:$cardNumber" |
| | | } |
| | | binding.successMessage.text = message |
| | | } |
| | | } |
| | | binding.successMessage.text = message |
| | | |
| | | |
| | | // 设置点击确定按钮后关闭页面 |
| | | binding.btnConfirm.setOnClickListener { |
| | | finish() |
| | | } |
| | | |
| | | |
| | | // 设置再次打印按钮点击监听器 |
| | | binding.btnReprint.setOnClickListener { |
| | | userCard?.let { card -> |
| | | doPrint(card) |
| | | } |
| | | } |
| | | |
| | | // 设置标题栏返回按钮 |
| | | binding.titleBar.setOnItemclickListner(com.dayu.baselibrary.view.TitleBar.ClickType_LEFT_IMAGE) { |
| | | finish() |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取用户姓名,优先从ClientInfo获取,如果没有再从CardInfo获取 |
| | | * @return 用户姓名 |
| | | */ |
| | | private fun getUserName(): String? { |
| | | return clientInfo?.name ?: cardInfo?.userName |
| | | } |
| | | |
| | | /** |
| | | * 打印充值成功信息到打印机 |
| | | * @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("*****************************") |
| | | |
| | | // 添加用户名(优先从ClientInfo中获取,如果没有再从CardInfo中获取) |
| | | val userName = getUserName() |
| | | if (!userName.isNullOrEmpty()) { |
| | | 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)} 元") |
| | | |
| | | // 添加订单号 |
| | | 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("*****************************") |
| | | |
| | | // 添加用户名(优先从ClientInfo中获取,如果没有再从CardInfo中获取) |
| | | val userName = getUserName() |
| | | if (!userName.isNullOrEmpty()) { |
| | | 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)} 元") |
| | | 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("*****************************") |
| | | |
| | | // 添加用户名(优先从ClientInfo中获取,如果没有再从CardInfo中获取) |
| | | val userName = getUserName() |
| | | if (!userName.isNullOrEmpty()) { |
| | | 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)} 元") |
| | | |
| | | |
| | | if (!orderNumber.isNullOrEmpty()) { |
| | | data.add("订单号:$orderNumber") |
| | | } |
| | | |
| | | data.add("设备操作员:${BaseApplication.userName}") |
| | | data.add( |
| | | "日 期:${ |
| | | DateUtil.dateToStamp( |
| | | System.currentTimeMillis(), |
| | | DateUtil.type2 |
| | | ) |
| | | }" |
| | | ) |
| | | data.add("*****************************") |
| | | } |
| | | |
| | | CardOperationType.SUPPLEMENT -> { |
| | | // 返还打印内容 |
| | | data.add("*****************************") |
| | | data.add(" 返还凭证") |
| | | data.add("*****************************") |
| | | |
| | | // 添加用户名(优先从ClientInfo中获取,如果没有再从CardInfo中获取) |
| | | val userName = getUserName() |
| | | if (!userName.isNullOrEmpty()) { |
| | | 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)} 元") |
| | | |
| | | |
| | | 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("*****************************") |
| | | |
| | | // 添加用户名(优先从ClientInfo中获取,如果没有再从CardInfo中获取) |
| | | val userName = getUserName() |
| | | if (!userName.isNullOrEmpty()) { |
| | | 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)} 元") |
| | | |
| | | |
| | | 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("*****************************") |
| | | |
| | | // 添加用户名(优先从ClientInfo中获取,如果没有再从CardInfo中获取) |
| | | val userName = getUserName() |
| | | if (!userName.isNullOrEmpty()) { |
| | | 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 (cardFee > 0) { |
| | | data.add("工本费:" + cardFee + "元") |
| | | } |
| | | |
| | | // 添加卡内余额(开卡后的余额) |
| | | data.add("卡内余额:${MornyUtil.changeF2Y(userCard.balance)} 元") |
| | | |
| | | // 添加订单号 |
| | | 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("*****************************") |
| | | |
| | | // 添加用户名(优先从ClientInfo中获取,如果没有再从CardInfo中获取) |
| | | val userName = getUserName() |
| | | if (!userName.isNullOrEmpty()) { |
| | | data.add("用户姓名:$userName") |
| | | } |
| | | |
| | | val cardAddress = cardNumber ?: cardAddr |
| | | if (!cardAddress.isNullOrEmpty()) { |
| | | data.add("卡 地 址:$cardAddress") |
| | | } |
| | | |
| | | data.add("操作类型:${operationType?.description ?: "未知操作"}") |
| | | |
| | | 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() |
| | | // 可以添加Toast提示用户打印失败 |
| | | runOnUiThread { |
| | | com.dayu.baselibrary.utils.ToastUtil.show("打印失败:${e.message}") |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |