Browse Source

分机:
1,增加广播播放功能
2,21。5寸卓策设备对接
护士主机
1。宿舍端增加广播功能
2,增加一些交互列表的类型
3,房间列表增加姓名 修改请求接口
4。解决了一些多版本同步的问题,宿舍端房间列表刷新显示,交互列表显示,设置界面重启,sip呼叫页面按钮显示问题,

xunchuanzhi 7 months ago
parent
commit
51576ee0aa
43 changed files with 592 additions and 100 deletions
  1. 8 0
      android_bed/build.gradle
  2. BIN
      android_bed/libs/zckjAPI-2.7.jar
  3. 27 8
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/activity/CallingbedDormitoryActivity.kt
  4. 5 0
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/fragment/CallRecordsFragment.kt
  5. 5 0
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/fragment/CallingFragment.kt
  6. 5 0
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/fragment/DormCallRecordsFragment.kt
  7. 4 0
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/fragment/DormDialCallFragment.kt
  8. 4 1
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/hardware/HardWareFactory.java
  9. 117 0
      android_bed/src/main/java/com/wdkl/app/ncs/callingbed/hardware/imp/RK3568ZCHardTools.java
  10. 5 5
      android_bed/src/main/res/layout-land/callingbed_main_dorm.xml
  11. 5 5
      android_bed/src/main/res/layout/callingbed_main_dorm.xml
  12. 54 5
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/activity/NurseHome2Activity.kt
  13. 26 5
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/activity/OfflineHomeActivity.kt
  14. 1 1
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/adapter/DormCallingItemAdapter.kt
  15. 8 1
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/dialog/RebootDialogHelper.java
  16. 26 35
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/dorm/DormCallRecordsFragment.kt
  17. 56 4
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/dorm/DormDialCallFragment.kt
  18. 1 0
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/dorm/DormSipCallFragment.kt
  19. 27 1
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/dorm/adapter/DormCallRecordsItemAdapter.kt
  20. 7 0
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/dorm/adapter/DormDialCallSearchAdapter.kt
  21. 27 1
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/dorm/search/DeviceSearchItem.java
  22. 1 0
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/BaseCallFragment.kt
  23. 12 1
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/BroadcastListFragment.kt
  24. 11 4
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/BroadcastNewFragment.kt
  25. 5 0
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/BroadcastSetFragment.kt
  26. 18 2
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/BroadcasthhFragment.kt
  27. 6 0
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/SickbedFragment.kt
  28. 12 2
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/SystemSettingsFragment.kt
  29. 11 1
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/WorkFragment.kt
  30. 21 6
      android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/window/IncidentWindow.kt
  31. 2 0
      android_host/src/main/res/layout/adapter_dorm_call_records_item.xml
  32. 16 0
      android_host/src/main/res/layout/adapter_dorm_dial_call_item.xml
  33. 1 1
      android_host/src/main/res/layout/fragment_br_call.xml
  34. 1 1
      android_host/src/main/res/layout/fragment_br_main.xml
  35. 1 1
      android_host/src/main/res/layout/fragment_br_set.xml
  36. 2 1
      android_host/src/main/res/layout/fragment_broadcast_host.xml
  37. 1 1
      android_host/src/main/res/layout/fragment_sickbed.xml
  38. 9 0
      app/build.gradle
  39. 6 6
      build.gradle
  40. 1 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constant.java
  41. 4 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/callingbed/BedCallRecordsFragmentContract.kt
  42. 28 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/callingbed/BedCallRecordsFragmentPresenter.kt
  43. 5 1
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/vo/FrameBedVO.java

+ 8 - 0
android_bed/build.gradle

@@ -99,6 +99,10 @@ android {
             dimension "app"
             buildConfigField 'String', 'flag', '"12"'
         }
+        ZC_3568D {//外购21.5寸横屏探视分机
+            dimension "app"
+            buildConfigField 'String', 'flag', '"13"'
+        }
     }
     sourceSets {
         main { jni.srcDirs = [] }
@@ -139,6 +143,9 @@ android {
         rk3288_ym {//外购21.5寸竖屏分机
             manifest.srcFile 'src/main/AndroidManifest.xml'
         }
+        ZC_3568D {//外购21.5寸横屏探视分机
+            manifest.srcFile 'src/main/AndroidManifest.xml'
+        }
 
 
     }
@@ -216,6 +223,7 @@ dependencies {
     implementation 'org.altbeacon:android-beacon-library:2.17'
 
     implementation files('libs/zhylapi.jar')
+    implementation files('libs/zckjAPI-2.7.jar')
 
 //    implementation 'com.github.AAChartModel:AAChartCore-Kotlin:-SNAPSHOT'
 

BIN
android_bed/libs/zckjAPI-2.7.jar


+ 27 - 8
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/activity/CallingbedDormitoryActivity.kt

@@ -75,6 +75,13 @@ import com.wdkl.ncs.janus.client.StreamingCallback
 import com.wdkl.ncs.janus.rtc.WebRTCEngine
 import com.wdkl.ncs.janus.util.JanusConstant
 import kotlinx.android.synthetic.main.callingbed_main_dorm.*
+import kotlinx.android.synthetic.main.callingbed_main_dorm.title_layout_iv_day_hl_night
+import kotlinx.android.synthetic.main.callingbed_main_dorm.title_layout_iv_hl_bt
+import kotlinx.android.synthetic.main.callingbed_main_dorm.title_layout_iv_hl_ethernet
+import kotlinx.android.synthetic.main.callingbed_main_dorm.title_layout_iv_hl_tcp
+import kotlinx.android.synthetic.main.callingbed_main_dorm.title_layout_iv_hl_wifi
+import kotlinx.android.synthetic.main.callingbed_main_dorm.title_layout_tv_hl_point
+import kotlinx.android.synthetic.main.callingbed_main_new.*
 import org.apache.commons.lang3.StringEscapeUtils
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
@@ -395,6 +402,18 @@ class CallingbedDormitoryActivity :BaseActivity<BedCallingbedActivityPresenter,
             }
         }
 
