Browse Source

1。护士主机科室设置增加判断是否托管参数
2。分机增加大成慧康的适配,护理倒计时,用户事务模块,推送消息(还没搞完)
3。门口机增加护理倒计时

xunchuanzhi 1 year ago
parent
commit
69b706aa2b
64 changed files with 2546 additions and 137 deletions
  1. 14 1
      android_bed/build.gradle
  2. 6 0
      android_bed/src/main/AndroidManifest.xml
  3. 18 0
      android_bed/src/main/java/com/jni/JniClient.java
  4. 61 7
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/activity/CallingbedActivity.kt
  5. 13 1
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/activity/DeviceSystemActivity.kt
  6. 220 0
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/activity/PushMessageActivity.kt
  7. 220 0
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/activity/UserTransactionActivity.kt
  8. 143 0
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/adapter/TransactionItemAdapter.kt
  9. 4 0
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/di/CallingbedComponent.kt
  10. 111 0
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/dialog/HuliTiemDialogHelper.java
  11. 48 23
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/fragment/NurseFragment.kt
  12. 16 2
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/fragment/NursingWorkFragment.kt
  13. 2 0
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/hardware/HardWareFactory.java
  14. 143 0
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/hardware/imp/DCHKHardTools.java
  15. 10 0
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/settings/SettingConfig.java
  16. BIN
      android_bed/src/main/jniLibs/arm64-v8a/libJNI1.so
  17. BIN
      android_bed/src/main/jniLibs/armeabi-v7a/libJNI1.so
  18. BIN
      android_bed/src/main/jniLibs/x86/libJNI1.so
  19. 55 1
      android_bed/src/main/res/layout-land/callingbed_device_sys.xml
  20. 1 0
      android_bed/src/main/res/layout-land/yz_view_lay.xml
  21. 88 27
      android_bed/src/main/res/layout/callingbed_device_sys.xml
  22. 151 0
      android_bed/src/main/res/layout/nurse_huli_time_dialog.xml
  23. 51 0
      android_bed/src/main/res/layout/push_messg_view.xml
  24. 63 0
      android_bed/src/main/res/layout/transaction_fy_view.xml
  25. 72 0
      android_bed/src/main/res/layout/transaction_view_item_lay.xml
  26. 3 1
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/activity/CallingHostActivationActivity.kt
  27. 1 1
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/activity/HostbedinfoActivity.kt
  28. 4 0
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/activity/NurseHomeActivity.kt
  29. 1 1
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/adapter/FrameBeditemAdapter.kt
  30. 1 1
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/adapter/FrameHomeBedItemAdapter.kt
  31. 1 1
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/adapter/MainFrameBedAdapter.kt
  32. 3 1
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/MessageFragment.kt
  33. 8 2
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/TrustManagementFragment.kt
  34. 10 0
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/settingconfig/SettingConfig.java
  35. 1 1
      android_host/src/main/res/layout/fragment_message.xml
  36. 11 0
      app/build.gradle
  37. 2 2
      bedlib/src/main/java/serialporttest/utils/SerialPortUtil.java
  38. 1 1
      bedlib/src/main/java/serialporttest/utils/SerialPortUtilHost.java
  39. 16 5
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/activity/CallingdoorActivity.kt
  40. 13 2
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/activity/DeviceSystemActivity.kt
  41. 0 2
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/dialog/HuliDialogHelper.java
  42. 111 0
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/dialog/HuliTiemDialogHelper.java
  43. 49 23
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/fragment/NurseFragment.kt
  44. 15 1
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/fragment/NursingWorkFragment.kt
  45. 10 0
      callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/settings/SettingConfig.java
  46. 55 0
      callingdoor/src/main/res/layout-land/callingbed_device_sys.xml
  47. 88 27
      callingdoor/src/main/res/layout/callingbed_device_sys.xml
  48. 151 0
      callingdoor/src/main/res/layout/nurse_huli_time_dialog.xml
  49. 6 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/api/BedDeviceApi.kt
  50. 1 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constant.java
  51. 4 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/di/PresenterComponent.kt
  52. 21 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/callingbed/UserTransactionContract.kt
  53. 103 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/callingbed/PushMessagePresenter.kt
  54. 103 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/callingbed/UserTransactionPresenter.kt
  55. 16 1
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/dos/PartSettingDO.java
  56. 160 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/dos/UserTransactionDO.java
  57. BIN
      resource/src/main/res/mipmap-mdpi/hul_time_log.png
  58. BIN
      resource/src/main/res/mipmap-xhdpi/hul_time_log.png
  59. BIN
      resource/src/main/res/mipmap-xxhdpi/hul_time_log.png
  60. 17 0
      resource/src/main/res/values-es/strings.xml
  61. 16 0
      resource/src/main/res/values-ru/strings.xml
  62. 16 0
      resource/src/main/res/values-zh/strings.xml
  63. 17 0
      resource/src/main/res/values/strings.xml
  64. 1 2
      welcome/src/main/AndroidManifest.xml

+ 14 - 1
android_bed/build.gradle

