瀏覽代碼

1.R键增加取消事件功能
2.优化首次启动关闭所有门灯
3.其他优化

weizhengliang 9 月之前
父節點
當前提交
3ee8728bef

+ 47 - 8
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/activity/MainActivity.kt

@@ -19,6 +19,7 @@ import com.google.gson.Gson
 import com.wdkl.app.ncs.conversion_box.BuildConfig
 import com.wdkl.app.ncs.conversion_box.R
 import com.wdkl.app.ncs.conversion_box.bean.CallingItem
+import com.wdkl.app.ncs.conversion_box.bean.EventBean
 import com.wdkl.app.ncs.conversion_box.bean.KeyFunc
 import com.wdkl.app.ncs.conversion_box.bean.SosItem
 import com.wdkl.app.ncs.conversion_box.databinding.MainActivityLayoutBinding
@@ -152,6 +153,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
 
     private val keyFuncList = ArrayList<KeyFunc>()
     private val nursingMap = HashMap<String, Int>()
+    private val eventList = ArrayList<EventBean>()
 
     override fun getLayId(): Int {
         return R.layout.main_activity_layout
@@ -1064,7 +1066,6 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
 
                         //进入护理
                         val nurseMac = addr.toUpperCase(Locale.ROOT)
-                        Log.e(TAG,"nursing map size: " + nursingMap.size)
                         nursingMap.put(nurseMac, -1)
                         sendNursing(addr)
                     }
@@ -1102,9 +1103,25 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
                         //清除所有事件
                         //退出护理
                         val mac = addr.toUpperCase(Locale.ROOT)
-                        if (nursingMap.containsKey(mac)) {
-                            nursingMap.remove(mac)
+                        Log.e(TAG,"nursing map size: " + nursingMap.size + ", " + mac)
+                        if (nursingMap.size > 0 && nursingMap.containsKey(mac)) {
                             sendNursingEnd(addr)
+                            nursingMap.remove(mac)
+                        }
+
+                        Log.e(TAG,"event list size: " + eventList.size + ", " + mac)
+                        if (eventList.size > 0) {
+                            val iterator = eventList.iterator()
+                            while (iterator.hasNext()) {
+                                val it = iterator.next()
+                                Log.e(TAG, "mac: " + it.mac + ", interactionDO: " + it.interactionVO)
+                                if (addr.equals(it.mac, true) && it.interactionVO != null) {
+                                    val tcpModel = EventUtil.cancelEvent(it.interactionVO)
+                                    TcpClient.getInstance().sendMsg(tcpModel.toJson())
+
+                                    iterator.remove()
+                                }
+                            }
                         }
                     }
 
