Explorar o código

兼容卡尔10寸主机,增加音量同步,调整视频通话相关参数

weizhengliang %!s(int64=2) %!d(string=hai) anos
pai
achega
a8a495a785

+ 1 - 1
app/build.gradle

@@ -43,7 +43,7 @@ android {
         }
         ndk {
             //选择要添加的对应cpu类型的.so库。
-            abiFilters 'armeabi', 'armeabi-v7a', 'armeabi-v8a' ,'x86', 'x86_64', 'mips', 'mips64'
+            abiFilters 'armeabi', 'armeabi-v7a', 'armeabi-v8a'
         }
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }

+ 21 - 5
home/src/main/code/com/wdkl/ncs/android/component/home/activity/HomeActivity.kt

@@ -7,6 +7,7 @@ import android.content.Intent
 import android.content.IntentFilter
 import android.content.pm.PackageManager
 import android.graphics.Color
+import android.media.AudioManager
 import android.net.ConnectivityManager
 import android.os.Build
 import android.os.Bundle
@@ -37,6 +38,7 @@ import com.wdkl.ncs.android.component.home.helper.StatusBarHelper
 import com.wdkl.ncs.android.component.home.launch.HomeLaunch
 import com.wdkl.ncs.android.component.home.service.TcpHandleService
 import com.wdkl.ncs.android.component.home.service.TcpHandleService.instance.updateLastTime
+import com.wdkl.ncs.android.component.home.settingconfig.SettingConfig
 import com.wdkl.ncs.android.component.home.util.*
 //import com.wdkl.ncs.android.component.home.service.WdKeepAliveService
 import com.wdkl.ncs.android.component.nursehome.common.Constants
