Browse Source

添加通过NFC编号获取刷卡信息接口;添加共锁人仅在作业进展页刷卡功能

Frankensteinly 9 months ago
parent
commit
9fc26cd0b8

+ 6 - 1
app/src/main/java/com/grkj/iscs/model/UrlConsts.kt

@@ -70,7 +70,12 @@ object UrlConsts {
     /**
      * 获取刷卡信息
      */
-    const val CARD_INFO = "/iscs/card/selectIsJobCardByLoginUser"
+    const val CARD_INFO_BY_LOGIN_USER = "/iscs/card/selectIsJobCardByLoginUser"
+
+    /**
+     * 通过NFC编号获取刷卡信息
+     */
+    const val CARD_INFO_BY_CARD_NFC = "/iscs/card/selectIsJobCardByCardNfc"
 
     /**
      * 通过NFC编号获取钥匙详细信息

+ 19 - 3
app/src/main/java/com/grkj/iscs/util/NetApi.kt

@@ -270,11 +270,11 @@ object NetApi {
     }
 
     /**
-     * 获取刷卡信息
+     * 根据登录用户获取刷卡信息
      */
-    fun getCardInfo(callBack: (CardInfoRespVO?) -> Unit) {
+    fun getCardInfoByLoginUser(callBack: (CardInfoRespVO?) -> Unit) {
         NetHttpManager.getInstance().doRequestNet(
-            UrlConsts.CARD_INFO,
+            UrlConsts.CARD_INFO_BY_LOGIN_USER,
             false,
             mapOf<String, String>(),
             { res, _, _ ->
@@ -285,6 +285,22 @@ object NetApi {
         )
     }
 
+    /**
+     * 根据nfc编号获取刷卡信息
+     */
+    fun getCardInfoByNfc(cardNfc: String, callBack: (CardInfoRespVO?) -> Unit) {
+        NetHttpManager.getInstance().doRequestNet(
+            UrlConsts.CARD_INFO_BY_CARD_NFC,
+            false,
+            mapOf("cardNfc" to cardNfc),
+            { res, _, _ ->
+                res?.let {
+                    callBack.invoke(getRefBean(it))
+                }
+            }, isGet = true, isAuth = true
+        )
+   }
+
     /**
      * 通过nfc编号获取key信息
      */

+ 23 - 0
app/src/main/java/com/grkj/iscs/view/activity/HomeActivity.kt

@@ -1,8 +1,13 @@
 package com.grkj.iscs.view.activity
 
+import android.view.InputDevice
+import android.view.KeyEvent
 import android.widget.ImageView
+import androidx.lifecycle.MutableLiveData
 import com.grkj.iscs.R
 import com.grkj.iscs.databinding.ActivityHomeBinding
+import com.grkj.iscs.extentions.toByteArrays
+import com.grkj.iscs.extentions.toHexStrings
 import com.grkj.iscs.view.adapter.MenuAdapter
 import com.grkj.iscs.view.base.BaseFragment
 import com.grkj.iscs.view.base.BaseMvpActivity
@@ -19,6 +24,9 @@ import com.zhy.adapter.recyclerview.base.ViewHolder
  */
 class HomeActivity : BaseMvpActivity<IHomeView, HomePresenter, ActivityHomeBinding>() {
 
+    private var cardNo = ""
+    val cardNoLiveData = MutableLiveData("")
+
     override val viewBinding: ActivityHomeBinding
         get() = ActivityHomeBinding.inflate(layoutInflater)
 
@@ -59,6 +67,21 @@ class HomeActivity : BaseMvpActivity<IHomeView, HomePresenter, ActivityHomeBindi
         }
     }
 
+    override fun dispatchKeyEvent(event: KeyEvent): Boolean {
+        if (event.action == KeyEvent.ACTION_UP && event.source == InputDevice.SOURCE_KEYBOARD) {
+            // 检测到回车开始处理
+            if (event.keyCode == 66) {
+                cardNo = cardNo.toLong().toByteArrays().toHexStrings(false)
+                cardNoLiveData.postValue(cardNo)
+                // 重置cardNo
+                cardNo = ""
+                return super.dispatchKeyEvent(event)
+            }
+            cardNo += event.keyCharacterMap.getDisplayLabel(event.keyCode)
+        }
+        return super.dispatchKeyEvent(event)
+    }
+
     override fun initPresenter(): HomePresenter {
         return HomePresenter()
     }

+ 1 - 2
app/src/main/java/com/grkj/iscs/view/activity/test/ProcessDemoActivity.kt

@@ -2,7 +2,6 @@ package com.grkj.iscs.view.activity.test
 
 import com.grkj.iscs.view.base.BaseActivity
 import com.grkj.iscs.databinding.ActivityProcessDemoBinding
-import com.grkj.iscs.extentions.serialNo
 import com.grkj.iscs.model.vo.lock.LockTakeUpdateReqVO
 import com.grkj.iscs.model.vo.ticket.LockPointUpdateReqVO
 import com.grkj.iscs.model.vo.ticket.TicketDetailRespVO
@@ -52,7 +51,7 @@ class ProcessDemoActivity : BaseActivity<ActivityProcessDemoBinding>() {
         }
         NetApi.login(mBinding?.etUsername?.text.toString(), mBinding?.etPassword?.text.toString()) {
             if (it == true) {
-                NetApi.getCardInfo { itInfo ->
+                NetApi.getCardInfoByLoginUser { itInfo ->
                     itInfo?.let { info ->
                         SPUtils.setLoginUser(this, info)
                         ToastUtils.tip("登录成功")

+ 7 - 0
app/src/main/java/com/grkj/iscs/view/fragment/JobExecutionFragment.kt

@@ -3,6 +3,7 @@ package com.grkj.iscs.view.fragment
 import com.grkj.iscs.databinding.FragmentJobExecutionBinding
 import com.grkj.iscs.model.bo.PageChangeBO
 import com.grkj.iscs.util.log.LogUtil
+import com.grkj.iscs.view.activity.HomeActivity
 import com.grkj.iscs.view.activity.HomeActivity.Menu
 import com.grkj.iscs.view.adapter.MenuAdapter
 import com.grkj.iscs.view.base.BaseMvpFragment
@@ -35,6 +36,12 @@ class JobExecutionFragment(val changePageCallback: (PageChangeBO) -> Unit) :
         mBinding?.vp?.isUserInputEnabled = false
         mBinding?.vp?.offscreenPageLimit = mMenuList.size
         mBinding?.vp?.adapter = MenuAdapter(requireActivity().supportFragmentManager, lifecycle, mMenuList)
+
+        (activity as HomeActivity).cardNoLiveData.observeForever {
+            if (mBinding?.vp?.currentItem == 2) {
+                (mMenuList[2].fragment as JobProgressFragment).getCardNo(it)
+            }
+        }
     }
 
     override fun initPresenter(): JobExecutionPresenter {

+ 27 - 0
app/src/main/java/com/grkj/iscs/view/fragment/JobProgressFragment.kt

@@ -6,7 +6,9 @@ import com.grkj.iscs.R
 import com.grkj.iscs.databinding.FragmentJobProgressBinding
 import com.grkj.iscs.model.bo.PageChangeBO
 import com.grkj.iscs.model.vo.ticket.TicketDetailMonitorRespVO
+import com.grkj.iscs.view.activity.HomeActivity
 import com.grkj.iscs.view.base.BaseMvpFragment
+import com.grkj.iscs.view.dialog.TipDialog
 import com.grkj.iscs.view.iview.IJobProgressVIew
 import com.grkj.iscs.view.presenter.JobProgressPresenter
 import com.zhy.adapter.recyclerview.CommonAdapter
@@ -22,6 +24,7 @@ class JobProgressFragment(val goBack: () -> Unit) :
     private val mUserList = mutableListOf<TicketDetailMonitorRespVO.IsJobTicketUser>()
     private var mStep = 0
     private var mPageChangeBO: PageChangeBO? = null
+    private var mTipDialog: TipDialog? = null
 
     override val viewBinding: FragmentJobProgressBinding
         get() = FragmentJobProgressBinding.inflate(layoutInflater)
@@ -99,6 +102,30 @@ class JobProgressFragment(val goBack: () -> Unit) :
         }
     }
 
+    fun getCardNo(cardNo: String) {
+        presenter?.getCardInfoByNfc(cardNo) {
+            if (it == null) {
+                return@getCardInfoByNfc
+            }
+            mTipDialog ?: {
+                mTipDialog = TipDialog(requireActivity())
+            }
+            val jobStatus = mUserList.find { itUser -> itUser.userId == it.userId }?.jobStatus
+            if (jobStatus == null || jobStatus >= 5) {
+                return@getCardInfoByNfc
+            }
+            if (jobStatus < 4) {
+                mTipDialog?.setTip(getString(R.string.confirm_to_colock, it.userName))
+            } else {
+                mTipDialog?.setTip(getString(R.string.confirm_to_uncolock, it.userName))
+            }
+            mTipDialog?.setConfirmListener {
+                // TODO 共锁人刷卡接口
+            }
+            mTipDialog?.showCancelCountdown(10)
+        }
+    }
+
     override fun onPause() {
         super.onPause()
         mStep = 0

+ 9 - 0
app/src/main/java/com/grkj/iscs/view/presenter/JobProgressPresenter.kt

@@ -8,6 +8,7 @@ import com.grkj.iscs.model.Constants.JOB_STATUS_ACQUIRE_KEY
 import com.grkj.iscs.model.Constants.JOB_STATUS_ACQUIRE_LOCK
 import com.grkj.iscs.model.Constants.JOB_STATUS_NOT_STARTED
 import com.grkj.iscs.model.Constants.USER_TYPE_LOCKER
+import com.grkj.iscs.model.vo.card.CardInfoRespVO
 import com.grkj.iscs.model.vo.lock.LockTakeUpdateReqVO
 import com.grkj.iscs.model.vo.ticket.StepDetailRespVO
 import com.grkj.iscs.model.vo.ticket.TicketDetailMonitorRespVO
@@ -52,6 +53,14 @@ class JobProgressPresenter : BasePresenter<IJobProgressVIew>() {
         }
     }
 
+    fun getCardInfoByNfc(cardNfc: String, callBack: (CardInfoRespVO?) -> Unit) {
+        NetApi.getCardInfoByNfc(cardNfc) {
+            Executor.runOnMain {
+                callBack(it)
+            }
+        }
+    }
+    
     /**
      * 上锁人上锁流程
      */

+ 2 - 2
app/src/main/java/com/grkj/iscs/view/presenter/LoginPresenter.kt

@@ -28,7 +28,7 @@ class LoginPresenter : BasePresenter<ILoginView>() {
         }
         NetApi.login(account, pwd) {
             if (it == true) {
-                NetApi.getCardInfo { itInfo ->
+                NetApi.getCardInfoByLoginUser { itInfo ->
                     itInfo?.let { info ->
                         SPUtils.setLoginUser(mContext!!, info)
                     }
@@ -43,7 +43,7 @@ class LoginPresenter : BasePresenter<ILoginView>() {
     fun cardLogin(card: String, callBack: (Boolean, CardInfoRespVO?) -> Unit) {
         NetApi.cardLogin(card) {
             if (it == true) {
-                NetApi.getCardInfo { itInfo ->
+                NetApi.getCardInfoByLoginUser { itInfo ->
                     itInfo?.let { info ->
                         SPUtils.setLoginUser(mContext!!, info)
                     }

+ 2 - 0
app/src/main/res/values/strings.xml

@@ -169,4 +169,6 @@
     <string name="logout">退出登录</string>
     <string name="cancel">取消</string>
     <string name="cancel_countdown">取消(%d秒)</string>
+    <string name="confirm_to_colock">%s是否确认共锁?</string>
+    <string name="confirm_to_uncolock">%s是否确认解除共锁?</string>
 </resources>