@@ -1251,7 +1268,20 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
                 for (frameDevice in FrameHelper.frameDeviceList) {
                     if (frameDevice.device != null && uart.equals(frameDevice.device.ethMac, true)) {
                         val tcpModel = EventUtil.eventKeyClick(frameDevice.device.id, id)
-                        TcpClient.getInstance().sendTcp(tcpModel, false,  null)
+                        val transaction: TcpCallback = object : TcpCallback(tcpModel.tid, uart) {
+                            override fun onSuccess(jsonObject: JSONObject, tcpModel: TcpModel) {
+                                //事件发送成功,记录该事件数据
+                                val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
+                                val eventBean = EventBean(mac, interactionVO)
+                                eventList.add(eventBean)
+                            }
+
+                            override fun onFailed(jsonObject: JSONObject) {
+                                //
+                            }
+                        }
+
+                        TcpClient.getInstance().sendTcp(tcpModel, false,  transaction)
 
                         break
                     }
@@ -1293,7 +1323,10 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
 
                             val tcpModel = VoiceUtil.voiceCall(curDeviceId, RoleTypeEnum.NURSE.name)
                             val transaction: TcpCallback = object : TcpCallback(tcpModel.tid, uart) {
-                                override fun onSuccess(jsonObject: JSONObject) {
+                                override fun onSuccess(
+                                    jsonObject: JSONObject,
+                                    tcpModel: TcpModel
+                                ) {
                                     if (Constant.CALL_STATE == Constant.CALL_STANDBY) {
                                         Constant.CALL_STATE = Constant.CALL_OUTGOING
                                     }
@@ -1378,7 +1411,10 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
 
                         val tcpModel = BlueCodeUtil.BlueCodeCall(frameDevice.device.id, frameDevice.frame.fullName)
                         val transaction: TcpCallback = object : TcpCallback(tcpModel.tid, uart) {
-                            override fun onSuccess(jsonObject: JSONObject) {
+                            override fun onSuccess(
+                                jsonObject: JSONObject,
+                                tcpModel: TcpModel
+                            ) {
                                 //开启门灯
                                 Log.d(TAG, "blue code call success, mac: $mac")
                                 /*val doorAddr = getDoorLightAddrBySos(mac)
@@ -1401,7 +1437,10 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
 
                         val tcpModel = OtherUtil.SOSCall(frameDevice.device.id, 0)
                         val transaction: TcpCallback = object : TcpCallback(tcpModel.tid, uart) {
-                            override fun onSuccess(jsonObject: JSONObject) {
+                            override fun onSuccess(
+                                jsonObject: JSONObject,
+                                tcpModel: TcpModel
+                            ) {
                                 //开启门灯
                                 Log.d(TAG, "sos call success, mac: $mac")
                                 val doorAddr = getDoorLightAddrBySos(mac)
@@ -2039,7 +2078,7 @@ class MainActivity :BaseActivity<MainActivityPresenter, MainActivityLayoutBindin
                     } else if (tcpModel.type == TcpType.SIDE) {
                         if (tcpModel.action == TcpAction.SideAction.NURSING) {
                             val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
-                            nursingMap.set(interactionVO.fromEthMac.toUpperCase(Locale.ROOT), interactionVO.id)
+                            nursingMap.set(interactionVO.fromEthIp.toUpperCase(Locale.ROOT), interactionVO.id)
                         } else {
                             //门灯控制
                             controlDoorLight(tcpModel)

+ 33 - 0
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/bean/EventBean.java

@@ -0,0 +1,33 @@
+package com.wdkl.app.ncs.conversion_box.bean;
+
+import com.wdkl.ncs.android.middleware.model.vo.InteractionVO;
+
+public class EventBean {
+    private String mac;
+    private InteractionVO interactionVO;
+
+    public EventBean() {
+
+    }
+
+    public EventBean(String mac, InteractionVO interactionVO) {
+        this.mac = mac;
+        this.interactionVO = interactionVO;
+    }
+
+    public String getMac() {
+        return mac;
+    }
+
+    public void setMac(String mac) {
+        this.mac = mac;
+    }
+
+    public InteractionVO getInteractionVO() {
+        return interactionVO;
+    }
+
+    public void setInteractionVO(InteractionVO interactionVO) {
+        this.interactionVO = interactionVO;
+    }
+}

+ 5 - 2
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/fragment/MainFragment.kt

@@ -75,8 +75,10 @@ class MainFragment: BaseFragment<MainFragmentPresenter, ConversionBoxMainLayBind
                         FrameHelper.frameDeviceList.add(roomBean)
 
                         //关闭门灯
-                        if (roomDevice.deviceType == DeviceTypeEnum.SIMULATE_DOOR_LIGHT.value() && !TextUtils.isEmpty(roomDevice.ethMac)) {
-                            SerialPortHelper.closeDoorLight(roomDevice.ethMac)
+                        if (Constant.firstLoadData) {
+                            if (roomDevice.deviceType == DeviceTypeEnum.SIMULATE_DOOR_LIGHT.value() && !TextUtils.isEmpty(roomDevice.ethMac)) {
+                                SerialPortHelper.closeDoorLight(roomDevice.ethMac)
+                            }
                         }
                     }
                 }
@@ -95,6 +97,7 @@ class MainFragment: BaseFragment<MainFragmentPresenter, ConversionBoxMainLayBind
                     }
                 }
             }
+            Constant.firstLoadData = false
 
             adapter?.updateData(FrameHelper.frameDeviceList)
         }

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

@@ -30,6 +30,9 @@ public class Constant {
     public static boolean LATER_RESTART = false;
     public static boolean test_mode = false;
 
+    //首次加载数据
+    public static boolean firstLoadData = true;
+
     //0--白天,1--夜晚
     public static int day_state = -1;
 

+ 2 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/TcpClientHandler.java

@@ -103,7 +103,8 @@ public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
                                     if (transaction != null) {
                                         JSONObject jsonObject = new JSONObject();
                                         jsonObject.put(TcpCallback.CALLBACK, TcpCallback.CALLBACK_SUCCESS);
-                                        transaction.onSuccess(jsonObject);
+                                        //transaction.onSuccess(jsonObject);
+                                        transaction.onSuccess(jsonObject, tcpModel);
                                         trantCache.remove(tcpModel.getTid());
                                     }
                                 }

+ 3 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/channel/OtherUtil.java

@@ -72,7 +72,9 @@ public class OtherUtil {
         tcpModel.setType(TcpType.SIDE);
         tcpModel.setAction(TcpAction.SideAction.NURSING_END);
         tcpModel.setFromId(fromId);
-        tcpModel.setData(interactionId);
+        if (interactionId != null && interactionId != -1) {
+            tcpModel.setData(interactionId);
+        }
         return tcpModel;
     }
 

+ 4 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/dto/TcpCallback.java

@@ -29,6 +29,10 @@ public class TcpCallback {
 
     }
 
+    public void onSuccess(JSONObject jsonObject, TcpModel tcpModel){
+
+    }
+
     public void onFailed(JSONObject jsonObject){
 
     }