init
diff --git a/app/src/main/java/com/supwisdom/activities/checkShoppwd/CheckShoppwdActivity.kt b/app/src/main/java/com/supwisdom/activities/checkShoppwd/CheckShoppwdActivity.kt
new file mode 100644
index 0000000..5b12e29
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/activities/checkShoppwd/CheckShoppwdActivity.kt
@@ -0,0 +1,161 @@
+package com.supwisdom.activities.checkShoppwd
+
+import android.content.Intent
+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.activities.consume.bean.CardUserInfoBean
+import com.supwisdom.auxscreen.AuxScreenController
+import com.supwisdom.utils.CommonUtil
+import com.supwisdom.utils.SoundUtil
+import java.util.*
+
+/**
+ ** create by zzq on 2019/7/26
+ ** @desc
+ **/
+class CheckShoppwdActivity : BaseActivity() {
+ private var tmpPwd: String = ""
+ private lateinit var vTitle: TextView
+ private lateinit var vContent: TextView
+ private var keyActive = true
+ private var transdtlType: String? = null
+ private val pos = SPApplication.getInstance().getPos()
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ this.setContentView(R.layout.activity_check_mngpwd)
+ initView()
+ }
+
+ private fun initView() {
+ vTitle = findViewById<TextView>(R.id.title)
+ vContent = findViewById<TextView>(R.id.content)
+ }
+
+ override fun dispatchKeyEvent(event: KeyEvent): Boolean {
+ if (event.action == KeyEvent.ACTION_DOWN) {
+ if (!keyActive) {
+ return super.dispatchKeyEvent(event)
+ }
+ resetCounter(200)
+
+ val keyCode = event.keyCode
+ when (keyCode) {
+ 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 -> {
+ tmpPwd += keyCode - KeyEvent.KEYCODE_0
+ if (tmpPwd.length >= 6) {
+ if (checkMngPwd(tmpPwd)) {
+ doReverse()
+ } else {
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("商户密码:", "密码错误"))
+ }
+ tmpPwd = ""
+ } else {
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList("商户密码:", CommonUtil.getPasswordStar(tmpPwd.length)))
+ }
+ }
+ KeyEvent.KEYCODE_DEL -> {
+ //cancel
+ val len = tmpPwd.length
+ when {
+ len == 1 -> {
+ tmpPwd = ""
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList("商户密码:", CommonUtil.getPasswordStar(tmpPwd.length)))
+ }
+ len > 1 -> {
+ tmpPwd = tmpPwd.substring(0, len - 1)
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList("商户密码:", CommonUtil.getPasswordStar(tmpPwd.length)))
+ }
+ else -> finish()
+ }
+ }
+ }
+ }
+ return super.dispatchKeyEvent(event)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ keyActive = true
+ transdtlType = this.intent.getStringExtra("transdtlType")
+ refresh()
+ }
+
+ override fun onNewIntent(intent: Intent) {
+ super.onNewIntent(intent)
+ this.intent.putExtra("transdtlType", intent.getStringExtra("transdtlType"))
+ }
+
+ private fun refresh() {
+ tmpPwd = ""
+ vTitle.text = "手工冲正"
+ vContent.text = ""
+ AuxScreenController.getInstance().refreshTitle("商户密码验证")
+ AuxScreenController.getInstance().refreshBottom("取消键撤销输入")
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("商户密码:", " "))
+ }
+
+ private fun checkMngPwd(inputPwd: String): Boolean {
+ return inputPwd == pos.getConfigPara()!!.shopPwd
+ }
+
+ private fun doReverse() {
+
+ }
+
+ private fun showRvsSuc(info: CardUserInfoBean) {
+ val tmp = String.format("金额: %.02f元", info.payamt / 100.0f)
+ vContent.text = "冲正成功\n$tmp"
+ SoundUtil.playMusic(applicationContext, R.raw.reversal_suc)
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("冲正成功", tmp))
+ jumpActivity(ConsumeActivity::class.java)
+ }
+
+ private fun showRvsFail(errmsg: String) {
+ vContent.text = "冲正失败\n$errmsg"
+ SoundUtil.playMusic(applicationContext, R.raw.reversal_fail)
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("冲正失败", errmsg))
+ jumpActivity(ConsumeActivity::class.java)
+ }
+
+ 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/activities/consume/mode/ConsumeApi.kt b/app/src/main/java/com/supwisdom/activities/consume/mode/ConsumeApi.kt
index e6c49b1..e06756a 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/mode/ConsumeApi.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/mode/ConsumeApi.kt
@@ -58,4 +58,12 @@
return YktSession.getInstance().sendYktRequestPost("/api/pos/accquery", "", params)
}
+
+ fun queryRevenue(devphyid: String, date: String): TransResp? {
+ val params = WebParams()
+ params.setParameter("devphyid", devphyid)
+ .setParameter("date", date)
+
+ return YktSession.getInstance().sendYktRequestPost("/api/pos/revenue", "", params)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/revenue/IRevenueView.kt b/app/src/main/java/com/supwisdom/activities/revenue/IRevenueView.kt
new file mode 100644
index 0000000..74b4227
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/activities/revenue/IRevenueView.kt
@@ -0,0 +1,13 @@
+package com.supwisdom.activities.revenue
+
+import com.supwisdom.activities.revenue.bean.RevenueAmtRetBean
+
+/**
+ ** create by zzq on 2019/7/26
+ ** @desc
+ **/
+interface IRevenueView {
+ fun showRevenueFail(msg: String)
+
+ fun showRevenueSuc(record: RevenueAmtRetBean)
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/revenue/RevenueActivity.kt b/app/src/main/java/com/supwisdom/activities/revenue/RevenueActivity.kt
index 96e7754..895d5b4 100644
--- a/app/src/main/java/com/supwisdom/activities/revenue/RevenueActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/revenue/RevenueActivity.kt
@@ -1,10 +1,148 @@
package com.supwisdom.activities.revenue
+import android.os.Bundle
+import android.view.KeyEvent
+import android.widget.TextView
+import com.supwisdom.R
import com.supwisdom.activities.BaseActivity
+import com.supwisdom.activities.menu.MenuActivity
+import com.supwisdom.activities.revenue.bean.RevenueAmtRetBean
+import com.supwisdom.auxscreen.AuxScreenController
+import com.supwisdom.utils.DateUtil
+import java.util.*
/**
** create by zzq on 2019/7/26
** @desc
**/
-class RevenueActivity : BaseActivity() {
+class RevenueActivity : BaseActivity(), IRevenueView {
+ private lateinit var vContent: TextView
+ private lateinit var vSearchDate: TextView
+ private lateinit var presenter: RevenuePresenter
+ private var isSearching: Boolean = false
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ this.setContentView(R.layout.activity_revenue)
+ initView()
+ initData()
+ }
+
+ private fun initData() {
+ presenter = RevenuePresenter(this)
+ }
+
+ private fun initView() {
+ vContent = this.findViewById<TextView>(R.id.revenue_content)
+ vSearchDate = this.findViewById<TextView>(R.id.revenue_date)
+ }
+
+ private fun refresh() {
+ AuxScreenController.getInstance().refreshTitle("营业额查询")
+ AuxScreenController.getInstance().refreshBottom("F3/F4 切换日期")
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList<String>("查询日期:" + DateUtil.getNowDateSpecFormat(), "正在查询.", "请稍等...", " "))
+
+ val searchDate = DateUtil.getNowDateNoFormat()
+ vSearchDate.text = searchDate
+ isSearching = false
+ presenter.queryRevenue(searchDate)
+ }
+
+ override fun dispatchKeyEvent(event: KeyEvent): Boolean {
+ if (event.action == KeyEvent.ACTION_DOWN) {
+ if (isSearching) {
+ return false
+ }
+ when (event.keyCode) {
+ //case KeyEvent.KEYCODE_DPAD_UP:
+ //F2
+ KeyEvent.KEYCODE_DPAD_DOWN -> {
+ //F3
+ movePredate()
+ return true
+ }
+ KeyEvent.KEYCODE_DPAD_RIGHT -> {
+ //F4
+ moveNextDate()
+ return true
+ }
+ KeyEvent.KEYCODE_DEL -> {
+ //cancel
+ jumpActivity(MenuActivity::class.java)
+ return true
+ }
+ }//case KeyEvent.KEYCODE_ENTER:
+ //ok
+ // return true;
+ }
+ return super.dispatchKeyEvent(event)
+ }
+
+ private fun moveNextDate() {
+ val date = getSearchDate()
+ if (date >= DateUtil.getNowDateNoFormat()) {
+ return
+ }
+ isSearching = true
+ val nextdate = DateUtil.getSpecifiedDayAfter(date)
+ vSearchDate.text = nextdate
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList<String>("查询日期:" + convertDateToShow(nextdate), "正在查询", "请稍等...", " "))
+ presenter.queryRevenue(nextdate)
+ }
+
+ private fun movePredate() {
+ isSearching = true
+ val predate = DateUtil.getSpecifiedDayBefore(getSearchDate())
+ vSearchDate.text = predate
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList<String>("查询日期:" + convertDateToShow(predate), "正在查询", "请稍等...", " "))
+ presenter.queryRevenue(predate)
+ }
+
+ private fun convertDateToShow(date: String): String {
+ return date.substring(0, 4) + "/" + date.substring(4, 6) + "/" + date.substring(6)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ refresh()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ }
+
+ override fun showRevenueFail(msg: String) {
+ isSearching = false
+ vContent.text = "查询失败\n原因: $msg"
+ AuxScreenController.getInstance().refreshContent(
+ Arrays.asList<String>(
+ "查询日期:" + convertDateToShow(getSearchDate()),
+ "查询失败:", "原因:$msg", " "
+ )
+ )
+ }
+
+ override fun showRevenueSuc(record: RevenueAmtRetBean) {
+ isSearching = false
+ val sb = StringBuilder("查询成功\n")
+ sb.append("有效笔数 : ").append(record.salescnt).append("笔\n")
+ .append("营业汇总 : ").append(String.format("%.02f 元", record.salesamt / 100.0f))
+ vContent.text = sb.toString()
+
+ AuxScreenController.getInstance().refreshContent(
+ Arrays.asList<String>(
+ "查询日期:" + convertDateToShow(getSearchDate()),
+ "查询成功:",
+ "有效笔数:" + record.salescnt + "笔",
+ "营业汇总:" + String.format("%.02f元", record.salesamt / 100.0f)
+ )
+ )
+ }
+
+ private fun getSearchDate(): String {
+ return vSearchDate.text.toString()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/revenue/RevenuePresenter.kt b/app/src/main/java/com/supwisdom/activities/revenue/RevenuePresenter.kt
new file mode 100644
index 0000000..4ee5bd2
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/activities/revenue/RevenuePresenter.kt
@@ -0,0 +1,42 @@
+package com.supwisdom.activities.revenue
+
+import android.os.AsyncTask
+import com.supwisdom.activities.SPApplication
+import com.supwisdom.activities.consume.mode.ConsumeApi
+import com.supwisdom.activities.revenue.bean.RevenueAmtRetBean
+import com.supwisdom.utils.GsonUtil
+import com.supwisdom.utils.PublicDef
+import org.apache.http.HttpStatus
+
+/**
+ ** create by zzq on 2019/7/26
+ ** @desc
+ **/
+class RevenuePresenter constructor(iRevenueView: IRevenueView) {
+ private val iRevenueView = iRevenueView
+ private val pos = SPApplication.getInstance().getPos()
+
+ fun queryRevenue(date: String) {
+ AsyncRevenue().execute(pos.getConfigPara()!!.devphyid, date)
+ }
+
+ private inner class AsyncRevenue : AsyncTask<String, Void, RevenueAmtRetBean>() {
+ override fun onPostExecute(retBean: RevenueAmtRetBean) {
+ if (retBean.retcode != PublicDef.SUCCESS) {
+ iRevenueView.showRevenueFail(retBean.retmsg!!)
+ } else {
+ iRevenueView.showRevenueSuc(retBean)
+ }
+ }
+
+ override fun doInBackground(vararg strings: String): RevenueAmtRetBean {
+ val devphyid = strings[0]
+ val date = strings[1]
+ val resp = ConsumeApi().queryRevenue(devphyid, date) ?: return RevenueAmtRetBean(PublicDef.ERROR, "请求超时")
+ if (resp.retcode != HttpStatus.SC_OK) {
+ return RevenueAmtRetBean(resp.retcode, "错误码=" + resp.retcode)
+ }
+ return GsonUtil.GsonToBean(resp.retjson!!, RevenueAmtRetBean::class.java)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/revenue/bean/RevenueAmtRetBean.kt b/app/src/main/java/com/supwisdom/activities/revenue/bean/RevenueAmtRetBean.kt
new file mode 100644
index 0000000..f18160c
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/activities/revenue/bean/RevenueAmtRetBean.kt
@@ -0,0 +1,15 @@
+package com.supwisdom.activities.revenue.bean
+
+import com.supwisdom.bean.BaseResp
+
+/**
+ ** create by zzq on 2019/7/26
+ ** @desc 营业额返回
+ **/
+class RevenueAmtRetBean constructor(retcode: Int, retmsg: String) : BaseResp(retcode, retmsg) {
+ var salesdate: String? = null
+ var salesamt: Int = 0
+ var salescnt: Int = 0
+ var managefeecnt: Int = 0
+ var managefeeamt: Int = 0
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/utils/DateUtil.kt b/app/src/main/java/com/supwisdom/utils/DateUtil.kt
index 786fee3..f125399 100644
--- a/app/src/main/java/com/supwisdom/utils/DateUtil.kt
+++ b/app/src/main/java/com/supwisdom/utils/DateUtil.kt
@@ -34,6 +34,10 @@
return FORMAT_yyyy_MM_dd_HH_mm_ss.format(Date())
}
+ fun getNowDateSpecFormat(): String {
+ return FORMAT_yyyy_MM_dd.format(Date())
+ }
+
/**
* @return yyyy-MM-dd HH:mm:ss.SSS
*/
diff --git a/app/src/main/res/layout/activity_revenue.xml b/app/src/main/res/layout/activity_revenue.xml
new file mode 100644
index 0000000..45541ba
--- /dev/null
+++ b/app/src/main/res/layout/activity_revenue.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/revenue_date"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="20180818"
+ 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/revenue_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