@@ -27,6 +27,12 @@ android {
         buildFeatures {
             dataBinding = true
         }
+        ndk {
+            //选择要添加的对应cpu类型的.so库。
+            abiFilters 'arm64-v8a','armeabi-v7a','x86'
+        }
+
+
         buildConfigField "String", "BUILD_TIME", getDate()
         buildConfigField 'String', 'VERSION_NAME', "\"${project.rootProject.ext.app_version}\""
         buildConfigField 'String', 'VERSION_CODE', "\"${project.rootProject.ext.app_version_code}\""
@@ -37,6 +43,7 @@ android {
         buildConfigField 'String', 'device_type', "\"${project.rootProject.ext.device_type}\""
         buildConfigField 'String', 'sleep_type', "\"${project.rootProject.ext.sleep_type}\""
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+
     }
 
     productFlavors {
@@ -80,9 +87,15 @@ android {
             dimension "app"
             buildConfigField 'String', 'flag', '"10"'
         }
+        //大成慧康10寸
+        dchk_10 {
+            dimension "app"
+            buildConfigField 'String', 'flag', '"11"'
+        }
     }
     sourceSets {
-        main.java.srcDirs += 'src/main/code'
+        main { jni.srcDirs = [] }
+        main.java.srcDirs += 'src/main/java'
 
         rk3128 {//自研
             manifest.srcFile 'src/main/AndroidManifest.xml'

+ 6 - 0
android_bed/src/main/AndroidManifest.xml

@@ -11,7 +11,9 @@
     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
     <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
     <uses-permission android:name="android.intent.action.SET_TIME" />
+    <uses-permission android:name="android.permission.SET_TIME" />
     <uses-permission android:name="android.permission.SET_TIME_ZONE" />
+    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>
     <uses-permission android:name="android.permission.STATUS_BAR" />
     <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
     <uses-permission android:name="android.permission.NFC" />
@@ -164,6 +166,10 @@
             android:turnScreenOn="true"
             android:screenOrientation="nosensor"
             android:launchMode="singleTask"/>
+        <activity android:name="com.wdkl.app.ncs.callingbed.activity.UserTransactionActivity"
+            android:turnScreenOn="true"
+            android:screenOrientation="nosensor"
+            android:launchMode="singleTask"/>
 
 
         <service android:name="com.wdkl.app.ncs.callingbed.bt_gateway.BluetoothService"/>

+ 18 - 0
android_bed/src/main/java/com/jni/JniClient.java

@@ -0,0 +1,18 @@
+package com.jni;
+/**
+ * 大成慧康硬件控制
+ * */
+public class JniClient {
+    static {
+        System.loadLibrary("JNI1");
+    }
+
+
+    /**
+     * 灯 开关
+     * @param color 灯的颜色。红灯:1,蓝灯:3,手柄灯:6,紧急指示灯:5
+     * @param state 大于1小于255,如:255:on  0:off
+     * @return
+     */
+    static public native int switchLed(int color, int state);
+}

+ 61 - 7
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/activity/CallingbedActivity.kt

@@ -31,6 +31,7 @@ import com.clj.fastble.utils.HexUtil
 import com.enation.javashop.android.jrouter.external.annotation.Router
 import com.enation.javashop.net.engine.model.NetState
 import com.google.gson.Gson
+import com.jni.JniClient
 import com.wdkl.app.ncs.callingbed.BuildConfig
 import com.wdkl.app.ncs.callingbed.R
 import com.wdkl.app.ncs.callingbed.agreement.CallingbedAgreement
@@ -101,6 +102,7 @@ import java.io.FileOutputStream
 import java.io.InputStream
 import java.util.*
 import kotlin.collections.ArrayList
+import kotlin.concurrent.timerTask
 
 
 /**
@@ -146,6 +148,7 @@ class CallingbedActivity :BaseActivity<BedCallingbedActivityPresenter, Callingbe
     private var initialized :Boolean = false
     private var tcpConnect: Boolean = false
     private var loaded: Boolean = false
+    private var lamp: Boolean = false
 
     private var clickTime : Long = 0
     private var clickSosTime : Long = 0
@@ -214,6 +217,9 @@ class CallingbedActivity :BaseActivity<BedCallingbedActivityPresenter, Callingbe
     }
 
     override fun init() {
+
+
+
         //instance = this
         //Utils.hideStatusBar(activity, false)
         NfcUtils.getInstance().init(this)
@@ -457,7 +463,7 @@ class CallingbedActivity :BaseActivity<BedCallingbedActivityPresenter, Callingbe
 
 
     //护理状态
-    fun setHuli() {
+    fun setHuli(time: Int) {
         //先切换到首页
         if (!mainFragment.equals(curFragment)) {
             switchFragment(R.id.callingbed_main_frame, MainFragment(), mainFragment)
@@ -495,6 +501,7 @@ class CallingbedActivity :BaseActivity<BedCallingbedActivityPresenter, Callingbe
         title_layout_iv_hl_tcp.setImageResource(R.mipmap.ic_tcp_fail)
 
         exitNursing()
+        startTimer(time)
 
     }
     private fun exitNursing() {
@@ -533,6 +540,19 @@ class CallingbedActivity :BaseActivity<BedCallingbedActivityPresenter, Callingbe
         }
     }
 
+    //护理倒计时,默认10分钟
+    fun startTimer(minutes: Int) {
+        val timeInMinutes = if (minutes == 0) 10 else minutes
+        val timer = Timer()
+
+        timer.schedule(timerTask {
+            // 定时任务结束后的操作
+            runOnUiThread {
+                title_layout_hl_return.performClick()
+            }
+        }, timeInMinutes * 60 * 1000L) // 将分钟转换为毫秒
+    }
+
     override fun bindEvent() {
         main_rl_3.setOnClickListener {
             var fragment = CallRecordsFragment()
@@ -692,7 +712,6 @@ class CallingbedActivity :BaseActivity<BedCallingbedActivityPresenter, Callingbe
      fun setSerialListener() {
         SerialPortUtil.getInstance().setOnDataReceiveListener(this)
         SerialPortUtil.getInstance().setOnDataReceiveStringListener(this)
-
         SerialPortUtil433.getInstance().setOn433DataReceiveListener(this)
     }
 
@@ -1683,12 +1702,11 @@ class CallingbedActivity :BaseActivity<BedCallingbedActivityPresenter, Callingbe
                             } else {
                                 time = tcpModel.data.toString().toLong() * 1000
                             }
-
                             try {
                                 HardWareFactory.getHardTools().setTime(this, time, timeZone)
-                                val intent = Intent("android.intent.action.SET_TIME")
-                                intent.putExtra("time", time)
-                                sendBroadcast(intent)
+//                                val intent = Intent("android.intent.action.SET_TIME")
+//                                intent.putExtra("time", time)
+//                                sendBroadcast(intent)
                                 Log.d("setTime", "set sys time1: $time, $timeZone")
                             } catch (e: Exception) {
                                 //"20211213:092314"
@@ -2825,6 +2843,7 @@ class CallingbedActivity :BaseActivity<BedCallingbedActivityPresenter, Callingbe
         }
 
         if(keyCode==133){
+            //大朝华
             //手柄取消
             runOnUiThread {
                 if (Constant.CALL_STATE == Constant.CALL_CALLING) {
@@ -2838,7 +2857,8 @@ class CallingbedActivity :BaseActivity<BedCallingbedActivityPresenter, Callingbe
                     EventBus.getDefault().post(MessageEvent("reject", Constant.EVENT_SERIAL_EVENT))
                 }
             }
-        }else if (keyCode==131){
+        }else if (keyCode==131 || keyCode==4){
+            //大朝华以及大成慧康
             //手柄呼叫
             runOnUiThread {
                 if (Constant.CALL_STATE == Constant.CALL_STANDBY) {
@@ -2856,6 +2876,7 @@ class CallingbedActivity :BaseActivity<BedCallingbedActivityPresenter, Callingbe
                 }
             }
         }else if (keyCode==134){
+            //大朝华
             //机身按钮
             val time = System.currentTimeMillis()
             if (time - clickTime > 3000) {
@@ -2874,6 +2895,39 @@ class CallingbedActivity :BaseActivity<BedCallingbedActivityPresenter, Callingbe
             } else {
                 showMessage(R.string.wait_moment)
             }
+        }else if (keyCode==138){
+            //大成慧康
+            //护士增援
+            //增援
+            val time = System.currentTimeMillis()
+            if (time - clickTime > 3000) {
+                if (Constant.TCP_CONNECTED) {
+                    if (Constant.DEVICE_ID != -1) {
+                        OtherUtil.sendReinforce(Constant.DEVICE_ID)
+                        ReinforcementsDialogHelper.showDialog(activity, 1)
+                        SoundPoolManager.getInstance().playSound(4, 1.0f, 1.0f, 0)
+                    } else {
+                        showMessage("null device id!")
+                    }
+                } else {
+                    showMessage(R.string.net_error)
+                }
+                clickTime = time
+            } else {
+                showMessage(R.string.wait_moment)
+            }
+
+        }else if (keyCode==135){
+            //大成慧康
+            //手电筒
+            Log.d(TAG, "手电筒code--" + keyCode+"   "+lamp.toString())
+          if(!lamp){
+              lamp=true
+            JniClient.switchLed(6, 1)
+          }else{
+              lamp=false
+              JniClient.switchLed(6, 0)
+          }
         }
         return super.onKeyUp(keyCode, event)
     }

+ 13 - 1
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/activity/DeviceSystemActivity.kt

@@ -69,6 +69,12 @@ class DeviceSystemActivity : BaseActivity<BedTextActivityPresenter, CallingbedDe
 
             override fun onNothingSelected(parent: AdapterView<*>?) {}
         })
+        val  Index= SettingConfig.getHuliTime(activity)
+        if (Index != 0) {
+            device_huli_time_on.setChecked(true)
+        }else{
+            device_huli_time_off.setChecked(true)
+        }
 
 
         val originIndex = LocaleMangerUtils.getCurrentLocaleIndex()
@@ -137,7 +143,13 @@ class DeviceSystemActivity : BaseActivity<BedTextActivityPresenter, CallingbedDe
                 SettingConfigNew.setLanguageMode(activity, 1)
             }
         })
-
+        device_huli_group_time.setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener { group, checkedId ->
+            if (checkedId == R.id.device_huli_time_on) {
+                SettingConfig.setHuliTime(activity, 1)
+            } else {
+                SettingConfig.setHuliTime(activity, 0)
+            }
+        })
     }
 
     override fun destory() {

+ 220 - 0
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/activity/PushMessageActivity.kt

@@ -0,0 +1,220 @@
+package com.wdkl.app.ncs.callingbed.activity
+
+import android.view.View
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.enation.javashop.net.engine.model.NetState
+import com.wdkl.app.ncs.callingbed.R
+import com.wdkl.app.ncs.callingbed.adapter.AdviceAdapter
+import com.wdkl.app.ncs.callingbed.adapter.TransactionItemAdapter
+import com.wdkl.app.ncs.callingbed.databinding.YzViewLayBinding
+import com.wdkl.app.ncs.callingbed.launch.CallingbedLaunch
+
+import com.wdkl.ncs.android.lib.base.BaseActivity
+import com.wdkl.ncs.android.lib.utils.showMessage
+import com.wdkl.ncs.android.middleware.common.Constant
+import com.wdkl.ncs.android.middleware.common.MessageEvent
+import com.wdkl.ncs.android.middleware.logic.contract.callingbed.BedAdviceFragmentContract
+import com.wdkl.ncs.android.middleware.logic.contract.callingbed.UserTransactionContract
+import com.wdkl.ncs.android.middleware.logic.presenter.callingbed.BedAdviceFragmentPresenter
+import com.wdkl.ncs.android.middleware.logic.presenter.callingbed.UserTransactionPresenter
+import com.wdkl.ncs.android.middleware.model.dos.AdviceDO
+import com.wdkl.ncs.android.middleware.model.dos.UserTransactionDO
+
+import kotlinx.android.synthetic.main.view_title_layout.*
+import kotlinx.android.synthetic.main.yz_view_lay.*
+import org.greenrobot.eventbus.EventBus
+import org.greenrobot.eventbus.Subscribe
+import org.greenrobot.eventbus.ThreadMode
+
+/**
+ * 推送消息列表
+ * */
+class PushMessageActivity : BaseActivity<UserTransactionPresenter, YzViewLayBinding>(), UserTransactionContract.View ,TransactionItemAdapter.OnItemTimeClickListener{
+
+    private val TAG = "DoctorsAdviceActivity"
+    private var pageNo = 1
+    private lateinit var adapter: TransactionItemAdapter
+
+    override fun getLayId(): Int {
+        return R.layout.yz_view_lay
+    }
+
+    override fun bindDagger() {
+        CallingbedLaunch.component.inject(this)
+    }
+
+    override fun init() {
+        showui()
+        adapter = TransactionItemAdapter(activity, ArrayList())
+        adapter.listener = this
+        val layoutManager = LinearLayoutManager(activity)
+        rv_advice_main_view.layoutManager = layoutManager
+        rv_advice_main_view.adapter = adapter
+
+        if (Constant.CUSTOM_ID != -1) {
+            presenter.loadTransactionByPage(pageNo, 2, Constant.CUSTOM_ID)
+        } else {
+            showMessage("no custom id")
+        }
+    }
+
+    override fun bindEvent() {
+
+        //返回上一层
+        view_title_layout_return.setOnClickListener {
+            view_title_layout_img.visibility = View.GONE
+            view_title_layout_tv_no.visibility =View.GONE
+            finish()
+        }
+        advice_refresh.setOnRefreshListener {
+            if (Constant.CUSTOM_ID != -1) {
+                pageNo = 1
+                presenter.loadTransactionByPage(pageNo, 2, Constant.CUSTOM_ID)
+            } else {
+                showMessage("no custom id")
+            }
+        }
+
+        advice_refresh.setOnLoadMoreListener {
+            if (Constant.CUSTOM_ID != -1) {
+                pageNo += 1
+                presenter.loadTransactionByPage(pageNo, 2, Constant.CUSTOM_ID)
+            } else {
+                showMessage("no custom id")
+            }
+        }
+        cost_previous_button.setOnClickListener {
+            if (Constant.CUSTOM_ID != -1) {
+                if (pageNo==1){
+                    return@setOnClickListener
+                }else{
+                    if (pageNo>=1){
+                        pageNo -= 1
+                    }else{
+                        showMessage(R.string.str_first_page)
+                    }
+                    presenter.loadTransactionByPage(pageNo, 10, Constant.CUSTOM_ID)
+                }
+            } else {
+                showMessage("no custom id")
+            }
+        }
+        cost_next_button.setOnClickListener {
+            if (Constant.CUSTOM_ID != -1) {
+                pageNo += 1
+                presenter.loadTransactionByPage(pageNo, 10, Constant.CUSTOM_ID)
+            } else {
+                showMessage("no custom id")
+            }
+        }
+    }
+
+    private fun showui(){
+        cost_button_ll.visibility = View.GONE
+        view_title_layout_tv_hospital_name.setText(R.string.str_back)
+        view_title_layout_img.visibility = View.VISIBLE
+        view_title_layout_tv_no.visibility = View.VISIBLE
+        view_title_layout_tv_no.text = getString(R.string.str_advice)
+        //网络图标
+        if ( Constant.network_state == 1){
+            view_title_layout_iv_wifi.visibility = View.VISIBLE
+            view_title_layout_iv_ethernet.visibility = View.GONE
+            view_title_layout_iv_wifi.setImageResource(R.mipmap.ic_wifi_success)
+        }else if ( Constant.network_state == 2){
+            view_title_layout_iv_wifi.visibility = View.GONE
+            view_title_layout_iv_ethernet.visibility = View.VISIBLE
+            view_title_layout_iv_ethernet.setImageResource(R.mipmap.ic_ethernet_success)
+        }else{
+            view_title_layout_iv_wifi.visibility = View.GONE
+            view_title_layout_iv_ethernet.visibility = View.VISIBLE
+            view_title_layout_iv_ethernet.setImageResource(R.mipmap.ic_ethernet_fail)
+        }
+        //蓝牙图标
+        if ( Constant.BT_state == 0){
+            view_title_layout_iv_bt.setImageResource(R.mipmap.ic_bt_success)
+        }
+        //白天/黑夜
+        if (Constant.day_state == 0){
+            view_title_layout_iv_day_night.setImageResource(R.mipmap.ic_daylight)
+        }else{
+            view_title_layout_iv_day_night.setImageResource(R.mipmap.ic_night)
+        }
+        view_title_layout_iv_tcp.setImageResource(R.mipmap.ic_tcp_success)
+    }
+
+    override fun destory() {
+
+    }
+    override fun onStart() {
+        EventBus.getDefault().register(this)
+        super.onStart()
+    }
+
+    override fun onStop() {
+        EventBus.getDefault().unregister(this)
+        super.onStop()
+    }
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    fun onMoonEvent(messageEvent: MessageEvent) {
+        if (Constant.EVENT_FINISHh == messageEvent.type) {
+            finish()
+
+        }
+    }
+
+    override fun showTransaction(advices: ArrayList<UserTransactionDO>) {
+        advice_refresh.finishRefresh()
+        advice_refresh.finishLoadMore()
+        if(advices.size>0){
+            yz_view_page.text= pageNo.toString()
+            adapter.updateCostData(advices, true)
+        }else{
+            showMessage(R.string.no_more_data)
+        }
+
+
+    }
+    override fun onTimeClick(transaction: UserTransactionDO) {
+        if (Constant.DEVICE_ID != -1 && transaction.id !=null) {
+            presenter.loadsetTransaction(transaction.id, Constant.DEVICE_ID, 1)
+        } else {
+            showMessage("no custom id")
+        }
+    }
+
+    override fun setTransaction(advices: ArrayList<UserTransactionDO>) {
+        if (advices!=null){
+            showMessage(R.string.transaction_set_2)
+        }else{
+            showMessage(R.string.transaction_set_3)
+        }
+
+    }
+
+    override fun onNoNet() {
+        showMessage("none network")
+        advice_refresh.finishRefresh()
+        advice_refresh.finishLoadMore()
+    }
+
+    override fun onError(message: String, type: Int) {
+        advice_refresh.finishRefresh()
+        advice_refresh.finishLoadMore()
+    }
+
+    override fun complete(message: String, type: Int) {
+
+    }
+
+    override fun start() {
+
+    }
+
+    override fun networkMonitor(state: NetState) {
+
+    }
+
+
+
+
+}

+ 220 - 0
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/activity/UserTransactionActivity.kt

@@ -0,0 +1,220 @@
+package com.wdkl.app.ncs.callingbed.activity
+
+import android.view.View
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.enation.javashop.net.engine.model.NetState
+import com.wdkl.app.ncs.callingbed.R
+import com.wdkl.app.ncs.callingbed.adapter.AdviceAdapter
+import com.wdkl.app.ncs.callingbed.adapter.TransactionItemAdapter
+import com.wdkl.app.ncs.callingbed.databinding.YzViewLayBinding
+import com.wdkl.app.ncs.callingbed.launch.CallingbedLaunch
+
+import com.wdkl.ncs.android.lib.base.BaseActivity
+import com.wdkl.ncs.android.lib.utils.showMessage
+import com.wdkl.ncs.android.middleware.common.Constant
+import com.wdkl.ncs.android.middleware.common.MessageEvent
+import com.wdkl.ncs.android.middleware.logic.contract.callingbed.BedAdviceFragmentContract
+import com.wdkl.ncs.android.middleware.logic.contract.callingbed.UserTransactionContract
+import com.wdkl.ncs.android.middleware.logic.presenter.callingbed.BedAdviceFragmentPresenter
+import com.wdkl.ncs.android.middleware.logic.presenter.callingbed.UserTransactionPresenter
+import com.wdkl.ncs.android.middleware.model.dos.AdviceDO
+import com.wdkl.ncs.android.middleware.model.dos.UserTransactionDO
+
+import kotlinx.android.synthetic.main.view_title_layout.*
+import kotlinx.android.synthetic.main.yz_view_lay.*
+import org.greenrobot.eventbus.EventBus
+import org.greenrobot.eventbus.Subscribe
+import org.greenrobot.eventbus.ThreadMode
+
+/**
+ * 用户事务
+ * */
+class UserTransactionActivity : BaseActivity<UserTransactionPresenter, YzViewLayBinding>(), UserTransactionContract.View ,TransactionItemAdapter.OnItemTimeClickListener{
+
+    private val TAG = "DoctorsAdviceActivity"
+    private var pageNo = 1
+    private lateinit var adapter: TransactionItemAdapter
+
+    override fun getLayId(): Int {
+        return R.layout.yz_view_lay
+    }
+
+    override fun bindDagger() {
+        CallingbedLaunch.component.inject(this)
+    }
+
+    override fun init() {
+        showui()
+        adapter = TransactionItemAdapter(activity, ArrayList())
+        adapter.listener = this
+        val layoutManager = LinearLayoutManager(activity)
+        rv_advice_main_view.layoutManager = layoutManager
+        rv_advice_main_view.adapter = adapter
+
+        if (Constant.CUSTOM_ID != -1) {
+            presenter.loadTransactionByPage(pageNo, 2, Constant.CUSTOM_ID)
+        } else {
+            showMessage("no custom id")
+        }
+    }
+
+    override fun bindEvent() {
+
+        //返回上一层
+        view_title_layout_return.setOnClickListener {
+            view_title_layout_img.visibility = View.GONE
+            view_title_layout_tv_no.visibility =View.GONE
+            finish()
+        }
+        advice_refresh.setOnRefreshListener {
+            if (Constant.CUSTOM_ID != -1) {
+                pageNo = 1
+                presenter.loadTransactionByPage(pageNo, 2, Constant.CUSTOM_ID)
+            } else {
+                showMessage("no custom id")
+            }
+        }
+
+        advice_refresh.setOnLoadMoreListener {
+            if (Constant.CUSTOM_ID != -1) {
+                pageNo += 1
+                presenter.loadTransactionByPage(pageNo, 2, Constant.CUSTOM_ID)
+            } else {
+                showMessage("no custom id")
+            }
+        }
+        cost_previous_button.setOnClickListener {
+            if (Constant.CUSTOM_ID != -1) {
+                if (pageNo==1){
+                    return@setOnClickListener
+                }else{
+                    if (pageNo>=1){
+                        pageNo -= 1
+                    }else{
+                        showMessage(R.string.str_first_page)
+                    }
+                    presenter.loadTransactionByPage(pageNo, 10, Constant.CUSTOM_ID)
+                }
+            } else {
+                showMessage("no custom id")
+            }
+        }
+        cost_next_button.setOnClickListener {
+            if (Constant.CUSTOM_ID != -1) {
+                pageNo += 1
+                presenter.loadTransactionByPage(pageNo, 10, Constant.CUSTOM_ID)
+            } else {
+                showMessage("no custom id")
+            }
+        }
+    }
+
+    private fun showui(){
+        cost_button_ll.visibility = View.GONE
+        view_title_layout_tv_hospital_name.setText(R.string.str_back)
+        view_title_layout_img.visibility = View.VISIBLE
+        view_title_layout_tv_no.visibility = View.VISIBLE
+        view_title_layout_tv_no.text = getString(R.string.str_advice)
+        //网络图标
+        if ( Constant.network_state == 1){
+            view_title_layout_iv_wifi.visibility = View.VISIBLE
+            view_title_layout_iv_ethernet.visibility = View.GONE
+            view_title_layout_iv_wifi.setImageResource(R.mipmap.ic_wifi_success)
+        }else if ( Constant.network_state == 2){
+            view_title_layout_iv_wifi.visibility = View.GONE
+            view_title_layout_iv_ethernet.visibility = View.VISIBLE
+            view_title_layout_iv_ethernet.setImageResource(R.mipmap.ic_ethernet_success)
+        }else{
+            view_title_layout_iv_wifi.visibility = View.GONE
+            view_title_layout_iv_ethernet.visibility = View.VISIBLE
+            view_title_layout_iv_ethernet.setImageResource(R.mipmap.ic_ethernet_fail)
+        }
+        //蓝牙图标
+        if ( Constant.BT_state == 0){
+            view_title_layout_iv_bt.setImageResource(R.mipmap.ic_bt_success)
+        }
+        //白天/黑夜
+        if (Constant.day_state == 0){
+            view_title_layout_iv_day_night.setImageResource(R.mipmap.ic_daylight)
+        }else{
+            view_title_layout_iv_day_night.setImageResource(R.mipmap.ic_night)
+        }
+        view_title_layout_iv_tcp.setImageResource(R.mipmap.ic_tcp_success)
+    }
+
+    override fun destory() {
+
+    }
+    override fun onStart() {
+        EventBus.getDefault().register(this)
+        super.onStart()
+    }
+
+    override fun onStop() {
+        EventBus.getDefault().unregister(this)
+        super.onStop()
+    }
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    fun onMoonEvent(messageEvent: MessageEvent) {
+        if (Constant.EVENT_FINISHh == messageEvent.type) {
+            finish()
+
+        }
+    }
+
+    override fun showTransaction(advices: ArrayList<UserTransactionDO>) {
+        advice_refresh.finishRefresh()
+        advice_refresh.finishLoadMore()
+        if(advices.size>0){
+            yz_view_page.text= pageNo.toString()
+            adapter.updateCostData(advices, true)
+        }else{
+            showMessage(R.string.no_more_data)
+        }
+
+
+    }
+    override fun onTimeClick(transaction: UserTransactionDO) {
+        if (Constant.DEVICE_ID != -1 && transaction.id !=null) {
+            presenter.loadsetTransaction(transaction.id, Constant.DEVICE_ID, 1)
+        } else {
+            showMessage("no custom id")
+        }
+    }
+
+    override fun setTransaction(advices: ArrayList<UserTransactionDO>) {
+        if (advices!=null){
+            showMessage(R.string.transaction_set_2)
+        }else{
+            showMessage(R.string.transaction_set_3)
+        }
+
+    }
+
+    override fun onNoNet() {
+        showMessage("none network")
+        advice_refresh.finishRefresh()
+        advice_refresh.finishLoadMore()
+    }
+
+    override fun onError(message: String, type: Int) {
+        advice_refresh.finishRefresh()
+        advice_refresh.finishLoadMore()
+    }
+
+    override fun complete(message: String, type: Int) {
+
+    }
+
+    override fun start() {
+
+    }
+
+    override fun networkMonitor(state: NetState) {
+
+    }
+
+
+
+
+}

+ 143 - 0
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/adapter/TransactionItemAdapter.kt

@@ -0,0 +1,143 @@
+package com.wdkl.app.ncs.callingbed.adapter
+
+import android.content.Context
+
+import android.text.TextUtils
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.Button
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.wdkl.app.ncs.callingbed.R
+import com.wdkl.ncs.android.lib.utils.TimeHandle
+import com.wdkl.ncs.android.middleware.model.dos.UserTransactionDO
+import com.wdkl.ncs.android.middleware.model.vo.CustomerFeeConfigVO
+import com.wdkl.ncs.android.middleware.utils.StringUtil
+
+class TransactionItemAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder> {
+
+    private var context: Context
+    private var costData: ArrayList<UserTransactionDO>
+     private val HEADER_VIEW = 0
+     private val ITEM_VIEW = 1
+
+    interface OnItemTimeClickListener {
+        fun onTimeClick(transaction: UserTransactionDO)
+    }
+
+    var listener: OnItemTimeClickListener? = null
+
+    constructor(context: Context, data: ArrayList<UserTransactionDO>) {
+        this.context = context
+        this.costData = data
+    }
+
+
+    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
+        return when (viewType) {
+            HEADER_VIEW -> {
+                val headerView = LayoutInflater.from(parent.context).inflate(R.layout.transaction_fy_view, parent, false)
+                HeaderViewHolder(headerView)
+            }
+            else -> {
+                val itemView = LayoutInflater.from(parent.context).inflate(R.layout.transaction_view_item_lay, parent, false)
+                ItemViewHolder(itemView)
+            }
+        }
+
+    }
+
+    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
+        try {
+            when(holder.itemViewType) {
+                HEADER_VIEW -> {
+                    // 不需要为头部视图设置数据
+                    val headerViewHolder = holder as HeaderViewHolder
+                    val item = costData[position] // 减去头部视图占用的位置
+                    // 绑定数据到 itemViewHolder
+                    headerViewHolder.bind(item)
+                }
+                else -> {
+                    val itemViewHolder = holder as ItemViewHolder
+                    val item = costData[position-1] // 减去头部视图占用的位置
+                    // 绑定数据到 itemViewHolder
+                    itemViewHolder.bind(item)
+                }
+            }
+        } catch (e: Exception) {
+            //
+        }
+    }
+
+    override fun getItemCount(): Int {
+        return costData.size+1
+    }
+    override fun getItemViewType(position: Int): Int {
+        return if (position == 0) {
+            HEADER_VIEW
+        } else {
+            ITEM_VIEW
+        }
+    }
+
+    private inner class HeaderViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+//         在这里处理头部的视图逻辑
+        var feeTime : TextView =itemView.findViewById(R.id.cost_fy_view_time)
+
+        fun bind(item: UserTransactionDO) {
+            // 绑定数据到视图组件
+//            feeTime.text= TimeHandle.getDateTime(item.feeTime * 1000L, "yyyy-MM-dd")
+        }
+    }
+
+    private inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+        // 在这里处理普通项的视图逻辑
+        var cost_item_name : TextView =itemView.findViewById(R.id.transaction_item_name)
+        var cost_item_type : TextView =itemView.findViewById(R.id.transaction_item_time)
+        var cost_item_money : TextView =itemView.findViewById(R.id.transaction_item_type)
+        var cost_item_time : Button =itemView.findViewById(R.id.transaction_item_state)
+
+        init {
+            // 设置点击监听器
+            cost_item_time.setOnClickListener {
+                // 使用接口回调传递数据
+                listener?.onTimeClick(getItem(adapterPosition))
+            }
+        }
+        fun bind(item: UserTransactionDO) {
+            // 绑定数据到视图组件
+            cost_item_name.text= item.content
+            cost_item_type.text=TimeHandle.getDateTime(item.affair_plan_time * 1000L, "yyyy-MM-dd HH:mm")
+
+            if ( item.affair_state== 0){
+               //失败
+                cost_item_money.setText(R.string.transaction_set_3)
+                cost_item_time.setText(R.string.transaction_set_1)
+                cost_item_time.setBackgroundResource(R.drawable.shape_main_hos_txt_bg)
+            }else{
+                cost_item_money.setText(R.string.transaction_set_2)
+                cost_item_time.text=TimeHandle.getDateTime(item.affair_do_time * 1000L, "yyyy-MM-dd HH:mm")
+                cost_item_time.setBackground(null)
+
+            }
+
+
+        }
+        // 获取当前位置的item
+        private fun getItem(position: Int): UserTransactionDO {
+            return costData[position] // 确保你的Adapter有一个名为items的列表存储数据
+        }
+    }
+
+    fun updateCostData(data: List<UserTransactionDO>, clear: Boolean) {
+        if (clear) {
+            costData.clear()
+            costData.addAll(data)
+        } else {
+            costData.addAll(data)
+        }
+        notifyDataSetChanged()
+    }
+
+}

