init
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 8f196bc..6308775 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
@@ -138,66 +138,78 @@
vLastPayamtll = this.findViewById<LinearLayout>(R.id.ll_consume_last_payamt)
}
- private fun delValueToEdit() {
- presenter.clickNoPay()
- val str = amountTxt.text.toString()
- val len = str.length
- when {
- len == 0 ||
- len == 1 -> {
- refresh()
- }
- len > 1 -> {
- amountTxt.text = str.substring(0, len - 1)
- showScreenAmount()
- }
- }
+ override fun onStop() {
+ super.onStop()
+ isBackRuning = true
}
- private fun checkAmtToPay() {
- amount = getCurAmount() + addAmount
- if (amount > 0) {
- amountTxt.text = String.format("%.02f", amount / 100.0f)
- presenter.clickToPay(amount)
- showDialogPay()
- } else {
- AuxScreenController.getInstance().refreshContent(Arrays.asList("请先输入金额:", "金额不能为0"))
- }
+ override fun onDestroy() {
+ SoundUtil.releaseMusic()
+ presenter.stop()
+ beepManager!!.close()
+ super.onDestroy()
}
- private fun showDialogPay() {
- dialogPurchase!!.codePaying = false
- dialogPurchase!!.isFixPay = false
- dialogPurchase!!.codePayingNoCancelEnable = false
- dialogPurchase!!.show("请刷卡", CommonUtil.showFormatAmount("金额", amount))
- }
-
- private fun getCurAmount(): Int {
- return try {
- CommonUtil.YuanToFen(java.lang.Double.parseDouble(amountTxt.text.toString().trim { it <= ' ' }))
- } catch (ex: Exception) {
- ex.printStackTrace()
- 0
- }
- }
-
- private fun addValueToEdit(value: Int) {
- var str = amountTxt.text.toString()
- if ("0" == str) {
- str = ""
- }
- //如果已经有小数点,则小数点后面不能超过两位
- if (str.indexOf(".") > 0) {
- if (str.length - str.indexOf(".") <= 2) {
- amountTxt.text = "$str$value"
- }
- } else {
- //限制消费金额<1000
- if (str.length < 3) {
- amountTxt.text = "$str$value"
+ @SuppressLint("SetTextI18n")
+ override fun dispatchKeyEvent(event: KeyEvent): Boolean {
+ if (event.action == KeyEvent.ACTION_DOWN) {
+ val keyCode = event.keyCode
+ when (keyCode) {
+ KeyEvent.KEYCODE_BACK -> {
+ amountTxt.text = "0"
+ presenter.clickNoPay()
+ }
+ KeyEvent.KEYCODE_0,
+ KeyEvent.KEYCODE_1,
+ KeyEvent.KEYCODE_2,
+ KeyEvent.KEYCODE_3,
+ KeyEvent.KEYCODE_4,
+ KeyEvent.KEYCODE_5,
+ KeyEvent.KEYCODE_6,
+ KeyEvent.KEYCODE_7,
+ KeyEvent.KEYCODE_8,
+ KeyEvent.KEYCODE_9 -> {
+ presenter.clickNoPay()
+ addValueToEdit(keyCode - KeyEvent.KEYCODE_0)
+ }
+ KeyEvent.KEYCODE_POUND, KeyEvent.KEYCODE_PERIOD -> {
+ presenter.clickNoPay()
+ val str = amountTxt.text.toString()
+ if (str.length < 8 && str.indexOf('.') < 0) {
+ amountTxt.text = "$str."
+ showScreenAmount()
+ }
+ }
+ KeyEvent.KEYCODE_NUMPAD_ADD -> {
+ //'+'
+ addAmount += getCurAmount()
+ amountTxt.text = ""
+ showScreenAmount()
+ }
+ KeyEvent.KEYCODE_DPAD_LEFT -> {
+ //'F1'
+ isBackRuning = true
+ jumpActivity(MenuActivity::class.java)
+ }
+// KeyEvent.KEYCODE_DPAD_UP ->
+ //'F2'
+// KeyEvent.KEYCODE_DPAD_DOWN ->
+ //'F3'
+ KeyEvent.KEYCODE_DPAD_RIGHT -> {
+ //'F4'
+ jumpActivity(TransdtlActivity::class.java)
+ }
+ KeyEvent.KEYCODE_DEL -> {
+ //cancel
+ presenter.clickNoPay()
+ delValueToEdit()
+ }
+ KeyEvent.KEYCODE_ENTER -> {
+ checkAmtToPay()
+ }
}
}
- showScreenAmount()
+ return super.dispatchKeyEvent(event)
}
override fun showUserInfo(info: CardUserInfoBean) {
@@ -406,6 +418,68 @@
}
}
+ private fun delValueToEdit() {
+ presenter.clickNoPay()
+ val str = amountTxt.text.toString()
+ val len = str.length
+ when {
+ len == 0 ||
+ len == 1 -> {
+ refresh()
+ }
+ len > 1 -> {
+ amountTxt.text = str.substring(0, len - 1)
+ showScreenAmount()
+ }
+ }
+ }
+
+ private fun checkAmtToPay() {
+ amount = getCurAmount() + addAmount
+ if (amount > 0) {
+ amountTxt.text = String.format("%.02f", amount / 100.0f)
+ presenter.clickToPay(amount)
+ showDialogPay()
+ } else {
+ AuxScreenController.getInstance().refreshContent(Arrays.asList("请先输入金额:", "金额不能为0"))
+ }
+ }
+
+ private fun showDialogPay() {
+ dialogPurchase!!.codePaying = false
+ dialogPurchase!!.isFixPay = false
+ dialogPurchase!!.codePayingNoCancelEnable = false
+ dialogPurchase!!.show("请刷卡", CommonUtil.showFormatAmount("金额", amount))
+ }
+
+ private fun getCurAmount(): Int {
+ return try {
+ CommonUtil.YuanToFen(java.lang.Double.parseDouble(amountTxt.text.toString().trim { it <= ' ' }))
+ } catch (ex: Exception) {
+ ex.printStackTrace()
+ 0
+ }
+ }
+
+ private fun addValueToEdit(value: Int) {
+ var str = amountTxt.text.toString()
+ if ("0" == str) {
+ str = ""
+ }
+ //如果已经有小数点,则小数点后面不能超过两位
+ if (str.indexOf(".") > 0) {
+ if (str.length - str.indexOf(".") <= 2) {
+ amountTxt.text = "$str$value"
+ }
+ } else {
+ //限制消费金额<1000
+ if (str.length < 3) {
+ amountTxt.text = "$str$value"
+ }
+ }
+ showScreenAmount()
+ }
+
private fun clearLastPayResult() {
vLastResult.text = null
vLastPayamt.text = null
@@ -415,80 +489,6 @@
vLastPayFailreason.text = null
}
- override fun onStop() {
- super.onStop()
- isBackRuning = true
- }
-
- override fun onDestroy() {
- SoundUtil.releaseMusic()
- presenter.stop()
- beepManager!!.close()
- super.onDestroy()
- }
-
- @SuppressLint("SetTextI18n")
- override fun dispatchKeyEvent(event: KeyEvent): Boolean {
- if (event.action == KeyEvent.ACTION_DOWN) {
- val keyCode = event.keyCode
- when (keyCode) {
- KeyEvent.KEYCODE_BACK -> {
- amountTxt.text = "0"
- presenter.clickNoPay()
- }
- KeyEvent.KEYCODE_0,
- KeyEvent.KEYCODE_1,
- KeyEvent.KEYCODE_2,
- KeyEvent.KEYCODE_3,
- KeyEvent.KEYCODE_4,
- KeyEvent.KEYCODE_5,
- KeyEvent.KEYCODE_6,
- KeyEvent.KEYCODE_7,
- KeyEvent.KEYCODE_8,
- KeyEvent.KEYCODE_9 -> {
- presenter.clickNoPay()
- addValueToEdit(keyCode - KeyEvent.KEYCODE_0)
- }
- KeyEvent.KEYCODE_POUND, KeyEvent.KEYCODE_PERIOD -> {
- presenter.clickNoPay()
- val str = amountTxt.text.toString()
- if (str.length < 8 && str.indexOf('.') < 0) {
- amountTxt.text = "$str."
- showScreenAmount()
- }
- }
- KeyEvent.KEYCODE_NUMPAD_ADD -> {
- //'+'
- addAmount += getCurAmount()
- amountTxt.text = ""
- showScreenAmount()
- }
- KeyEvent.KEYCODE_DPAD_LEFT -> {
- //'F1'
- isBackRuning = true
- jumpActivity(MenuActivity::class.java)
- }
-// KeyEvent.KEYCODE_DPAD_UP ->
- //'F2'
-// KeyEvent.KEYCODE_DPAD_DOWN ->
- //'F3'
- KeyEvent.KEYCODE_DPAD_RIGHT -> {
- //'F4'
- jumpActivity(TransdtlActivity::class.java)
- }
- KeyEvent.KEYCODE_DEL -> {
- //cancel
- presenter.clickNoPay()
- delValueToEdit()
- }
- KeyEvent.KEYCODE_ENTER -> {
- checkAmtToPay()
- }
- }
- }
- return super.dispatchKeyEvent(event)
- }
-
private fun showScreenAmount() {
if (addAmount > 0) {
AuxScreenController.getInstance().refreshContent(
@@ -510,10 +510,6 @@
return isBackRuning
}
- fun showFixConsume(fixamt: Int) {
- amountTxt.text = String.format("%.02f", fixamt / 100.0f)
- }
-
override fun showRecentDtl(record: TransdtlUnionRecord?) {
if (record != null) {
val info = CardUserInfoBean(PublicDef.SUCCESS, "")
diff --git a/app/src/main/java/com/supwisdom/activities/consume/bean/CardPayConfirmRetBean.kt b/app/src/main/java/com/supwisdom/activities/consume/bean/CardPayConfirmRetBean.kt
index d469a56..c879a8a 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/bean/CardPayConfirmRetBean.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/bean/CardPayConfirmRetBean.kt
@@ -9,7 +9,7 @@
class CardPayConfirmRetBean : BaseResp() {
var amount: Int = 0
var extraamt: Int = 0
- var balance: Int = 0
+ var balance: Int? = null
var require_query: Boolean = false
// var username: String? = null
// var userid: Int = 0
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 f88e2b9..3972fe6 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
@@ -19,7 +19,6 @@
import com.supwisdom.utils.GsonUtil
import com.supwisdom.utils.PublicDef
import org.apache.http.HttpStatus
-import java.lang.Exception
/**
** create by zzq on 2019/7/25
@@ -102,16 +101,16 @@
doConsume()
} catch (ex: CardPayFailError) {
sendMsg(PublicDef.MSG_CARD_PAY_FAIL, getErrorInfo(ex.message))
- clickStat = ClickStat.INIT
}
+ clickStat = ClickStat.INIT
}
ClickStat.REVERSE -> {
try {
doReverse()
} catch (ex: CardPayCancelFailError) {
sendMsg(PublicDef.MSG_CARD_REVERSE_FAIL, getErrorInfo(ex.message))
- clickStat = ClickStat.INIT
}
+ clickStat = ClickStat.INIT
}
ClickStat.INIT -> {
if (SPApplication.getInstance().isOnline() && !onlineBalance) {
diff --git a/app/src/main/java/com/supwisdom/activities/transdtl/TransdtlActivity.kt b/app/src/main/java/com/supwisdom/activities/transdtl/TransdtlActivity.kt
index b047f21..c20049a 100644
--- a/app/src/main/java/com/supwisdom/activities/transdtl/TransdtlActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/transdtl/TransdtlActivity.kt
@@ -1,10 +1,223 @@
package com.supwisdom.activities.transdtl
+import android.os.AsyncTask
+import android.os.Bundle
+import android.os.CountDownTimer
+import android.view.KeyEvent
+import android.widget.TextView
+import com.supwisdom.R
import com.supwisdom.activities.BaseActivity
+import com.supwisdom.activities.SPApplication
+import com.supwisdom.activities.consume.ConsumeActivity
+import com.supwisdom.auxscreen.AuxScreenController
+import com.supwisdom.entity.PayStatus
+import com.supwisdom.entity.ReversalFlag
+import com.supwisdom.entity.TransdtlUnionRecord
+import com.supwisdom.utils.DateUtil
+import java.util.*
/**
** create by zzq on 2019/7/26
** @desc
**/
class TransdtlActivity : BaseActivity() {
+ private val pos = SPApplication.getInstance().getPos()
+ private lateinit var vSeqno: TextView
+ private lateinit var vContent: TextView
+ private var isSearching: Boolean = false
+ @Volatile
+ private var keyActive = true
+ private val MAX_SEARCH_NUM = 19
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ this.setContentView(R.layout.activity_transdtl)
+ initView()
+ }
+
+ private fun initView() {
+ vSeqno = findViewById<TextView>(R.id.transdtl_seqno)
+ vContent = findViewById<TextView>(R.id.transdtl_content)
+ }
+
+ private fun refresh() {
+ setShowSeqno(1)
+ doSearch(1)
+ }
+
+ private fun showCustomQuery(seqno: Int) {
+ AuxScreenController.getInstance().refreshTitle("流水记录查询")
+ AuxScreenController.getInstance().refreshBottom("F3/F4 切换记录")
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList<String>("流水索引号:$seqno", "正在查询", "请稍等...", " ", " ", " "))
+ }
+
+ override fun dispatchKeyEvent(event: KeyEvent): Boolean {
+ if (event.action == KeyEvent.ACTION_DOWN) {
+ if (isSearching || !keyActive) {
+ return super.dispatchKeyEvent(event)
+ }
+ resetCounter(200)
+
+ when (event.keyCode) {
+ KeyEvent.KEYCODE_DPAD_UP -> {
+ }
+ KeyEvent.KEYCODE_DPAD_DOWN ->
+ //F3
+ movePreSeqno()
+ KeyEvent.KEYCODE_DPAD_RIGHT ->
+ //F4
+ moveNextSeqno()
+ KeyEvent.KEYCODE_DEL ->
+ //cancel
+ jumpActivity(ConsumeActivity::class.java)
+ }//F2
+ }
+ return super.dispatchKeyEvent(event)
+ }
+
+ private fun moveNextSeqno() {
+ var seqno = getShowSeqno()
+ if (seqno > MAX_SEARCH_NUM) {
+ return
+ }
+ seqno += 1
+ setShowSeqno(seqno)
+ doSearch(seqno)
+ }
+
+ private fun movePreSeqno() {
+ var seqno = getShowSeqno()
+ if (seqno > 1) {
+ seqno -= 1
+ setShowSeqno(seqno)
+ doSearch(seqno)
+ }
+ }
+
+ private fun doSearch(seqno: Int) {
+ isSearching = true
+ showCustomQuery(seqno)
+ queryTransdtl(seqno - 1)
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ keyActive = true
+ refresh()
+ }
+
+ fun showTransdtlResult(record: TransdtlUnionRecord?) {
+ isSearching = false
+ if (record == null) {
+ vContent.text = "未找到消费记录"
+ AuxScreenController.getInstance().refreshContent(
+ Arrays.asList<String>(
+ "流水索引号:" + getShowSeqno(),
+ "查询失败:", "未找到消费记录", " ", " ", " "
+ )
+ )
+ } else {
+ val transdatetime = StringBuilder()
+ transdatetime.append(record.transdate!!.substring(0, 4)).append("-")
+ .append(record.transdate!!.substring(4, 6)).append("-")
+ .append(record.transdate!!.substring(6)).append(" ")
+ .append(record.transtime!!.substring(0, 2)).append(":")
+ .append(record.transtime!!.substring(2, 4)).append(":")
+ .append(record.transtime!!.substring(4))
+ val result = if (record.status == PayStatus.SUC) {
+ if (record.reversalflag == ReversalFlag.AUTO ||
+ record.reversalflag == ReversalFlag.MANUAL
+ ) {
+ "已退款"
+ } else {
+ "消费成功"
+ }
+ } else {
+ if (record.reversalflag == ReversalFlag.AUTO ||
+ record.reversalflag == ReversalFlag.MANUAL
+ ) {
+ "冲正失败"
+ } else {
+ "消费失败"
+ }
+ }
+ val payWay = if (record.payway == "code") {
+ "二维码"
+ } else {
+ "市民卡"
+ }
+ val sb = StringBuilder("查询成功 \n")
+ sb.append("姓名: ").append(record.username).append("\n")
+ .append("支付方式: ").append(payWay).append("\n")
+ .append(String.format("支付金额: %.02f元", record.payamt / 100.0f)).append("\n")
+ .append("支付时间: ").append(transdatetime.toString()).append("\n")
+ .append("支付结果: ").append(result)
+ vContent.text = sb.toString()
+
+ AuxScreenController.getInstance().refreshContent(
+ Arrays.asList(
+ "时间:$transdatetime",
+ "姓名:" + record.username,
+ String.format("金额:%.02f元", record.payamt / 100.0f),
+ "方式:$payWay", "结果:$result"
+ )
+ )
+ }
+ }
+
+ private fun getShowSeqno(): Int {
+ return Integer.parseInt(vSeqno.text.toString())
+ }
+
+ private fun setShowSeqno(seqno: Int) {
+ vSeqno.text = seqno.toString()
+ }
+
+ private fun queryTransdtl(seqno: Int) {
+ AsyncTransdtl().execute(seqno)
+ }
+
+ private inner class AsyncTransdtl : AsyncTask<Int, Void, TransdtlUnionRecord?>() {
+ override fun onPostExecute(record: TransdtlUnionRecord?) {
+ showTransdtlResult(record)
+ }
+
+ override fun doInBackground(vararg integers: Int?): TransdtlUnionRecord? {
+ val searchSeqno = integers[0]!!
+ val list = pos.getTransdtlUnion(DateUtil.getNowDateNoFormat(), searchSeqno, 1, 1)
+ return if (list.isNotEmpty()) {
+ list[0]
+ } else {
+ null
+ }
+ }
+ }
+
+ private var counter: ContinuePressTimer? = null
+
+ private fun resetCounter(timems: Long) {
+ counter?.cancel()
+ if (counter == null) {
+ counter = ContinuePressTimer(timems, 100)
+ }
+ keyActive = false
+ counter!!.start()
+ }
+
+ private inner class ContinuePressTimer internal constructor(millisInFuture: Long, countDownInterval: Long) :
+ CountDownTimer(millisInFuture, countDownInterval) {
+
+ override fun onTick(millisUntilFinished: Long) {
+
+ }
+
+ override fun onFinish() {
+ keyActive = true
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/db/TransdtlUnionDao.kt b/app/src/main/java/com/supwisdom/db/TransdtlUnionDao.kt
index 1071836..683b689 100644
--- a/app/src/main/java/com/supwisdom/db/TransdtlUnionDao.kt
+++ b/app/src/main/java/com/supwisdom/db/TransdtlUnionDao.kt
@@ -51,25 +51,22 @@
var cursor: Cursor? = null
var sql = when (flag) {
0 -> {
- ("select * from ("
- + tablesql.toString()
- + ") where " + BeanPropEnum.TransdtlUnion.transdate + "='" + date
+ (tablesql.toString()
+ + " where " + BeanPropEnum.TransdtlUnion.transdate + "='" + date
+ "' order by " + BeanPropEnum.TransdtlUnion.transtime
+ " desc ")
}
1 -> {
- ("select * from ("
- + tablesql.toString()
- + ") where " + BeanPropEnum.TransdtlUnion.transdate + "='" + date
+ (tablesql.toString()
+ + " where " + BeanPropEnum.TransdtlUnion.transdate + "='" + date
+ "' and " + BeanPropEnum.TransdtlUnion.status + "='"
+ PayStatus.SUC.toString()
+ "' order by " + BeanPropEnum.TransdtlUnion.transtime
+ " desc ")
}
else -> {
- ("select * from ("
- + tablesql.toString()
- + ") where " + BeanPropEnum.TransdtlUnion.transdate + "='" + date
+ (tablesql.toString()
+ + " where " + BeanPropEnum.TransdtlUnion.transdate + "='" + date
+ "' and " + BeanPropEnum.TransdtlUnion.status + "='"
+ PayStatus.FAIL.toString()
+ "' order by " + BeanPropEnum.TransdtlUnion.transtime
diff --git a/app/src/main/java/com/supwisdom/entity/TransdtlOnlineRecord.kt b/app/src/main/java/com/supwisdom/entity/TransdtlOnlineRecord.kt
index 2345e92..97cfa84 100644
--- a/app/src/main/java/com/supwisdom/entity/TransdtlOnlineRecord.kt
+++ b/app/src/main/java/com/supwisdom/entity/TransdtlOnlineRecord.kt
@@ -16,7 +16,7 @@
var payamt: Int = 0
var extraamt: Int = 0
var managefeetype: String? = null // none,discount,mealer
- var balance: Int = 0
+ var balance: Int? = null
var username: String? = null
// var userid: Int = 0
var billno: String? = null
diff --git a/app/src/main/res/layout/activity_transdtl.xml b/app/src/main/res/layout/activity_transdtl.xml
new file mode 100644
index 0000000..0c44701
--- /dev/null
+++ b/app/src/main/res/layout/activity_transdtl.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/light_blue2"
+ android:orientation="vertical">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_margin="10dp"
+ android:background="@drawable/corner_bg_white"
+ android:orientation="vertical">
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:padding="20dp"
+ android:text="流水查询"
+ android:textColor="@color/light_blue2"
+ android:textSize="50sp" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="10dp"
+ android:orientation="horizontal"
+ android:padding="10dp">
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="查询记录: "
+ android:textColor="@color/light_blue2"
+ android:textSize="30sp" />
+
+ <TextView
+ android:id="@+id/transdtl_seqno"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text=""
+ android:textColor="@color/light_blue2"
+ android:textSize="30sp" />
+ </LinearLayout>
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="10dp"
+ android:padding="10dp"
+ android:text="查询结果: "
+ android:textColor="@color/light_blue2"
+ android:textSize="30sp" />
+
+ <TextView
+ android:id="@+id/transdtl_content"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="10dp"
+ android:padding="10dp"
+ android:text=""
+ android:textColor="@color/light_blue2"
+ android:textSize="30sp" />
+ </LinearLayout>
+</LinearLayout>
\ No newline at end of file