diff --git a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
index 01245b0..8de47f0 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
@@ -49,7 +49,6 @@
     private lateinit var vLastResult: TextView
     private lateinit var vLastPayamt: TextView
     private lateinit var vLastPayway: TextView
-    private lateinit var vLastPayday: TextView
     private lateinit var vLastPaytime: TextView
     private lateinit var vLastPayFailreason: TextView
     private lateinit var vLastPayFailll: LinearLayout
@@ -116,6 +115,7 @@
                 }
             }
         })
+        presenter.loadLastTransdtl()
     }
 
     private fun initView() {
@@ -130,7 +130,6 @@
         vLastResult = this.findViewById<TextView>(R.id.tv_last_pay_result)
         vLastPayamt = this.findViewById<TextView>(R.id.consume_last_payamt)
         vLastPayway = this.findViewById<TextView>(R.id.tv_last_payway)
-        vLastPayday = this.findViewById<TextView>(R.id.tv_last_payday)
         vLastPaytime = this.findViewById<TextView>(R.id.tv_last_paytime)
         vLastPayFailreason = this.findViewById<TextView>(R.id.tv_last_failreason)
         vLastPayFailll = this.findViewById<LinearLayout>(R.id.ll_consume_last_failreason)
@@ -337,6 +336,7 @@
         }
         AuxScreenController.getInstance().refreshContent(auxList)
         SoundUtil.playMusic(applicationContext, R.raw.consume_suc)
+        refreshRecentDtl(info)
     }
 
     override fun showConsumeHint(hint: String) {
@@ -349,6 +349,7 @@
         dialogPurchase!!.showPayFail(info)
         SoundUtil.playMusic(applicationContext, R.raw.consume_fail)
         AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("消费失败", "原因:", info.retmsg))
+        refreshRecentDtl(info)
     }
 
     override fun showReverseSuc(info: CardUserInfoBean) {
@@ -356,23 +357,25 @@
         AuxScreenController.getInstance()
             .refreshContent(Arrays.asList<String>(info.retmsg, CommonUtil.showFormatAmount("金额", info.payamt)))
         SoundUtil.playMusic(applicationContext, R.raw.reversal_suc)
+        refreshRecentDtl(info)
     }
 
     override fun showReverseFail(info: CardUserInfoBean) {
         dialogPurchase!!.showReverseFail(info)
         SoundUtil.playMusic(applicationContext, R.raw.reversal_fail)
         AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("冲正失败", "原因:", info.retmsg))
+        refreshRecentDtl(info)
     }
 