+ 4 - 0
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/di/CallingbedComponent.kt

@@ -48,6 +48,10 @@ interface CallingbedComponent {
 
     fun inject(activity: VideoActivity)
 
+    fun inject(activity: UserTransactionActivity)
+
+    fun inject(activity: PushMessageActivity)
+
     fun inject(fragment: MainFragment)
 
     fun inject(fragment: ApartmentFragment)

+ 111 - 0
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/dialog/HuliTiemDialogHelper.java

@@ -0,0 +1,111 @@
+package com.wdkl.app.ncs.callingbed.dialog;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.res.Configuration;
+import android.graphics.Color;
+import android.util.DisplayMetrics;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.TextView;
+
+import com.wdkl.app.ncs.callingbed.R;
+
+
+/**
+ * 护理时间弹窗
+ * */
+public class HuliTiemDialogHelper {
+
+    private static AlertDialog alertDialog;
+    private static int set_time;
+    public static void showDialog(Activity activity, boolean isconfirm,ClickListener clickListener) {
+
+        View contentView = LayoutInflater.from(activity).inflate(R.layout.nurse_huli_time_dialog, null);
+        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+        builder.setView(contentView);
+        Button huli_time_confirm_button = contentView.findViewById(R.id.huli_time_confirm_button);
+        if (!isconfirm){
+            huli_time_confirm_button.setText(R.string.exit_nursing);
+        }else {
+            huli_time_confirm_button.setText(R.string.enter_nursing);
+        }
+        // 定义 TextViews
+        TextView[] textViews = new TextView[]{
+                contentView.findViewById(R.id.nurse_time_tx_13),
+                contentView.findViewById(R.id.nurse_time_tx_14),
+                contentView.findViewById(R.id.nurse_time_tx_15),
+                contentView.findViewById(R.id.nurse_time_tx_16),
+                contentView.findViewById(R.id.nurse_time_tx_17),
+                contentView.findViewById(R.id.nurse_time_tx_18)
+        };
+        // 设置 TextViews 的点击事件
+        for (TextView textView : textViews) {
+            textView.setOnClickListener(v -> {
+                for (TextView tv : textViews) {
+                    if (tv == v) {
+                        // 设置选中 TextView 的样式
+                        tv.setBackgroundResource(R.drawable.shape_time_f_bg_d);
+                        tv.setTextColor(Color.parseColor("#0090ff"));
+
+                        int id = tv.getId();
+                        if (id == R.id.nurse_time_tx_13) {
+                            set_time = 10;  // 当点击的是 nurse_msg_tx_13
+                        } else if (id == R.id.nurse_time_tx_14) {
+                            set_time = 15;  // 当点击的是 nurse_msg_tx_14
+                        } else if (id == R.id.nurse_time_tx_15) {
+                            set_time = 20;  // 可以为其他 TextView 设置不同的值
+                        } else if (id == R.id.nurse_time_tx_16) {
+                            set_time = 25;
+                        } else if (id == R.id.nurse_time_tx_17) {
+                            set_time = 30;
+                        } else if (id == R.id.nurse_time_tx_18) {
+                            set_time = 35;
+                        }
+                    } else {
+                        // 重置其他 TextView 的样式
+                        tv.setBackgroundResource(R.drawable.shape_time_f_bg);
+                        tv.setTextColor(Color.parseColor("#B4B4B4"));
+                    }
+                }
+            });
+        }
+
+
+        huli_time_confirm_button.setOnClickListener(v -> {
+            if (alertDialog != null && alertDialog.isShowing()) {
+                alertDialog.dismiss();
+                clickListener.onClick(set_time);
+            }
+        });
+        alertDialog = builder.create();
+        alertDialog.setCanceledOnTouchOutside(true);
+        alertDialog.setCancelable(true);
+        alertDialog.show();
+
+        DisplayMetrics metrics = new DisplayMetrics();
+        activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
+        int screenWidth = metrics.widthPixels;
+        int orientation = activity.getResources().getConfiguration().orientation;
+        if (orientation == Configuration.ORIENTATION_PORTRAIT && screenWidth>600) {
+            try {
+                Window window = alertDialog.getWindow();
+                WindowManager.LayoutParams lp = window.getAttributes();
+                lp.width = 800;
+                lp.height = 650;
+                lp.gravity = Gravity.CENTER;
+                window.setAttributes(lp);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+    }
+    public interface ClickListener{
+        void onClick(int time);
+    }
+}

+ 48 - 23
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/fragment/NurseFragment.kt

@@ -6,12 +6,10 @@ import com.wdkl.app.ncs.callingbed.R
 import com.wdkl.app.ncs.callingbed.activity.CallingbedActivity
 import com.wdkl.app.ncs.callingbed.activity.SetHintActivity
 import com.wdkl.app.ncs.callingbed.databinding.CallingbedNurseMainBinding
-import com.wdkl.app.ncs.callingbed.dialog.ExitHuliDialogHelper
-import com.wdkl.app.ncs.callingbed.dialog.HuliDialogHelper
-import com.wdkl.app.ncs.callingbed.dialog.PatrolDialogHelper
-import com.wdkl.app.ncs.callingbed.dialog.PositioningDialogHelper
+import com.wdkl.app.ncs.callingbed.dialog.*
 import com.wdkl.app.ncs.callingbed.helper.SpeechUtil
 import com.wdkl.app.ncs.callingbed.launch.CallingbedLaunch
+import com.wdkl.app.ncs.callingbed.settings.SettingConfig
 import com.wdkl.app.ncs.callingbed.utils.SPUtils
 
 import com.wdkl.ncs.android.lib.base.BaseFragment
@@ -115,27 +113,54 @@ class NurseFragment : BaseFragment<NurseFragmentPresenter, CallingbedNurseMainBi
         }
         //进入护理
         nurse_main_3_ll.setOnClickListener {
-            HuliDialogHelper.showDialog(activity, isconfirm,object : HuliDialogHelper.ClickListener {
-                override fun onClick() {
-                    isconfirm = !isconfirm
-                    if (!isconfirm){
-                        nurse_main_3_ll.setBackgroundResource(R.drawable.shape_huli_dialog_bt_bg)
-                        nurse_main_3_img.setImageResource(R.mipmap.hu_y)
-                        nurse_top_3_tx.setTextColor(resources.getColor(R.color.white))
-                        nurse_top_3_tx.setText(R.string.nursing_title)
-                        nurse_main_3_tx.setTextColor(resources.getColor(R.color.white))
-                        (activity as CallingbedActivity).setHuli()
-                        YhUtil.sendReinforceResponsed(Constant.DEVICE_ID, id.toInt())
-                    }else{
-                        nurse_main_3_ll.setBackgroundResource(R.drawable.shape_bed_bg)
-                        nurse_main_3_img.setImageResource(R.mipmap.hu)
-                        nurse_top_3_tx.setTextColor(resources.getColor(R.color.black))
-                        nurse_top_3_tx.setText(R.string.enter_nursing)
-                        nurse_main_3_tx.setTextColor(resources.getColor(R.color.text_name_color))
+
+            val SetType = SettingConfig.getHuliTime(activity)
+            if (SetType==0){
+                HuliDialogHelper.showDialog(activity, isconfirm,object : HuliDialogHelper.ClickListener {
+                    override fun onClick() {
+                        isconfirm = !isconfirm
+                        if (!isconfirm){
+                            nurse_main_3_ll.setBackgroundResource(R.drawable.shape_huli_dialog_bt_bg)
+                            nurse_main_3_img.setImageResource(R.mipmap.hu_y)
+                            nurse_top_3_tx.setTextColor(resources.getColor(R.color.white))
+                            nurse_top_3_tx.setText(R.string.nursing_title)
+                            nurse_main_3_tx.setTextColor(resources.getColor(R.color.white))
+                            (activity as CallingbedActivity).setHuli(0)
+                            YhUtil.sendReinforceResponsed(Constant.DEVICE_ID, id.toInt())
+                        }else{
+                            nurse_main_3_ll.setBackgroundResource(R.drawable.shape_bed_bg)
+                            nurse_main_3_img.setImageResource(R.mipmap.hu)
+                            nurse_top_3_tx.setTextColor(resources.getColor(R.color.black))
+                            nurse_top_3_tx.setText(R.string.enter_nursing)
+                            nurse_main_3_tx.setTextColor(resources.getColor(R.color.text_name_color))
+                        }
+
                     }
+                })
+            }else{
+                HuliTiemDialogHelper.showDialog(activity,isconfirm,object : HuliTiemDialogHelper.ClickListener {
+                    override fun onClick(time: Int) {
+                        isconfirm = !isconfirm
+                        if (!isconfirm){
+                            nurse_main_3_ll.setBackgroundResource(R.drawable.shape_huli_dialog_bt_bg)
+                            nurse_main_3_img.setImageResource(R.mipmap.hu_y)
+                            nurse_top_3_tx.setTextColor(resources.getColor(R.color.white))
+                            nurse_top_3_tx.text=getString(R.string.nursing_title)
+                            nurse_main_3_tx.setTextColor(resources.getColor(R.color.white))
+                            (activity as CallingbedActivity).setHuli(time)
+                            YhUtil.sendReinforceResponsed(Constant.DEVICE_ID, id.toInt())
+                        }else{
+                            nurse_main_3_ll.setBackgroundResource(R.drawable.shape_bed_bg)
+                            nurse_main_3_img.setImageResource(R.mipmap.hu)
+                            nurse_top_3_tx.setTextColor(resources.getColor(R.color.black))
+                            nurse_top_3_tx.text=getString(R.string.enter_nursing)
+                            nurse_main_3_tx.setTextColor(resources.getColor(R.color.text_name_color))
+                        }
+
+                    }
+                })
+            }
 
-                }
-            })
         }
         //设置提示语
         nurse_main_4_ll.setOnClickListener {

+ 16 - 2
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/fragment/NursingWorkFragment.kt

@@ -11,8 +11,10 @@ import com.wdkl.app.ncs.callingbed.R
 import com.wdkl.app.ncs.callingbed.activity.*
 import com.wdkl.app.ncs.callingbed.adapter.DeviceMenuAdapter
 import com.wdkl.app.ncs.callingbed.databinding.NursingWorkLayBinding
+import com.wdkl.app.ncs.callingbed.dialog.HuliTiemDialogHelper
 import com.wdkl.app.ncs.callingbed.dialog.SystemDialogHelper
 import com.wdkl.app.ncs.callingbed.launch.CallingbedLaunch
+import com.wdkl.app.ncs.callingbed.settings.SettingConfig
 import com.wdkl.ncs.android.lib.base.BaseFragment
 import com.wdkl.ncs.android.lib.utils.showMessage
 import com.wdkl.ncs.android.lib.vo.filter
@@ -193,8 +195,16 @@ class NursingWorkFragment : BaseFragment<BedNursingWorkFragmentPresenter, Nursin
                     activity.startActivity(intent)
                 }else if (allOrders.get(keyId).act_name.equals("huli")){
                     //护理状态
-
-                    (activity as CallingbedActivity).setHuli()
+                    val SetType = SettingConfig.getHuliTime(activity)
+                    if (SetType==0){
+                        (activity as CallingbedActivity).setHuli(0)
+                    }else{
+                        HuliTiemDialogHelper.showDialog(activity,true,object : HuliTiemDialogHelper.ClickListener {
+                            override fun onClick(time: Int) {
+                                (activity as CallingbedActivity).setHuli(time)
+                            }
+                        })
+                    }
                 }else if (allOrders.get(keyId).act_name.equals("HospitalInfoActivity")){
                     //医院介绍
                     val intent = Intent()
@@ -234,6 +244,10 @@ class NursingWorkFragment : BaseFragment<BedNursingWorkFragmentPresenter, Nursin
                     intent.putExtra("video_url", allOrders.get(keyId).url)
                     intent.putExtra("title", allOrders.get(keyId).name)
                     activity.startActivity(intent)
+                }else if (allOrders.get(keyId).act_name.equals("customerAffairActivity")) {
+                    val intent = Intent()
+                    intent.setClass(activity, UserTransactionActivity::class.java)
+                    activity.startActivity(intent)
                 }
 
             } else if (allOrders.get(keyId).type.equals("SYS")){

+ 2 - 0
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/hardware/HardWareFactory.java

@@ -34,6 +34,8 @@ public  class HardWareFactory {
                 hardTools = new ZKEHardTools();
             }else if(BuildConfig.flag.equals(Constant.DEV_W_PW_10)) {
                 hardTools = new PWHardTools();
+            }else if(BuildConfig.flag.equals(Constant.DEV_W_DCHK_10)) {
+                hardTools = new PWHardTools();
             }
         }
         return hardTools ;

+ 143 - 0
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/hardware/imp/DCHKHardTools.java

@@ -0,0 +1,143 @@
+package com.wdkl.app.ncs.callingbed.hardware.imp;
+
+import android.app.AlarmManager;
+import android.app.Application;
+import android.app.zhyl.ZhylManager;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.RemoteException;
+import android.os.SystemClock;
+import android.util.Log;
+
+
+import com.wdkl.app.ncs.callingbed.activity.AppUpdateActivity;
+import com.wdkl.app.ncs.callingbed.activity.CallingbedActivationActivity;
+import com.wdkl.app.ncs.callingbed.activity.CallingbedActivity;
+import com.wdkl.app.ncs.callingbed.hardware.HardTools;
+import com.wdkl.app.ncs.callingbed.helper.AppUpdateHelper;
+import com.wdkl.app.ncs.callingbed.helper.NetHelper;
+import com.wdkl.app.ncs.callingbed.helper.SOSHelper;
+import com.wdkl.app.ncs.callingbed.settings.SettingConfig;
+import com.wdkl.ncs.android.lib.base.BaseApplication;
+import com.wdkl.ncs.android.middleware.common.Constant;
+import com.wdkl.ncs.android.middleware.utils.AppUtil;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.TimeZone;
+
+import serialporttest.utils.SerialPortUtil433;
+
+/**
+ * 普威硬件控制类
+ *
+ * */
+public class DCHKHardTools extends HardTools {
+
+    public static final String HARDWDT_SERVICE = "DCHKHardTools";
+    private Application app;
+
+
+    private static class DCHKHardToolsHolder{
+        private final  static DCHKHardTools dchkHardTools = new DCHKHardTools();
+    }
+
+    public static DCHKHardTools getInstance(){
+        return DCHKHardToolsHolder.dchkHardTools;
+    }
+
+    @Override
+    public void init(CallingbedActivationActivity callingbedActivationActivity) {
+
+    }
+
+    @Override
+    public void unInit() {
+
+    }
+    @Override
+    public void startbar(Boolean is) {
+        super.startbar(is);
+    }
+
+    @Override
+    public void resetDevice() {
+
+    }
+    @Override
+    public void resetDevicex(Application application) {
+        AppUpdateHelper.reboot(application);
+    }
+    @Override
+    public void Registration(Context context) {
+        //获取mac地址
+        Constant.LOCAL_MAC = NetHelper.getInstance().getMacAddress();
+        Constant.DEVICE_REGISTER_ID = Constant.LOCAL_MAC;
+    }
+    @Override
+    public void setTime(Context context, long timeMills, String timeZone) {
+        AppUtil.setSystemTime(context, timeMills, timeZone);
+        super.setTime(context, timeMills, timeZone);
+    }
+
+    @Override
+    public void setSerial(CallingbedActivity callingbedActivity) {
+
+        callingbedActivity.setSerialListener();
+    }
+
+    @Override
+    public void uninstallApp(Context context, boolean isuninstall, String name) {
+        //卸载原来二代系统apk
+        if (isuninstall) {
+            Thread thread = new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    // 在子线程中执行的代码
+                    if (checkAppExist(context,name)) {
+                        AppUtil.uninstallApp(name);
+                    }
+                }
+            });
+        }
+    }
+
+    @Override
+    public void setSOSStart() {
+        SOSHelper.sosStart();
+    }
+
+    @Override
+    public void setSOSStop() {
+        SOSHelper.sosStop();
+    }
+
+    @Override
+    public void setDoorLight(int type) {
+    }
+
+    @Override
+    public void installApk(AppUpdateActivity context) {
+    }
+
+    @Override
+    public void startInstallApk(AppUpdateActivity context) {
+
+    }
+
+    private boolean checkAppExist(Context context, String name) {
+        PackageManager packageManager = context.getPackageManager();
+        List<PackageInfo> packageInfoList = packageManager.getInstalledPackages(0);
+        boolean appExist = false;
+        for (PackageInfo pInfo : packageInfoList) {
+            if (name.equals(pInfo.packageName)) {
+                appExist = true;
+                break;
+            }
+        }
+        Log.e("wdkl_app", "callingdoor app exist: " + appExist);
+        return appExist;
+    }
+}