+        dorm_broadcast_stop_new.setOnClickListener {
+            broadcastOn = false
+            stopBroadcast(true)
+        }
+
+        dorm_broadcast_state_new.setOnClickListener {
+            if (playing) {
+                pauseBroadcast()
+            } else {
+                startBroadcast()
+            }
+        }
     }
 
     fun showCallRecord() {
@@ -1673,27 +1692,27 @@ class CallingbedDormitoryActivity :BaseActivity<BedCallingbedActivityPresenter,
             janusClient?.connect(-1, false)
         }
         runOnUiThread {
-//            ll_broadcast_view_new.visibility = View.VISIBLE
+            dorm_ll_broadcast_view_new.visibility = View.VISIBLE
             showMessage(R.string.broadcast_playing)
-//            tv_broadcast_text_new.setText(R.string.broadcast_playing)
-//            tv_broadcast_state_new.setBackgroundResource(R.drawable.ic_baseline_pause)
+            dorm_broadcast_text_new.setText(R.string.broadcast_playing)
+            dorm_broadcast_state_new.setBackgroundResource(R.drawable.ic_baseline_pause)
 
             val vol = SettingConfig.getBroadcastVol(activity)
             if (vol in 0..100) {
                 VoiceManagerUtil.setCallVoice(activity, vol)
-//                seekbar_bc_volume_new.progress = vol
+                dorm_seekbar_bc_volume_new.progress = vol
             }
         }
     }
 
     private fun stopBroadcast(showMsg: Boolean) {
         playing = false
-        if (showMsg && ll_broadcast_view_new.visibility == View.VISIBLE) {
+        if (showMsg &&  dorm_ll_broadcast_view_new.visibility == View.VISIBLE) {
             showMsgMain(getString(R.string.broadcast_stop))
         }
 
         runOnUiThread {
-//            ll_broadcast_view_new.visibility = View.GONE
+            dorm_ll_broadcast_view_new.visibility = View.GONE
         }
         if (janusClient != null) {
             janusClient?.destroySession()
@@ -1711,8 +1730,8 @@ class CallingbedDormitoryActivity :BaseActivity<BedCallingbedActivityPresenter,
 
         runOnUiThread {
             showMessage(R.string.broadcast_pause)
-//            tv_broadcast_text_new.setText(R.string.broadcast_pause)
-//            tv_broadcast_state_new.setBackgroundResource(R.drawable.ic_baseline_play)
+            dorm_broadcast_text_new.setText(R.string.broadcast_pause)
+            dorm_broadcast_state_new.setBackgroundResource(R.drawable.ic_baseline_play)
         }
     }
 

+ 5 - 0
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/fragment/CallRecordsFragment.kt

@@ -31,6 +31,7 @@ import com.wdkl.ncs.android.middleware.logic.presenter.callingbed.BedCallRecords
 import com.wdkl.ncs.android.middleware.model.dos.EventDO
 import com.wdkl.ncs.android.middleware.model.vo.CallRecordVO
 import com.wdkl.ncs.android.middleware.model.vo.DeviceVO
+import com.wdkl.ncs.android.middleware.model.vo.FramePartVO
 import com.wdkl.ncs.android.middleware.tcp.TcpClient
 import com.wdkl.ncs.android.middleware.tcp.channel.EventUtil
 import com.wdkl.ncs.android.middleware.tcp.channel.OtherUtil
@@ -272,6 +273,10 @@ class CallRecordsFragment : BaseFragment<BedCallRecordsFragmentPresenter, MainCa
 
     }
 
+    override fun showData(data: FramePartVO) {
+        TODO("Not yet implemented")
+    }
+
 
     override fun onError(message: String, type: Int) {
         refresh.finishRefresh()

+ 5 - 0
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/fragment/CallingFragment.kt

@@ -43,6 +43,7 @@ import com.wdkl.ncs.android.middleware.logic.presenter.callingbed.BedCallRecords
 import com.wdkl.ncs.android.middleware.model.dos.EventDO
 import com.wdkl.ncs.android.middleware.model.vo.CallRecordVO
 import com.wdkl.ncs.android.middleware.model.vo.DeviceVO
+import com.wdkl.ncs.android.middleware.model.vo.FramePartVO
 import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
 import com.wdkl.ncs.android.middleware.tcp.TcpClient
 import com.wdkl.ncs.android.middleware.tcp.channel.EventUtil
@@ -124,6 +125,10 @@ class CallingFragment : BaseFragment<BedCallRecordsFragmentPresenter, MainCallin
 
     }
 
+    override fun showData(data: FramePartVO) {
+        TODO("Not yet implemented")
+    }
+
 
     override fun onError(message: String, type: Int) {
 

+ 5 - 0
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/fragment/DormCallRecordsFragment.kt

@@ -23,6 +23,7 @@ import com.wdkl.ncs.android.middleware.logic.presenter.callingbed.BedCallRecords
 import com.wdkl.ncs.android.middleware.model.dos.EventDO
 import com.wdkl.ncs.android.middleware.model.vo.CallRecordVO
 import com.wdkl.ncs.android.middleware.model.vo.DeviceVO
+import com.wdkl.ncs.android.middleware.model.vo.FramePartVO
 import kotlinx.android.synthetic.main.dorm_call_records.*
 import kotlin.collections.ArrayList
 
@@ -155,6 +156,10 @@ class DormCallRecordsFragment : BaseFragment<BedCallRecordsFragmentPresenter, Do
 
     }
 
+    override fun showData(data: FramePartVO) {
+
+    }
+
 
     override fun onError(message: String, type: Int) {
         mViewDataBinding.callRecordsRefresh.finishRefresh()

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

@@ -25,6 +25,7 @@ import com.wdkl.ncs.android.middleware.logic.presenter.callingbed.BedCallRecords
 import com.wdkl.ncs.android.middleware.model.dos.EventDO
 import com.wdkl.ncs.android.middleware.model.vo.CallRecordVO
 import com.wdkl.ncs.android.middleware.model.vo.DeviceVO
+import com.wdkl.ncs.android.middleware.model.vo.FramePartVO
 import com.wdkl.ncs.android.middleware.tcp.enums.DeviceTypeEnum
 import kotlinx.android.synthetic.main.dorm_dial_call.*
 import java.util.*
@@ -310,6 +311,9 @@ class DormDialCallFragment : BaseFragment<BedCallRecordsFragmentPresenter, DormD
         }
     }
 
+    override fun showData(data: FramePartVO) {
+    }
+
 
     override fun onError(message: String, type: Int) {
         mViewDataBinding.dialCallRefresh.finishRefresh()

+ 4 - 1
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/hardware/HardWareFactory.java

@@ -6,6 +6,7 @@ import com.wdkl.app.ncs.callingbed.hardware.imp.A133HardTools;
 import com.wdkl.app.ncs.callingbed.hardware.imp.CommonHardTools;
 import com.wdkl.app.ncs.callingbed.hardware.imp.PWHardTools;
 import com.wdkl.app.ncs.callingbed.hardware.imp.RK3288YMHardTools;
+import com.wdkl.app.ncs.callingbed.hardware.imp.RK3568ZCHardTools;
 import com.wdkl.app.ncs.callingbed.hardware.imp.WdchHardTools;
 import com.wdkl.app.ncs.callingbed.hardware.imp.YldHardTools;
 import com.wdkl.app.ncs.callingbed.hardware.imp.Z3128HardTools;
@@ -40,7 +41,9 @@ public  class HardWareFactory {
                 hardTools = new PWHardTools();
             } else if (BuildConfig.flag.equals(Constant.DEV_W_RK3288_YM)) {
                 hardTools = RK3288YMHardTools.getInstance();
-            } else {
+            }  else if (BuildConfig.flag.equals(Constant.DEV_W_RK3568_ZC)) {
+                hardTools = RK3568ZCHardTools.getInstance();
+            }else {
                 hardTools = CommonHardTools.getInstance();
             }
         }

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

@@ -0,0 +1,117 @@
+package com.wdkl.app.ncs.callingbed.hardware.imp;
+
+import android.app.Application;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.konka.android.tv.XJManager;
+import com.wdkl.app.ncs.callingbed.activity.AppUpdateActivity;
+import com.wdkl.app.ncs.callingbed.activity.CallingbedActivationActivity;
+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.ncs.android.lib.base.BaseApplication;
+import com.wdkl.ncs.android.middleware.common.Constant;
+import com.zcapi;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+/**
+ * 华策3568外购
+ * */
+public class RK3568ZCHardTools extends HardTools {
+
+    zcapi zcApi;
+    private static class RK3288YMHardToolsHolder{
+        private final  static RK3568ZCHardTools cHardTools = new RK3568ZCHardTools();
+    }
+
+    public static RK3568ZCHardTools getInstance(){
+        return RK3288YMHardToolsHolder.cHardTools;
+    }
+
+    @Override
+    public void init(CallingbedActivationActivity callingbedActivationActivity) {
+        zcApi=new zcapi();
+        zcApi.getContext(callingbedActivationActivity);
+    }
+
+    @Override
+    public void unInit() {
+
+    }
+
+    @Override
+    public void resetDevice() {
+
+    }
+    @Override
+    public void setTime(Context context, long timeMills, String timeZone) {
+        if (timeMills != 0) {
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(new Date(timeMills));
+            int year = calendar.get(Calendar.YEAR);
+            int month = calendar.get(Calendar.MONTH);
+            int day = calendar.get(Calendar.DAY_OF_MONTH);
+            int hour = calendar.get(Calendar.HOUR_OF_DAY);
+            int minute = calendar.get(Calendar.MINUTE);
+            int[] timeArray = new int[] { year, month, day, hour, minute, 0 };
+            zcApi.setSystemTime(timeArray);
+        }
+        super.setTime(context, timeMills, timeZone);
+    }
+    @Override
+    public void resetDevicex(Application application) {
+        zcApi.reboot();
+    }
+    @Override
+    public void Registration(Context context) {
+        //获取mac地址
+        Constant.LOCAL_MAC = NetHelper.getInstance().getMacAddress();
+        Constant.DEVICE_SN = zcApi.getBuildSerial();
+
+        if (!TextUtils.isEmpty(Constant.DEVICE_SN) && !Constant.DEVICE_SN.equalsIgnoreCase("null")) {
+            Constant.DEVICE_REGISTER_ID = Constant.DEVICE_SN;
+        } else {
+            Constant.DEVICE_REGISTER_ID = Constant.LOCAL_MAC;
+        }
+    }
+
+    @Override
+    public void startbar(Boolean showBar) {
+        zcApi.setStatusBar(!showBar);
+        super.startbar(showBar);
+    }
+
+    @Override
+    public void uninstallApp(Context context, boolean isuninstall, String name) {
+
+    }
+
+    @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;
+    }
+}

+ 5 - 5
android_bed/src/main/res/layout-land/callingbed_main_dorm.xml

@@ -138,7 +138,7 @@
                 android:layout_below="@id/calling_bed_layout_title" />
 
             <LinearLayout
-                android:id="@+id/ll_broadcast_view_new"
+                android:id="@+id/dorm_ll_broadcast_view_new"
                 android:layout_width="match_parent"
                 android:layout_height="80dp"
                 android:layout_centerInParent="true"
@@ -157,7 +157,7 @@
                     android:textSize="20sp" />
 
                 <SeekBar
-                    android:id="@+id/seekbar_bc_volume_new"
+                    android:id="@+id/dorm_seekbar_bc_volume_new"
                     android:layout_width="180dp"
                     android:layout_height="wrap_content"
                     android:layout_gravity="center_vertical"
@@ -168,7 +168,7 @@
                     android:thumb="@drawable/seekbar_thumb" />
 
                 <TextView
