Browse Source

门口机门灯控制优化

weizhengliang 1 year ago
parent
commit
ef3fc57b85

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

@@ -596,7 +596,6 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                 showMessage(R.string.net_error)
             }
 
-            Constant.callNums = 0
             DoorLightHelper.resetDoorLight()
             EventBus.getDefault().post(MessageEvent("clear_calls", Constant.EVENT_CLEAR_CALLS))
 
@@ -914,6 +913,12 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                 room_action_nurse.visibility = View.GONE
             }
 
+            if (partSetting.boolDoorLightAlwaysOn != null && partSetting.boolDoorLightAlwaysOn == 1) {
+                SettingConfig.setDoorLightAlwaysOn(activity, 1)
+            } else {
+                SettingConfig.setDoorLightAlwaysOn(activity, 0)
+            }
+
             //护理门灯颜色
             if (partSetting.nursingColorRgb != null && partSetting.nursingColorRgb.length == 3 && TextUtils.isDigitsOnly(partSetting.nursingColorRgb)) {
                 Constant.nursingColor = partSetting.nursingColorRgb
@@ -1308,25 +1313,24 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
 
     private fun callControl(tcpModel: TcpModel) {
         if (tcpModel.action == TcpAction.SideAction.CALL) {
-            Constant.callNums++
             SerialPortHelper.setDoorLight(1, "200")
         } else if (tcpModel.action == TcpAction.SideAction.SOS_CALL) {
             SerialPortHelper.setDoorLight(1, "200")
             Constant.sosOn = true
         } else if (tcpModel.action == TcpAction.SideAction.ACCEPT || tcpModel.action == TcpAction.SideAction.CANCEL) {
-            Constant.callNums--
-            if (Constant.callNums < 0) {
-                Constant.callNums = 0
-            }
-
-            //如果当前还有其他床位呼叫或者是紧急呼叫则不重置门灯
-            if (Constant.callNums == 0 && !Constant.sosOn) {
-                DoorLightHelper.resetDoorLight()
+            if (SettingConfig.getDoorLightAlwaysOn(activity) == 0) {
+                //如果当前还有其他床位呼叫或者是紧急呼叫则不重置门灯
+                if (bedCalls.size == 0 && !Constant.sosOn) {
+                    DoorLightHelper.resetDoorLight()
+                }
             }
         } else if (tcpModel.action == TcpAction.SideAction.SOS_CANCEL) {
             Constant.sosOn = false
-            if (Constant.callNums == 0) {
-                DoorLightHelper.resetDoorLight()
+            if (SettingConfig.getDoorLightAlwaysOn(activity) == 0) {
+                //如果当前还有其他床位呼叫或者是紧急呼叫则不重置门灯
+                if (bedCalls.size == 0) {
+                    DoorLightHelper.resetDoorLight()
+                }
             }
         }
     }
@@ -1419,6 +1423,11 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                 }
             } else {
                 view_flipper.removeAllViews()
+
+                //重置门灯
+                if (!Constant.sosOn) {
+                    DoorLightHelper.resetDoorLight()
+                }
             }
         }
     }
@@ -1430,7 +1439,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                 val iterator = bedCalls.iterator()
                 while (iterator.hasNext()) {
                     val it = iterator.next()
-                    if (System.currentTimeMillis() - it.time >= 10 * 60 * 1000) {
+                    if (System.currentTimeMillis() - it.time >= 15 * 60 * 1000) {
                         iterator.remove()
                     }
                 }
@@ -1438,9 +1447,6 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                 runOnUiThread {
                     showCalls()
                 }
-            } else {
-                Constant.callNums = 0
-                DoorLightHelper.resetDoorLight()
             }
         } catch (ex: Exception) {
             ex.printStackTrace()

+ 8 - 0
android_door/src/main/h10_3128/java/com/wdkl/app/ncs/callingdoor/fragment/MainFragment.kt

@@ -12,6 +12,7 @@ import com.wdkl.app.ncs.callingdoor.databinding.MainViewLayoutBinding
 import com.wdkl.app.ncs.callingdoor.helper.DoorLightHelper
 import com.wdkl.app.ncs.callingdoor.helper.Utils
 import com.wdkl.app.ncs.callingdoor.launch.CallingdoorLaunch
+import com.wdkl.app.ncs.callingdoor.settings.SettingConfig
 import com.wdkl.ncs.android.lib.base.BaseFragment
 import com.wdkl.ncs.android.lib.utils.errorLog
 import com.wdkl.ncs.android.lib.utils.showMessage
@@ -98,6 +99,13 @@ class MainFragment: BaseFragment<MainFragmentPresenter, MainViewLayoutBinding>()
             }
 
             Constant.bedCustomIn = count > 0
+            //如果当前在护理中则不操作门灯,如果不在护理中则重置门灯
+            if (!Constant.inNursing && !Constant.sosOn) {
+                //SerialPortHelper.setDoorLight(1, "111") //白色
+                if (SettingConfig.getDoorLightAlwaysOn(activity) == 0) {
+                    DoorLightHelper.resetDoorLight()
+                }
+            }
 
             //var bedNames = ""
             //val bedSize = bedList.size