+ 10 - 0
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/settings/SettingConfig.java

@@ -106,6 +106,9 @@ public class SettingConfig {
 
     private static final String KEY_SP_SYNC_NTP_TIME = "KEY_SP_SYNC_NTP_TIME";
 
+    //是否开启护理时间选择
+    private static final String KEY_SP_HULI_TIME = "KEY_SP_HULI_TIME";
+
     public static void setSwCall(Context context, boolean on) {
         getEditor(context).putBoolean(KEY_SP_SW_CALL, on).apply();
     }
@@ -113,6 +116,13 @@ public class SettingConfig {
     public static boolean getSwCall(Context context) {
         return getSP(context).getBoolean(KEY_SP_SW_CALL, true);
     }
+    public static void setHuliTime(Context context, int mode) {
+        getEditor(context).putInt(KEY_SP_HULI_TIME, mode).apply();
+    }
+
+    public static int getHuliTime(Context context) {
+        return getSP(context).getInt(KEY_SP_HULI_TIME, 0);
+    }
 
     public static void setScene(Context context, int mode) {
         getEditor(context).putInt(KEY_SP_Scene_type, mode).apply();

BIN
android_bed/src/main/jniLibs/arm64-v8a/libJNI1.so


BIN
android_bed/src/main/jniLibs/armeabi-v7a/libJNI1.so


BIN
android_bed/src/main/jniLibs/x86/libJNI1.so


+ 55 - 1
android_bed/src/main/res/layout-land/callingbed_device_sys.xml

@@ -258,14 +258,68 @@
                         android:drawablePadding="@dimen/d5"
                         android:textSize="14px" />
                 </RadioGroup>
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content">
 
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="*"
+                        android:textSize="@dimen/font_size_18"
+                        android:textColor="@color/txt_number"
+                        android:textStyle="bold"
+                        android:layout_marginLeft="@dimen/d28"
+                        />
 
+                    <TextView
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:text="@string/huli_time_set_mode"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/font_size_18"
+                        android:textStyle="bold" />
 
+                </LinearLayout>
 
-            </LinearLayout>
+                <RadioGroup
+                    android:id="@+id/device_huli_group_time"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d24"
+                    android:layout_marginTop="@dimen/d10"
+                    android:layout_marginBottom="@dimen/d20"
+                    android:orientation="horizontal">
+
+                    <RadioButton
+                        android:id="@+id/device_huli_time_on"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/str_yes"
+                        android:textColor="@drawable/radio_button_selector_txt2"
+                        android:button="@null"
+                        android:drawableLeft="@drawable/radio_button_selector_bg2"
+                        android:drawablePadding="@dimen/d5"
+                        android:textSize="14px" />
+
+                    <RadioButton
+                        android:id="@+id/device_huli_time_off"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/str_no"
+                        android:textColor="@drawable/radio_button_selector_txt2"
+                        android:layout_marginLeft="@dimen/d10"
+                        android:button="@null"
+                        android:drawableLeft="@drawable/radio_button_selector_bg2"
+                        android:drawablePadding="@dimen/d5"
+                        android:textSize="14px" />
+                </RadioGroup>
 
 
 
+            </LinearLayout>
+
+
             <LinearLayout
                 android:layout_below="@+id/ll_device_config_view_3"
                 android:layout_toRightOf="@+id/ll_device_config_view_2"

+ 1 - 0
android_bed/src/main/res/layout-land/yz_view_lay.xml

@@ -31,6 +31,7 @@
     </com.scwang.smartrefresh.layout.SmartRefreshLayout>
 
     <LinearLayout
+        android:id="@+id/cost_button_ll"
         android:layout_width="match_parent"
         android:layout_height="@dimen/d80"
         android:layout_marginTop="@dimen/d23"

+ 88 - 27
android_bed/src/main/res/layout/callingbed_device_sys.xml

@@ -201,7 +201,10 @@
 
                 <LinearLayout
                     android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:layout_marginTop="@dimen/d20"
+                    >
 
                     <TextView
                         android:layout_width="wrap_content"
@@ -210,53 +213,111 @@
                         android:textSize="@dimen/font_size_18"
                         android:textColor="@color/txt_number"
                         android:textStyle="bold"
-                        android:layout_marginTop="@dimen/d18"
                         android:layout_marginLeft="@dimen/d28"
                         />
 
                     <TextView
-                        android:layout_width="match_parent"
+                        android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:layout_marginTop="20dp"
                         android:text="@string/str_device_selection_window"
                         android:textColor="@color/black"
                         android:textSize="@dimen/font_size_18"
                         android:textStyle="bold" />
 
+                    <RadioGroup
+                        android:id="@+id/device_sys_group_window"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/d24"
+                        android:layout_gravity="center"
+                        android:orientation="horizontal">
+
+                        <RadioButton
+                            android:id="@+id/device_sys_radio_window_on"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/str_device_sys_window_on"
+                            android:textColor="@drawable/radio_button_selector_txt"
+                            android:button="@null"
+                            android:drawableLeft="@drawable/radio_button_selector_bg"
+                            android:drawablePadding="@dimen/d5"
+                            android:textSize="14px" />
+
+                        <RadioButton
+                            android:id="@+id/device_sys_radio_window_off"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/str_device_sys_window_off"
+                            android:textColor="@drawable/radio_button_selector_txt"
+                            android:layout_marginLeft="@dimen/d10"
+                            android:button="@null"
+                            android:drawableLeft="@drawable/radio_button_selector_bg"
+                            android:drawablePadding="@dimen/d5"
+                            android:textSize="14px" />
+                    </RadioGroup>
+
                 </LinearLayout>
 
-                <RadioGroup
-                    android:id="@+id/device_sys_group_window"
+
+
+                <LinearLayout
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/d24"
-                    android:layout_marginTop="@dimen/d10"
+                    android:orientation="horizontal"
+                    android:layout_marginTop="@dimen/d20"
                     android:layout_marginBottom="@dimen/d20"
-                    android:orientation="horizontal">
+                    >
 
-                    <RadioButton
-                        android:id="@+id/device_sys_radio_window_on"
+                    <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:text="@string/str_device_sys_window_on"
-                        android:textColor="@drawable/radio_button_selector_txt"
-                        android:button="@null"
-                        android:drawableLeft="@drawable/radio_button_selector_bg"
-                        android:drawablePadding="@dimen/d5"
-                        android:textSize="14px" />
+                        android:text="*"
+                        android:textSize="@dimen/font_size_18"
+                        android:textColor="@color/txt_number"
+                        android:textStyle="bold"
+                        android:layout_marginLeft="@dimen/d28"
+                        />
 
-                    <RadioButton
-                        android:id="@+id/device_sys_radio_window_off"
+                    <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:text="@string/str_device_sys_window_off"
-                        android:textColor="@drawable/radio_button_selector_txt"
-                        android:layout_marginLeft="@dimen/d10"
-                        android:button="@null"
-                        android:drawableLeft="@drawable/radio_button_selector_bg"
-                        android:drawablePadding="@dimen/d5"
-                        android:textSize="14px" />
-                </RadioGroup>
+                        android:text="@string/huli_time_set_mode"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/font_size_18"
+                        android:textStyle="bold" />
+
+                    <RadioGroup
+                        android:id="@+id/device_huli_group_time"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/d24"
+                        android:layout_gravity="center"
+                        android:orientation="horizontal">
+
+                        <RadioButton
+                            android:id="@+id/device_huli_time_on"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/str_yes"
+                            android:textColor="@drawable/radio_button_selector_txt2"
+                            android:button="@null"
+                            android:drawableLeft="@drawable/radio_button_selector_bg2"
+                            android:drawablePadding="@dimen/d5"
+                            android:textSize="14px" />
+
+                        <RadioButton
+                            android:id="@+id/device_huli_time_off"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/str_no"
+                            android:textColor="@drawable/radio_button_selector_txt2"
+                            android:layout_marginLeft="@dimen/d10"
+                            android:button="@null"
+                            android:drawableLeft="@drawable/radio_button_selector_bg2"
+                            android:drawablePadding="@dimen/d5"
+                            android:textSize="14px" />
+                    </RadioGroup>
+                </LinearLayout>
 
 
 

+ 151 - 0
android_bed/src/main/res/layout/nurse_huli_time_dialog.xml

@@ -0,0 +1,151 @@
+<?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:gravity="center"
+    android:background="@android:color/transparent">
+
+
+    <RelativeLayout
+        android:layout_width="481dp"
+        android:layout_height="@dimen/d330"
+        android:background="@drawable/shape_bed_bg"
+        android:orientation="vertical"
+        >
+
+        <LinearLayout
+            android:id="@+id/nurse_time_tx_11"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:layout_marginTop="@dimen/d10"
+            >
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:background="@mipmap/hul_time_log"
+                android:layout_marginRight="@dimen/d10"
+
+                />
+
+            <TextView
+                android:id="@+id/nurse_time_tx_12"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_toRightOf="@+id/nurse_msg_tx_11"
+                android:text="@string/str_hint_time"
+                android:textSize="@dimen/font_size_18"
+                android:textColor="@color/black"
+                android:textStyle="bold"
+                />
+        </LinearLayout>
+
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_below="@+id/nurse_time_tx_11"
+            android:layout_centerHorizontal="true"
+            android:gravity="center"
+            >
+            <TextView
+                android:id="@+id/nurse_time_tx_13"
+                android:layout_width="@dimen/d150"
+                android:layout_height="@dimen/d48"
+                android:gravity="center"
+                android:text="@string/time_10min"
+                android:textSize="@dimen/font_size_16"
+                android:textColor="@color/text_name_color"
+                android:layout_marginTop="@dimen/d20"
+                android:layout_marginRight="@dimen/d10"
+                android:background="@drawable/shape_time_f_bg"
+                />
+            <TextView
+                android:id="@+id/nurse_time_tx_14"
+                android:layout_width="@dimen/d150"
+                android:layout_height="@dimen/d48"
+                android:layout_below="@+id/nurse_time_tx_13"
+                android:gravity="center"
+                android:text="@string/time_30min"
+                android:textSize="@dimen/font_size_16"
+                android:textColor="@color/text_name_color"
+                android:layout_marginTop="@dimen/d16"
+                android:layout_marginRight="@dimen/d10"
+                android:background="@drawable/shape_time_f_bg"
+                />
+            <TextView
+                android:id="@+id/nurse_time_tx_15"
+                android:layout_width="@dimen/d150"
+                android:layout_height="@dimen/d48"
+                android:layout_below="@+id/nurse_time_tx_14"
+                android:gravity="center"
+                android:text="@string/time_90min"
+                android:textSize="@dimen/font_size_16"
+                android:textColor="@color/text_name_color"
+                android:layout_marginTop="@dimen/d16"
+                android:layout_marginRight="@dimen/d10"
+                android:background="@drawable/shape_time_f_bg"
+                />
+            <TextView
+                android:id="@+id/nurse_time_tx_16"
+                android:layout_width="@dimen/d150"
+                android:layout_height="@dimen/d48"
+                android:layout_toRightOf="@+id/nurse_time_tx_13"
+                android:gravity="center"
+                android:text="@string/time_15min"
+                android:textSize="@dimen/font_size_16"
+                android:textColor="@color/text_name_color"
+                android:layout_marginTop="@dimen/d20"
+                android:layout_marginLeft="@dimen/d10"
+                android:background="@drawable/shape_time_f_bg"
+                />
+            <TextView
+                android:id="@+id/nurse_time_tx_17"
+                android:layout_width="@dimen/d150"
+                android:layout_height="@dimen/d48"
+                android:layout_below="@+id/nurse_time_tx_13"
+                android:layout_toRightOf="@+id/nurse_time_tx_14"
+                android:gravity="center"
+                android:text="@string/time_60min"
+                android:textSize="@dimen/font_size_16"
+                android:textColor="@color/text_name_color"
+                android:layout_marginTop="@dimen/d16"
+                android:layout_marginLeft="@dimen/d10"
+                android:background="@drawable/shape_time_f_bg"
+                />
+            <TextView
+                android:id="@+id/nurse_time_tx_18"
+                android:layout_width="@dimen/d150"
+                android:layout_height="@dimen/d48"
+                android:layout_below="@+id/nurse_time_tx_14"
+                android:layout_toRightOf="@+id/nurse_time_tx_15"
+                android:gravity="center"
+                android:text="@string/time_120min"
+                android:textSize="@dimen/font_size_16"
+                android:textColor="@color/text_name_color"
+                android:layout_marginTop="@dimen/d16"
+                android:layout_marginLeft="@dimen/d10"
+                android:background="@drawable/shape_time_f_bg"
+                />
+
+        </RelativeLayout>
+
+
+
+        <Button
+            android:id="@+id/huli_time_confirm_button"
+            android:layout_width="@dimen/d176"
+            android:layout_height="@dimen/d48"
+            android:layout_marginTop="@dimen/d24"
+            android:layout_marginBottom="@dimen/d15"
+            android:layout_alignParentBottom="true"
+            android:layout_centerHorizontal="true"
+            android:gravity="center"
+            android:background="@drawable/shape_huli_dialog_bt_bg"
+            android:text="@string/str_enter_medical_care"
+            android:textSize="16sp"
+            android:textColor="@drawable/selector_bottom_btn_text_color"/>
+
+    </RelativeLayout>
+</LinearLayout>

+ 51 - 0
android_bed/src/main/res/layout/push_messg_view.xml

@@ -0,0 +1,51 @@
+<?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="wrap_content"
+    android:background="#EAF2F9"
+    android:orientation="vertical"
+    >
+
+    <LinearLayout
+        android:id="@+id/push_message_view_ll_top"
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:background="@drawable/shape_cost_fy_view_top_bg"
+        android:gravity="center_vertical">
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:text="@string/push_message_name"
+            android:textSize="14sp"
+            android:gravity="center"
+            android:textColor="@color/white"/>
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:text="@string/push_message_time"
+            android:textSize="14sp"
+            android:gravity="center"
+            android:textColor="@color/white"/>
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:text="@string/push_message_type"
+            android:textSize="14sp"
+            android:gravity="center"
+            android:textColor="@color/white"/>
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:text="@string/transaction_set"
+            android:textSize="14sp"
+            android:gravity="center"
+            android:textColor="@color/white"/>
+
+    </LinearLayout>
+
+</LinearLayout>

+ 63 - 0
android_bed/src/main/res/layout/transaction_fy_view.xml

@@ -0,0 +1,63 @@
+<?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="wrap_content"
+    android:background="#EAF2F9"
+    android:orientation="vertical"
+    >
+    <TextView
+        android:id="@+id/cost_fy_view_time"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/d8"
+        android:layout_marginLeft="@dimen/d5"
+        android:layout_marginBottom="@dimen/d5"
+        android:text="--"
+        android:textSize="14sp"
+        android:visibility="gone"
+        android:textColor="@color/black"/>
+
+
+    <LinearLayout
+        android:id="@+id/cost_fy_view_ll_top"
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:background="@drawable/shape_cost_fy_view_top_bg"
+        android:gravity="center_vertical">
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:text="@string/transaction_name"
+            android:textSize="14sp"
+            android:gravity="center"
+            android:textColor="@color/white"/>
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:text="@string/transaction_time"
+            android:textSize="14sp"
+            android:gravity="center"
+            android:textColor="@color/white"/>
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:text="@string/transaction_type"
+            android:textSize="14sp"
+            android:gravity="center"
+            android:textColor="@color/white"/>
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:text="@string/transaction_set"
+            android:textSize="14sp"
+            android:gravity="center"
+            android:textColor="@color/white"/>
+
+    </LinearLayout>
+
+</LinearLayout>

+ 72 - 0
android_bed/src/main/res/layout/transaction_view_item_lay.xml

@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:id="@+id/transaction_view_ll_top"
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:background="@color/white"
+        android:gravity="center_vertical">
+
+        <TextView
+            android:id="@+id/transaction_item_name"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:text="--"
+            android:textSize="14sp"
+            android:gravity="center"
+            android:textColor="@color/black"/>
+        <TextView
+            android:id="@+id/transaction_item_time"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:text="-"
+            android:textSize="14sp"
+            android:gravity="center"
+            android:textColor="@color/black"/>
+        <TextView
+            android:id="@+id/transaction_item_type"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:text="-"
+            android:textSize="14sp"
+            android:gravity="center"
+            android:textColor="@color/black"/>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:gravity="center"
+            >
+            <Button
+                android:id="@+id/transaction_item_state"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="执行"
+                android:paddingRight="@dimen/d40"
+                android:paddingLeft="@dimen/d40"
+                android:paddingTop="@dimen/d8"
+                android:paddingBottom="@dimen/d8"
+                android:textSize="16sp"
+                android:gravity="center"
+                android:background="@drawable/shape_main_hos_txt_bg"
+                android:textColor="@color/white"/>
+
+        </LinearLayout>
+
+
+    </LinearLayout>
+
+    
+</LinearLayout>
+    
+</layout>

+ 3 - 1
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/activity/CallingHostActivationActivity.kt

@@ -391,8 +391,10 @@ class CallingHostActivationActivity  : BaseActivity<DevicePresenter, Callinghost
              presenter.loadData(Constant.DEVICE_REGISTER_ID!!)
              return
          }
+
+         val isgo = SettingConfig.getBoolTransfer(activity)
          //检查当前设备是否处于托管状态
-         if (data.transferId != null) {
+         if (data.transferId != null && isgo!=0) {
              //托管中
              TrusteeshipDialogHelper.showDialog(activity) {
                  if (System.currentTimeMillis() - clickTime < 10000) {

+ 1 - 1
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/activity/HostbedinfoActivity.kt

@@ -72,7 +72,7 @@ class HostbedinfoActivity : BaseActivity<BedHospitalInfoActivityPresenter, Activ
             }
             if(receivedFrame.nurseConfigDtos!=null){
                 for (nurseConfig in receivedFrame.nurseConfigDtos) {
-                    if (nurseConfig.nurseConfigName.equals("护理")  && nurseConfig.isBool_critical && StringUtil.notEmpty(nurseConfig.nurseColorRbg)){
+                    if (nurseConfig.nurseConfigName.equals("护理")  && nurseConfig.boolCritical && StringUtil.notEmpty(nurseConfig.nurseColorRbg)){
                         bed_info_huli_v.setBackgroundColor(Color.parseColor("#" + nurseConfig.nurseColorRbg))
                     }
                 }

+ 4 - 0
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/activity/NurseHomeActivity.kt

@@ -857,6 +857,10 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter, ActivityNewN
             } else {
                 SettingConfiguration.getInstance().transferDurationLeader = 30
             }
+            if (data.boolTransfer != null) {
+                SettingConfig.setBoolTransfer(activity, data.boolTransfer)
+            }
+
 
             SettingConfiguration.getInstance().doctorTitle = data.doctorTitle
             SettingConfiguration.getInstance().nurseTitle = data.nurseTitle

+ 1 - 1
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/adapter/FrameBeditemAdapter.kt

@@ -106,7 +106,7 @@ class FrameBeditemAdapter : RecyclerView.Adapter<FrameBeditemAdapter.BedViewHold
                         drawable?.setTint(rgbValue)
                         holder.bed_item_button.background = drawable
                     }
-                    if (nurseConfig.isBool_critical != null && nurseConfig.isBool_critical) {
+                    if (nurseConfig.boolCritical != null && nurseConfig.boolCritical) {
 
                         val drawableId: Int = context.resources.getIdentifier("sp_home_bed_item_t_bg", "drawable", context.packageName)
                         val drawable: Drawable? = ContextCompat.getDrawable(context, drawableId)

+ 1 - 1
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/adapter/FrameHomeBedItemAdapter.kt

@@ -93,7 +93,7 @@ class FrameHomeBedItemAdapter(var context: Context, val data: ArrayList<FrameBed
 
                 for (nurseConfig in itemData.nurseConfigDtos) {
 
-                    if (nurseConfig.isBool_critical!=null && nurseConfig.isBool_critical) {
+                    if (nurseConfig.boolCritical!=null && nurseConfig.boolCritical) {
 
                         if (!TextUtils.isEmpty(nurseConfig.nurseColorRbg)){
 

+ 1 - 1
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/adapter/MainFrameBedAdapter.kt

@@ -113,7 +113,7 @@ class MainFrameBedAdapter(var context: Context, val data: ArrayList<FrameBedVO>)
 
                 for (nurseConfig in itemData.nurseConfigDtos) {
 
-                    if (nurseConfig.isBool_critical!=null && nurseConfig.isBool_critical) {
+                    if (nurseConfig.boolCritical!=null && nurseConfig.boolCritical) {
 
                         if (!TextUtils.isEmpty(nurseConfig.nurseColorRbg)){
 

+ 3 - 1
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/MessageFragment.kt

@@ -27,7 +27,9 @@ import com.wdkl.ncs.android.middleware.utils.MessageEvent
 import kotlinx.android.synthetic.main.fragment_message.*
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
-
+/**
+ * 留言列表 Fragment
+ */
 class MessageFragment : BaseFragment<MessagePresenter, FragmentMessageBinding>(), MessageContract.View {
     var TAG = MessageFragment::class.java.getSimpleName()
 

+ 8 - 2
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/TrustManagementFragment.kt

@@ -12,6 +12,7 @@ import com.wdkl.ncs.android.component.nursehome.databinding.FragmentTrustManagem
 import com.wdkl.ncs.android.component.nursehome.dialog.CallDialogHelper
 import com.wdkl.ncs.android.component.nursehome.dialog.TrustDialogHelper
 import com.wdkl.ncs.android.component.nursehome.launch.NurseHomeLaunch
+import com.wdkl.ncs.android.component.nursehome.settingconfig.SettingConfig
 import com.wdkl.ncs.android.component.nursehome.util.AppUpdateHelper
 import com.wdkl.ncs.android.component.nursehome.util.RingPlayHelper
 import com.wdkl.ncs.android.component.nursehome.util.SpeechUtil
@@ -142,9 +143,14 @@ class TrustManagementFragment:BaseFragment<TrustManagementPresenter,FragmentTrus
         if (type == 1) {
             //托管成功
             showMessage(message)
-            AppTool.Time.delay(2000) {
-                AppUpdateHelper.restartApp(activity)
+            val isgo = SettingConfig.getBoolTransfer(activity)
+            if(isgo!=0){
+                AppTool.Time.delay(2000) {
+                    AppUpdateHelper.restartApp(activity)
+                }
             }
+
+
         }
     }
     /**

+ 10 - 0
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/settingconfig/SettingConfig.java

@@ -160,6 +160,16 @@ public class SettingConfig {
 
     //屏幕方向
     private static final String KEY_SP_window= "KEY_SP_window";
+    //托管时是否进入托管,1进入,0不进入
+    private static final String KEY_SP_BoolTransfer = "KEY_SP_BoolTransfer";
+
+    public static void setBoolTransfer(Context context, int mode) {
+        getEditor(context).putInt(KEY_SP_BoolTransfer, mode).apply();
+    }
+
+    public static int getBoolTransfer(Context context) {
+        return getSP(context).getInt(KEY_SP_BoolTransfer, 0);
+    }
 
     public static void setScene(Context context, int mode) {
         getEditor(context).putInt(KEY_SP_Scene_type, mode).apply();

+ 1 - 1
android_host/src/main/res/layout/fragment_message.xml

@@ -41,7 +41,7 @@
             android:layout_height="match_parent"
             android:src="@mipmap/list"
             android:layout_gravity="center"
-            android:layout_below="@+id/doctor_img"
+            android:layout_below="@+id/message_title_t"
             android:visibility="gone"
             />
 

+ 11 - 0
app/build.gradle

@@ -121,6 +121,11 @@ android {
             dimension "app"
             buildConfigField 'String', 'flag', '"10"'
         }
+        //大成慧康10寸
+        dchk_10 {
+            dimension "app"
+            buildConfigField 'String', 'flag', '"11"'
+        }
     }
 
     sourceSets {
@@ -172,6 +177,12 @@ android {
             manifest.srcFile 'src/main/AndroidManifest.xml'
         }
 
+        //大成慧康10寸
+        dchk_10 {
+//            manifest.srcFile 'src/main/sharedUserId/AndroidManifest.xml'
+            manifest.srcFile 'src/main/AndroidManifest.xml'
+        }
+
     }
     buildTypes {
         release {

+ 2 - 2
bedlib/src/main/java/serialporttest/utils/SerialPortUtil.java

@@ -95,7 +95,7 @@ public class SerialPortUtil {
             e.printStackTrace();
         }
     }
-    //大朝华7寸分机串口
+    //A1337寸分机串口
     public void openSerialPortA133() {
         Log.i(TAG, "打开串口 a133");
         try {
@@ -309,7 +309,7 @@ public class SerialPortUtil {
     }
 
     public void sendData(String data) {
-        Log.d("bbbb", "data==" + data);
+//        Log.d("bbbb", "data==" + data);
         if (!StringUtils.notEmpty(data)) return;
         if (isOpenSerialPortUtil) {
             //reset data

+ 1 - 1
bedlib/src/main/java/serialporttest/utils/SerialPortUtilHost.java

@@ -194,7 +194,7 @@ public class SerialPortUtilHost {
     }
 
     public void sendData(String data) {
-        Log.d("bbbb", "data==" + data);
+//        Log.d("bbbb", "data==" + data);
         if (!StringUtils.notEmpty(data)) return;
         if (isOpenSerialPortUtil) {
             //reset data

+ 16 - 5
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/activity/CallingdoorActivity.kt

@@ -75,6 +75,7 @@ import java.util.*
 import java.util.concurrent.Executors
 import java.util.concurrent.TimeUnit
 import kotlin.collections.ArrayList
+import kotlin.concurrent.timerTask
 
 
 /**
@@ -375,7 +376,6 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         SettingConfig.setInNursing(activity, false)
         //门灯
         HardWareFactroy.getHardTools().setDoorLight(2)
-
         if (Constant.DEVICE_ID != -1 && nursingInteId != -1) {
             OtherUtil.sendNursingEnd(Constant.DEVICE_ID, nursingInteId)
             nursingInteId = -1
@@ -404,7 +404,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
     }
 
     //护理状态
-    fun setHuli() {
+    fun setHuli(time: Int) {
         //先切换到首页
         if (!mainFragment.equals(curFragment)) {
             switchFragment(R.id.callingdoor_main_frame, MainFragment(), mainFragment)
@@ -412,7 +412,6 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         }
         //绿色门灯
         HardWareFactroy.getHardTools().setDoorLight(1)
-
         menu_call_nurse.isClickable=false
         menu_call_bed.isClickable=false
         menu_call_bed.setBackgroundResource(R.drawable.shape_huli_button_bg)
@@ -425,7 +424,6 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         if (Constant.isOpenYH) {
             menu_medical_care.visibility=View.GONE
         }
-
         //网络图标
         if ( Constant.network_state == 1){
             title_layout_iv_hl_wifi.setImageResource(R.mipmap.ic_wifi_fail)
@@ -447,8 +445,21 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         title_layout_iv_hl_tcp.setImageResource(R.mipmap.ic_tcp_fail)
 
         enterNursing()
+        startTimer(time)
 
     }
+    //护理倒计时,默认10分钟
+    fun startTimer(minutes: Int) {
+        val timeInMinutes = if (minutes == 0) 10 else minutes
+        val timer = Timer()
+
+        timer.schedule(timerTask {
+            // 定时任务结束后的操作
+            runOnUiThread {
+                title_layout_hl_return.performClick()
+            }
+        }, timeInMinutes * 60 * 1000L) // 将分钟转换为毫秒
+    }
     override fun bindEvent() {
         //返回上一层
         title_layout_hl_return.setOnClickListener {
@@ -986,7 +997,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         Constant.inNursing = SettingConfig.getInNursing(activity)
         if (Constant.inNursing) {
             nursingInteId = SettingConfig.getNursingId(activity)
-            setHuli()
+            setHuli(0)
         }
 
         updateSettings(true)

+ 13 - 2
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/activity/DeviceSystemActivity.kt

@@ -71,7 +71,12 @@ class DeviceSystemActivity : BaseActivity<BedTextActivityPresenter, CallingbedDe
 
             override fun onNothingSelected(parent: AdapterView<*>?) {}
         })
-
+        val  Index= SettingConfig.getHuliTime(activity)
+        if (Index != 0) {
+            device_huli_time_on.setChecked(true)
+        }else{
+            device_huli_time_off.setChecked(true)
+        }
 
         val originIndex = LocaleMangerUtils.getCurrentLocaleIndex()
         val adapter = ArrayAdapter.createFromResource(activity,
@@ -139,7 +144,13 @@ class DeviceSystemActivity : BaseActivity<BedTextActivityPresenter, CallingbedDe
                 SettingConfigNew.setLanguageMode(activity, 1)
             }
         })
-
+        device_huli_group_time.setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener { group, checkedId ->
+            if (checkedId == R.id.device_huli_time_on) {
+                SettingConfig.setHuliTime(activity, 1)
+            } else {
+                SettingConfig.setHuliTime(activity, 0)
+            }
+        })
     }
 
     override fun destory() {

+ 0 - 2
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/dialog/HuliDialogHelper.java

@@ -11,8 +11,6 @@ import android.view.Window;
 import android.view.WindowManager;
 import android.widget.Button;
 import android.widget.TextView;
-
-import com.wdkl.app.ncs.callingdoor.BuildConfig;
 import com.wdkl.app.ncs.callingdoor.R;
 import com.wdkl.ncs.android.middleware.common.Constant;
 

+ 111 - 0
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/dialog/HuliTiemDialogHelper.java

@@ -0,0 +1,111 @@
+package com.wdkl.app.ncs.callingdoor.dialog;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.res.Configuration;
+import android.graphics.Color;
+import android.util.DisplayMetrics;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.TextView;
+
+import com.wdkl.app.ncs.callingdoor.R;
+
+
+/**
+ * 护理时间弹窗
+ * */
+public class HuliTiemDialogHelper {
+
+    private static AlertDialog alertDialog;
+    private static int set_time;
+    public static void showDialog(Activity activity, boolean isconfirm,ClickListener clickListener) {
+
+        View contentView = LayoutInflater.from(activity).inflate(R.layout.nurse_huli_time_dialog, null);
+        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+        builder.setView(contentView);
+        Button huli_time_confirm_button = contentView.findViewById(R.id.huli_time_confirm_button);
+        if (!isconfirm){
+            huli_time_confirm_button.setText(R.string.exit_nursing);
+        }else {
+            huli_time_confirm_button.setText(R.string.enter_nursing);
+        }
+        // 定义 TextViews
+        TextView[] textViews = new TextView[]{
+                contentView.findViewById(R.id.nurse_time_tx_13),
+                contentView.findViewById(R.id.nurse_time_tx_14),
+                contentView.findViewById(R.id.nurse_time_tx_15),
+                contentView.findViewById(R.id.nurse_time_tx_16),
+                contentView.findViewById(R.id.nurse_time_tx_17),
+                contentView.findViewById(R.id.nurse_time_tx_18)
+        };
+        // 设置 TextViews 的点击事件
+        for (TextView textView : textViews) {
+            textView.setOnClickListener(v -> {
+                for (TextView tv : textViews) {
+                    if (tv == v) {
+                        // 设置选中 TextView 的样式
+                        tv.setBackgroundResource(R.drawable.shape_time_f_bg_d);
+                        tv.setTextColor(Color.parseColor("#0090ff"));
+
+                        int id = tv.getId();
+                        if (id == R.id.nurse_time_tx_13) {
+                            set_time = 10;  // 当点击的是 nurse_msg_tx_13
+                        } else if (id == R.id.nurse_time_tx_14) {
+                            set_time = 15;  // 当点击的是 nurse_msg_tx_14
+                        } else if (id == R.id.nurse_time_tx_15) {
+                            set_time = 20;  // 可以为其他 TextView 设置不同的值
+                        } else if (id == R.id.nurse_time_tx_16) {
+                            set_time = 25;
+                        } else if (id == R.id.nurse_time_tx_17) {
+                            set_time = 30;
+                        } else if (id == R.id.nurse_time_tx_18) {
+                            set_time = 35;
+                        }
+                    } else {
+                        // 重置其他 TextView 的样式
+                        tv.setBackgroundResource(R.drawable.shape_time_f_bg);
+                        tv.setTextColor(Color.parseColor("#B4B4B4"));
+                    }
+                }
+            });
+        }
+
+
+        huli_time_confirm_button.setOnClickListener(v -> {
+            if (alertDialog != null && alertDialog.isShowing()) {
+                alertDialog.dismiss();
+                clickListener.onClick(set_time);
+            }
+        });
+        alertDialog = builder.create();
+        alertDialog.setCanceledOnTouchOutside(true);
+        alertDialog.setCancelable(true);
+        alertDialog.show();
+
+        DisplayMetrics metrics = new DisplayMetrics();
+        activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
+        int screenWidth = metrics.widthPixels;
+        int orientation = activity.getResources().getConfiguration().orientation;
+        if (orientation == Configuration.ORIENTATION_PORTRAIT && screenWidth>600) {
+            try {
+                Window window = alertDialog.getWindow();
+                WindowManager.LayoutParams lp = window.getAttributes();
+                lp.width = 800;
+                lp.height = 650;
+                lp.gravity = Gravity.CENTER;
+                window.setAttributes(lp);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+    }
+    public interface ClickListener{
+        void onClick(int time);
+    }
+}

+ 49 - 23
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/fragment/NurseFragment.kt

@@ -6,12 +6,10 @@ import com.wdkl.app.ncs.callingdoor.R
 import com.wdkl.app.ncs.callingdoor.activity.CallingdoorActivity
 import com.wdkl.app.ncs.callingdoor.activity.SetHintActivity
 import com.wdkl.app.ncs.callingdoor.databinding.CallingdoorNurseMainBinding
-import com.wdkl.app.ncs.callingdoor.dialog.ExitHuliDialogHelper
-import com.wdkl.app.ncs.callingdoor.dialog.HuliDialogHelper
-import com.wdkl.app.ncs.callingdoor.dialog.PatrolDialogHelper
-import com.wdkl.app.ncs.callingdoor.dialog.PositioningDialogHelper
+import com.wdkl.app.ncs.callingdoor.dialog.*
 import com.wdkl.app.ncs.callingdoor.helper.SpeechUtil
 import com.wdkl.app.ncs.callingdoor.launch.CallingdoorLaunch
+import com.wdkl.app.ncs.callingdoor.settings.SettingConfig
 import com.wdkl.app.ncs.callingdoor.util.SPUtils
 import com.wdkl.ncs.android.lib.base.BaseFragment
 import com.wdkl.ncs.android.lib.utils.showMessage
@@ -93,27 +91,55 @@ class NurseFragment : BaseFragment<NurseFragmentPresenter, CallingdoorNurseMainB
         }
         //进入护理
         nurse_main_3_ll.setOnClickListener {
-            HuliDialogHelper.showDialog(activity, isconfirm,object : HuliDialogHelper.ClickListener {
-                override fun onClick() {
-                    isconfirm = !isconfirm
-                    if (!isconfirm){
-                        nurse_main_3_ll.setBackgroundResource(R.drawable.shape_huli_dialog_bt_bg)
-                        nurse_main_3_img.setImageResource(R.mipmap.hu_y)
-                        nurse_top_3_tx.setTextColor(resources.getColor(R.color.white))
-                        nurse_top_3_tx.text=getString(R.string.nursing_title)
-                        nurse_main_3_tx.setTextColor(resources.getColor(R.color.white))
-                        (activity as CallingdoorActivity).setHuli()
-                        YhUtil.sendReinforceResponsed(Constant.DEVICE_ID, id.toInt())
-                    }else{
-                        nurse_main_3_ll.setBackgroundResource(R.drawable.shape_bed_bg)
-                        nurse_main_3_img.setImageResource(R.mipmap.hu)
-                        nurse_top_3_tx.setTextColor(resources.getColor(R.color.black))
-                        nurse_top_3_tx.text=getString(R.string.enter_nursing)
-                        nurse_main_3_tx.setTextColor(resources.getColor(R.color.text_name_color))
+
+            val SetType = SettingConfig.getHuliTime(activity)
+            if (SetType==0){
+                HuliDialogHelper.showDialog(activity, isconfirm,object : HuliDialogHelper.ClickListener {
+                    override fun onClick() {
+                        isconfirm = !isconfirm
+                        if (!isconfirm){
+                            nurse_main_3_ll.setBackgroundResource(R.drawable.shape_huli_dialog_bt_bg)
+                            nurse_main_3_img.setImageResource(R.mipmap.hu_y)
+                            nurse_top_3_tx.setTextColor(resources.getColor(R.color.white))
+                            nurse_top_3_tx.text=getString(R.string.nursing_title)
+                            nurse_main_3_tx.setTextColor(resources.getColor(R.color.white))
+                            (activity as CallingdoorActivity).setHuli(0)
+                            YhUtil.sendReinforceResponsed(Constant.DEVICE_ID, id.toInt())
+                        }else{
+                            nurse_main_3_ll.setBackgroundResource(R.drawable.shape_bed_bg)
+                            nurse_main_3_img.setImageResource(R.mipmap.hu)
+                            nurse_top_3_tx.setTextColor(resources.getColor(R.color.black))
+                            nurse_top_3_tx.text=getString(R.string.enter_nursing)
+                            nurse_main_3_tx.setTextColor(resources.getColor(R.color.text_name_color))
+                        }
+
                     }
+                })
+            }else{
+                HuliTiemDialogHelper.showDialog(activity,isconfirm,object : HuliTiemDialogHelper.ClickListener {
+                    override fun onClick(time: Int) {
+                        isconfirm = !isconfirm
+                        if (!isconfirm){
+                            nurse_main_3_ll.setBackgroundResource(R.drawable.shape_huli_dialog_bt_bg)
+                            nurse_main_3_img.setImageResource(R.mipmap.hu_y)
+                            nurse_top_3_tx.setTextColor(resources.getColor(R.color.white))
+                            nurse_top_3_tx.text=getString(R.string.nursing_title)
+                            nurse_main_3_tx.setTextColor(resources.getColor(R.color.white))
+                            (activity as CallingdoorActivity).setHuli(time)
+                            YhUtil.sendReinforceResponsed(Constant.DEVICE_ID, id.toInt())
+                        }else{
+                            nurse_main_3_ll.setBackgroundResource(R.drawable.shape_bed_bg)
+                            nurse_main_3_img.setImageResource(R.mipmap.hu)
+                            nurse_top_3_tx.setTextColor(resources.getColor(R.color.black))
+                            nurse_top_3_tx.text=getString(R.string.enter_nursing)
+                            nurse_main_3_tx.setTextColor(resources.getColor(R.color.text_name_color))
+                        }
+
+                    }
+                })
+            }
+
 
-                }
-            })
         }
         //设置提示语
         nurse_main_4_ll.setOnClickListener {

+ 15 - 1
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/fragment/NursingWorkFragment.kt

@@ -12,8 +12,10 @@ import com.wdkl.app.ncs.callingdoor.R
 import com.wdkl.app.ncs.callingdoor.activity.*
 import com.wdkl.app.ncs.callingdoor.adapter.DeviceMenuAdapter
 import com.wdkl.app.ncs.callingdoor.databinding.NursingWorkLayBinding
+import com.wdkl.app.ncs.callingdoor.dialog.HuliTiemDialogHelper
 import com.wdkl.app.ncs.callingdoor.dialog.SystemDialogHelper
 import com.wdkl.app.ncs.callingdoor.launch.CallingdoorLaunch
+import com.wdkl.app.ncs.callingdoor.settings.SettingConfig
 import com.wdkl.ncs.android.lib.base.BaseFragment
 import com.wdkl.ncs.android.lib.utils.showMessage
 import com.wdkl.ncs.android.lib.vo.filter
@@ -23,6 +25,8 @@ import com.wdkl.ncs.android.middleware.common.MessageEvent
 import com.wdkl.ncs.android.middleware.logic.contract.callingdoor.NursingWorkFragmentContract
 import com.wdkl.ncs.android.middleware.logic.presenter.callingdoor.NursingWorkFragmentPresenter
 import com.wdkl.ncs.android.middleware.model.vo.DeviceMenulist
+import com.wdkl.ncs.android.middleware.tcp.channel.YhUtil
+import kotlinx.android.synthetic.main.callingdoor_nurse_main.*
 import kotlinx.android.synthetic.main.nursing_work_lay.*
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
@@ -215,7 +219,17 @@ class NursingWorkFragment : BaseFragment<NursingWorkFragmentPresenter, NursingWo
                     showMessage(R.string.str_not_support)
                 }else if (allOrders.get(keyId).act_name.equals("huli")){
                     //护理状态
-                    (activity as CallingdoorActivity).setHuli()
+                    val SetType = SettingConfig.getHuliTime(activity)
+                    if (SetType==0){
+                        (activity as CallingdoorActivity).setHuli(0)
+                    }else{
+                        HuliTiemDialogHelper.showDialog(activity,true,object : HuliTiemDialogHelper.ClickListener {
+                            override fun onClick(time: Int) {
+                                (activity as CallingdoorActivity).setHuli(time)
+                                }
+                        })
+                    }
+
 //                    showMessage("暂未开通")
                 }else if (allOrders.get(keyId).act_name.equals("HospitalInfoActivity")){
                     //医院介绍

+ 10 - 0
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/settings/SettingConfig.java

@@ -99,6 +99,9 @@ public class SettingConfig {
     //是否开启声网自动接听
     private static final String KEY_SP_SW_CALL = "KEY_SP_SW_CALL";
 
+    //是否开启护理时间选择
+    private static final String KEY_SP_HULI_TIME = "KEY_SP_HULI_TIME";
+
     public static void setSwCall(Context context, boolean on) {
         getEditor(context).putBoolean(KEY_SP_SW_CALL, on).apply();
     }
@@ -106,6 +109,13 @@ public class SettingConfig {
     public static boolean getSwCall(Context context) {
         return getSP(context).getBoolean(KEY_SP_SW_CALL, true);
     }
+    public static void setHuliTime(Context context, int mode) {
+        getEditor(context).putInt(KEY_SP_HULI_TIME, mode).apply();
+    }
+
+    public static int getHuliTime(Context context) {
+        return getSP(context).getInt(KEY_SP_HULI_TIME, 0);
+    }
 
     public static void setScene(Context context, int mode) {
         getEditor(context).putInt(KEY_SP_Scene_type, mode).apply();

+ 55 - 0
callingdoor/src/main/res/layout-land/callingbed_device_sys.xml

@@ -258,7 +258,62 @@
                         android:drawablePadding="@dimen/d5"
                         android:textSize="14px" />
                 </RadioGroup>
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="*"
+                        android:textSize="@dimen/font_size_18"
+                        android:textColor="@color/txt_number"
+                        android:textStyle="bold"
+                        android:layout_marginLeft="@dimen/d28"
+                        />
 
+                    <TextView
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:text="@string/huli_time_set_mode"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/font_size_18"
+                        android:textStyle="bold" />
+
+                </LinearLayout>
+
+                <RadioGroup
+                    android:id="@+id/device_huli_group_time"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d24"
+                    android:layout_marginTop="@dimen/d10"
+                    android:layout_marginBottom="@dimen/d20"
+                    android:orientation="horizontal">
+
+                    <RadioButton
+                        android:id="@+id/device_huli_time_on"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/str_yes"
+                        android:textColor="@drawable/radio_button_selector_txt2"
+                        android:button="@null"
+                        android:drawableLeft="@drawable/radio_button_selector_bg2"
+                        android:drawablePadding="@dimen/d5"
+                        android:textSize="14px" />
+
+                    <RadioButton
+                        android:id="@+id/device_huli_time_off"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/str_no"
+                        android:textColor="@drawable/radio_button_selector_txt2"
+                        android:layout_marginLeft="@dimen/d10"
+                        android:button="@null"
+                        android:drawableLeft="@drawable/radio_button_selector_bg2"
+                        android:drawablePadding="@dimen/d5"
+                        android:textSize="14px" />
+                </RadioGroup>
 
 
 

+ 88 - 27
callingdoor/src/main/res/layout/callingbed_device_sys.xml

@@ -201,7 +201,10 @@
 
                 <LinearLayout
                     android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:layout_marginTop="@dimen/d20"
+                    >
 
                     <TextView
                         android:layout_width="wrap_content"
@@ -210,53 +213,111 @@
                         android:textSize="@dimen/font_size_18"
                         android:textColor="@color/txt_number"
                         android:textStyle="bold"
-                        android:layout_marginTop="@dimen/d18"
                         android:layout_marginLeft="@dimen/d28"
                         />
 
                     <TextView
-                        android:layout_width="match_parent"
+                        android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:layout_marginTop="20dp"
                         android:text="@string/str_device_selection_window"
                         android:textColor="@color/black"
                         android:textSize="@dimen/font_size_18"
                         android:textStyle="bold" />
 
+                    <RadioGroup
+                        android:id="@+id/device_sys_group_window"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/d24"
+                        android:layout_gravity="center"
+                        android:orientation="horizontal">
+
+                        <RadioButton
+                            android:id="@+id/device_sys_radio_window_on"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/str_device_sys_window_on"
+                            android:textColor="@drawable/radio_button_selector_txt"
+                            android:button="@null"
+                            android:drawableLeft="@drawable/radio_button_selector_bg"
+                            android:drawablePadding="@dimen/d5"
+                            android:textSize="14px" />
+
+                        <RadioButton
+                            android:id="@+id/device_sys_radio_window_off"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/str_device_sys_window_off"
+                            android:textColor="@drawable/radio_button_selector_txt"
+                            android:layout_marginLeft="@dimen/d10"
+                            android:button="@null"
+                            android:drawableLeft="@drawable/radio_button_selector_bg"
+                            android:drawablePadding="@dimen/d5"
+                            android:textSize="14px" />
+                    </RadioGroup>
+
                 </LinearLayout>
 
-                <RadioGroup
-                    android:id="@+id/device_sys_group_window"
+
+
+                <LinearLayout
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/d24"
-                    android:layout_marginTop="@dimen/d10"
+                    android:orientation="horizontal"
+                    android:layout_marginTop="@dimen/d20"
                     android:layout_marginBottom="@dimen/d20"
-                    android:orientation="horizontal">
+                    >
 
-                    <RadioButton
-                        android:id="@+id/device_sys_radio_window_on"
+                    <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:text="@string/str_device_sys_window_on"
-                        android:textColor="@drawable/radio_button_selector_txt"
-                        android:button="@null"
-                        android:drawableLeft="@drawable/radio_button_selector_bg"
-                        android:drawablePadding="@dimen/d5"
-                        android:textSize="14px" />
+                        android:text="*"
+                        android:textSize="@dimen/font_size_18"
+                        android:textColor="@color/txt_number"
+                        android:textStyle="bold"
+                        android:layout_marginLeft="@dimen/d28"
+                        />
 
-                    <RadioButton
-                        android:id="@+id/device_sys_radio_window_off"
+                    <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:text="@string/str_device_sys_window_off"
-                        android:textColor="@drawable/radio_button_selector_txt"
-                        android:layout_marginLeft="@dimen/d10"
-                        android:button="@null"
-                        android:drawableLeft="@drawable/radio_button_selector_bg"
-                        android:drawablePadding="@dimen/d5"
-                        android:textSize="14px" />
-                </RadioGroup>
+                        android:text="@string/huli_time_set_mode"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/font_size_18"
+                        android:textStyle="bold" />
+
+                    <RadioGroup
+                        android:id="@+id/device_huli_group_time"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/d24"
+                        android:layout_gravity="center"
+                        android:orientation="horizontal">
+
+                        <RadioButton
+                            android:id="@+id/device_huli_time_on"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/str_yes"
+                            android:textColor="@drawable/radio_button_selector_txt2"
+                            android:button="@null"
+                            android:drawableLeft="@drawable/radio_button_selector_bg2"
+                            android:drawablePadding="@dimen/d5"
+                            android:textSize="14px" />
+
+                        <RadioButton
+                            android:id="@+id/device_huli_time_off"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/str_no"
+                            android:textColor="@drawable/radio_button_selector_txt2"
+                            android:layout_marginLeft="@dimen/d10"
+                            android:button="@null"
+                            android:drawableLeft="@drawable/radio_button_selector_bg2"
+                            android:drawablePadding="@dimen/d5"
+                            android:textSize="14px" />
+                    </RadioGroup>
+                </LinearLayout>
 
 
 

+ 151 - 0
callingdoor/src/main/res/layout/nurse_huli_time_dialog.xml

@@ -0,0 +1,151 @@
+<?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:gravity="center"
+    android:background="@android:color/transparent">
+
+
+    <RelativeLayout
+        android:layout_width="481dp"
+        android:layout_height="@dimen/d330"
+        android:background="@drawable/shape_bed_bg"
+        android:orientation="vertical"
+        >
+
+        <LinearLayout
+            android:id="@+id/nurse_time_tx_11"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:layout_marginTop="@dimen/d10"
+            >
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:background="@mipmap/hul_time_log"
+                android:layout_marginRight="@dimen/d10"
+
+                />
+
+            <TextView
+                android:id="@+id/nurse_time_tx_12"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_toRightOf="@+id/nurse_msg_tx_11"
+                android:text="@string/str_hint_time"
+                android:textSize="@dimen/font_size_18"
+                android:textColor="@color/black"
+                android:textStyle="bold"
+                />
+        </LinearLayout>
+
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_below="@+id/nurse_time_tx_11"
+            android:layout_centerHorizontal="true"
+            android:gravity="center"
+            >
+            <TextView
+                android:id="@+id/nurse_time_tx_13"
+                android:layout_width="@dimen/d150"
+                android:layout_height="@dimen/d48"
+                android:gravity="center"
+                android:text="@string/time_10min"
+                android:textSize="@dimen/font_size_16"
+                android:textColor="@color/text_name_color"
+                android:layout_marginTop="@dimen/d20"
+                android:layout_marginRight="@dimen/d10"
+                android:background="@drawable/shape_time_f_bg"
+                />
+            <TextView
+                android:id="@+id/nurse_time_tx_14"
+                android:layout_width="@dimen/d150"
+                android:layout_height="@dimen/d48"
+                android:layout_below="@+id/nurse_time_tx_13"
+                android:gravity="center"
+                android:text="@string/time_30min"
+                android:textSize="@dimen/font_size_16"
+                android:textColor="@color/text_name_color"
+                android:layout_marginTop="@dimen/d16"
+                android:layout_marginRight="@dimen/d10"
+                android:background="@drawable/shape_time_f_bg"
+                />
+            <TextView
+                android:id="@+id/nurse_time_tx_15"
+                android:layout_width="@dimen/d150"
+                android:layout_height="@dimen/d48"
+                android:layout_below="@+id/nurse_time_tx_14"
+                android:gravity="center"
+                android:text="@string/time_90min"
+                android:textSize="@dimen/font_size_16"
+                android:textColor="@color/text_name_color"
+                android:layout_marginTop="@dimen/d16"
+                android:layout_marginRight="@dimen/d10"
+                android:background="@drawable/shape_time_f_bg"
+                />
+            <TextView
+                android:id="@+id/nurse_time_tx_16"
+                android:layout_width="@dimen/d150"
+                android:layout_height="@dimen/d48"
+                android:layout_toRightOf="@+id/nurse_time_tx_13"
+                android:gravity="center"
+                android:text="@string/time_15min"
+                android:textSize="@dimen/font_size_16"
+                android:textColor="@color/text_name_color"
+                android:layout_marginTop="@dimen/d20"
+                android:layout_marginLeft="@dimen/d10"
+                android:background="@drawable/shape_time_f_bg"
+                />
+            <TextView
+                android:id="@+id/nurse_time_tx_17"
+                android:layout_width="@dimen/d150"
+                android:layout_height="@dimen/d48"
+                android:layout_below="@+id/nurse_time_tx_13"
+                android:layout_toRightOf="@+id/nurse_time_tx_14"
+                android:gravity="center"
+                android:text="@string/time_60min"
+                android:textSize="@dimen/font_size_16"
+                android:textColor="@color/text_name_color"
+                android:layout_marginTop="@dimen/d16"
+                android:layout_marginLeft="@dimen/d10"
+                android:background="@drawable/shape_time_f_bg"
+                />
+            <TextView
+                android:id="@+id/nurse_time_tx_18"
+                android:layout_width="@dimen/d150"
+                android:layout_height="@dimen/d48"
+                android:layout_below="@+id/nurse_time_tx_14"
+                android:layout_toRightOf="@+id/nurse_time_tx_15"
+                android:gravity="center"
+                android:text="@string/time_120min"
+                android:textSize="@dimen/font_size_16"
+                android:textColor="@color/text_name_color"
+                android:layout_marginTop="@dimen/d16"
+                android:layout_marginLeft="@dimen/d10"
+                android:background="@drawable/shape_time_f_bg"
+                />
+
+        </RelativeLayout>
+
+
+
+        <Button
+            android:id="@+id/huli_time_confirm_button"
+            android:layout_width="@dimen/d176"
+            android:layout_height="@dimen/d48"
+            android:layout_marginTop="@dimen/d24"
+            android:layout_marginBottom="@dimen/d15"
+            android:layout_alignParentBottom="true"
+            android:layout_centerHorizontal="true"
+            android:gravity="center"
+            android:background="@drawable/shape_huli_dialog_bt_bg"
+            android:text="@string/str_enter_medical_care"
+            android:textSize="16sp"
+            android:textColor="@drawable/selector_bottom_btn_text_color"/>
+
+    </RelativeLayout>
+</LinearLayout>

+ 6 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/api/BedDeviceApi.kt

@@ -112,5 +112,11 @@ interface BedDeviceApi {
     @GET(" /deviceBed/get_devices_by_frame_id/{frame_id}")
     fun get_devices_by_frame_id(@Path("frame_id") frame_id:Int): Observable<ResponseBody>
 
+    //某个用户的事务
+    @GET("/deviceBed/get_affairs_by_customer_id/{id}")
+    fun get_affairs_by_customer_id(@Path("id") id:Int): Observable<ResponseBody>
 
+    //执行某个用户的事务
+    @GET("/deviceBed/execute_affair/{id}/{device_id}/{execute}")
+    fun execute_affair(@Path("id") id:Int,@Path("device_id") device_id:Int,@Path("execute") execute:Int): Observable<ResponseBody>
 }

+ 1 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constant.java

@@ -40,6 +40,7 @@ public class Constant {
     public static final String DEV_W_A133 = "7";//外购 A133
     public static final String DEV_W_ZX_8 = "8";//外购 中兴8寸
     public static final String DEV_W_PW_10 = "10";//外购普威10寸
+    public static final String DEV_W_DCHK_10 = "11";//外购大成慧康10寸,带手柄
 
     public static Integer TTSSTATE = 1;
     public static boolean OPEN_DEBUG = false;

+ 4 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/di/PresenterComponent.kt

@@ -143,6 +143,10 @@ interface PresenterComponent {
 
     fun inject(presenter: IotDevicePresenter)
 
+    fun inject(presenter: UserTransactionPresenter)
+
+    fun inject(presenter: PushMessagePresenter)
+
 
 
 //    手机端相关的

+ 21 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/callingbed/UserTransactionContract.kt

@@ -0,0 +1,21 @@
+package com.wdkl.ncs.android.middleware.logic.contract.callingbed
+
+import com.wdkl.ncs.android.lib.base.BaseContract
+import com.wdkl.ncs.android.middleware.model.dos.AdviceDO
+import com.wdkl.ncs.android.middleware.model.dos.UserTransactionDO
+
+interface UserTransactionContract {
+    interface View : BaseContract.BaseView {
+
+        fun showTransaction(advices: ArrayList<UserTransactionDO>)
+        fun setTransaction(advices: ArrayList<UserTransactionDO>)
+        fun onNoNet()
+    }
+
+    interface Presenter : BaseContract.BasePresenter {
+
+        fun loadTransactionByPage(pageNo: Int, pageSize: Int, id: Int)
+
+        fun loadsetTransaction(id: Int, device_id: Int, execute: Int)
+    }
+}

+ 103 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/callingbed/PushMessagePresenter.kt

@@ -0,0 +1,103 @@
+package com.wdkl.ncs.android.middleware.logic.presenter.callingbed
+
+import com.enation.javashop.net.engine.plugin.connection.ConnectionQuality
+import com.enation.javashop.net.engine.plugin.exception.ExceptionHandle
+import com.enation.javashop.net.engine.utils.ThreadFromUtils
+import com.google.gson.FieldNamingPolicy
+import com.google.gson.GsonBuilder
+import com.google.gson.reflect.TypeToken
+import com.wdkl.ncs.android.lib.base.RxPresenter
+import com.wdkl.ncs.android.lib.utils.*
+import com.wdkl.ncs.android.middleware.api.BedDeviceApi
+import com.wdkl.ncs.android.middleware.di.MiddlewareDaggerComponent
+import com.wdkl.ncs.android.middleware.logic.contract.callingbed.BedAdviceFragmentContract
+import com.wdkl.ncs.android.middleware.logic.contract.callingbed.UserTransactionContract
+import com.wdkl.ncs.android.middleware.model.dos.AdviceDO
+import com.wdkl.ncs.android.middleware.model.dos.UserTransactionDO
+import com.wdkl.ncs.android.middleware.model.vo.CustomerFeeConfigByGroupNameVO
+import io.reactivex.disposables.Disposable
+import javax.inject.Inject
+
+class PushMessagePresenter @Inject constructor() : RxPresenter<UserTransactionContract.View>(), UserTransactionContract.Presenter {
+    @Inject
+    protected lateinit var bedDeviceApi : BedDeviceApi
+
+    override fun bindDagger() {
+        MiddlewareDaggerComponent.component.inject(this)
+    }
+
+    private val observer = object : ConnectionObserver<Any>() {
+        override fun onStartWithConnection() {
+            providerView().start()
+        }
+
+        override fun onNextWithConnection(result: Any, connectionQuality: ConnectionQuality) {
+            providerView().showTransaction(result as ArrayList<UserTransactionDO>)
+        }
+
+        override fun onErrorWithConnection(error: ExceptionHandle.ResponeThrowable, connectionQuality: ConnectionQuality) {
+            providerView().onError(error.customMessage)
+        }
+
+        override fun attachSubscribe(var1: Disposable) {
+            addDisposable(var1)
+        }
+
+
+        override fun onNoneNet() {
+            super.onNoneNet()
+            providerView().onNoNet()
+        }
+    }
+    private val observer2 = object : ConnectionObserver<Any>() {
+        override fun onStartWithConnection() {
+            providerView().start()
+        }
+
+        override fun onNextWithConnection(result: Any, connectionQuality: ConnectionQuality) {
+            providerView().setTransaction(result as ArrayList<UserTransactionDO>)
+        }
+
+        override fun onErrorWithConnection(error: ExceptionHandle.ResponeThrowable, connectionQuality: ConnectionQuality) {
+            providerView().onError(error.customMessage)
+        }
+
+        override fun attachSubscribe(var1: Disposable) {
+            addDisposable(var1)
+        }
+
+
+        override fun onNoneNet() {
+            super.onNoneNet()
+            providerView().onNoNet()
+        }
+    }
+
+    override fun loadTransactionByPage(pageNo: Int, pageSize: Int, id: Int) {
+        bedDeviceApi.get_affairs_by_customer_id(id)
+            .map {
+                val data = it.getJsonString()
+                val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+                val itemType = object : TypeToken<ArrayList<UserTransactionDO>>(){}.type
+                val UserTransactionDO = gson.fromJson<ArrayList<UserTransactionDO>>(data, itemType)
+
+                return@map UserTransactionDO
+            }
+            .compose(ThreadFromUtils.defaultSchedulers())
+            .subscribe(observer)
+    }
+
+    override fun loadsetTransaction(id: Int, device_id: Int, execute: Int) {
+        bedDeviceApi.execute_affair(id,device_id,execute)
+                .map {
+                    val data = it.getJsonString()
+                    val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+                    val itemType = object : TypeToken<ArrayList<UserTransactionDO>>(){}.type
+                    val UserTransactionDO = gson.fromJson<ArrayList<UserTransactionDO>>(data, itemType)
+
+                    return@map UserTransactionDO
+                }
+                .compose(ThreadFromUtils.defaultSchedulers())
+                .subscribe(observer2)
+    }
+}

+ 103 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/callingbed/UserTransactionPresenter.kt

@@ -0,0 +1,103 @@
+package com.wdkl.ncs.android.middleware.logic.presenter.callingbed
+
+import com.enation.javashop.net.engine.plugin.connection.ConnectionQuality
+import com.enation.javashop.net.engine.plugin.exception.ExceptionHandle
+import com.enation.javashop.net.engine.utils.ThreadFromUtils
+import com.google.gson.FieldNamingPolicy
+import com.google.gson.GsonBuilder
+import com.google.gson.reflect.TypeToken
+import com.wdkl.ncs.android.lib.base.RxPresenter
+import com.wdkl.ncs.android.lib.utils.*
+import com.wdkl.ncs.android.middleware.api.BedDeviceApi
+import com.wdkl.ncs.android.middleware.di.MiddlewareDaggerComponent
+import com.wdkl.ncs.android.middleware.logic.contract.callingbed.BedAdviceFragmentContract
+import com.wdkl.ncs.android.middleware.logic.contract.callingbed.UserTransactionContract
+import com.wdkl.ncs.android.middleware.model.dos.AdviceDO
+import com.wdkl.ncs.android.middleware.model.dos.UserTransactionDO
+import com.wdkl.ncs.android.middleware.model.vo.CustomerFeeConfigByGroupNameVO
+import io.reactivex.disposables.Disposable
+import javax.inject.Inject
+
+class UserTransactionPresenter @Inject constructor() : RxPresenter<UserTransactionContract.View>(), UserTransactionContract.Presenter {
+    @Inject
+    protected lateinit var bedDeviceApi : BedDeviceApi
+
+    override fun bindDagger() {
+        MiddlewareDaggerComponent.component.inject(this)
+    }
+
+    private val observer = object : ConnectionObserver<Any>() {
+        override fun onStartWithConnection() {
+            providerView().start()
+        }
+
+        override fun onNextWithConnection(result: Any, connectionQuality: ConnectionQuality) {
+            providerView().showTransaction(result as ArrayList<UserTransactionDO>)
+        }
+
+        override fun onErrorWithConnection(error: ExceptionHandle.ResponeThrowable, connectionQuality: ConnectionQuality) {
+            providerView().onError(error.customMessage)
+        }
+
+        override fun attachSubscribe(var1: Disposable) {
+            addDisposable(var1)
+        }
+
+
+        override fun onNoneNet() {
+            super.onNoneNet()
+            providerView().onNoNet()
+        }
+    }
+    private val observer2 = object : ConnectionObserver<Any>() {
+        override fun onStartWithConnection() {
+            providerView().start()
+        }
+
+        override fun onNextWithConnection(result: Any, connectionQuality: ConnectionQuality) {
+            providerView().setTransaction(result as ArrayList<UserTransactionDO>)
+        }
+
+        override fun onErrorWithConnection(error: ExceptionHandle.ResponeThrowable, connectionQuality: ConnectionQuality) {
+            providerView().onError(error.customMessage)
+        }
+
+        override fun attachSubscribe(var1: Disposable) {
+            addDisposable(var1)
+        }
+
+
+        override fun onNoneNet() {
+            super.onNoneNet()
+            providerView().onNoNet()
+        }
+    }
+
+    override fun loadTransactionByPage(pageNo: Int, pageSize: Int, id: Int) {
+        bedDeviceApi.get_affairs_by_customer_id(id)
+            .map {
+                val data = it.getJsonString()
+                val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+                val itemType = object : TypeToken<ArrayList<UserTransactionDO>>(){}.type
+                val UserTransactionDO = gson.fromJson<ArrayList<UserTransactionDO>>(data, itemType)
+
+                return@map UserTransactionDO
+            }
+            .compose(ThreadFromUtils.defaultSchedulers())
+            .subscribe(observer)
+    }
+
+    override fun loadsetTransaction(id: Int, device_id: Int, execute: Int) {
+        bedDeviceApi.execute_affair(id,device_id,execute)
+                .map {
+                    val data = it.getJsonString()
+                    val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+                    val itemType = object : TypeToken<ArrayList<UserTransactionDO>>(){}.type
+                    val UserTransactionDO = gson.fromJson<ArrayList<UserTransactionDO>>(data, itemType)
+
+                    return@map UserTransactionDO
+                }
+                .compose(ThreadFromUtils.defaultSchedulers())
+                .subscribe(observer2)
+    }
+}

+ 16 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/dos/PartSettingDO.java

@@ -249,6 +249,7 @@ public class PartSettingDO implements Serializable {
     private Integer androidDoorGainSize;
 
 
+
     /**
      * 分机通讯模式
      */
@@ -528,7 +529,21 @@ public class PartSettingDO implements Serializable {
     @ApiModelProperty(value="是否开启院外探视",required=false)
     private boolean bool_outside_vital;
 
-    public boolean isBool_outside_vital() {
+    /**
+     *托管时是否进入托管,1进入,0不进入
+     */	@Column(name = "bool_transfer" )
+    @ApiModelProperty(value="托管时是否进入托管,1进入,0不进入",required=false)
+    private Integer boolTransfer;
+
+    public Integer getBoolTransfer() {
+        return boolTransfer;
+    }
+
+     public void setBoolTransfer(Integer boolTransfer) {
+            this.boolTransfer = boolTransfer;
+        }
+
+     public boolean isBool_outside_vital() {
         return bool_outside_vital;
     }
 

+ 160 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/dos/UserTransactionDO.java

@@ -0,0 +1,160 @@
+package com.wdkl.ncs.android.middleware.model.dos;
+
+import java.io.Serializable;
+
+
+public class UserTransactionDO implements Serializable {
+
+    /**
+     * affair_do_time : 0
+     * affair_plan_time : 0
+     * affair_state : 0
+     * content :
+     * create_time : 0
+     * id : 0
+     * part_id : 0
+     * to_customer_id : 0
+     * to_customer_name :
+     * to_device_id : 0
+     * to_frame_id : 0
+     * to_frame_name :
+     * union_id :
+     */
+
+    private int affair_do_time;
+    private int affair_plan_time;
+    private int affair_state;
+    private String content;
+    private int create_time;
+    private int id;
+    private int part_id;
+    private int to_customer_id;
+    private String to_customer_name;
+    private int to_device_id;
+    private int to_frame_id;
+    private String to_frame_name;
+    private String union_id;
+
+    public int getAffair_do_time() {
+        return affair_do_time;
+    }
+
+    public void setAffair_do_time(int affair_do_time) {
+        this.affair_do_time = affair_do_time;
+    }
+
+    public int getAffair_plan_time() {
+        return affair_plan_time;
+    }
+
+    public void setAffair_plan_time(int affair_plan_time) {
+        this.affair_plan_time = affair_plan_time;
+    }
+
+    public int getAffair_state() {
+        return affair_state;
+    }
+
+    public void setAffair_state(int affair_state) {
+        this.affair_state = affair_state;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public int getCreate_time() {
+        return create_time;
+    }
+
+    public void setCreate_time(int create_time) {
+        this.create_time = create_time;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getPart_id() {
+        return part_id;
+    }
+
+    public void setPart_id(int part_id) {
+        this.part_id = part_id;
+    }
+
+    public int getTo_customer_id() {
+        return to_customer_id;
+    }
+
+    public void setTo_customer_id(int to_customer_id) {
+        this.to_customer_id = to_customer_id;
+    }
+
+    public String getTo_customer_name() {
+        return to_customer_name;
+    }
+
+    public void setTo_customer_name(String to_customer_name) {
+        this.to_customer_name = to_customer_name;
+    }
+
+    public int getTo_device_id() {
+        return to_device_id;
+    }
+
+    public void setTo_device_id(int to_device_id) {
+        this.to_device_id = to_device_id;
+    }
+
+    public int getTo_frame_id() {
+        return to_frame_id;
+    }
+
+    public void setTo_frame_id(int to_frame_id) {
+        this.to_frame_id = to_frame_id;
+    }
+
+    public String getTo_frame_name() {
+        return to_frame_name;
+    }
+
+    public void setTo_frame_name(String to_frame_name) {
+        this.to_frame_name = to_frame_name;
+    }
+
+    public String getUnion_id() {
+        return union_id;
+    }
+
+    public void setUnion_id(String union_id) {
+        this.union_id = union_id;
+    }
+
+    @Override
+    public String toString() {
+        return "UserTransactionDO{" +
+                "affair_do_time=" + affair_do_time +
+                ", affair_plan_time=" + affair_plan_time +
+                ", affair_state=" + affair_state +
+                ", content='" + content + '\'' +
+                ", create_time=" + create_time +
+                ", id=" + id +
+                ", part_id=" + part_id +
+                ", to_customer_id=" + to_customer_id +
+                ", to_customer_name='" + to_customer_name + '\'' +
+                ", to_device_id=" + to_device_id +
+                ", to_frame_id=" + to_frame_id +
+                ", to_frame_name='" + to_frame_name + '\'' +
+                ", union_id='" + union_id + '\'' +
+                '}';
+    }
+}

BIN
resource/src/main/res/mipmap-mdpi/hul_time_log.png


BIN
resource/src/main/res/mipmap-xhdpi/hul_time_log.png


BIN
resource/src/main/res/mipmap-xxhdpi/hul_time_log.png


+ 17 - 0
resource/src/main/res/values-es/strings.xml

@@ -186,6 +186,7 @@
 
     <string name="language_set_title">Configuración de idioma</string>
     <string name="language_set_mode">Sincronizar idioma desde el servidor:</string>
+    <string name="huli_time_set_mode">¿Desea habilitar la configuración de tiempo de cuidado:</string>
 
     <string name="enter_settings_tips">haga clic 3 veces para abrir la configuración</string>
     <string name="enable_debug">Habilitar depuración</string>
@@ -281,6 +282,8 @@
     <string name="str_first_page">¡Primera página!</string>
     <string name="str_last_page">¡Última página!</string>
     <string name="str_advice">Consejo</string>
+    <string name="str_user_transaction">Transacciones de Usuario</string>
+
     <string name="str_blue_code">Código azul</string>
     <string name="str_sign_in">iniciar sesión</string>
     <string name="str_sign_success">Iniciar sesión correctamente</string>
@@ -507,6 +510,20 @@
     <string name="str_page_first">Primera página</string>
     <string name="str_page_last">Última página</string>
 
+    <string name="transaction_name">Nombre de la Transacción</string>
+    <string name="transaction_time">Hora de Ejecución</string>
+    <string name="transaction_type">Estado de la Transacción</string>
+    <string name="transaction_set">Operación</string>
+    <string name="transaction_set_1">Ejecutado</string>
+    <string name="transaction_set_2">Completado</string>
+    <string name="transaction_set_3">No Ejecutado</string>
+
+    <string name="push_message_name">Título del Mensaje</string>
+    <string name="push_message_time">Hora de Recepción</string>
+    <string name="push_message_type">Estado del Mensaje</string>
+    <string name="push_message_set_1">Leído</string>
+    <string name="push_message_set_2">No leído</string>
+
 
     <string name="str_processing">Procesando…</string>
     <string name="str_recover">Recuperar</string>

+ 16 - 0
resource/src/main/res/values-ru/strings.xml

@@ -164,6 +164,7 @@
     <string name="low_power">Низкое энергопотребление</string>
     <string name="language_set_title">Язык</string>
     <string name="language_set_mode">Синхронизировать язык с сервером:</string>
+    <string name="huli_time_set_mode">Хотите ли вы включить настройку времени ухода:</string>
     <string name="enter_settings_tips">нажмите 3 раза, чтобы открыть настройки</string>
     <string name="enable_debug">Включить отладку</string>
     <string name="str_no_camera">Нет камеры</string>
@@ -264,6 +265,8 @@
     <string name="str_first_page">Первая страница!</string>
     <string name="str_last_page">Последняя страница!</string>
     <string name="str_advice">СоветСовет</string>
+    <string name="str_user_transaction">Пользовательские транзакции</string>
+
     <string name="str_blue_code">Blue Code</string>
     <string name="str_sign_in">Войти в систему</string>
     <string name="str_sign_success">Войти успешно</string>
@@ -491,6 +494,19 @@
     <string name="str_page_first">Первая страница</string>
     <string name="str_page_last">Последняя страница</string>
 
+    <string name="transaction_name">Название транзакции</string>
+    <string name="transaction_time">Время выполнения</string>
+    <string name="transaction_type">Статус транзакции</string>
+    <string name="transaction_set">Операция</string>
+    <string name="transaction_set_1">Выполнено</string>
+    <string name="transaction_set_2">Завершено</string>
+    <string name="transaction_set_3">Не выполнено</string>
+
+    <string name="push_message_name">Заголовок сообщения</string>
+    <string name="push_message_time">Время получения</string>
+    <string name="push_message_type">Статус сообщения</string>
+    <string name="push_message_set_1">Прочитано</string>
+    <string name="push_message_set_2">Не прочитано</string>
 
     <string name="str_processing">Обработка...</string>
     <string name="str_recover">Восстановление</string>

+ 16 - 0
resource/src/main/res/values-zh/strings.xml

@@ -181,6 +181,7 @@
 
     <string name="language_set_title">语言设置</string>
     <string name="language_set_mode">是否同步服务器语言:</string>
+    <string name="huli_time_set_mode">是否打开护理时间设置:</string>
 
     <string name="enter_settings_tips">再点3次进入设置</string>
     <string name="enable_debug">打开调试</string>
@@ -276,6 +277,7 @@
     <string name="str_first_page">已是第一页!</string>
     <string name="str_last_page">已是最后一页!</string>
     <string name="str_advice">医嘱</string>
+    <string name="str_user_transaction">用户事务</string>
     <string name="str_blue_code">Blue Code</string>
     <string name="str_sign_in">签到</string>
     <string name="str_sign_success">签到成功</string>
@@ -507,6 +509,20 @@
     <string name="str_page_first">第一页</string>
     <string name="str_page_last">末页</string>
 
+    <string name="transaction_name">事务内容</string>
+    <string name="transaction_time">执行时间</string>
+    <string name="transaction_type">事务状态</string>
+    <string name="transaction_set">操作</string>
+    <string name="transaction_set_1">执行</string>
+    <string name="transaction_set_2">已执行</string>
+    <string name="transaction_set_3">未执行</string>
+
+    <string name="push_message_name">消息标题</string>
+    <string name="push_message_time">接收时间</string>
+    <string name="push_message_type">消息状态</string>
+    <string name="push_message_set_1">已读</string>
+    <string name="push_message_set_2">未读</string>
+
     <string name="str_processing">处理中,请稍后…</string>
     <string name="str_recover">收回列表</string>
     <string name="check_network_type">请选择要设置的网络类型</string>

+ 17 - 0
resource/src/main/res/values/strings.xml

@@ -185,6 +185,7 @@
 
     <string name="language_set_title">Language setting</string>
     <string name="language_set_mode">Sync language from server:</string>
+    <string name="huli_time_set_mode">Would you like to enable nursing time setting:</string>
 
     <string name="enter_settings_tips">click 3 times to open settings</string>
     <string name="enable_debug">Enable debug</string>
@@ -280,6 +281,7 @@
     <string name="str_first_page">First page!</string>
     <string name="str_last_page">Last page!</string>
     <string name="str_advice">Advice</string>
+    <string name="str_user_transaction">User Transactions</string>
     <string name="str_blue_code">Blue Code</string>
     <string name="str_sign_in">sign in</string>
     <string name="str_sign_success">Sign in success</string>
@@ -505,6 +507,21 @@
     <string name="str_page_first">First Page</string>
     <string name="str_page_last">Last Page</string>
 
+    <string name="transaction_name">Transaction Name</string>
+    <string name="transaction_time">Execution Time</string>
+    <string name="transaction_type">Transaction Status</string>
+    <string name="transaction_set">Operation</string>
+    <string name="transaction_set_1">Executed</string>
+    <string name="transaction_set_2">Completed</string>
+    <string name="transaction_set_3">Not Executed</string>
+
+    <string name="push_message_name">Message Title</string>
+    <string name="push_message_time">Received Time</string>
+    <string name="push_message_type">Message Status</string>
+    <string name="push_message_set_1">Read</string>
+    <string name="push_message_set_2">Unread</string>
+
+
 
     <string name="str_processing">Processing…</string>
     <string name="str_recover">Recover</string>

+ 1 - 2
welcome/src/main/AndroidManifest.xml

@@ -10,8 +10,7 @@
             android:launchMode="singleTask">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
-                <!--<category android:name="android.intent.category.HOME" />-->
-
+                <category android:name="android.intent.category.HOME" />
                 <category android:name="android.intent.category.LAUNCHER"/>
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>