-                    android:id="@+id/tv_broadcast_state_new"
+                    android:id="@+id/dorm_broadcast_state_new"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginLeft="10dp"
@@ -176,7 +176,7 @@
                     android:background="@drawable/ic_baseline_pause" />
 
                 <com.wdkl.ncs.android.lib.widget.MarqueeTextView
-                    android:id="@+id/tv_broadcast_text_new"
+                    android:id="@+id/dorm_broadcast_text_new"
                     android:layout_width="160dp"
                     android:layout_height="wrap_content"
                     android:ellipsize="marquee"
@@ -189,7 +189,7 @@
                     android:textSize="32sp" />
 
                 <TextView
-                    android:id="@+id/tv_broadcast_stop_new"
+                    android:id="@+id/dorm_broadcast_stop_new"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginLeft="10dp"

+ 5 - 5
android_bed/src/main/res/layout/callingbed_main_dorm.xml

@@ -141,7 +141,7 @@
                 android:layout_below="@id/calling_bed_layout_title" />
 
             <LinearLayout
-                android:id="@+id/ll_broadcast_view_new"
+                android:id="@+id/dorm_ll_broadcast_view_new"
                 android:layout_width="match_parent"
                 android:layout_height="80dp"
                 android:layout_centerInParent="true"
@@ -160,7 +160,7 @@
                     android:textSize="20sp" />
 
                 <SeekBar
-                    android:id="@+id/seekbar_bc_volume_new"
+                    android:id="@+id/dorm_seekbar_bc_volume_new"
                     android:layout_width="180dp"
                     android:layout_height="wrap_content"
                     android:layout_gravity="center_vertical"
@@ -171,7 +171,7 @@
                     android:thumb="@drawable/seekbar_thumb" />
 
                 <TextView
-                    android:id="@+id/tv_broadcast_state_new"
+                    android:id="@+id/dorm_broadcast_state_new"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginLeft="10dp"
@@ -179,7 +179,7 @@
                     android:background="@drawable/ic_baseline_pause" />
 
                 <com.wdkl.ncs.android.lib.widget.MarqueeTextView
-                    android:id="@+id/tv_broadcast_text_new"
+                    android:id="@+id/dorm_broadcast_text_new"
                     android:layout_width="160dp"
                     android:layout_height="wrap_content"
                     android:ellipsize="marquee"
@@ -192,7 +192,7 @@
                     android:textSize="32sp" />
 
                 <TextView
-                    android:id="@+id/tv_broadcast_stop_new"
+                    android:id="@+id/dorm_broadcast_stop_new"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginLeft="10dp"

+ 54 - 5
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/activity/NurseHome2Activity.kt

@@ -134,6 +134,13 @@ class NurseHome2Activity  : BaseActivity<NurseHomeActivityPresenter, NurseMainDo
     //iot设备
     private val IotDeviceFragment = "IotDeviceFragment"
 
+    //广播
+    private val BroadcastNewFragment = "BroadcastNewFragment"
+
+    private val SickbedFragment = "SickbedFragment"
+
+
+
     private val WorkFragment = "WorkFragment"
 
 
@@ -516,9 +523,10 @@ class NurseHome2Activity  : BaseActivity<NurseHomeActivityPresenter, NurseMainDo
 
     }
 
-    fun showCallRecord() {
-        if (!dormCallRecordFragment.equals(curFragment)) {
-            switchFragment(R.id.callingbed_main_frame, DormCallRecordsFragment(), dormCallRecordFragment)
+    fun showHome() {
+        //首页
+        if (!dormFragment.equals(curFragment)) {
+            switchFragment(R.id.callingbed_main_frame, DromMianFragment(), dormFragment)
         }
     }
 
@@ -532,7 +540,16 @@ class NurseHome2Activity  : BaseActivity<NurseHomeActivityPresenter, NurseMainDo
             switchFragment(R.id.callingbed_main_frame, SystemSettingsFragment(), SystemSettingsFragment)
         }
     }
-
+    fun showBroadcastNewFragment() {
+        if (!SystemSettingsFragment.equals(curFragment)) {
+            switchFragment(R.id.callingbed_main_frame, BroadcastNewFragment(), BroadcastNewFragment)
+        }
+    }
+    fun showIotDeviceFragment() {
+        if (!SystemSettingsFragment.equals(curFragment)) {
+            switchFragment(R.id.callingbed_main_frame, IotDeviceFragment(), IotDeviceFragment)
+        }
+    }
 
     fun setThemeBg(id: Int) {
         try {
@@ -815,6 +832,20 @@ class NurseHome2Activity  : BaseActivity<NurseHomeActivityPresenter, NurseMainDo
                 .commitAllowingStateLoss()
         curFragment = tag
     }
+    private fun destroyFragment(id: Int, tag: String) {
+
+        if (tag!=""){
+            val fragment = supportFragmentManager.findFragmentByTag(tag)
+            if (fragment != null) {
+                supportFragmentManager.beginTransaction()
+                        .remove(fragment)  // 移除 Fragment
+                        .commitAllowingStateLoss()
+                curFragment = ""  // 清空当前 Fragment 标识
+            }
+        }
+
+    }
+
     private fun addFullFragment(fragment: Fragment) {
         removeFullFragment()
         fullFragment = fragment
@@ -2088,7 +2119,23 @@ class NurseHome2Activity  : BaseActivity<NurseHomeActivityPresenter, NurseMainDo
                     tv_broadcast_state.visibility = View.GONE
                 }
             }
+            Constant.EVENT_r_br_set -> {
+                if (!dormFragment.equals(curFragment)) {
+                    switchFragment(R.id.callingbed_main_frame, BroadcastNewFragment(), dormFragment)
+                }
+            }
 
+            Constant.EVENT_V_br_set -> {
+                destroyFragment(R.id.callingbed_main_frame,curFragment)
+                supportFragmentManager.inTransaction {
+//                    curFragment = BroadcastSetFragment
+                    val bundle = Bundle()
+                    bundle.putString("id", messageEvent.message.toString())
+                    val fragment = BroadcastSetFragment()
+                    fragment.arguments = bundle
+                    add(R.id.callingbed_main_frame, fragment)
+                }
+            }
 
             //进入院外探视
             Constant.EVENT_VISIT_START -> {
@@ -2369,7 +2416,9 @@ class NurseHome2Activity  : BaseActivity<NurseHomeActivityPresenter, NurseMainDo
             }
         }
     }