+ 5 - 2
android_door/src/main/h10_3128/java/com/wdkl/app/ncs/callingdoor/fragment/SkyCallFragment.kt

@@ -14,6 +14,7 @@ import com.wdkl.app.ncs.callingdoor.R
 import com.wdkl.app.ncs.callingdoor.helper.DoorLightHelper
 import com.wdkl.app.ncs.callingdoor.helper.RingPlayHelper
 import com.wdkl.app.ncs.callingdoor.helper.SerialPortHelper
+import com.wdkl.app.ncs.callingdoor.settings.SettingConfig
 import com.wdkl.ncs.android.lib.utils.AppTool
 import com.wdkl.ncs.android.lib.utils.showMessage
 import com.wdkl.ncs.android.middleware.common.Constant
@@ -199,9 +200,11 @@ class SkyCallFragment: BaseCallFragment(), CallSessionCallback {
         RingPlayHelper.stopRingTone()
 
         //如果当前在护理中则不操作门灯,如果不在护理中则重置门灯
-        if (("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) && !Constant.inNursing) {
+        if (("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) && !Constant.inNursing && !Constant.sosOn) {
             //SerialPortHelper.setDoorLight(1, "111") //白色
-            DoorLightHelper.resetDoorLight()
+            if (SettingConfig.getDoorLightAlwaysOn(activity) == 0) {
+                DoorLightHelper.resetDoorLight()
+            }
         }
     }
 

+ 9 - 5
android_door/src/main/h10_3128/java/com/wdkl/app/ncs/callingdoor/helper/SOSHelper.java

@@ -5,6 +5,8 @@ import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
 
+import com.wdkl.app.ncs.callingdoor.settings.SettingConfig;
+import com.wdkl.ncs.android.lib.base.BaseApplication;
 import com.wdkl.ncs.android.middleware.common.Constant;
 import com.wdkl.ncs.android.middleware.tcp.channel.OtherUtil;
 
@@ -46,11 +48,13 @@ public class SOSHelper {
             Constant.sosOn = false;
 
             //如果当前在护理中则不操作门灯,如果不在护理中则重置门灯
-            if (Constant.inNursing) {
-                SerialPortHelper.setDoorLight(1, Constant.nursingColor); //绿色
-            } else {
-                //SerialPortHelper.setDoorLight(1, "111"); //白色
-                DoorLightHelper.resetDoorLight();
+            if (SettingConfig.getDoorLightAlwaysOn(BaseApplication.appContext) == 0) {
+                if (Constant.inNursing) {
+                    SerialPortHelper.setDoorLight(1, Constant.nursingColor); //绿色
+                } else {
+                    //SerialPortHelper.setDoorLight(1, "111"); //白色
+                    DoorLightHelper.resetDoorLight();
+                }
             }
         }
     }

+ 12 - 0
android_door/src/main/h10_3128/java/com/wdkl/app/ncs/callingdoor/settings/SettingConfig.java

@@ -64,6 +64,9 @@ public class SettingConfig {
     private static final String KEY_IN_NURSING = "KEY_IN_NURSING";
     private static final String KEY_NURSING_ID = "KEY_NURSING_ID";
 
+    //呼叫时门灯是否持续亮,需要手动按护理按键切换
+    private static final String KEY_DOOR_LIGHT_ALWAYS_ON = "KEY_DOOR_LIGHT_ALWAYS_ON";
+
     public static int getLanguageId(Context context) {
         //0--auto, 1--English, 2--中文, 3--西班牙语, 4--俄语
         return getSP(context).getInt(KEY_LANGUAGE_ID, 2);
@@ -98,6 +101,15 @@ public class SettingConfig {
         getEditor(context).putInt(KEY_NURSING_ID, nursingId).apply();
     }
 
+    public static int getDoorLightAlwaysOn(Context context) {
+        return getSP(context).getInt(KEY_DOOR_LIGHT_ALWAYS_ON, 0);
+    }
+
+    public static void setDoorLightAlwaysOn(Context context, int alwaysOn) {
+        getEditor(context).putInt(KEY_DOOR_LIGHT_ALWAYS_ON, alwaysOn).apply();
+    }
+
+
     /**
      * 获取白天亮度
      *

+ 6 - 6
android_door/src/main/h10_3128_chile/java/com/wdkl/app/ncs/callingdoor/fragment/MainFragment.kt

@@ -95,12 +95,12 @@ class MainFragment: BaseFragment<MainFragmentPresenter, MainViewLayoutBinding>()
             }
 
             Constant.bedCustomIn = count > 0
-            if (SettingConfig.getDoorLightAlwaysOn(activity) == 0) {
-                DoorLightHelper.resetDoorLight()
-            }
-
-            if (simulateBed) {
-                EventBus.getDefault().post(MessageEvent("remove_call_bed", Constant.EVENT_REMOVE_CALL_BED))
+            //如果当前在护理中则不操作门灯,如果不在护理中则重置门灯
+            if (!Constant.inNursing && !Constant.sosOn) {
+                //SerialPortHelper.setDoorLight(1, "111") //白色
+                if (SettingConfig.getDoorLightAlwaysOn(activity) == 0) {
+                    DoorLightHelper.resetDoorLight()
+                }
             }
 
             //var bedNames = ""