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