冲正
diff --git a/app/src/main/java/com/supwisdom/activities/SPApplication.kt b/app/src/main/java/com/supwisdom/activities/SPApplication.kt
index 61e704d..781fd44 100644
--- a/app/src/main/java/com/supwisdom/activities/SPApplication.kt
+++ b/app/src/main/java/com/supwisdom/activities/SPApplication.kt
@@ -5,7 +5,6 @@
import android.support.multidex.MultiDex
import android.support.multidex.MultiDexApplication
import com.supwisdom.db.Pos
-import com.supwisdom.service.BackgroundTaskService
import com.supwisdom.utils.CommonUtil
import com.supwisdom.utils.PublicDef
@@ -60,11 +59,11 @@
private fun startService() {
if (!CommonUtil.isServiceWork(this, PublicDef.BG_SERVICE_NAME)) {
- startService(Intent(this, BackgroundTaskService::class.java))
+ startService(Intent(this, ServiceDemo::class.java))
}
}
fun stopService() {
- stopService(Intent(this, BackgroundTaskService::class.java))
+ stopService(Intent(this, ServiceDemo::class.java))
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/ServiceDemo.kt b/app/src/main/java/com/supwisdom/activities/ServiceDemo.kt
index c0bc6b1..90d1564 100644
--- a/app/src/main/java/com/supwisdom/activities/ServiceDemo.kt
+++ b/app/src/main/java/com/supwisdom/activities/ServiceDemo.kt
@@ -2,14 +2,81 @@
import android.app.Service
import android.content.Intent
+import android.os.Binder
import android.os.IBinder
+import com.supwisdom.service.BackgroundTaskService
+import com.supwisdom.utils.CommonUtil
/**
** create by zzq on 2019/7/23
** @desc
**/
class ServiceDemo : Service() {
+ private var guardThread: Thread? = null
+ private var bind: ServiceBind? = null
+ private var bgTask: BackgroundTaskService? = null
+ private val pos = SPApplication.getInstance().getPos()
+ @Volatile
+ private var isExist = false
+
+ override fun onCreate() {
+ super.onCreate()
+ }
+
+ override fun onDestroy() {
+ closeThread()
+ super.onDestroy()
+ }
+
override fun onBind(intent: Intent): IBinder? {
- return null
+ if (bind == null) {
+ bind = ServiceBind()
+ }
+ return bind
+ }
+
+ override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
+ createThread()
+ return super.onStartCommand(intent, flags, startId)
+ }
+
+ private fun createThread() {
+ isExist = false
+ if (bgTask == null) {
+ bgTask = BackgroundTaskService()
+ }
+ if (guardThread == null) {
+ guardThread = GuardThread()
+ guardThread!!.start()
+ }
+ }
+
+ private fun closeThread() {
+ bgTask?.interrupt()
+ bgTask = null
+ isExist = true
+ guardThread?.interrupt()
+ guardThread = null
+ }
+
+ private inner class GuardThread : Thread() {
+ override fun run() {
+ CommonUtil.doSleep(60 * 1000)
+ while (!isExist) {
+ val hasInit = pos.getConfigPara()?.initOK ?: false
+ if (hasInit) {
+ break
+ }
+ CommonUtil.doSleep(1000)
+ }
+ if (!isExist) {
+ bgTask!!.start()
+ }
+ }
+ }
+
+ inner class ServiceBind : Binder() {
+ val serviceDemo: ServiceDemo
+ get() = this@ServiceDemo
}
}
\ No newline at end of file
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 9f700d0..64f34f5 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
@@ -5,10 +5,7 @@
import com.supwisdom.activities.SPApplication
import com.supwisdom.activities.consume.IConsumeView
import com.supwisdom.activities.consume.bean.*
-import com.supwisdom.entity.PayStatus
-import com.supwisdom.entity.ReversalFlag
-import com.supwisdom.entity.TransdtlOfflineRecord
-import com.supwisdom.entity.TransdtlOnlineRecord
+import com.supwisdom.entity.*
import com.supwisdom.epaycard.Cardlib
import com.supwisdom.exception.CardNotFoundError
import com.supwisdom.exception.CardPayCancelFailError
@@ -69,7 +66,9 @@
private inner class CardPayRunnable : Runnable {
private lateinit var onlRecord: TransdtlOnlineRecord
+ private lateinit var onlRvsRecord: TransdtlOnlineRecord
private lateinit var offRecord: TransdtlOfflineRecord
+ private lateinit var offRvsRecord: TransdtlOfflineRecord
private var oldcardphyid: String? = null
private var onlineBalance = false
private var curLinkStatus = false
@@ -197,7 +196,113 @@
}
private fun doReverse() {
- throw CardPayCancelFailError("暂不支持")
+ val list = pos.getTransdtlUnion(DateUtil.getNowDateNoFormat(), 0, 0, 1)
+ if (list.isEmpty()) {
+ throw CardPayCancelFailError("未找到消费记录")
+ }
+ if (list[0].payway == "offcard") {
+ doOfflineReverse(list[0])
+ } else {
+ doOnlineReverse(list[0])
+ }
+ }
+
+ private fun doOnlineReverse(unionRecord: TransdtlUnionRecord) {
+ val record = pos.getTransdtlOnlineLast() ?: throw CardPayCancelFailError("未找到联机记录")
+ checkOnlineReverseVaild(unionRecord, record)
+ saveTransdtlOnlineReverse(record)
+ showRvsSucInfo(
+ onlRvsRecord.payamt,
+ onlRvsRecord.username!!,
+ onlRvsRecord.transdate + onlRvsRecord.transtime
+ )
+ asyncUpload(onlRvsRecord)
+ }
+
+ private fun doOfflineReverse(unionRecord: TransdtlUnionRecord) {
+ val record = pos.getTransdtlOfflineLast() ?: throw CardPayCancelFailError("未找到离线记录")
+ checkOfflineReverseVaild(unionRecord, record)
+ saveTransdtlOfflineReverse(record)
+ showRvsSucInfo(offRvsRecord.payamt, offRvsRecord.cardno!!, offRvsRecord.transdate + onlRvsRecord.transtime)
+ asyncUpload(offRvsRecord)
+ }
+
+ private fun saveTransdtlOfflineReverse(record: TransdtlOfflineRecord) {
+ offRvsRecord = record.clone()
+ offRvsRecord.devseqno += 1
+ offRvsRecord.transdate = DateUtil.getNowDateNoFormat()
+ offRvsRecord.transtime = DateUtil.getNowTimeNoFormat()
+ offRvsRecord.reversalflag = ReversalFlag.MANUAL
+ offRvsRecord.reversalseqno = record.devseqno
+ offRvsRecord.reversaltransdate = record.transdate
+ offRvsRecord.reversaltranstime = record.transtime
+ offRvsRecord.upflag = 0
+ if (!pos.saveTransdtlOffline(offRvsRecord)) {
+ throw CardPayCancelFailError("保存流水失败")
+ }
+ }
+
+ private fun saveTransdtlOnlineReverse(record: TransdtlOnlineRecord) {
+ onlRvsRecord = record.clone()
+ onlRvsRecord.devseqno += 1
+ onlRvsRecord.transdate = DateUtil.getNowDateNoFormat()
+ onlRvsRecord.transtime = DateUtil.getNowTimeNoFormat()
+ onlRvsRecord.reversalflag = ReversalFlag.MANUAL
+ onlRvsRecord.reversalbillno = record.billno
+ onlRvsRecord.upflag = 0
+ if (!pos.saveTransdtlOnline(onlRvsRecord)) {
+ throw CardPayCancelFailError("保存流水失败")
+ }
+ }
+
+ private fun checkOnlineReverseVaild(unionRecord: TransdtlUnionRecord, record: TransdtlOnlineRecord) {
+ if (record.cardphyid != cardBean.cardphyid) {
+ throw CardPayCancelFailError("该卡不是最后消费")
+ }
+ if (unionRecord.transdate != record.transdate ||
+ unionRecord.transtime != record.transtime
+ ) {
+ throw CardPayCancelFailError("联机记录时间异常")
+ }
+ if (record.reversalflag == ReversalFlag.AUTO
+ ) {
+ throw CardPayCancelFailError("已撤销")
+ }
+ if (record.reversalflag == ReversalFlag.MANUAL) {
+ throw CardPayCancelFailError("已冲正")
+ }
+ if (record.status != PayStatus.SUC) {
+ throw CardPayCancelFailError("消费失败不能冲正")
+ }
+ val t1 = DateUtil.dateFormatConvertToLong(record.transdate + record.transtime)
+ val t2 = System.currentTimeMillis()
+ if (t2 - t1 > PublicDef.REVERSE_MS_GAP) {
+ throw CardPayCancelFailError("消费已过期")
+ }
+ }
+
+ private fun checkOfflineReverseVaild(unionRecord: TransdtlUnionRecord, record: TransdtlOfflineRecord) {
+ if (record.cardphyid != cardBean.cardphyid) {
+ throw CardPayCancelFailError("该卡不是最后消费")
+ }
+ if (unionRecord.transdate != record.transdate ||
+ unionRecord.transtime != record.transtime
+ ) {
+ throw CardPayCancelFailError("离线记录时间异常")
+ }
+ if (record.reversalflag == ReversalFlag.MANUAL ||
+ record.reversalflag == ReversalFlag.AUTO
+ ) {
+ throw CardPayCancelFailError("已冲正")
+ }
+ if (record.status != PayStatus.SUC) {
+ throw CardPayCancelFailError("消费失败不能冲正")
+ }
+ val t1 = DateUtil.dateFormatConvertToLong(record.transdate + record.transtime)
+ val t2 = System.currentTimeMillis()
+ if (t2 - t1 > PublicDef.REVERSE_MS_GAP) {
+ throw CardPayCancelFailError("消费已过期")
+ }
}
private fun doOnlineConsume(): Boolean {
@@ -210,7 +315,7 @@
resp = consumeApi.payConfirm(onlRecord)
result = parseConfirmResult(resp)
if (result) {
- showOnlSucInfo()
+ showRvsSucInfo(onlRecord.payamt, onlRecord.username!!, onlRecord.transdate + onlRecord.transtime)
}
updateTransdtlOnline(result)
return result
@@ -286,7 +391,7 @@
initTransdtlOffline()
checkCardValid()
updateTransdtlOffline(true)
- showOffSucInfo()
+ showSucInfo(offRecord.payamt, offRecord.cardno!!, offRecord.transdate + offRecord.transtime)
}
private fun checkCardValid() {
@@ -354,18 +459,30 @@
asyncUpload(offRecord)
}
- private fun showOffSucInfo() {
+ private fun showSucInfo(amount: Int, username: String, datetime: String) {
val info = CardUserInfoBean(PublicDef.SUCCESS, "消费成功")
info.showtime = pos.getSysPara()!!.sucShowtime
- info.amount = offRecord.payamt
- info.payamt = offRecord.payamt
- info.username = offRecord.cardno
- info.datetime = offRecord.transdate + offRecord.transtime
+ info.amount = amount
+ info.payamt = amount
+ info.username = username
+ info.datetime = datetime
info.payway = "card"
info.status = PayStatus.SUC
sendMsg(PublicDef.MSG_CARD_PAY_SUC, info)
}
+ private fun showRvsSucInfo(amount: Int, username: String, datetime: String) {
+ val info = CardUserInfoBean(PublicDef.SUCCESS, "消费成功")
+ info.showtime = pos.getSysPara()!!.sucShowtime
+ info.amount = amount
+ info.payamt = amount
+ info.username = username
+ info.datetime = datetime
+ info.payway = "card"
+ info.status = PayStatus.SUC
+ sendMsg(PublicDef.MSG_CARD_REVERSE_SUC, info)
+ }
+
private fun asyncUpload(dtl: TransdtlOfflineRecord) {
ThreadPool.getShortPool().execute(Runnable {
try {
@@ -378,6 +495,18 @@
})
}
+ private fun asyncUpload(dtl: TransdtlOnlineRecord) {
+ ThreadPool.getShortPool().execute(Runnable {
+ try {
+ EpayApiImpl().uploadTransdtl(dtl)
+ dtl.upflag = 1
+ pos.updateTransdtlOnline(dtl)
+ } catch (ex: java.lang.Exception) {
+ ex.printStackTrace()
+ }
+ })
+ }
+
private fun doClear() {
oldcardphyid = null
onlineBalance = false
@@ -416,18 +545,6 @@
}
}
- private fun showOnlSucInfo() {
- val info = CardUserInfoBean(PublicDef.SUCCESS, "消费成功")
- info.showtime = pos.getSysPara()!!.sucShowtime
- info.amount = onlRecord.payamt
- info.payamt = onlRecord.payamt
- info.username = onlRecord.username
- info.datetime = onlRecord.transdate + onlRecord.transtime
- info.payway = onlRecord.transtype
- info.status = PayStatus.SUC
- sendMsg(PublicDef.MSG_CARD_PAY_SUC, info)
- }
-
private fun getErrorInfo(errmsg: String?): CardUserInfoBean {
val info = CardUserInfoBean(PublicDef.ERROR, errmsg ?: "null")
info.showtime = pos.getSysPara()!!.failShowtime
diff --git a/app/src/main/java/com/supwisdom/db/Pos.kt b/app/src/main/java/com/supwisdom/db/Pos.kt
index 6159775..d545378 100644
--- a/app/src/main/java/com/supwisdom/db/Pos.kt
+++ b/app/src/main/java/com/supwisdom/db/Pos.kt
@@ -161,6 +161,15 @@
return onlMaxSeqno
}
+ fun getTransdtlOnlineLast(): TransdtlOnlineRecord? {
+ try {
+ transdtlOnlineDao.getLock().lock()
+ return transdtlOnlineDao.getLast()
+ } finally {
+ transdtlOnlineDao.getLock().unlock()
+ }
+ }
+
fun getTransdtlOnlineUnconfirm(): List<TransdtlOnlineRecord> {
try {
transdtlOnlineDao.getLock().lock()
@@ -222,6 +231,15 @@
}
}
+ fun getTransdtlOfflineLast(): TransdtlOfflineRecord? {
+ try {
+ transdtlOfflineDao.getLock().lock()
+ return transdtlOfflineDao.getLast()
+ } finally {
+ transdtlOfflineDao.getLock().unlock()
+ }
+ }
+
fun saveTransdtlOffline(record: TransdtlOfflineRecord): Boolean {
try {
transdtlOfflineDao.getLock().lock()
diff --git a/app/src/main/java/com/supwisdom/db/TransdtlOfflineDao.kt b/app/src/main/java/com/supwisdom/db/TransdtlOfflineDao.kt
index 20bcec1..10d2238 100644
--- a/app/src/main/java/com/supwisdom/db/TransdtlOfflineDao.kt
+++ b/app/src/main/java/com/supwisdom/db/TransdtlOfflineDao.kt
@@ -101,10 +101,25 @@
}
}
+ fun getLast(): TransdtlOfflineRecord? {
+ val db = dbHelper.readableDatabase
+ var cursor: Cursor? = null
+ val orderBy = BeanPropEnum.TransdtlOffline.devseqno.toString() + " desc"
+ try {
+ cursor = db.query(TABLE, null, null, null, null, null, orderBy, "1")
+ if (cursor != null && cursor.moveToNext()) {
+ return getRecord(cursor)
+ }
+ return null
+ } finally {
+ cursor?.close()
+ }
+ }
+
fun clear(date: String): Boolean {
val db = dbHelper.writableDatabase
val selection =
- BeanPropEnum.TransdtlOffline.upflag.toString() + "=?" + BeanPropEnum.TransdtlOffline.transdate + "<?"
+ BeanPropEnum.TransdtlOffline.upflag.toString() + "=? and " + BeanPropEnum.TransdtlOffline.transdate + "<?"
try {
db.beginTransaction()
if (db.delete(TABLE, selection, arrayOf("1", date)) < 0) {
diff --git a/app/src/main/java/com/supwisdom/db/TransdtlOnlineDao.kt b/app/src/main/java/com/supwisdom/db/TransdtlOnlineDao.kt
index 9d3d760..d4f2903 100644
--- a/app/src/main/java/com/supwisdom/db/TransdtlOnlineDao.kt
+++ b/app/src/main/java/com/supwisdom/db/TransdtlOnlineDao.kt
@@ -72,6 +72,21 @@
}
}
+ fun getLast(): TransdtlOnlineRecord? {
+ val db = dbHelper.readableDatabase
+ var cursor: Cursor? = null
+ val orderBy = BeanPropEnum.TransdtlOnline.devseqno.toString() + " desc"
+ try {
+ cursor = db.query(TABLE, null, null, null, null, null, orderBy, "1")
+ if (cursor != null && cursor.moveToNext()) {
+ return getRecord(cursor)
+ }
+ return null
+ } finally {
+ cursor?.close()
+ }
+ }
+
fun getMaxSeqno(): Int {
val db = dbHelper.readableDatabase
val sql = ("select max(${BeanPropEnum.TransdtlOnline.devseqno}) as seqno from $TABLE")
@@ -104,7 +119,7 @@
fun clear(date: String): Boolean {
val db = dbHelper.writableDatabase
val selection =
- BeanPropEnum.TransdtlOnline.upflag.toString() + "=?" + BeanPropEnum.TransdtlOnline.transdate + "<?"
+ BeanPropEnum.TransdtlOnline.upflag.toString() + "=? and " + BeanPropEnum.TransdtlOnline.transdate + "<?"
try {
db.beginTransaction()
if (db.delete(TABLE, selection, arrayOf("1", date)) < 0) {
diff --git a/app/src/main/java/com/supwisdom/entity/TransdtlOfflineRecord.kt b/app/src/main/java/com/supwisdom/entity/TransdtlOfflineRecord.kt
index ea0e3b4..347d10a 100644
--- a/app/src/main/java/com/supwisdom/entity/TransdtlOfflineRecord.kt
+++ b/app/src/main/java/com/supwisdom/entity/TransdtlOfflineRecord.kt
@@ -1,10 +1,12 @@
package com.supwisdom.entity
+import com.supwisdom.utils.GsonUtil
+
/**
** create by zzq on 2019/7/24
** @desc 离线流水
**/
-class TransdtlOfflineRecord {
+class TransdtlOfflineRecord : Cloneable {
var devphyid: String? = null
var transdate: String? = null
var transtime: String? = null
@@ -20,4 +22,9 @@
var reversaltranstime: String? = null //被冲正流水时间
var status: PayStatus? = null // init,fail,suc
var upflag: Int = 0 // 1已上传
+
+ public override fun clone(): TransdtlOfflineRecord {
+ val tmp = GsonUtil.GsonString(this)
+ return GsonUtil.GsonToBean(tmp, TransdtlOfflineRecord::class.java)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/entity/TransdtlOnlineRecord.kt b/app/src/main/java/com/supwisdom/entity/TransdtlOnlineRecord.kt
index b2b0d6e..5eb7e1a 100644
--- a/app/src/main/java/com/supwisdom/entity/TransdtlOnlineRecord.kt
+++ b/app/src/main/java/com/supwisdom/entity/TransdtlOnlineRecord.kt
@@ -1,10 +1,12 @@
package com.supwisdom.entity
+import com.supwisdom.utils.GsonUtil
+
/**
** create by zzq on 2019/7/24
** @desc 联机流水
**/
-class TransdtlOnlineRecord {
+class TransdtlOnlineRecord : Cloneable {
var devphyid: String? = null
var transdate: String? = null
var transtime: String? = null
@@ -23,4 +25,9 @@
var reversalbillno: String? = null //被冲正交易参考号
var status: PayStatus? = null // init,fail,suc
var upflag: Int = 0 // 1已上传
+
+ public override fun clone(): TransdtlOnlineRecord {
+ val tmp = GsonUtil.GsonString(this)
+ return GsonUtil.GsonToBean(tmp, TransdtlOnlineRecord::class.java)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/service/BackgroundTaskService.kt b/app/src/main/java/com/supwisdom/service/BackgroundTaskService.kt
index 8a7c9f7..8c8d0c5 100644
--- a/app/src/main/java/com/supwisdom/service/BackgroundTaskService.kt
+++ b/app/src/main/java/com/supwisdom/service/BackgroundTaskService.kt
@@ -15,43 +15,30 @@
**/
class BackgroundTaskService : Thread() {
private val pos = SPApplication.getInstance().getPos()
- private val websocketProcess = WebsocketProcess()
- private var websocketHasRun = false
- private var apiInterface: APIInterface? = null
+ private var apiInterface: APIInterface = EpayApiImpl()
private var sysRecord: SysParaRecord? = null
private var transdtlClearDate: String? = null
+ @Volatile
+ private var isExist = false
- fun getWebsocketProcess(): WebsocketProcess {
- return websocketProcess
+ override fun start() {
+ isExist = false
+ super.start()
+ }
+
+ override fun interrupt() {
+ isExist = true
+ super.interrupt()
}
override fun run() {
- var heartgap = 0
- CommonUtil.doSleep(60 * 1000)
- while (true) {
- val hasInit = pos.getConfigPara()?.initOK ?: false
- if (hasInit) {
- break
- }
- CommonUtil.doSleep(1000)
- }
- while (true) {
+ var heartgap: Int
+ while (!isExist) {
//做一卡通心跳和流水上传
heartAndTransdtl()
//清除流水
clearTransdtl()
sysRecord = pos.getSysPara()
-// if (sysRecord != null && sysRecord!!.getSocketSwitch() != 0) {
-// if (!websocketHasRun) {
-// websocketHasRun = true
-// websocketProcess.start()
-// }
-// } else {
-// if (websocketHasRun) {
-// websocketHasRun = false
-// websocketProcess.stop()
-// }
-// }
heartgap = if (sysRecord == null || sysRecord!!.heatBeat < 10 || sysRecord!!.heatBeat > 600) {
60
} else {
@@ -62,11 +49,11 @@
}
private fun heartAndTransdtl() {
- //做一卡通的心跳以及流水上传
+ /**做一卡通的心跳以及流水上传*/
try {
- apiInterface!!.heartBeat()
+ apiInterface.heartBeat()
SPApplication.getInstance().setEpayLinking(true)
-// /*更新通讯jwt*/
+ /**更新通讯jwt*/
refreshJwt()
uploadTransdtl()
} catch (ex: HeartBeatError) {
@@ -77,12 +64,12 @@
private fun uploadTransdtl() {
try {
pos.getTransdtlOfflineUnconfirm().forEach {
- apiInterface!!.uploadTransdtl(it)
+ apiInterface.uploadTransdtl(it)
it.upflag = 1
pos.updateTransdtlOffline(it)
}
pos.getTransdtlOnlineUnconfirm().forEach {
- apiInterface!!.uploadTransdtl(it)
+ apiInterface.uploadTransdtl(it)
it.upflag = 1
pos.updateTransdtlOnline(it)
}
diff --git a/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt b/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
index a7fb734..5c05581 100644
--- a/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
+++ b/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
@@ -159,28 +159,13 @@
@Throws(TransdtlUploadError::class)
override fun uploadTransdtl(record: TransdtlOnlineRecord) {
- var reversalflag = "false"
- if (record.reversalflag == ReversalFlag.AUTO ||
- record.reversalflag == ReversalFlag.MANUAL
- ) {
- reversalflag = "true"
- }
-
val params = WebParams()
params.setParameter("devphyid", record.devphyid)
.setParameter("transdate", record.transdate)
.setParameter("transtime", record.transtime)
.setParameter("termseqno", record.devseqno)
- .setParameter("cardno", record.cardno)
- .setParameter("cardphyid", record.cardphyid)
- .setParameter("qrcode", record.qrcode)
- .setParameter("transtype", record.transtype)
- .setParameter("amount", record.payamt)
- .setParameter("extraamt", record.extraamt)
- .setParameter("managefeetype", record.managefeetype)
- .setParameter("managefeetype", record.managefeetype)
- .setParameter("billno", record.billno)
- .setParameter("reversalflag", reversalflag)
+ .setParameter("reversalbillno", record.reversalbillno)
+ .setParameter("reversalflag", record.reversalflag.toString())
.setParameter("status", record.status.toString())
val resp = YktSession.getInstance().sendYktRequestPost("/api/pos/paycancel", "", params)
?: throw TransdtlUploadError("请求超时")