-    private var lastShowRecentDatetime: String? = null
+    private var lastShowRecentTime: String? = null
     private fun refreshRecentDtl(info: CardUserInfoBean?) {
         if (info != null) {
             lastPayInfo = info
             //已显示过不在显示
-            if (lastShowRecentDatetime == info.datetime) {
+            if (lastShowRecentTime == info.transtime) {
                 return
             }
-            lastShowRecentDatetime = info.datetime
+            lastShowRecentTime = info.transtime
 
             if (info.status == PayStatus.SUC) {
                 when {
@@ -402,13 +405,9 @@
                 "市民卡"
             }
             val sb = StringBuilder()
-            sb.append(info.datetime!!.substring(0, 4)).append("/")
-                .append(info.datetime!!.substring(4, 6)).append("/")
-                .append(info.datetime!!.substring(6, 8))
-            vLastPayday.text = sb.toString()
-            sb.setLength(0)
-            sb.append(info.datetime!!.substring(8, 10)).append(":")
-                .append(info.datetime!!.substring(10, 12)).append(":").append(info.datetime!!.substring(12))
+            sb.append(info.transtime?.substring(0, 2)).append(":")
+                .append(info.transtime?.substring(2, 4)).append(":")
+                .append(info.transtime?.substring(4))
             vLastPaytime.text = sb.toString()
             resetPayShowCounter(10 * 1000)
         }
@@ -483,7 +482,6 @@
         vLastResult.text = null
         vLastPayamt.text = null
         vLastPayway.text = null
-        vLastPayday.text = null
         vLastPaytime.text = null
         vLastPayFailreason.text = null
     }
@@ -512,8 +510,10 @@
     override fun showRecentDtl(record: TransdtlUnionRecord?) {
         if (record != null) {
             val info = CardUserInfoBean(PublicDef.SUCCESS, "")
-            info.datetime = record.transdate + record.transtime
+            info.transdate = record.transdate
+            info.transtime = record.transtime
             info.username = record.username
+            info.cardno = record.cardno
             info.payamt = record.payamt
             info.status = record.status
             info.payway = record.payway
diff --git a/app/src/main/java/com/supwisdom/activities/consume/ConsumePresenter.kt b/app/src/main/java/com/supwisdom/activities/consume/ConsumePresenter.kt
index 268a67f..4d48b61 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/ConsumePresenter.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/ConsumePresenter.kt
@@ -3,9 +3,11 @@
 import android.os.Handler
 import android.os.Looper
 import android.os.Message
+import com.supwisdom.activities.SPApplication
 import com.supwisdom.activities.consume.bean.CardUserInfoBean
 import com.supwisdom.activities.consume.mode.CardPayService
 import com.supwisdom.activities.consume.mode.CodePayService
+import com.supwisdom.utils.DateUtil
 import com.supwisdom.utils.LogUtil
 import com.supwisdom.utils.PublicDef
 import com.supwisdom.utils.ThreadPool
@@ -16,6 +18,7 @@
  **/
 class ConsumePresenter constructor(iConsumeView: IConsumeView) {
     private val TAG = "ConsumePresenter"
+    private val pos = SPApplication.getInstance().getPos()
     private val iConsumeView = iConsumeView
     private val codePayRunnable = CodePayRunnable()
     private lateinit var handler: Handler
@@ -94,6 +97,17 @@
         codePayService.interruptPay()
     }
 
+    fun loadLastTransdtl() {
+        ThreadPool.getShortPool().execute(Runnable {
+            val list = pos.getTransdtlUnion(DateUtil.getNowDateNoFormat(), 0, 0, 1)
+            if (list.isNotEmpty()) {
+                iConsumeView.getActivity().runOnUiThread {
+                    iConsumeView.showRecentDtl(list[0])
+                }
+            }
+        })
+    }
+
     private inner class CodePayRunnable : Runnable {
         override fun run() {
             codePayService.pay(code!!, amount)
diff --git a/app/src/main/java/com/supwisdom/activities/consume/bean/CardUserInfoBean.kt b/app/src/main/java/com/supwisdom/activities/consume/bean/CardUserInfoBean.kt
index 499cdd3..047d57b 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/bean/CardUserInfoBean.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/bean/CardUserInfoBean.kt
@@ -18,7 +18,8 @@
     var payamt: Int = 0
     var status: PayStatus? = null
     var reversalFlag: ReversalFlag? = null
-    var datetime: String? = null
+    var transdate: String? = null
+    var transtime: String? = null
     var payway: String? = null //card,code
 }
 
diff --git a/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt b/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt
index ffa329b..e1e2c0d 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt
@@ -112,14 +112,14 @@
                             try {
                                 doReverse()
                             } catch (ex: CardPayCancelFailError) {
-                                sendMsg(PublicDef.MSG_CARD_REVERSE_FAIL, getErrorInfo(ex.message))
+                                sendMsg(PublicDef.MSG_CARD_REVERSE_FAIL, getRvsErrorInfo(ex.message))
                             } catch (ex: Exception) {
                                 ex.printStackTrace()
                                 LogUtil.d(
                                     TAG, "card pay cancel exception: cardphyid=$cardphyid"
                                             + "exception=${CommonUtil.getExceptionStack(ex)}"
                                 )
-                                sendMsg(PublicDef.MSG_CARD_REVERSE_FAIL, getErrorInfo("程序异常"))
+                                sendMsg(PublicDef.MSG_CARD_REVERSE_FAIL, getRvsErrorInfo("程序异常"))
                             }
                             clickStat = ClickStat.INIT
                         }
@@ -225,12 +225,7 @@
             val record = pos.getTransdtlOnlineLast() ?: throw CardPayCancelFailError("未找到联机记录")
             checkOnlineReverseVaild(unionRecord, record)
             saveTransdtlOnlineReverse(record)
-            showRvsSucInfo(
-                onlRvsRecord.payamt,
-                onlRvsRecord.username,
-                onlRvsRecord.cardno,
-                onlRvsRecord.transdate + onlRvsRecord.transtime
-            )
+            showRvsOnlSucInfo()
             asyncUpload(onlRvsRecord)
         }
 
@@ -238,12 +233,7 @@
             val record = pos.getTransdtlOfflineLast() ?: throw CardPayCancelFailError("未找到离线记录")
             checkOfflineReverseVaild(unionRecord, record)
             saveTransdtlOfflineReverse(record)
-            showRvsSucInfo(
-                offRvsRecord.payamt,
-                null,
-                offRvsRecord.cardno,
-                offRvsRecord.transdate + onlRvsRecord.transtime
-            )
+            showRvsOffSucInfo()
             asyncUpload(offRvsRecord)
         }
 
@@ -334,15 +324,10 @@
             }
             resp = consumeApi.payConfirm(onlRecord)
             result = parseConfirmResult(resp)
-            if (result) {
-                showRvsSucInfo(
-                    onlRecord.payamt,
-                    onlRecord.username,
-                    onlRecord.cardno,
-                    onlRecord.transdate + onlRecord.transtime
-                )
-            }
             updateTransdtlOnline(result)
+            if (result) {
+                showOnlSucInfo()
+            }
             return result
         }
 