-
+    inline fun FragmentManager.inTransaction(func: FragmentTransaction.() -> FragmentTransaction) {
+        beginTransaction().func().commitAllowingStateLoss()
+    }
     private fun warningSpeech(frameName: String, action: TcpAction) {
         var description = BaseApplication.appContext.getString(R.string.emergency_call)
         if (action == TcpAction.SOSAction.ALARM_TEST) {

+ 26 - 5
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/activity/OfflineHomeActivity.kt

@@ -24,6 +24,7 @@ import androidx.fragment.app.FragmentManager
 import androidx.fragment.app.FragmentTransaction
 import com.enation.javashop.android.jrouter.external.annotation.Router
 import com.enation.javashop.net.engine.model.NetState
+import com.wdkl.ncs.android.component.nursehome.BuildConfig
 import com.wdkl.ncs.android.component.nursehome.R
 import com.wdkl.ncs.android.component.nursehome.databinding.ActivityNewNurseHomeBinding
 import com.wdkl.ncs.android.component.nursehome.fragment.*
@@ -120,13 +121,24 @@ class OfflineHomeActivity  : BaseActivity<NurseHomeActivityPresenter, ActivityNe
 
     companion object {
         fun checkIncomingCall(deviceMac: String?): Boolean {
-            if (NurseHomeActivity.callingList.size > 0) {
-                for (item in NurseHomeActivity.callingList) {
-                    if (item.udpItem.fromMacAddr.equals(deviceMac)) {
-                        return true
+            if (!BuildConfig.device_type.equals("4")){
+                if (NurseHomeActivity.callingList.size > 0) {
+                    for (item in NurseHomeActivity.callingList) {
+                        if (item.udpItem.fromMacAddr.equals(deviceMac)) {
+                            return true
+                        }
+                    }
+                }
+            }else{
+                if (NurseHome2Activity.callingList.size > 0) {
+                    for (item in NurseHome2Activity.callingList) {
+                        if (item.udpItem.fromMacAddr.equals(deviceMac)) {
+                            return true
+                        }
                     }
                 }
             }
+
             return false
         }
     }
@@ -491,11 +503,20 @@ class OfflineHomeActivity  : BaseActivity<NurseHomeActivityPresenter, ActivityNe
 
 
     fun updateCallTips() {
-        if (NurseHomeActivity.callingList.size > 0) {
+        if (!BuildConfig.device_type.equals("4")){
+             if (NurseHomeActivity.callingList.size > 0) {
             img_new_call_tips.visibility = View.VISIBLE
         } else {
             img_new_call_tips.visibility = View.GONE
         }
+        }else{
+            if (NurseHome2Activity.callingList.size > 0) {
+            img_new_call_tips.visibility = View.VISIBLE
+        } else {
+            img_new_call_tips.visibility = View.GONE
+        }
+        }
+
     }
 
     //显示中间主界面

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

@@ -10,7 +10,7 @@ import android.widget.TextView
 import androidx.recyclerview.widget.RecyclerView
 import com.wdkl.ncs.android.component.nursehome.R
 import com.wdkl.ncs.android.component.nursehome.activity.NurseHome2Activity
-import com.wdkl.ncs.android.component.nursehome.activity.NurseHomeActivity
+
 import com.wdkl.ncs.android.component.nursehome.settingconfig.SettingConfig
 import com.wdkl.ncs.android.component.nursehome.util.RingPlayHelper
 import com.wdkl.ncs.android.component.nursehome.util.SpeechUtil

+ 8 - 1
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/dialog/RebootDialogHelper.java

@@ -6,8 +6,10 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.Button;
 
+import com.wdkl.ncs.android.component.nursehome.BuildConfig;
 import com.wdkl.ncs.android.component.nursehome.R;
 import com.wdkl.ncs.android.component.nursehome.util.AppUpdateHelper;
+import com.wdkl.ncs.android.middleware.common.Constant;
 
 
 public class RebootDialogHelper {
@@ -30,7 +32,12 @@ public class RebootDialogHelper {
         server_determine_button.setOnClickListener(v -> {
             if (alertDialog != null && alertDialog.isShowing()) {
                 alertDialog.dismiss();
-                AppUpdateHelper.reboot(activity);
+                if ( BuildConfig.flag.equals(Constant.DEV_W_KAER)){
+                    AppUpdateHelper.restartApp(activity);
+                }else {
+                    AppUpdateHelper.reboot(activity);
+                }
+
             }
         });
         alertDialog = builder.create();

+ 26 - 35
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/dorm/DormCallRecordsFragment.kt

@@ -1,6 +1,5 @@
 package com.wdkl.ncs.android.component.nursehome.dorm
 
-import android.text.TextUtils
 import android.util.Log
 import android.view.View
 import androidx.recyclerview.widget.GridLayoutManager
@@ -13,8 +12,6 @@ import com.google.gson.Gson
 import com.scwang.smartrefresh.layout.footer.ClassicsFooter
 import com.wdkl.ncs.android.component.nursehome.R
 import com.wdkl.ncs.android.component.nursehome.activity.NurseHome2Activity
-import com.wdkl.ncs.android.component.nursehome.activity.NurseHomeActivity
-import com.wdkl.ncs.android.component.nursehome.adapter.CallingItemAdapter
 import com.wdkl.ncs.android.component.nursehome.adapter.DormCallingItemAdapter
 import com.wdkl.ncs.android.component.nursehome.databinding.DormCallRecordsBinding
 import com.wdkl.ncs.android.component.nursehome.dorm.adapter.DormCallRecordsItemAdapter
@@ -22,21 +19,14 @@ 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.*
 import com.wdkl.ncs.android.lib.base.BaseApplication
-
 import com.wdkl.ncs.android.lib.base.BaseFragment
-import com.wdkl.ncs.android.lib.core.locale.LocaleMangerUtils
 import com.wdkl.ncs.android.lib.utils.showMessage
 import com.wdkl.ncs.android.lib.vo.filter
 import com.wdkl.ncs.android.middleware.common.Constant
 import com.wdkl.ncs.android.middleware.common.MessageEvent
 import com.wdkl.ncs.android.middleware.entity.CallingItem
-import com.wdkl.ncs.android.middleware.logic.contract.callingbed.BedCallRecordsFragmentContract
 import com.wdkl.ncs.android.middleware.logic.contract.nursehome.CallRecordsFragmentContract
-import com.wdkl.ncs.android.middleware.logic.presenter.callingbed.BedCallRecordsFragmentPresenter
 import com.wdkl.ncs.android.middleware.logic.presenter.nursehome.CallRecordsFragmentPresenter
-import com.wdkl.ncs.android.middleware.model.dos.EventDO
-import com.wdkl.ncs.android.middleware.model.vo.CallRecordVO
-import com.wdkl.ncs.android.middleware.model.vo.DeviceVO
 import com.wdkl.ncs.android.middleware.model.vo.EventVO
 import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
 import com.wdkl.ncs.android.middleware.tcp.TcpClient
@@ -48,8 +38,6 @@ import com.wdkl.ncs.android.middleware.tcp.enums.TcpType
 import com.wdkl.ncs.android.middleware.udp2.UdpIndex
 import com.wdkl.ncs.android.middleware.udp2.UdpItem
 import kotlinx.android.synthetic.main.dorm_call_records.*
-
-import kotlinx.android.synthetic.main.fragment_call_records.*
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
@@ -278,9 +266,8 @@ class DormCallRecordsFragment : BaseFragment<CallRecordsFragmentPresenter, DormC
                     val udpItem = messageEvent.message as UdpItem
                     Log.d(TAG, "EVENT_UDP ==> $udpItem")
                     if (UdpIndex.BED_CALL_OUT == udpItem.index) {
-                        val mainActivity = activity as? NurseHomeActivity
-                        EventBus.getDefault().post(MessageEvent("finish", Constant.EVENT_FINISHh))
-                        mainActivity?.showLeftFragment()
+
+
 
                         //1.更新点阵屏信息显示
                         //LedHelper.updateLedInfo(interactionVO, true, false)
@@ -325,9 +312,12 @@ class DormCallRecordsFragment : BaseFragment<CallRecordsFragmentPresenter, DormC
                             SpeechUtil.getInstance().removeSpeak(text)
                         } else {
                             //如果呼叫列表只有一个呼叫了,说明删除这个之后就清空了,此时关闭铃声或音乐
-                            if (NurseHomeActivity.callingList.size == 1) {
-                                RingPlayHelper.stopRingTone()
-                            }
+
+                                if (NurseHome2Activity.callingList.size == 1) {
+                                    RingPlayHelper.stopRingTone()
+                                }
+
+
                         }
 
                         if (callingAdapter != null) {
@@ -348,9 +338,7 @@ class DormCallRecordsFragment : BaseFragment<CallRecordsFragmentPresenter, DormC
                             return
                         }
 
-                        val mainActivity = activity as? NurseHomeActivity
-                        EventBus.getDefault().post(MessageEvent("finish", Constant.EVENT_FINISHh))
-                        mainActivity?.showLeftFragment()
+
                         //返回呼叫成功tcp
                         //val responseTcpModel = VoiceUtil.voiceSuccessHost(tcpModel.tid, tcpModel.toId, tcpModel.fromId)
                         //TcpClient.getInstance().sendMsg(responseTcpModel.toJson())
@@ -427,9 +415,11 @@ class DormCallRecordsFragment : BaseFragment<CallRecordsFragmentPresenter, DormC
                             SpeechUtil.getInstance().removeSpeak(text)
                         } else {
                             //如果呼叫列表只有一个呼叫了,说明删除这个之后就清空了,此时关闭铃声或音乐
-                            if (NurseHomeActivity.callingList.size == 1) {
-                                RingPlayHelper.stopRingTone()
-                            }
+                                if (NurseHome2Activity.callingList.size == 1) {
+                                    RingPlayHelper.stopRingTone()
+                                }
+
+
                         }
 
                         if (callingAdapter != null) {
@@ -441,19 +431,20 @@ class DormCallRecordsFragment : BaseFragment<CallRecordsFragmentPresenter, DormC
 
             Constant.EVENT_HOOK_OFF -> {
                 //接听呼叫列表中第一个电话
-                if (NurseHomeActivity.callingList.size > 0) {
-                    val callingItem = NurseHomeActivity.callingList.get(0)
-                    val itemData = callingItem.interactionVO
-                    //LedHelper.updateLedInfo(itemData, false, false)
-
-                    if (callingItem.type == 0) {
-                        //tcp
-                        EventBus.getDefault().post(MessageEvent(callingItem, Constant.EVENT_ACCEPT_CALL))
-                        if (callingAdapter != null) {
-                            callingAdapter?.removeCall(itemData, true)
+                    if (NurseHome2Activity.callingList.size > 0) {
+                        val callingItem = NurseHome2Activity.callingList.get(0)
+                        val itemData = callingItem.interactionVO
+                        //LedHelper.updateLedInfo(itemData, false, false)
+
+                        if (callingItem.type == 0) {
+                            //tcp
+                            EventBus.getDefault().post(MessageEvent(callingItem, Constant.EVENT_ACCEPT_CALL))
+                            if (callingAdapter != null) {
+                                callingAdapter?.removeCall(itemData, true)
+                            }
                         }
                     }
-                }
+
             }
 
             Constant.EVENT_TRANSFER_CALL -> {

+ 56 - 4
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/dorm/DormDialCallFragment.kt

@@ -24,8 +24,7 @@ import com.wdkl.ncs.android.middleware.common.Constant
 import com.wdkl.ncs.android.middleware.logic.contract.callingbed.BedCallRecordsFragmentContract
 import com.wdkl.ncs.android.middleware.logic.presenter.callingbed.BedCallRecordsFragmentPresenter
 import com.wdkl.ncs.android.middleware.model.dos.EventDO
-import com.wdkl.ncs.android.middleware.model.vo.CallRecordVO
-import com.wdkl.ncs.android.middleware.model.vo.DeviceVO
+import com.wdkl.ncs.android.middleware.model.vo.*
 import com.wdkl.ncs.android.middleware.tcp.enums.DeviceTypeEnum
 import kotlinx.android.synthetic.main.dorm_dial_call.*
 import java.util.*
@@ -71,14 +70,16 @@ class  DormDialCallFragment : BaseFragment<BedCallRecordsFragmentPresenter, Dorm
         adapter.setActionClickListener(this)
 
         if (Constant.PART_ID != null) {
-            presenter.loadFrameDevices(DeviceTypeEnum.DIGIT_BED_DEVICE.value(), Constant.PART_ID)
+//            presenter.loadFrameDevices(DeviceTypeEnum.DIGIT_BED_DEVICE.value(), Constant.PART_ID)
+            presenter.loadData(Constant.PART_ID)
         }
     }
 
     override fun bindEvent() {
         //下拉刷新
         mViewDataBinding.dialCallRefresh.setOnRefreshListener {
-            presenter.loadFrameDevices(DeviceTypeEnum.DIGIT_BED_DEVICE.value(), Constant.PART_ID)
+            presenter.loadData(Constant.PART_ID)
+//            presenter.loadFrameDevices(DeviceTypeEnum.DIGIT_BED_DEVICE.value(), Constant.PART_ID)
         }
 
         //监听搜索框输入
@@ -253,6 +254,7 @@ class  DormDialCallFragment : BaseFragment<BedCallRecordsFragmentPresenter, Dorm
                         device.fullName,
                         device.id,
                         letter,
+                            "",
                         pinyinList
                     )
                     sortList.add(item)
@@ -263,6 +265,56 @@ class  DormDialCallFragment : BaseFragment<BedCallRecordsFragmentPresenter, Dorm
         }
     }
 
+    override fun showData(data: FramePartVO) {
+        mViewDataBinding.dialCallRefresh.finishRefresh()
+        if (data.frameRoomVos != null){
+            val frameRoomVos = data.frameRoomVos as ArrayList<FrameRoomVO>
+            val frameBedVO = ArrayList<FrameBedVO>()
+            for (frameRoomVo in frameRoomVos) {
+                val frameBedVOs = frameRoomVo.frameBedList
+                if (frameBedVOs != null && frameBedVOs.size > 0) {
+                    for (bedVO in frameBedVOs) {
+                        frameBedVO.add(bedVO)
+                    }
+                }
+            }
+
+            if (frameBedVO.size > 0) {
+                val sortList = ArrayList<DeviceSearchItem>()
+                for (device in frameBedVO) {
+                    var letter: String
+                        //排除本机设备
+                        val pinyinList = PinyinUtil.getPinYinList(device.frameBed.fullName)
+                        letter = if (pinyinList != null && pinyinList.isNotEmpty()) {
+                            // A-Z导航
+                            val letters = pinyinList[0].substring(0, 1)
+                            // 正则表达式,判断首字母是否是英文字母
+                            if (letters.matches(reg)) {
+                                letters.toUpperCase(Locale.ROOT)
+                            } else {
+                                "#"
+                            }
+                        } else {
+                            "#"
+                        }
+
+                        val item = DeviceSearchItem(
+                                device.frameBed.fullName,
+                                device.bedDeviceId,
+                                letter,
+                                device.customerName,
+                                pinyinList
+                        )
+                        sortList.add(item)
+
+                }
+
+                adapter.setDataList(sortList)
+            }
+        }
+
+    }
+
 
     override fun onError(message: String, type: Int) {
         mViewDataBinding.dialCallRefresh.finishRefresh()

+ 1 - 0
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/dorm/DormSipCallFragment.kt

@@ -250,6 +250,7 @@ class DormSipCallFragment: BaseCallFragment() {
         sky_voice_call_timer.base = SystemClock.elapsedRealtime()
         sky_voice_call_timer.start()
         sky_voice_call_mute.visibility = View.VISIBLE
+        sky_voice_call_speaker.visibility = View.VISIBLE
         ll_voice_volume_bar.visibility = View.VISIBLE
     }
 

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

@@ -16,6 +16,7 @@ import com.wdkl.ncs.android.lib.utils.TimeHandle
 import com.wdkl.ncs.android.lib.utils.showMessage
 import com.wdkl.ncs.android.middleware.api.ApiManager
 import com.wdkl.ncs.android.middleware.common.Constant
+import com.wdkl.ncs.android.middleware.common.Constant.roleName
 import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
 import com.wdkl.ncs.android.middleware.tcp.enums.DeviceTypeEnum
 import com.wdkl.ncs.android.middleware.tcp.enums.RoleTypeEnum
@@ -78,7 +79,7 @@ class DormCallRecordsItemAdapter(val activity: Activity, var data: ArrayList<Int
                 binding.imgCallType.setImageResource(R.drawable.ic_call_main)
                 binding.callRecordsItemTitle.text = "未知"
                 if (itemData.createDate != null) {
-                    binding.callRecordsItemTime.text = TimeHandle.getDateTime(itemData.createDate * 1000, "yyyy/MM/dd HH:mm:ss")
+                    binding.callRecordsItemTime.text = TimeHandle.getDateTime(itemData.createDate * 1000, "MM/dd HH:mm")
                 } else {
                     binding.callRecordsItemTime.text = "----"
                 }
@@ -159,8 +160,33 @@ class DormCallRecordsItemAdapter(val activity: Activity, var data: ArrayList<Int
                     binding.imgCallType.setImageResource(R.drawable.ic_records_voice_message)
                     binding.callRecordsItemTitle.text = itemData.fromMemberName + "  发来语音"
                     binding.btnRecordsAction.text = "播放"
+                }else if (TcpType.EVENT.name == itemData.actionType){
+                    binding.imgCallType.setImageResource(R.mipmap.sos)
+                    binding.callRecordsItemTitle.text = itemData.fromFrameFullName + "  请求"+itemData.data
+
+                    if (itemData.actionEndMemberId != null) {
+                        binding.btnRecordsAction.text = "已响应"
+                    }else{
+                        binding.btnRecordsAction.text = "未响应"
+                    }
+
+                }else if (TcpType.REINFORCE.name == itemData.actionType){
+                    binding.imgCallType.setImageResource(R.mipmap.sos)
+                    binding.callRecordsItemTitle.text = itemData.fromFrameFullName + "  请求增援"
+
+                    if (itemData.actionEndMemberId != null) {
+                        binding.btnRecordsAction.text = "已响应"
+                    }else{
+                        binding.btnRecordsAction.text = "未响应"
+                    }
+
+                }else if (TcpType.BROADCAST.name == itemData.actionType){
+                    binding.imgCallType.setImageResource(R.drawable.ic_records_voice_message)
+                    binding.callRecordsItemTitle.text =  "广播播放"
+                    binding.btnRecordsAction.visibility =View.GONE
                 }
 
+
                 binding.btnRecordsAction.setOnClickListener {
                     if (TcpType.VOICE.name == itemData.actionType || TcpType.VIDEO.name == itemData.actionType) {
                         //拨打语音

+ 7 - 0
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/dorm/adapter/DormDialCallSearchAdapter.kt

@@ -37,6 +37,12 @@ class DormDialCallSearchAdapter: FuzzySearchBaseAdapter<DeviceSearchItem, DormDi
         try {
             val itemData = mDataList[position]
             holder.deviceFrameName.text = itemData.frameName
+            holder.deviceFrameName2.text = itemData.userName
+            if (itemData.deviceId==0){
+                holder.dialAction.visibility =View.GONE
+            }else{
+                holder.dialAction.visibility =View.VISIBLE
+            }
             holder.dialAction.setOnClickListener {
                 actionClickListener?.onCallDevice(itemData.deviceId)
             }
@@ -58,6 +64,7 @@ class DormDialCallSearchAdapter: FuzzySearchBaseAdapter<DeviceSearchItem, DormDi
 
     class ItemHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
         var deviceFrameName: TextView = itemView.findViewById(R.id.call_device_frame_name)
+        var deviceFrameName2: TextView = itemView.findViewById(R.id.call_device_frame_name2)
         var dialAction: TextView = itemView.findViewById(R.id.btn_dial_action)
     }
 }

+ 27 - 1
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/dorm/search/DeviceSearchItem.java

@@ -7,13 +7,39 @@ public class DeviceSearchItem implements IAZItem, IFuzzySearchItem {
     private String frameName;
     private int deviceId;
     private String sortLetters;
+    private String userName;
     private List<String> fuzzySearchKey;
 
-    public DeviceSearchItem(String name, int id, String sortLetters, List<String> fuzzySearchKey) {
+    public DeviceSearchItem(String name, int id, String sortLetters,  String userName,List<String> fuzzySearchKey) {
         this.frameName = name;
         this.deviceId = id;
         this.sortLetters = sortLetters;
         this.fuzzySearchKey = fuzzySearchKey;
+        this.userName = userName;
+    }
+
+    public void setFrameName(String frameName) {
+        this.frameName = frameName;
+    }
+
+    public void setDeviceId(int deviceId) {
+        this.deviceId = deviceId;
+    }
+
+    public void setSortLetters(String sortLetters) {
+        this.sortLetters = sortLetters;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public void setFuzzySearchKey(List<String> fuzzySearchKey) {
+        this.fuzzySearchKey = fuzzySearchKey;
     }
 
     public String getFrameName() {

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

@@ -100,6 +100,7 @@ abstract class BaseCallFragment: Fragment(), View.OnTouchListener {
     //返回主界面
     protected fun backToMain() {
         EventBus.getDefault().post(MessageEvent("BackCall", Constant.EVENT_REMOVE_CALL_FRAGMENT))
+        EventBus.getDefault().post(MessageEvent(0, Constant.EVENT_REFRESH_CALL_LIST))
     }
 
 }

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

@@ -5,7 +5,9 @@ import androidx.fragment.app.Fragment
 import com.alibaba.android.vlayout.DelegateAdapter
 import com.alibaba.android.vlayout.VirtualLayoutManager
 import com.enation.javashop.net.engine.model.NetState
+import com.wdkl.ncs.android.component.nursehome.BuildConfig
 import com.wdkl.ncs.android.component.nursehome.R
+import com.wdkl.ncs.android.component.nursehome.activity.NurseHome2Activity
 import com.wdkl.ncs.android.component.nursehome.activity.NurseHomeActivity
 import com.wdkl.ncs.android.component.nursehome.adapter.BroadcastListAdapter
 import com.wdkl.ncs.android.component.nursehome.databinding.FragmentBrMainBinding
@@ -32,6 +34,7 @@ import com.wdkl.ncs.android.middleware.tcp.enums.TcpAction
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpType
 import com.wdkl.ncs.android.middleware.utils.CommonUtils
 import kotlinx.android.synthetic.main.fragment_br_main.*
+import kotlinx.android.synthetic.main.fragment_broadcast_host.*
 import kotlinx.android.synthetic.main.fragment_doctor_host.*
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
@@ -71,6 +74,9 @@ class BroadcastListFragment : BaseFragment<BroadcastListPresenter, FragmentBrMai
      *初始化操作
      */
     override fun init() {
+        if (!BuildConfig.device_type.equals("4")){
+            f_br_list_bg.setBackgroundResource(R.color.color_no_d_work)
+        }
         /**初始化LayoutMannager*/
         virtualLayoutManager = VirtualLayoutManager(this.activity)
         /**初始化适配器*/
@@ -145,7 +151,12 @@ class BroadcastListFragment : BaseFragment<BroadcastListPresenter, FragmentBrMai
                 }
             }
             "停止" -> {
-                var id = NurseHomeActivity.removeValueFrombrIngList(ID.toString())
+                if (!BuildConfig.device_type.equals("4")){
+                    var id = NurseHomeActivity.removeValueFrombrIngList(ID.toString())
+                }else{
+                    var id = NurseHome2Activity.removeValueFrombrIngList(ID.toString())
+                }
+
                 if (!id.equals("-1")){
                     BrstopDialogHelper.showDialog(activity) {
 

+ 11 - 4
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/BroadcastNewFragment.kt

@@ -1,17 +1,20 @@
 package com.wdkl.ncs.android.component.nursehome.fragment
 
 import com.enation.javashop.net.engine.model.NetState
+import com.wdkl.ncs.android.component.nursehome.BuildConfig
 import com.wdkl.ncs.android.component.nursehome.R
 import com.wdkl.ncs.android.component.nursehome.databinding.FragmentBroadcastHostBinding
 import com.wdkl.ncs.android.component.nursehome.launch.NurseHomeLaunch
 import com.wdkl.ncs.android.lib.base.BaseFragment
 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.nursehome.BroadcastContract
 import com.wdkl.ncs.android.middleware.logic.presenter.nursehome.BroadcastPresenter
 import com.wdkl.ncs.android.middleware.model.dos.BroadcastDO
 
 import kotlinx.android.synthetic.main.fragment_broadcast_host.*
+import kotlinx.android.synthetic.main.fragment_nb_iot_device.*
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
@@ -41,6 +44,10 @@ class BroadcastNewFragment : BaseFragment<BroadcastPresenter, FragmentBroadcastH
      *初始化操作
      */
     override fun init() {
+        //宿舍
+        if (!BuildConfig.device_type.equals("4")){
+            f_m_br_bg.setBackgroundResource(R.color.color_no_d_work)
+        }
         val broadcastListFragment = BroadcastListFragment()
         setui(1)
         val transaction = childFragmentManager.beginTransaction()
@@ -79,7 +86,7 @@ class BroadcastNewFragment : BaseFragment<BroadcastPresenter, FragmentBroadcastH
     private fun  setui(int: Int){
         ll_gb_bt.setBackgroundResource(R.drawable.shape_bed_bg)
         ll_gb_bt_img.setBackgroundResource(R.mipmap.jr)
-        ll_gb_bt_tx.setTextColor(getResources().getColor(R.color.text_name_color))
+        ll_gb_bt_tx.setTextColor(getResources().getColor(R.color.black))
 
         ll_hh_bt.setBackgroundResource(R.drawable.shape_bed_bg)
         ll_hh_bt_img.setBackgroundResource(R.mipmap.jr)
@@ -110,6 +117,7 @@ class BroadcastNewFragment : BaseFragment<BroadcastPresenter, FragmentBroadcastH
      *页面销毁回调
      */
     override fun destory() {
+
     }
 
     /**
@@ -162,10 +170,9 @@ class BroadcastNewFragment : BaseFragment<BroadcastPresenter, FragmentBroadcastH
     fun onMoonEvent(messageEvent: MessageEvent) {
 //        Log.e(TAG,"收到tcp消息")
 //        if (Constant.EVENT_V_br_set == messageEvent.type) {
-//            val BroadcastSetFragment = BroadcastSetFragment()
 //            val transaction = childFragmentManager.beginTransaction()
-//            transaction.replace(R.id.br_frame, BroadcastSetFragment)
-//            transaction.commit()
+//            transaction.remove(BroadcastListFragment())
+//            transaction.commitAllowingStateLoss()
 //        }
     }
 }

+ 5 - 0
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/BroadcastSetFragment.kt

@@ -12,6 +12,7 @@ import com.alibaba.android.vlayout.DelegateAdapter
 import com.alibaba.android.vlayout.VirtualLayoutManager
 import com.bigkoo.pickerview.builder.TimePickerBuilder
 import com.enation.javashop.net.engine.model.NetState
+import com.wdkl.ncs.android.component.nursehome.BuildConfig
 import com.wdkl.ncs.android.component.nursehome.R
 import com.wdkl.ncs.android.component.nursehome.adapter.BrGroupAdapter
 import com.wdkl.ncs.android.component.nursehome.databinding.FragmentBrSetBinding
@@ -27,6 +28,7 @@ import com.wdkl.ncs.android.middleware.model.vo.BroadcastVO
 import com.wdkl.ncs.android.middleware.model.vo.GroupBrVo
 import com.wdkl.ncs.android.middleware.utils.StringUtil
 import kotlinx.android.synthetic.main.fragment_br_set.*
+import kotlinx.android.synthetic.main.fragment_broadcast_host.*
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
@@ -95,6 +97,9 @@ class BroadcastSetFragment : BaseFragment<BroadcastSetPresenter, FragmentBrSetBi
      *初始化操作
      */
     override fun init() {
+        if (!BuildConfig.device_type.equals("4")){
+            f_br_set_bg.setBackgroundResource(R.color.color_no_d_work)
+        }
         br_id = arguments?.getString("id").toString()
         adapter = BrGroupAdapter(activity, ArrayList())
         val layoutManager = GridLayoutManager(activity, 4, LinearLayoutManager.VERTICAL, false)

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

@@ -12,7 +12,9 @@ import com.alibaba.android.vlayout.VirtualLayoutManager
 import com.alibaba.fastjson.JSONObject
 import com.enation.javashop.net.engine.model.NetState
 import com.wdkl.gstreamer.demo.MyGStreamManager
+import com.wdkl.ncs.android.component.nursehome.BuildConfig
 import com.wdkl.ncs.android.component.nursehome.R
+import com.wdkl.ncs.android.component.nursehome.activity.NurseHome2Activity
 import com.wdkl.ncs.android.component.nursehome.activity.NurseHomeActivity
 import com.wdkl.ncs.android.component.nursehome.adapter.BrGroupAdapter
 import com.wdkl.ncs.android.component.nursehome.databinding.FragmentBrCallBinding
@@ -32,6 +34,8 @@ import com.wdkl.ncs.android.middleware.tcp.TcpClient
 import com.wdkl.ncs.android.middleware.tcp.channel.BroadcastUtil
 import com.wdkl.ncs.android.middleware.tcp.dto.TcpCallback
 import kotlinx.android.synthetic.main.fragment_br_call.*
+import kotlinx.android.synthetic.main.fragment_br_main.*
+import kotlinx.android.synthetic.main.fragment_sickbed.*
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
@@ -77,6 +81,9 @@ class BroadcasthhFragment : BaseFragment<BroadcasthhPresenter, FragmentBrCallBin
      *初始化操作
      */
     override fun init() {
+        if (!BuildConfig.device_type.equals("4")){
+            f_br_call_bg.setBackgroundResource(R.color.color_no_d_work)
+        }
         adapter = BrGroupAdapter(activity, ArrayList())
         val layoutManager = GridLayoutManager(activity, 4, LinearLayoutManager.VERTICAL, false)
         call_bt_rv.layoutManager = layoutManager
@@ -194,7 +201,12 @@ class BroadcasthhFragment : BaseFragment<BroadcasthhPresenter, FragmentBrCallBin
         }
         //挂断
         call_bt_bt.setOnClickListener {
-            (activity as NurseHomeActivity).showHome(false)
+            if (!BuildConfig.device_type.equals("4")){
+                (activity as NurseHomeActivity).showHome(false)
+            }else{
+                (activity as NurseHome2Activity).showHome()
+            }
+
 //            VoiceManagerUtil.setCallVoice(activity, SettingConfig.getHostHandsFreePlayVolume(this.activity))
         }
 
@@ -353,7 +365,11 @@ class BroadcasthhFragment : BaseFragment<BroadcasthhPresenter, FragmentBrCallBin
             Constant.EVENT_HOOK_ON -> {
                 //听筒放下,结束喊话
                 if (initDone) {
-                    (activity as NurseHomeActivity).showHome(false)
+                    if (!BuildConfig.device_type.equals("4")){
+                        (activity as NurseHomeActivity).showHome(false)
+                    }else{
+                        (activity as NurseHome2Activity).showHome()
+                    }
                 }
             }
         }

+ 6 - 0
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/SickbedFragment.kt

@@ -6,6 +6,7 @@ import com.alibaba.android.vlayout.DelegateAdapter
 import com.alibaba.android.vlayout.VirtualLayoutManager
 import com.enation.javashop.net.engine.model.NetState
 import com.scwang.smartrefresh.layout.footer.ClassicsFooter
+import com.wdkl.ncs.android.component.nursehome.BuildConfig
 import com.wdkl.ncs.android.component.nursehome.R
 import com.wdkl.ncs.android.component.nursehome.activity.HostbedinfoActivity
 
@@ -31,6 +32,7 @@ import com.wdkl.ncs.android.middleware.tcp.enums.TcpAction
 import kotlinx.android.synthetic.main.fragment_frame_part.*
 import kotlinx.android.synthetic.main.fragment_frame_part.listView
 import kotlinx.android.synthetic.main.fragment_sickbed.*
+import kotlinx.android.synthetic.main.work_lay.*
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
@@ -92,6 +94,10 @@ class SickbedFragment:BaseFragment<SickbedPresenter, FragmentSickbedBinding>(),S
   * @Note   初始化操作
   */
  override fun init() {
+  if (!BuildConfig.device_type.equals("4")){//不等于宿舍
+   sick_m_bg.setBackgroundResource(R.color.white)
+  }
+
   /**初始化LayoutMannager*/
   virtualLayoutManager = VirtualLayoutManager(this.activity)
 

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

@@ -17,6 +17,7 @@ import android.widget.SeekBar
 import com.enation.javashop.net.engine.model.NetState
 import com.wdkl.ncs.android.component.nursehome.BuildConfig
 import com.wdkl.ncs.android.component.nursehome.R
+import com.wdkl.ncs.android.component.nursehome.activity.NurseHome2Activity
 import com.wdkl.ncs.android.component.nursehome.activity.NurseHomeActivity
 import com.wdkl.ncs.android.component.nursehome.databinding.FragmentSystemSettingsBinding
 import com.wdkl.ncs.android.component.nursehome.hardware.HardWareFactroy
@@ -243,7 +244,12 @@ class SystemSettingsFragment:BaseFragment<SystemSettingsPresenter, FragmentSyste
         software_and_information_tv.setText("Version: V" + BuildConfig.VERSION_NAME + "_" + BuildConfig.VERSION_CODE)
         software_and_information_tv.setOnLongClickListener {
             Constant.autoUpdate = false
-            (activity as NurseHomeActivity).checkApp()
+            if (!BuildConfig.device_type.equals("4")){
+                (activity as NurseHomeActivity).checkApp()
+            }else{
+                (activity as NurseHome2Activity).checkApp()
+            }
+
 
             return@setOnLongClickListener true
         }
@@ -785,7 +791,11 @@ class SystemSettingsFragment:BaseFragment<SystemSettingsPresenter, FragmentSyste
 
     override fun showData(data: PartSettingDO) {
         showMessage(R.string.settings_success)
-        (activity as NurseHomeActivity).showHome(true)
+        if (!BuildConfig.device_type.equals("4")){
+            (activity as NurseHomeActivity).showHome(false)
+        }else{
+            (activity as NurseHome2Activity).showHome()
+        }
     }
 
     /**

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

@@ -206,6 +206,16 @@ class WorkFragment : BaseFragment<BedNursingWorkFragmentPresenter, WorkLayBindin
                         mainActivity?.showMiddleFragment(SystemSettingsFragment(),false)
                     }
 
+                } else if (allOrders.get(keyId).act_name.equals("iot")){
+                    //宿舍端 iot
+                    if (BuildConfig.device_type.equals("4")){
+                        (activity as NurseHome2Activity).showIotDeviceFragment()
+                    }
+                } else if (allOrders.get(keyId).act_name.equals("guangbo")){
+                    //宿舍端 广播
+                    if (BuildConfig.device_type.equals("4")){
+                        (activity as NurseHome2Activity).showBroadcastNewFragment()
+                    }
                 } else if (allOrders.get(keyId).act_name.equals("MessageFragment")){
                     //留言
                     val mainActivity = activity as? NurseHomeActivity
@@ -214,7 +224,7 @@ class WorkFragment : BaseFragment<BedNursingWorkFragmentPresenter, WorkLayBindin
                     //消息推送
                     val mainActivity = activity as? NurseHomeActivity
                     mainActivity?.showMiddleFragment(PushMessageFragment(),false)
-                } else {
+                }else {
                     showMessage(R.string.str_action_error)
                 }
             } else {

+ 21 - 6
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/window/IncidentWindow.kt

@@ -17,7 +17,9 @@ import com.alibaba.android.vlayout.VirtualLayoutManager
 import com.alibaba.android.vlayout.layout.LinearLayoutHelper
 import com.alibaba.fastjson.JSONObject
 import com.google.gson.Gson
+import com.wdkl.ncs.android.component.nursehome.BuildConfig
 import com.wdkl.ncs.android.component.nursehome.R
+import com.wdkl.ncs.android.component.nursehome.activity.NurseHome2Activity
 import com.wdkl.ncs.android.component.nursehome.activity.NurseHomeActivity
 import com.wdkl.ncs.android.component.nursehome.databinding.AdapterEventListItemBinding
 import com.wdkl.ncs.android.component.nursehome.databinding.WindowIncidentBinding
@@ -166,15 +168,28 @@ class IncidentWindow(var activity: Activity) {
                 if (data.action == TcpAction.SOSAction.CALL || tcpModel.action == TcpAction.SOSAction.ROOM_CALL) {
                     LedHelper.updateLedInfo(interactionData, false, true)
                 }
-                if (NurseHomeActivity.sosItemList.size > 0) {
-                    val iterator = NurseHomeActivity.sosItemList.iterator()
-                    while (iterator.hasNext()) {
-                        val it = iterator.next()
-                        if (it.interactionVO.id == interactionData.id) {
-                            iterator.remove()
+                if (!BuildConfig.device_type.equals("4")){
+                    if (NurseHomeActivity.sosItemList.size > 0) {
+                        val iterator = NurseHomeActivity.sosItemList.iterator()
+                        while (iterator.hasNext()) {
+                            val it = iterator.next()
+                            if (it.interactionVO.id == interactionData.id) {
+                                iterator.remove()
+                            }
+                        }
+                    }
+                }else{
+                    if (NurseHome2Activity.sosItemList.size > 0) {
+                        val iterator = NurseHome2Activity.sosItemList.iterator()
+                        while (iterator.hasNext()) {
+                            val it = iterator.next()
+                            if (it.interactionVO.id == interactionData.id) {
+                                iterator.remove()
+                            }
                         }
                     }
                 }
+
             } else if (interactionData.actionType == TcpType.REINFORCE.name) {
                 OtherUtil.sendReinforceResponsed(Constant.DEVICE_ID, interactionData.fromDeviceId, interactionData.id)
                 LedHelper.updateLedInfo(interactionData, false, false)

+ 2 - 0
android_host/src/main/res/layout/adapter_dorm_call_records_item.xml

@@ -32,10 +32,12 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_toRightOf="@+id/call_records_item_title"
+            android:layout_toLeftOf="@+id/btn_records_action"
             android:layout_centerVertical="true"
             android:text="2023/05/04 14:04"
             android:textColor="#C3C3C3"
             android:textSize="@dimen/font_size_20"
+            android:layout_marginRight="@dimen/d20"
             android:layout_marginLeft="@dimen/d20" />
 
         <TextView

+ 16 - 0
android_host/src/main/res/layout/adapter_dorm_dial_call_item.xml

@@ -28,6 +28,22 @@
             android:layout_marginLeft="@dimen/d20" />
 
         <TextView
+            android:id="@+id/call_device_frame_name2"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_toRightOf="@+id/call_device_frame_name"
+            android:layout_toLeftOf="@+id/btn_dial_action"
+            android:layout_centerVertical="true"
+            android:text="--"
+            android:textStyle="bold"
+            android:textColor="@color/white"
+            android:textSize="@dimen/font_size_22"
+            android:layout_marginLeft="@dimen/d20"
+            android:layout_marginRight="@dimen/d20"
+            />
+
+
+        <TextView
             android:id="@+id/btn_dial_action"
             android:layout_width="120dp"
             android:layout_height="60dp"

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

@@ -3,9 +3,9 @@
     xmlns:bind="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
+        android:id="@+id/f_br_call_bg"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:background="#EAF2F9"
         android:gravity="center_horizontal"
         android:orientation="vertical">
 

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

@@ -3,9 +3,9 @@
     xmlns:bind="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
+        android:id="@+id/f_br_list_bg"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:background="#EAF2F9"
         android:orientation="horizontal">
 
 <!--        <com.scwang.smartrefresh.layout.SmartRefreshLayout-->

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

@@ -2,9 +2,9 @@
 <layout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:bind="http://schemas.android.com/apk/res-auto">
     <LinearLayout
+        android:id="@+id/f_br_set_bg"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:background="#EAF2F9"
         android:orientation="vertical"
         android:gravity="center_horizontal"
         >

+ 2 - 1
android_host/src/main/res/layout/fragment_broadcast_host.xml

@@ -1,11 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:android="http://schemas.android.com/apk/res/android">
     <LinearLayout
+        android:id="@+id/f_m_br_bg"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:padding="8dp"
         android:orientation="vertical"
-        android:background="#EAF2F9">
+       >
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"

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

@@ -3,9 +3,9 @@
     xmlns:bind="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
+        android:id="@+id/sick_m_bg"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:background="@color/white"
         android:orientation="horizontal">
 
         <com.scwang.smartrefresh.layout.SmartRefreshLayout

+ 9 - 0
app/build.gradle

@@ -131,6 +131,11 @@ android {
             dimension "app"
             buildConfigField 'String', 'flag', '"12"'
         }
+
+        ZC_3568D {//外购21.5寸横屏分机
+            dimension "app"
+            buildConfigField 'String', 'flag', '"13"'
+        }
     }
 
     sourceSets {
@@ -191,6 +196,10 @@ android {
         rk3288_ym {//外购21.5寸竖屏分机
             manifest.srcFile 'src/main/AndroidManifest.xml'
         }
+
+        ZC_3568D {//外购21.5寸横屏探视分机
+            manifest.srcFile 'src/main/AndroidManifest.xml'
+        }
     }
     buildTypes {
         release {

+ 6 - 6
build.gradle

@@ -59,7 +59,7 @@ buildscript {
      * 配置默认是否启动的设备
      */
     //分机-床垫
-    ext.open_sleep = false
+    ext.open_sleep = true
 
     //分机-433
     ext.open_433 = false
@@ -76,7 +76,7 @@ buildscript {
     //护士主机——声网探视
     ext.is_agora = false
     //护士主机——广播
-    ext.is_broadcast = false
+    ext.is_broadcast = true
 
     //是否桌面应用
     ext.home_app = false
@@ -87,12 +87,12 @@ buildscript {
         ext.app_version = "1.3.6"
     } else if (android_bed) {
         //分机
-        ext.app_version_code =115
-        ext.app_version = "1.4.5"
+        ext.app_version_code =116
+        ext.app_version = "1.4.6"
     } else if (android_host) {
         //主机
-        ext.app_version_code = 115
-        ext.app_version = "1.3.15"
+        ext.app_version_code = 117
+        ext.app_version = "1.3.17"
     } else if (android_mobile) {
         ext.home_app = true
         //移动端

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

@@ -44,6 +44,7 @@ public class Constant {
     public static final String DEV_W_PW_10 = "10";//外购普威10寸
     public static final String DEV_W_DCHK_10 = "11";//外购大成慧康10寸,带手柄
     public static final String DEV_W_RK3288_YM = "12";//外购21.5寸竖屏分机
+    public static final String DEV_W_RK3568_ZC = "13";//外购21.5寸横屏探视分机
 
     public static Integer TTSSTATE = 1;
     public static boolean OPEN_DEBUG = true;

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

@@ -40,6 +40,8 @@ interface BedCallRecordsFragmentContract {
         fun showEvents(data: ArrayList<EventDO>)
 
         fun showFrameDevices(data: ArrayList<DeviceVO>)
+
+        fun showData(data : FramePartVO)
     }
 
     /**
@@ -57,5 +59,7 @@ interface BedCallRecordsFragmentContract {
         fun loadEventList(partId: Int)
 
         fun loadFrameDevices(deviceType: Int, partId: Int)
+
+        fun loadData(partId: Int)
     }
 }

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

@@ -13,6 +13,7 @@ import com.google.gson.FieldNamingPolicy
 import com.google.gson.GsonBuilder
 import com.google.gson.reflect.TypeToken
 import com.wdkl.ncs.android.middleware.api.BedDeviceApi
+import com.wdkl.ncs.android.middleware.api.FrameApi
 import com.wdkl.ncs.android.middleware.logic.contract.callingbed.BedCallRecordsFragmentContract
 import com.wdkl.ncs.android.middleware.model.dos.CallingHistoryDO
 import com.wdkl.ncs.android.middleware.model.dos.EventDO
@@ -38,6 +39,14 @@ class BedCallRecordsFragmentPresenter @Inject constructor() :RxPresenter<BedCall
     protected lateinit var bedDeviceApi : BedDeviceApi
 
     /**
+     * @Name  FrameApi
+     * @Type  FrameApi
+     * @Note  所有病床Api
+     */
+    @Inject
+    protected lateinit var frameApi: FrameApi
+
+    /**
      * @Name  observer
      * @Type  ConnectionObserver
      * @Note  数据监听者
@@ -83,6 +92,9 @@ class BedCallRecordsFragmentPresenter @Inject constructor() :RxPresenter<BedCall
                 is List<*> -> {
                     providerView().showFrameDevices(result as ArrayList<DeviceVO>)
                 }
+                is FramePartVO -> {
+                    providerView().showData(result)
+                }
             }
         }
 
@@ -145,4 +157,20 @@ class BedCallRecordsFragmentPresenter @Inject constructor() :RxPresenter<BedCall
             .compose(ThreadFromUtils.defaultSchedulers())
             .subscribe(observable)
     }
+
+    /**
+     *获取病床列表
+     */
+    override fun loadData(partId: Int) {
+        frameApi.getFramePartVO(partId)
+                .map {
+                    var framePartVO = FramePartVO()
+                    var gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+                    framePartVO = gson.fromJson(it.getJsonString(), FramePartVO::class.java)
+
+                    return@map framePartVO
+                }
+                .compose(ThreadFromUtils.defaultSchedulers())
+                .subscribe(observable)
+    }
 }

+ 5 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/vo/FrameBedVO.java

@@ -141,7 +141,11 @@ public class FrameBedVO implements Serializable {
     }
 
     public Integer getBedDeviceId() {
-        return bedDeviceId;
+        if (bedDeviceId==null){
+            return 0;
+        }else {
+            return  bedDeviceId;
+        }
     }
 
     public void setBedDeviceId(Integer bedDeviceId) {