@@ -241,7 +243,7 @@ class HomeActivity : BaseActivity<HomeActivityPresenter, ActivityHomeBinding>(),
     }
 
     private fun permissionGranted() {
-        if ("KT10-3F".equals(Build.MODEL, true) || "KT10-2F".equals(Build.MODEL, true)) {
+        if ("KT10-3F".equals(Build.MODEL, true) || "KT10-2F".equals(Build.MODEL, true) || "KT8001-2F".equals(Build.MODEL, true)) {
             Constants.imei = NetHelper.getInstance().macAddress
         } else {
             Constants.imei = NetHelper.getInstance().imei
@@ -250,7 +252,7 @@ class HomeActivity : BaseActivity<HomeActivityPresenter, ActivityHomeBinding>(),
         Log.i(TAG, "IMEI " + Constants.imei)
         //Log.i(TAG, "mac " + Constants.mac)
         tv_device_imei.text = Constants.imei
-        tv_server_ip.text = CommonUtils.getUrl(BaseApplication.appContext)
+        tv_server_ip.text = NetHelper.getInstance().localIP + "/" + CommonUtils.getUrl(BaseApplication.appContext)
 
         //获取TCP服务器IP和端口
         Thread{
@@ -322,7 +324,7 @@ class HomeActivity : BaseActivity<HomeActivityPresenter, ActivityHomeBinding>(),
             Constants.tcpServer = serverIpInfo.tcpLocalIp
             Constants.tcpPort = serverIpInfo.tcpPort
             Constants.heartBeat = serverIpInfo.tcpIdleSeconds
-            tv_server_ip.text = serverIpInfo.tcpLocalIp
+            tv_server_ip.text = NetHelper.getInstance().localIP + "/" + serverIpInfo.tcpLocalIp
 
             JanusConstant.JANUS_URL = "ws://" + serverIpInfo.rtcLocalIp + ":" + serverIpInfo.rtcPort
             JanusConstant.STUN_SERVER = arrayOf<String>(serverIpInfo.stunServer)
@@ -398,7 +400,8 @@ class HomeActivity : BaseActivity<HomeActivityPresenter, ActivityHomeBinding>(),
             inited = true
             activity_register_layout.visibility = View.GONE
             watch_activity_home_linyout.visibility = View.VISIBLE
-            if ("YUNPAI_H6".equals(Build.MODEL) || "KT10-3F".equals(Build.MODEL, true) || "KT10-2F".equals(Build.MODEL, true)) {
+            if ("YUNPAI_H6".equals(Build.MODEL) || "KT10-3F".equals(Build.MODEL, true)
+                || "KT10-2F".equals(Build.MODEL, true) || "KT8001-2F".equals(Build.MODEL, true)) {
                 //中兴8寸机,卡尔10寸
                 watch_activity_home_linyout.setBackgroundResource(R.drawable.main_bg_1280x800)
                 btn_callout.setBackgroundResource(R.drawable.round_button_100dp)
@@ -409,6 +412,7 @@ class HomeActivity : BaseActivity<HomeActivityPresenter, ActivityHomeBinding>(),
                 btn_callout.setBackgroundResource(R.drawable.round_button_80dp)
                 btn_callout.textSize = 24f
             } else if ("rk3288".equals(Build.MODEL, true)) {
+                //亿莱顿,新豪格都是rk3288,亿莱顿在另一个分支上
                 watch_activity_home_linyout.setBackgroundResource(R.drawable.main_bg_1920x1080)
                 btn_callout.setBackgroundResource(R.drawable.round_button_100dp)
                 btn_callout.textSize = 36f
@@ -420,7 +424,7 @@ class HomeActivity : BaseActivity<HomeActivityPresenter, ActivityHomeBinding>(),
 
 
             initSDK()
-            presenter.getDeviceSettingData("" + Constants.partId)
+            presenter.getDeviceSettingData(Constants.partId)
 
             //tv_part_name.setText(data.hospitalName + data.partName)
             tv_part_name.text = data.partDisplay
@@ -475,6 +479,17 @@ class HomeActivity : BaseActivity<HomeActivityPresenter, ActivityHomeBinding>(),
      * 设置设备数据
      */
     override fun setDeviceSettingData(partSettingDO: PartSettingDO) {
+        try {
+            //分机通话音量  没做白昼区分
+            SettingConfig.setExtensionCallVolume(this, partSettingDO.dayBedVol)
+
+            VoiceManagerUtil.setCallVoice(activity, partSettingDO.dayBedVol)
+
+            VoiceManagerUtil.setSystemVoice(activity, partSettingDO.dayBedVol)
+            VoiceManagerUtil.setMusicVoice(activity, partSettingDO.dayBedVol)
+        } catch (ex: Exception) {
+            ex.printStackTrace()
+        }
     }
 
     override fun onError(message: String, type: Int) {
@@ -549,6 +564,7 @@ class HomeActivity : BaseActivity<HomeActivityPresenter, ActivityHomeBinding>(),
                 currentFragment = null
             }
             watch_activity_home_linyout.visibility = View.VISIBLE
+            AppUtils.setAudioMode(BaseApplication.appContext, AudioManager.MODE_NORMAL)
         } else if (messageEvent.tag == Constants.EVENT_TCP_BREAK) {
             if (TcpClientHandler.getConnected()) {
                 netAvailable = true

+ 10 - 1
home/src/main/code/com/wdkl/ncs/android/component/home/fragment/SkyCallFragment.kt

@@ -1,5 +1,6 @@
 package com.wdkl.ncs.android.component.home.fragment
 
+import android.media.AudioManager
 import android.os.Build
 import android.os.Handler
 import android.os.Looper
@@ -9,10 +10,13 @@ import android.view.View
 import android.view.ViewGroup
 import com.google.gson.Gson
 import com.wdkl.ncs.android.component.home.R
+import com.wdkl.ncs.android.component.home.settingconfig.SettingConfig
 import com.wdkl.ncs.android.component.home.util.AppUtils
 import com.wdkl.ncs.android.component.home.util.RingPlayHelper
 import com.wdkl.ncs.android.component.home.util.Util
+import com.wdkl.ncs.android.component.home.util.VoiceManagerUtil
 import com.wdkl.ncs.android.component.nursehome.common.Constants
+import com.wdkl.ncs.android.lib.base.BaseApplication
 import com.wdkl.ncs.android.lib.utils.AppTool
 import com.wdkl.ncs.android.lib.utils.showMessage
 import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
@@ -54,7 +58,9 @@ class SkyCallFragment: BaseCallFragment(), CallSessionCallback {
     private var callSuccess: Boolean = false
 
     override fun getLayId(): Int {
-        if ("YUNPAI_H6".equals(Build.MODEL, true) || "rk3288".equals(Build.MODEL, true) || "KT10-3F".equals(Build.MODEL, true) || "KT10-2F".equals(Build.MODEL, true)) {
+        if ("YUNPAI_H6".equals(Build.MODEL, true) || "rk3288".equals(Build.MODEL, true)
+            || "KT10-3F".equals(Build.MODEL, true) || "KT10-2F".equals(Build.MODEL, true)
+            || "KT8001-2F".equals(Build.MODEL, true)) {
             return R.layout.sky_voice_call_layout_land
         } else {
             return R.layout.sky_voice_call_layout
@@ -68,6 +74,8 @@ class SkyCallFragment: BaseCallFragment(), CallSessionCallback {
         //初始化 engine
         WebRTCEngine.getInstance().init(false, this.context)
 
+        VoiceManagerUtil.setCallVoice(activity, SettingConfig.getExtensionCallVolume(activity))
+
         //初始化 janusClient
         janusClient = JanusClient(JanusConstant.JANUS_URL, Constants.sipId!!.toBigInteger())
 
@@ -122,6 +130,7 @@ class SkyCallFragment: BaseCallFragment(), CallSessionCallback {
             sky_voice_call_timer.stop()
         }
         RingPlayHelper.stopRingTone()
+        AppUtils.setAudioMode(BaseApplication.appContext, AudioManager.MODE_NORMAL)
     }
 
     private fun startOutgoing() {

+ 22 - 0
home/src/main/code/com/wdkl/ncs/android/component/home/settingconfig/SettingConfig.java

@@ -11,6 +11,10 @@ public class SettingConfig {
     private static final String KEY_SP_COUNTDOWN_TIME = "KEY_SP_COUNTDOWN_TIME";
     private static final int CountdownTime = 15;
 
+    //分机通话音量
+    private static final String KEY_SP_EXTENSION_CALL_VOLUME = "KEY_SP_EXTENSION_CALL_VOLUME";
+    private static final int extension_call_volume = 80;
+
     /**
      * 获取转发时间
      *
@@ -29,6 +33,24 @@ public class SettingConfig {
         getEditor(context).putInt(KEY_SP_COUNTDOWN_TIME, value).apply();
     }
 
+    /**
+     * 获取分机通话音量
+     *
+     * @return
+     */
+    public static int getExtensionCallVolume(Context context) {
+        return getSP(context).getInt(KEY_SP_EXTENSION_CALL_VOLUME, extension_call_volume);
+    }
+
+    /**
+     * 设置分机通话音量
+     *
+     * @param value
+     */
+    public static void setExtensionCallVolume(Context context, int value) {
+        getEditor(context).putInt(KEY_SP_EXTENSION_CALL_VOLUME, value).apply();
+    }
+
     private static SharedPreferences getSP(Context context) {
         return context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE);
     }

+ 7 - 2
home/src/main/code/com/wdkl/ncs/android/component/home/util/AppUtils.java

@@ -34,10 +34,15 @@ public class AppUtils {
     public static void switchAudioMode(Context context, boolean speakerOn) {
         AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
         audioManager.setSpeakerphoneOn(speakerOn);
-        if (speakerOn) {
+        /*if (speakerOn) {
             audioManager.setMode(AudioManager.MODE_NORMAL);
         } else {
             audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
-        }
+        }*/
+    }
+
+    public static void setAudioMode(Context context, int mode) {
+        AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        audioManager.setMode(mode);
     }
 }

+ 184 - 0
home/src/main/code/com/wdkl/ncs/android/component/home/util/VoiceManagerUtil.java

@@ -0,0 +1,184 @@
+package com.wdkl.ncs.android.component.home.util;
+
+import android.content.Context;
+import android.media.AudioManager;
+
+/**
+ * 类名称:VoiceManagerUtil <br>
+ * 类描述:声音控制工具类 <br>
+ * 创建人:Waderson Shll (TEL:15675117662)<br>
+ * 创建时间:2018-03-15 <br>
+ * 特别提醒:如有需要该类可任意创建与调用;在未通知本人的情况下该类禁止任何修改!<br>
+ */
+public class VoiceManagerUtil {
+    /**
+     * 获取提示音音量最大值
+     *
+     * @param context
+     */
+    public static int getAlarmMax(Context context) {
+        AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        return mAudioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM);
+    }
+
+    /**
+     * 获取提示音音量当前值
+     *
+     * @param context
+     */
+    public static int getAlarmNow(Context context) {
+        AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        return mAudioManager.getStreamVolume(AudioManager.STREAM_ALARM);
+    }
+
+    /**
+     * 获取多媒体音量最大值
+     *
+     * @param context
+     */
+    public static int getMusicMax(Context context) {
+        AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        return mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
+    }
+
+    /**
+     * 获取多媒体音量当前值
+     *
+     * @param context
+     */
+    public static int getMusicNow(Context context) {
+        AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        return mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
+    }
+
+    /**
+     * 获取铃声音量最大值
+     *
+     * @param context
+     */
+    public static int getRingMax(Context context) {
+        AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        return mAudioManager.getStreamMaxVolume(AudioManager.STREAM_RING);
+    }
+
+    /**
+     * 获取铃声音量当前值
+     *
+     * @param context
+     */
+    public static int getRingNow(Context context) {
+        AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        return mAudioManager.getStreamVolume(AudioManager.STREAM_RING);
+    }
+
+    /**
+     * 获取系统音量最大值
+     *
+     * @param context
+     */
+    public static int getSystemMax(Context context) {
+        AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        return mAudioManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM);
+    }
+
+    /**
+     * 获取系统音量当前值
+     *
+     * @param context
+     */
+    public static int getSystemNow(Context context) {
+        AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        return mAudioManager.getStreamVolume(AudioManager.STREAM_SYSTEM);
+    }
+
+    /**
+     * 获取通话音量最大值
+     *
+     * @param context
+     */
+    public static int getCallMax(Context context) {
+        AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        return mAudioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL);
+    }
+
+    /**
+     * 获取通话音量当前值
+     *
+     * @param context
+     */
+    public static int getCallNow(Context context) {
+        AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        return mAudioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL);
+    }
+
+    /**
+     * 设置提示音音量
+     *
+     * @param context
+     * @param percent (百分比;只能0--100之间)
+     */
+    public static void setAlarmVoice(Context context, int percent) {
+        float vPercent=((float)percent)/100f;
+        vPercent = vPercent < 0 ? 0 : vPercent;
+        vPercent = vPercent > 1 ? 1 : vPercent;
+        AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        audioManager.setStreamVolume(AudioManager.STREAM_ALARM, (int) (getAlarmMax(context) * vPercent), 0);
+    }
+
+    /**
+     * 设置多媒体音量
+     *
+     * @param context
+     * @param percent (百分比;只能0--100之间)
+     */
+    public static void setMusicVoice(Context context, int percent) {
+        float vPercent=((float)percent)/100f;
+        vPercent = vPercent < 0 ? 0 : vPercent;
+        vPercent = vPercent > 1 ? 1 : vPercent;
+        AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, (int) (getMusicMax(context) * vPercent), 0);
+    }
+
+    /**
+     * 设置铃声音量
+     *
+     * @param context
+     * @param percent (百分比;只能0--100之间)
+     */
+    public static void setRingVoice(Context context, int percent) {
+        float vPercent=((float)percent)/100f;
+        vPercent = vPercent < 0 ? 0 : vPercent;
+        vPercent = vPercent > 1 ? 1 : vPercent;
+        AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        audioManager.setStreamVolume(AudioManager.STREAM_RING, (int) (getRingMax(context) * vPercent), 0);
+    }
+
+    /**
+     * 设置系统音量
+     *
+     * @param context
+     * @param percent (百分比;只能0--100之间)
+     */
+    public static void setSystemVoice(Context context, int percent) {
+        float vPercent=((float)percent)/100f;
+        vPercent = vPercent < 0 ? 0 : vPercent;
+        vPercent = vPercent > 1 ? 1 : vPercent;
+        AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        audioManager.setStreamVolume(AudioManager.STREAM_SYSTEM, (int) (getSystemMax(context) * vPercent), 0);
+    }
+
+    /**
+     * 设置通话音量
+     *
+     * @param context
+     * @param percent (百分比;只能0--100之间)
+     */
+    public static void setCallVoice(Context context, int percent) {
+        float vPercent=((float)percent)/100f;
+        vPercent = vPercent < 0 ? 0 : vPercent;
+        vPercent = vPercent > 1 ? 1 : vPercent;
+        AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, (int) (getCallMax(context) * vPercent), 0);
+    }
+
+}

+ 11 - 7
janus/src/main/java/com/wdkl/ncs/janus/rtc/WebRTCEngine.java

@@ -75,8 +75,8 @@ public class WebRTCEngine {
     private static final String VIDEO_CODEC_VP8 = "VP8";
     private static final String VIDEO_CODEC_VP9 = "VP9";
     private static final String DTLS_SRTP_KEY_AGREEMENT_CONSTRAINT = "DtlsSrtpKeyAgreement";
-    private static final int VIDEO_RESOLUTION_WIDTH = 1280;
-    private static final int VIDEO_RESOLUTION_HEIGHT = 720;
+    private static final int VIDEO_RESOLUTION_WIDTH = 800;
+    private static final int VIDEO_RESOLUTION_HEIGHT = 480;
     private static final int FPS = 20;
     private String preferredVideoCodec;
     private PeerConnectionParameters peerConnectionParameters;
@@ -218,7 +218,9 @@ public class WebRTCEngine {
         }
 
         // 构造Factory
-        AudioDeviceModule audioDeviceModule = JavaAudioDeviceModule.builder(mContext).createAudioDeviceModule();
+        AudioDeviceModule audioDeviceModule = JavaAudioDeviceModule.builder(mContext)
+                .setSampleRate(44100)
+                .createAudioDeviceModule();
         PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();
         return PeerConnectionFactory.builder()
                 .setOptions(options)
@@ -390,8 +392,8 @@ public class WebRTCEngine {
         audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googEchoCancellation2", "true"));
         audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googDAEchoCancellation", "true"));
         //自动增益
-        audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googAutoGainControl", "true"));
-        audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googAutoGainControl2", "true"));
+        audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googAutoGainControl", "false"));
+        audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googAutoGainControl2", "false"));
         //噪音处理
         audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googNoiseSuppression", "true"));
         audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googNoiseSuppression2", "true"));
@@ -532,7 +534,8 @@ public class WebRTCEngine {
 
             if (enable) {
                 if (!setBluetoothHeadsetOn()) {   //优先蓝牙
-                    audioManager.setMode(AudioManager.MODE_NORMAL);
+                    //audioManager.setMode(AudioManager.MODE_NORMAL);
+                    audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
                     audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,
                             audioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL),
                             AudioManager.FX_KEY_CLICK);
@@ -722,7 +725,8 @@ public class WebRTCEngine {
         if (isHeadphonesPlugged()) {
             toggleHeadset(true);
         } else {
-            audioManager.setMode(AudioManager.MODE_NORMAL);
+            //audioManager.setMode(AudioManager.MODE_NORMAL);
+            audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
         }
     }
 

+ 3 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/api/WatchDeviceInfoAndTCPMailingAddressApi.kt

@@ -9,7 +9,8 @@ import retrofit2.http.Query
 
 interface WatchDeviceInfoAndTCPMailingAddressApi {
      //根据Mac地址查询设备数据
-    @GET("/watch/getDeviceByEthMac/{ethMac}")
+    //@GET("/watch/getDeviceByEthMac/{ethMac}")
+    @GET("/deviceNurse/getDeviceByEthMac/{ethMac}")
     fun getDeviceMessage(@Path("ethMac")ethMac:String): Observable<ResponseBody>
 
     //获取tcp服务器地址
@@ -22,6 +23,6 @@ interface WatchDeviceInfoAndTCPMailingAddressApi {
 
     //获取设备设置数据
     @GET("/watch/getPartSetting/{partId}")
-    fun getDeviceSettingData(@Path("partId")partId:String): Observable<ResponseBody>
+    fun getDeviceSettingData(@Path("partId") partId:Int): Observable<ResponseBody>
 
 }

+ 1 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/home/HomeActivityContract.kt

@@ -27,6 +27,6 @@ interface HomeActivityContract{
         fun getTcpServerHost()
         fun getServerInfo()
         //获取设备设置数据
-        fun getDeviceSettingData(partId:String)
+        fun getDeviceSettingData(partId:Int)
     }
 }

+ 1 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/home/HomeActivityPresenter.kt

@@ -125,7 +125,7 @@ class HomeActivityPresenter @Inject constructor(): RxPresenter<HomeActivityContr
             .subscribe(observer)
     }
 
-    override fun getDeviceSettingData(partId: String) {
+    override fun getDeviceSettingData(partId: Int) {
         registerDeviceApi.getDeviceSettingData(partId).map {
             var partSettingDO = PartSettingDO()
 

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

@@ -2,8 +2,6 @@ package com.wdkl.ncs.android.middleware.model.dos;
 
 import com.fasterxml.jackson.databind.PropertyNamingStrategy;
 import com.fasterxml.jackson.databind.annotation.JsonNaming;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import com.wdkl.ncs.android.middleware.model.annotation.Column;
 import com.wdkl.ncs.android.middleware.model.annotation.Id;
 import com.wdkl.ncs.android.middleware.model.annotation.PrimaryKeyField;
@@ -11,6 +9,9 @@ import com.wdkl.ncs.android.middleware.model.annotation.Table;
 
 import java.io.Serializable;
 
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
 @Table(name = "ncs_part_setting")
 @ApiModel
 @JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)
@@ -208,6 +209,180 @@ public class PartSettingDO implements Serializable {
     private Integer transferDurationLeader;
 
 
+    /**
+     * 分机通讯模式
+     */
+    @Column(name = "communication_mode_bed")
+    @ApiModelProperty(value = "分机通讯模式(分机通话模式:1-网络电话,2-移动电话,3-座机号)", required = true)
+    private Integer communicationModeBed;
+
+
+    /**
+     * 护士主机通讯模式
+     */
+    @Column(name = "communication_mode_nurse")
+    @ApiModelProperty(value = "护士主机通讯模式(分机通话模式:1-网络电话,2-移动电话,3-座机号)", required = true)
+    private Integer communicationModeNurse;
+
+    /**
+     * 移动端(手机)通讯模式
+     */
+    @Column(name = "communication_mode_mobile")
+    @ApiModelProperty(value = "护士主机通讯模式(分机通话模式:1-网络电话,2-移动电话,3-座机号)", required = true)
+    private Integer communicationModeMobile;
+
+
+    /**
+     * 分机自定义呼叫角色按钮1
+     */
+    @Column(name = "customize_role_call_first")
+    @ApiModelProperty(value = "分机自定义呼叫角色按钮1要呼叫的角色ID", required = true)
+    private Integer customizeRoleCallFirst;
+
+    /**
+     * 分机自定义呼叫角色按钮2
+     */
+    @Column(name = "customize_role_call_second")
+    @ApiModelProperty(value = "分机自定义呼叫角色按钮2要呼叫的角色ID", required = true)
+    private Integer customizeRoleCallSecond;
+    /**
+     *	分机自定义呼叫角色按钮3对应的角色id
+     */	@Column(name = "customize_role_call_third" )
+    @ApiModelProperty(value="分机自定义呼叫角色按钮3对应的角色id",required=false)
+    private Integer customizeRoleCallThird;
+    /**
+     *	分机自定义呼叫角色按钮4对应的角色id
+     */	@Column(name = "customize_role_call_fourth" )
+    @ApiModelProperty(value="分机自定义呼叫角色按钮4对应的角色id",required=false)
+    private Integer customizeRoleCallFourth;
+    /**
+     *	分机自定义呼叫角色按钮5对应的角色id
+     */	@Column(name = "customize_role_call_fifth" )
+    @ApiModelProperty(value="分机自定义呼叫角色按钮5对应的角色id",required=false)
+    private Integer customizeRoleCallFifth;
+    /**
+     *	科室自定义呼叫医院级设备1的id
+     */	@Column(name = "customize_hospital_call_first" )
+    @ApiModelProperty(value="科室自定义呼叫医院级设备1的id",required=false)
+    private Integer customizeHospitalCallFirst;
+    /**
+     *	科室自定义呼叫医院级设备1的名称
+     */	@Column(name = "customize_hospital_call_first_name" )
+    @ApiModelProperty(value="科室自定义呼叫医院级设备1的名称",required=false)
+    private String customizeHospitalCallFirstName;
+    /**
+     *	科室自定义呼叫医院级设备2的id
+     */	@Column(name = "customize_hospital_call_second" )
+    @ApiModelProperty(value="科室自定义呼叫医院级设备2的id",required=false)
+    private Integer customizeHospitalCallSecond;
+    /**
+     *	科室自定义呼叫医院级设备2的名称
+     */	@Column(name = "customize_hospital_call_second_name" )
+    @ApiModelProperty(value="科室自定义呼叫医院级设备2的名称",required=false)
+    private String customizeHospitalCallSecondName;
+    /**
+     *	科室自定义呼叫医院级设备3的id
+     */	@Column(name = "customize_hospital_call_third" )
+    @ApiModelProperty(value="科室自定义呼叫医院级设备3的id",required=false)
+    private Integer customizeHospitalCallThird;
+    /**
+     *	科室自定义呼叫医院级设备3的名称
+     */
+    @Column(name = "customize_hospital_call_third_name" )
+    @ApiModelProperty(value="科室自定义呼叫医院级设备3的名称",required=false)
+    private String customizeHospitalCallThirdName;
+
+    /**
+     *	用户名字是否隐藏,0就是不隐藏,1就是隐藏
+     */
+    @Column(name = "customer_name_hidden" )
+    @ApiModelProperty(value="用户名字是否隐藏,0就是不隐藏,1就是隐藏",required=false)
+    private Integer customerNameHidden;
+
+    @Column(name = "doctor_title")
+    @ApiModelProperty(value = "模拟分机医生标题", required = true)
+    private String doctorTitle;
+
+    @Column(name = "doctor_valid")
+    @ApiModelProperty(value = "是否显示模拟分机医生标题", required = true)
+    private Integer doctorValid;
+
+    @Column(name = "nurse_title")
+    @ApiModelProperty(value = "模拟分机护士标题", required = true)
+    private String nurseTitle;
+
+    @Column(name = "nurse_valid")
+    @ApiModelProperty(value = "是否显示模拟分机护士标题", required = true)
+    private Integer nurseValid;
+    /**
+     *	门口机呼叫护士的标题
+     */
+    @Column(name = "door_nurse_title" )
+    @ApiModelProperty(value="门口机呼叫护士的标题",required=false)
+    private String doorNurseTitle;
+    /**
+     *	是否显示门口机呼叫护士的标题
+     */
+    @Column(name = "door_nurse_valid" )
+    @ApiModelProperty(value="是否显示门口机呼叫护士的标题",required=false)
+    private Integer doorNurseValid;
+    /**
+     *	门口机进入护理的标题
+     */
+    @Column(name = "door_nursing_title" )
+    @ApiModelProperty(value="门口机进入护理的标题",required=false)
+    private String doorNursingTitle;
+    /**
+     *	是否显示进入护理的标题
+     */
+    @Column(name = "door_nursing_valid" )
+    @ApiModelProperty(value="是否显示进入护理的标题",required=false)
+    private Integer doorNursingValid;
+
+    @Column(name = "up_seconds")
+    @ApiModelProperty(value = "腕表上传定位时间间隔", required = true)
+    private Integer upSeconds;
+
+    @Column(name = "auto_accept")
+    @ApiModelProperty(value = "分机是否自动接听,0就是不开启,1就是开启", required = true)
+    private Integer autoAccept;
+
+    @Column(name = "board_show_empty_bed")
+    @ApiModelProperty(value = "信息看板显示空床位", required = true)
+    private Boolean boardShowEmptyBed;
+
+    /**
+     *	事件是否开启转发
+     */	@Column(name = "event_forward" )
+    @ApiModelProperty(value="事件是否开启转发",required=false)
+    private Integer eventForward;
+    /**
+     *	护理灯颜色
+     */	@Column(name = "nursing_color_rgb" )
+    @ApiModelProperty(value="护理门灯颜色",required=false)
+    private String nursingColorRgb;
+    /**
+     *	是否开启双色门灯
+     */	@Column(name = "two_color_door_light_valid" )
+    @ApiModelProperty(value="是否开启双色门灯",required=false)
+    private Integer twoColorDoorLightValid;
+    /**
+     *	图片地址
+     */	@Column(name = "qr_url" )
+    @ApiModelProperty(value="图片地址",required=false)
+    private String qrUrl;
+    /**
+     *	群留言记录保留天数
+     */	@Column(name = "channel_im_history_store_days" )
+    @ApiModelProperty(value="群留言记录保留天数",required=false)
+    private Integer channelImHistoryStoreDays;
+    /**
+     *	是否开启双色门灯
+     */	@Column(name = "record_enabled" )
+    @ApiModelProperty(value="是否开启录音录像功能",required=false)
+    private Integer recordEnabled;
+
+
     @PrimaryKeyField
     public Integer getId() {
         return id;
@@ -462,4 +637,328 @@ public class PartSettingDO implements Serializable {
     public void setTransferDurationLeader(Integer transferDurationLeader) {
         this.transferDurationLeader = transferDurationLeader;
     }
+
+    public Integer getCommunicationModeBed() {
+        return communicationModeBed;
+    }
+
+    public void setCommunicationModeBed(Integer communicationModeBed) {
+        this.communicationModeBed = communicationModeBed;
+    }
+
+    public Integer getCommunicationModeNurse() {
+        return communicationModeNurse;
+    }
+
+    public void setCommunicationModeNurse(Integer communicationModeNurse) {
+        this.communicationModeNurse = communicationModeNurse;
+    }
+
+    public Integer getCommunicationModeMobile() {
+        return communicationModeMobile;
+    }
+
+    public void setCommunicationModeMobile(Integer communicationModeMobile) {
+        this.communicationModeMobile = communicationModeMobile;
+    }
+
+    public Integer getCustomizeRoleCallFirst() {
+        return customizeRoleCallFirst;
+    }
+
+    public void setCustomizeRoleCallFirst(Integer customizeRoleCallFirst) {
+        this.customizeRoleCallFirst = customizeRoleCallFirst;
+    }
+
+    public Integer getCustomizeRoleCallSecond() {
+        return customizeRoleCallSecond;
+    }
+
+    public void setCustomizeRoleCallSecond(Integer customizeRoleCallSecond) {
+        this.customizeRoleCallSecond = customizeRoleCallSecond;
+    }
+
+    public Integer getCustomizeRoleCallThird() {
+        return customizeRoleCallThird;
+    }
+
+    public void setCustomizeRoleCallThird(Integer customizeRoleCallThird) {
+        this.customizeRoleCallThird = customizeRoleCallThird;
+    }
+
+    public Integer getCustomizeRoleCallFourth() {
+        return customizeRoleCallFourth;
+    }
+
+    public void setCustomizeRoleCallFourth(Integer customizeRoleCallFourth) {
+        this.customizeRoleCallFourth = customizeRoleCallFourth;
+    }
+
+    public Integer getCustomizeRoleCallFifth() {
+        return customizeRoleCallFifth;
+    }
+
+    public void setCustomizeRoleCallFifth(Integer customizeRoleCallFifth) {
+        this.customizeRoleCallFifth = customizeRoleCallFifth;
+    }
+
+    public Integer getCustomizeHospitalCallFirst() {
+        return customizeHospitalCallFirst;
+    }
+
+    public void setCustomizeHospitalCallFirst(Integer customizeHospitalCallFirst) {
+        this.customizeHospitalCallFirst = customizeHospitalCallFirst;
+    }
+
+    public String getCustomizeHospitalCallFirstName() {
+        return customizeHospitalCallFirstName;
+    }
+
+    public void setCustomizeHospitalCallFirstName(String customizeHospitalCallFirstName) {
+        this.customizeHospitalCallFirstName = customizeHospitalCallFirstName;
+    }
+
+    public Integer getCustomizeHospitalCallSecond() {
+        return customizeHospitalCallSecond;
+    }
+
+    public void setCustomizeHospitalCallSecond(Integer customizeHospitalCallSecond) {
+        this.customizeHospitalCallSecond = customizeHospitalCallSecond;
+    }
+
+    public String getCustomizeHospitalCallSecondName() {
+        return customizeHospitalCallSecondName;
+    }
+
+    public void setCustomizeHospitalCallSecondName(String customizeHospitalCallSecondName) {
+        this.customizeHospitalCallSecondName = customizeHospitalCallSecondName;
+    }
+
+    public Integer getCustomizeHospitalCallThird() {
+        return customizeHospitalCallThird;
+    }
+
+    public void setCustomizeHospitalCallThird(Integer customizeHospitalCallThird) {
+        this.customizeHospitalCallThird = customizeHospitalCallThird;
+    }
+
+    public String getCustomizeHospitalCallThirdName() {
+        return customizeHospitalCallThirdName;
+    }
+
+    public void setCustomizeHospitalCallThirdName(String customizeHospitalCallThirdName) {
+        this.customizeHospitalCallThirdName = customizeHospitalCallThirdName;
+    }
+
+    public Integer getCustomerNameHidden() {
+        return customerNameHidden;
+    }
+
+    public void setCustomerNameHidden(Integer customerNameHidden) {
+        this.customerNameHidden = customerNameHidden;
+    }
+
+    public String getDoctorTitle() {
+        return doctorTitle;
+    }
+
+    public void setDoctorTitle(String doctorTitle) {
+        this.doctorTitle = doctorTitle;
+    }
+
+    public Integer getDoctorValid() {
+        return doctorValid;
+    }
+
+    public void setDoctorValid(Integer doctorValid) {
+        this.doctorValid = doctorValid;
+    }
+
+    public String getNurseTitle() {
+        return nurseTitle;
+    }
+
+    public void setNurseTitle(String nurseTitle) {
+        this.nurseTitle = nurseTitle;
+    }
+
+    public Integer getNurseValid() {
+        return nurseValid;
+    }
+
+    public void setNurseValid(Integer nurseValid) {
+        this.nurseValid = nurseValid;
+    }
+
+    public String getDoorNurseTitle() {
+        return doorNurseTitle;
+    }
+
+    public void setDoorNurseTitle(String doorNurseTitle) {
+        this.doorNurseTitle = doorNurseTitle;
+    }
+
+    public Integer getDoorNurseValid() {
+        return doorNurseValid;
+    }
+
+    public void setDoorNurseValid(Integer doorNurseValid) {
+        this.doorNurseValid = doorNurseValid;
+    }
+
+    public String getDoorNursingTitle() {
+        return doorNursingTitle;
+    }
+
+    public void setDoorNursingTitle(String doorNursingTitle) {
+        this.doorNursingTitle = doorNursingTitle;
+    }
+
+    public Integer getDoorNursingValid() {
+        return doorNursingValid;
+    }
+
+    public void setDoorNursingValid(Integer doorNursingValid) {
+        this.doorNursingValid = doorNursingValid;
+    }
+
+    public Integer getUpSeconds() {
+        return upSeconds;
+    }
+
+    public void setUpSeconds(Integer upSeconds) {
+        this.upSeconds = upSeconds;
+    }
+
+    public Integer getAutoAccept() {
+        return autoAccept;
+    }
+
+    public void setAutoAccept(Integer autoAccept) {
+        this.autoAccept = autoAccept;
+    }
+
+    public Boolean getBoardShowEmptyBed() {
+        return boardShowEmptyBed;
+    }
+
+    public void setBoardShowEmptyBed(Boolean boardShowEmptyBed) {
+        this.boardShowEmptyBed = boardShowEmptyBed;
+    }
+
+    public Integer getEventForward() {
+        return eventForward;
+    }
+
+    public void setEventForward(Integer eventForward) {
+        this.eventForward = eventForward;
+    }
+
+    public String getNursingColorRgb() {
+        return nursingColorRgb;
+    }
+
+    public void setNursingColorRgb(String nursingColorRgb) {
+        this.nursingColorRgb = nursingColorRgb;
+    }
+
+    public Integer getTwoColorDoorLightValid() {
+        return twoColorDoorLightValid;
+    }
+
+    public void setTwoColorDoorLightValid(Integer twoColorDoorLightValid) {
+        this.twoColorDoorLightValid = twoColorDoorLightValid;
+    }
+
+    public String getQrUrl() {
+        return qrUrl;
+    }
+
+    public void setQrUrl(String qrUrl) {
+        this.qrUrl = qrUrl;
+    }
+
+    public Integer getChannelImHistoryStoreDays() {
+        return channelImHistoryStoreDays;
+    }
+
+    public void setChannelImHistoryStoreDays(Integer channelImHistoryStoreDays) {
+        this.channelImHistoryStoreDays = channelImHistoryStoreDays;
+    }
+
+    public Integer getRecordEnabled() {
+        return recordEnabled;
+    }
+
+    public void setRecordEnabled(Integer recordEnabled) {
+        this.recordEnabled = recordEnabled;
+    }
+
+    @Override
+    public String toString() {
+        return "PartSettingDO{" +
+                "id=" + id +
+                ", unionId='" + unionId + '\'' +
+                ", createTime=" + createTime +
+                ", updateTime=" + updateTime +
+                ", partId=" + partId +
+                ", dayStart='" + dayStart + '\'' +
+                ", dayLight=" + dayLight +
+                ", dayVol=" + dayVol +
+                ", dayRingVol=" + dayRingVol +
+                ", dayRingTimes=" + dayRingTimes +
+                ", dayNurseLed=" + dayNurseLed +
+                ", dayDoorVol=" + dayDoorVol +
+                ", dayBedVol=" + dayBedVol +
+                ", dayTransferBoxVol=" + dayTransferBoxVol +
+                ", dayTransferBoxSystemVol=" + dayTransferBoxSystemVol +
+                ", nightStart='" + nightStart + '\'' +
+                ", nightLight=" + nightLight +
+                ", nightVol=" + nightVol +
+                ", nightRingVol=" + nightRingVol +
+                ", nightRingTimes=" + nightRingTimes +
+                ", nightNurseLed=" + nightNurseLed +
+                ", nightDoorVol=" + nightDoorVol +
+                ", nightBedVol=" + nightBedVol +
+                ", nightTransferBoxVol=" + nightTransferBoxVol +
+                ", nightTransferBoxSystemVol=" + nightTransferBoxSystemVol +
+                ", sleepSecondsNurse=" + sleepSecondsNurse +
+                ", sleepSecondsDoor=" + sleepSecondsDoor +
+                ", sleepSecondsBed=" + sleepSecondsBed +
+                ", sipOvertime=" + sipOvertime +
+                ", transferDuration=" + transferDuration +
+                ", transferDurationLeader=" + transferDurationLeader +
+                ", communicationModeBed=" + communicationModeBed +
+                ", communicationModeNurse=" + communicationModeNurse +
+                ", communicationModeMobile=" + communicationModeMobile +
+                ", customizeRoleCallFirst=" + customizeRoleCallFirst +
+                ", customizeRoleCallSecond=" + customizeRoleCallSecond +
+                ", customizeRoleCallThird=" + customizeRoleCallThird +
+                ", customizeRoleCallFourth=" + customizeRoleCallFourth +
+                ", customizeRoleCallFifth=" + customizeRoleCallFifth +
+                ", customizeHospitalCallFirst=" + customizeHospitalCallFirst +
+                ", customizeHospitalCallFirstName='" + customizeHospitalCallFirstName + '\'' +
+                ", customizeHospitalCallSecond=" + customizeHospitalCallSecond +
+                ", customizeHospitalCallSecondName='" + customizeHospitalCallSecondName + '\'' +
+                ", customizeHospitalCallThird=" + customizeHospitalCallThird +
+                ", customizeHospitalCallThirdName='" + customizeHospitalCallThirdName + '\'' +
+                ", customerNameHidden=" + customerNameHidden +
+                ", doctorTitle='" + doctorTitle + '\'' +
+                ", doctorValid=" + doctorValid +
+                ", nurseTitle='" + nurseTitle + '\'' +
+                ", nurseValid=" + nurseValid +
+                ", doorNurseTitle='" + doorNurseTitle + '\'' +
+                ", doorNurseValid=" + doorNurseValid +
+                ", doorNursingTitle='" + doorNursingTitle + '\'' +
+                ", doorNursingValid=" + doorNursingValid +
+                ", upSeconds=" + upSeconds +
+                ", autoAccept=" + autoAccept +
+                ", boardShowEmptyBed=" + boardShowEmptyBed +
+                ", eventForward=" + eventForward +
+                ", nursingColorRgb='" + nursingColorRgb + '\'' +
+                ", twoColorDoorLightValid=" + twoColorDoorLightValid +
+                ", qrUrl='" + qrUrl + '\'' +
+                ", channelImHistoryStoreDays=" + channelImHistoryStoreDays +
+                '}';
+    }
 }