@@ -414,7 +399,7 @@
             initTransdtlOffline()
             checkCardValid()
             updateTransdtlOffline(true)
-            showSucInfo(offRecord.payamt, null, offRecord.cardno, offRecord.transdate + offRecord.transtime)
+            showOffSucInfo()
         }
 
         private fun checkCardValid() {
@@ -482,29 +467,61 @@
             asyncUpload(offRecord)
         }
 
-        private fun showSucInfo(amount: Int, username: String?, cardno: String?, datetime: String) {
+        private fun showOnlSucInfo() {
             val info = CardUserInfoBean(PublicDef.SUCCESS, "消费成功")
             info.showtime = pos.getSysPara()!!.sucShowtime
-            info.amount = amount
-            info.payamt = amount
-            info.username = username
-            info.cardno = cardno
-            info.datetime = datetime
-            info.payway = "card"
-            info.status = PayStatus.SUC
+            info.amount = onlRecord.payamt
+            info.payamt = onlRecord.payamt
+            info.username = onlRecord.username
+            info.cardno = onlRecord.cardno
+            info.transdate = onlRecord.transdate
+            info.transtime = onlRecord.transtime
+            info.payway = onlRecord.transtype
+            info.status = onlRecord.status
+            info.reversalFlag = onlRecord.reversalflag
             sendMsg(PublicDef.MSG_CARD_PAY_SUC, info)
         }
 
-        private fun showRvsSucInfo(amount: Int, username: String?, cardno: String?, datetime: String) {
+        private fun showOffSucInfo() {
             val info = CardUserInfoBean(PublicDef.SUCCESS, "消费成功")
             info.showtime = pos.getSysPara()!!.sucShowtime
-            info.amount = amount
-            info.payamt = amount
-            info.username = username
-            info.cardno = cardno
-            info.datetime = datetime
+            info.amount = offRecord.payamt
+            info.payamt = offRecord.payamt
+            info.cardno = offRecord.cardno
+            info.transdate = offRecord.transdate
+            info.transtime = offRecord.transtime
             info.payway = "card"
-            info.status = PayStatus.SUC
+            info.status = offRecord.status
+            info.reversalFlag = offRecord.reversalflag
+            sendMsg(PublicDef.MSG_CARD_PAY_SUC, info)
+        }
+
+        private fun showRvsOnlSucInfo() {
+            val info = CardUserInfoBean(PublicDef.SUCCESS, "消费成功")
+            info.showtime = pos.getSysPara()!!.sucShowtime
+            info.amount = onlRvsRecord.payamt
+            info.payamt = onlRvsRecord.payamt
+            info.username = onlRvsRecord.username
+            info.cardno = onlRvsRecord.cardno
+            info.transdate = onlRvsRecord.transdate
+            info.transtime = onlRvsRecord.transtime
+            info.payway = onlRvsRecord.transtype
+            info.status = onlRvsRecord.status
+            info.reversalFlag = onlRvsRecord.reversalflag
+            sendMsg(PublicDef.MSG_CARD_REVERSE_SUC, info)
+        }
+
+        private fun showRvsOffSucInfo() {
+            val info = CardUserInfoBean(PublicDef.SUCCESS, "消费成功")
+            info.showtime = pos.getSysPara()!!.sucShowtime
+            info.amount = offRvsRecord.payamt
+            info.payamt = offRvsRecord.payamt
+            info.cardno = offRvsRecord.cardno
+            info.transdate = offRvsRecord.transdate
+            info.transtime = offRvsRecord.transtime
+            info.payway = "card"
+            info.status = offRvsRecord.status
+            info.reversalFlag = offRvsRecord.reversalflag
             sendMsg(PublicDef.MSG_CARD_REVERSE_SUC, info)
         }
 
@@ -574,6 +591,24 @@
             val info = CardUserInfoBean(PublicDef.ERROR, errmsg ?: "null")
             info.showtime = pos.getSysPara()!!.failShowtime
             info.status = PayStatus.FAIL
+            info.amount = amount
+            info.payamt = amount
+            info.payway = "card"
+            info.transdate = DateUtil.getNowDateNoFormat()
+            info.transtime = DateUtil.getNowTimeNoFormat()
+            return info
+        }
+
+        private fun getRvsErrorInfo(errmsg: String?): CardUserInfoBean {
+            val info = CardUserInfoBean(PublicDef.ERROR, errmsg ?: "null")
+            info.showtime = pos.getSysPara()!!.failShowtime
+            info.status = PayStatus.FAIL
+            info.amount = amount
+            info.payamt = amount
+            info.payway = "card"
+            info.transdate = DateUtil.getNowDateNoFormat()
+            info.transtime = DateUtil.getNowTimeNoFormat()
+            info.reversalFlag = ReversalFlag.MANUAL
             return info
         }
 
diff --git a/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt b/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt
index e301655..116a82b 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt
@@ -32,12 +32,15 @@
      */
     @Volatile
     private var interruptedPay: Boolean = false
+    @Volatile
+    private var amount = 0
 
     fun interruptPay() {
         interruptedPay = true
     }
 
     fun pay(code: String, amount: Int) {
+        this.amount = amount
         interruptedPay = false
         try {
             initTransdtlOnline(code, amount)
@@ -171,9 +174,12 @@
         info.amount = codeRecord.payamt
         info.payamt = codeRecord.payamt
         info.username = codeRecord.username
-        info.datetime = codeRecord.transdate + codeRecord.transtime
+        info.cardno = codeRecord.cardno
+        info.transdate = codeRecord.transdate
+        info.transtime = codeRecord.transtime
         info.payway = codeRecord.transtype
-        info.status = PayStatus.SUC
+        info.status = codeRecord.status
+        info.reversalFlag = codeRecord.reversalflag
         sendMsg(PublicDef.MSG_CARD_PAY_SUC, info)
     }
 
@@ -181,6 +187,11 @@
         val info = CardUserInfoBean(PublicDef.ERROR, errmsg ?: "null")
         info.showtime = pos.getSysPara()!!.failShowtime
         info.status = PayStatus.FAIL
+        info.amount = amount
+        info.payamt = amount
+        info.payway = "code"
+        info.transdate = DateUtil.getNowDateNoFormat()
+        info.transtime = DateUtil.getNowTimeNoFormat()
         return info
     }
 
diff --git a/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt b/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt
index 9dcdb3e..a89d80e 100644
--- a/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt
+++ b/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt
@@ -97,6 +97,7 @@
 
     enum class TransdtlUnion {
         username,
+        cardno,
         transdate,
         transtime,
         devseqno,
diff --git a/app/src/main/java/com/supwisdom/db/TransdtlUnionDao.kt b/app/src/main/java/com/supwisdom/db/TransdtlUnionDao.kt
index 78bae0c..973dd8d 100644
--- a/app/src/main/java/com/supwisdom/db/TransdtlUnionDao.kt
+++ b/app/src/main/java/com/supwisdom/db/TransdtlUnionDao.kt
@@ -24,7 +24,8 @@
             .append(BeanPropEnum.TransdtlOffline.reversalflag).append(",")
             .append(BeanPropEnum.TransdtlOffline.payamt).append(",")
             .append(BeanPropEnum.TransdtlOffline.status).append(",")
-            .append(BeanPropEnum.TransdtlOffline.cardno).append(" as ").append(BeanPropEnum.TransdtlUnion.username)
+            .append(" 'null' as ").append(BeanPropEnum.TransdtlUnion.username).append(",")
+            .append(BeanPropEnum.TransdtlOffline.cardno).append(",")
             .append(",")
             .append(BeanPropEnum.TransdtlOffline.upflag)
             .append(" from ").append(DBTransdtlHelper.TABLE_NAME_DTL_OFFLINE)
@@ -38,6 +39,7 @@
             .append(BeanPropEnum.TransdtlOnline.payamt).append(",")
             .append(BeanPropEnum.TransdtlOnline.status).append(",")
             .append(BeanPropEnum.TransdtlOnline.username).append(",")
+            .append(BeanPropEnum.TransdtlOnline.cardno).append(",")
             .append(BeanPropEnum.TransdtlOnline.upflag)
             .append(" from ").append(DBTransdtlHelper.TABLE_NAME_DTL_ONLINE)
     }
@@ -97,6 +99,10 @@
         record.devseqno = cursor.getInt(cursor.getColumnIndex(BeanPropEnum.TransdtlUnion.devseqno.toString()))
         record.payway = cursor.getString(cursor.getColumnIndex(BeanPropEnum.TransdtlUnion.payway.toString()))
         record.username = cursor.getString(cursor.getColumnIndex(BeanPropEnum.TransdtlUnion.username.toString()))
+        if (record.username == "null") {
+            record.username = null
+        }
+        record.cardno = cursor.getString(cursor.getColumnIndex(BeanPropEnum.TransdtlUnion.cardno.toString()))
         var flag = cursor.getString(cursor.getColumnIndex(BeanPropEnum.TransdtlUnion.reversalflag.toString()))
         when (flag) {
             ReversalFlag.NONE.toString() -> record.reversalflag = ReversalFlag.NONE
diff --git a/app/src/main/java/com/supwisdom/entity/TransdtlUnionRecord.kt b/app/src/main/java/com/supwisdom/entity/TransdtlUnionRecord.kt
index bc78c6f..967fbd8 100644
--- a/app/src/main/java/com/supwisdom/entity/TransdtlUnionRecord.kt
+++ b/app/src/main/java/com/supwisdom/entity/TransdtlUnionRecord.kt
@@ -6,6 +6,7 @@
  **/
 class TransdtlUnionRecord {
     var username: String? = null
+    var cardno: String? = null
     var transdate: String? = null
     var transtime: String? = null
     var devseqno: Int = 0
diff --git a/app/src/main/java/com/supwisdom/utils/PublicDef.kt b/app/src/main/java/com/supwisdom/utils/PublicDef.kt
index b67e05b..d55fa9f 100644
--- a/app/src/main/java/com/supwisdom/utils/PublicDef.kt
+++ b/app/src/main/java/com/supwisdom/utils/PublicDef.kt
@@ -31,7 +31,7 @@
     const val MSG_USER_INFO_SHOW = 17
     const val MSG_USER_INFO_CLEAR = 18
     const val MSG_LINK_STATUS = 19
-    const val MSG_CODE_PAYING_CANCEL = 19
+    const val MSG_CODE_PAYING_CANCEL = 20
     /*************************不能重复*****************************/
     /**
      * 卡消费标志(1 byte)
diff --git a/app/src/main/res/layout/activity_consume.xml b/app/src/main/res/layout/activity_consume.xml
index 08a845f..d453add 100644
--- a/app/src/main/res/layout/activity_consume.xml
+++ b/app/src/main/res/layout/activity_consume.xml
@@ -382,31 +382,6 @@
             <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="match_parent"
-                    android:text="支付日期:  "
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/consume_text_size2"/>
-
-            <TextView
-                    android:id="@+id/tv_last_payday"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:maxLines="1"
-                    android:text=""
-                    android:textColor="@color/blue"
-                    android:textSize="@dimen/consume_text_size2"
-                    android:textStyle="bold"/>
-        </LinearLayout>
-
-        <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="horizontal"
-                android:paddingLeft="10dp"
-                android:paddingTop="5dp">
-
-            <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="match_parent"
                     android:text="支付时间:  "
                     android:textColor="@color/black"
                     android:textSize="@dimen/consume_text_size2"/>
