From 5d6346c3ea977d9c594d675de27995300e285730 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=90=8C?= <494089941@qq.com> Date: Thu, 26 May 2022 12:07:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E8=AD=A6=E5=86=85=E5=AE=B9=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/sign/login/code_message_page.dart | 1 + .../websocket/alarm_models/fire_model.dart | 136 +++++++++++++++--- lib/utils/websocket/fire_dialog.dart | 33 ++--- lib/utils/websocket/web_socket_util.dart | 8 +- 4 files changed, 138 insertions(+), 40 deletions(-) diff --git a/lib/pages/sign/login/code_message_page.dart b/lib/pages/sign/login/code_message_page.dart index 196d9de6..1cf6e502 100644 --- a/lib/pages/sign/login/code_message_page.dart +++ b/lib/pages/sign/login/code_message_page.dart @@ -37,6 +37,7 @@ class _CodeMessagePageState extends State { @override void dispose() { _controller.dispose(); + SmsAutoFill().unregisterListener(); super.dispose(); } diff --git a/lib/utils/websocket/alarm_models/fire_model.dart b/lib/utils/websocket/alarm_models/fire_model.dart index 5b535853..06cc8f91 100644 --- a/lib/utils/websocket/alarm_models/fire_model.dart +++ b/lib/utils/websocket/alarm_models/fire_model.dart @@ -5,14 +5,14 @@ part 'fire_model.g.dart'; @JsonSerializable() class FireModel extends Equatable { - final String? model; - final String? communityCode; - final int? alarmType; - final String? alarmNo; - final String? deviceNo; - final String? deviceName; - final String? time; - final String? alarmContent; + final String model; + final String communityCode; + final int type; + final FireAlarm? fireAlarm; + final DeviceAlarm? deviceAlarm; + final OneButtonAlarm? oneButtonAlarm; + final ClientAlarm? clientAlarm; + final ElderlyCareEquipmentReminder? elderlyCareEquipmentReminder; factory FireModel.fromJson(Map json) => _$FireModelFromJson(json); @@ -21,22 +21,116 @@ class FireModel extends Equatable { List get props => [ model, communityCode, - alarmType, - alarmNo, - deviceNo, + type, + fireAlarm, + deviceAlarm, + oneButtonAlarm, + clientAlarm, + elderlyCareEquipmentReminder, + ]; + + const FireModel({ + required this.model, + required this.communityCode, + required this.type, + this.fireAlarm, + this.deviceAlarm, + this.oneButtonAlarm, + this.clientAlarm, + this.elderlyCareEquipmentReminder, + }); +} + +@JsonSerializable() +class FireAlarm extends Equatable { + final String time; + final String deviceName; + + @override + List get props => [ + time, deviceName, + ]; + + const FireAlarm({ + required this.time, + required this.deviceName, + }); +} + +@JsonSerializable() +class DeviceAlarm extends Equatable { + final String time; + final String deviceName; + + @override + List get props => [ time, - alarmContent, + deviceName, + ]; + + const DeviceAlarm({ + required this.time, + required this.deviceName, + }); +} + +@JsonSerializable() +class OneButtonAlarm extends Equatable { + final String time; + final String roomName; + final String name; + final String tel; + + @override + List get props => [ + time, + roomName, + name, + tel, + ]; + + const OneButtonAlarm({ + required this.time, + required this.roomName, + required this.name, + required this.tel, + }); +} + +@JsonSerializable() +class ClientAlarm extends Equatable { + final String time; + final String content; + + @override + List get props => [ + time, + content, + ]; + + const ClientAlarm({ + required this.time, + required this.content, + }); +} + +@JsonSerializable() +class ElderlyCareEquipmentReminder extends Equatable { + final String deviceNo; + final int deviceType; + final String content; + + @override + List get props => [ + deviceNo, + deviceType, + content, ]; - FireModel({ - this.model, - this.communityCode, - this.alarmType, - this.alarmNo, - this.deviceNo, - this.deviceName, - this.time, - this.alarmContent, + const ElderlyCareEquipmentReminder({ + required this.deviceNo, + required this.deviceType, + required this.content, }); } diff --git a/lib/utils/websocket/fire_dialog.dart b/lib/utils/websocket/fire_dialog.dart index e24cddca..b905ebdd 100644 --- a/lib/utils/websocket/fire_dialog.dart +++ b/lib/utils/websocket/fire_dialog.dart @@ -1,5 +1,6 @@ import 'dart:convert'; +import 'package:common_utils/common_utils.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -11,9 +12,11 @@ import 'package:aku_new_community/utils/developer_util.dart'; import 'package:aku_new_community/utils/headers.dart'; import 'package:aku_new_community/utils/websocket/alarm_models/fall_model.dart'; import 'package:aku_new_community/utils/websocket/alarm_models/fire_model.dart'; +import 'package:power_logger/power_logger.dart'; class FireDialog { static fireAlarm(String content) async { + LoggerData.addData(content); var json = jsonDecode(content); int type = json['type'] as int; @@ -61,7 +64,7 @@ class FireDialog { case 3: return '管家端APP报警'; case 4: - return '跌倒报警'; + return '消息通知'; case 5: return 'SOS紧急联系报警'; default: @@ -70,27 +73,25 @@ class FireDialog { } static String getContent(dynamic json, int type) { + var alarmModel = FireModel.fromJson(json); switch (type) { case 1: - var alarmModel = FireModel.fromJson(json); - return '于${alarmModel.time},${alarmModel.deviceName}附近出现了火灾报警,请各位业主、租户保持镇静,不要慌乱,有序开始撤离!'; + return '于${DateUtil.formatDateStr(alarmModel.fireAlarm!.time, format: DateFormats.zh_y_mo_d_h_m)},' + '${alarmModel.fireAlarm!.deviceName}附近出现了火灾报警,请各位业主、租户保持镇静,不要慌乱,有序开始撤离!'; case 2: - var alarmModel = FireModel.fromJson(json); - return '于${alarmModel.time},小区内有设备${alarmModel.deviceName}发生了报警,请物业负责人员尽快前往现场排查故障!'; + return '于${DateUtil.formatDateStr(alarmModel.deviceAlarm!.time, format: DateFormats.zh_y_mo_d_h_m)},' + '小区内有设备${alarmModel.deviceAlarm!.deviceName}发生了报警,请物业负责人员尽快前往现场排查故障!'; case 3: - var alarmModel = FireModel.fromJson(json); - return '注意:\n于${alarmModel.time},${alarmModel.deviceNo}${alarmModel.deviceName}' + - '在管家端app上点击了"一键报警",请尽快联系他沟通情况。\n' + - '${alarmModel.deviceName}联系方式:${alarmModel.alarmNo}\n' + - '如未能联系到${alarmModel.deviceName}。可择情报警'; + return '注意:\n于${DateUtil.formatDateStr(alarmModel.oneButtonAlarm!.time, format: DateFormats.zh_y_mo_d_h_m)}' + ',${alarmModel.oneButtonAlarm!.roomName} ${alarmModel.oneButtonAlarm!.name}在管家端app上点击了"一键报警",请尽快联系他沟通情况。\n' + '${alarmModel.oneButtonAlarm!.name}联系方式:${alarmModel.oneButtonAlarm!.tel}\n' + '如未能联系到${alarmModel.oneButtonAlarm!.name}。可择情报警'; case 4: - var alarmModel = FallModel.fromJson(json); - return '注意:\n\n有住户 ${alarmModel.userName} 发生跌倒情况,请及时上门或联系人员前往查看,住户联系方式:${alarmModel.tel}\n\n' + - '跌倒位置————\n${alarmModel.address},经度${alarmModel.lon},纬度${alarmModel.lat}\n\n如未能联系到住户,可择情报警'; + return '${DateUtil.formatDateStr(alarmModel.deviceAlarm!.time, format: DateFormats.zh_y_mo_d_h_m)}\n\n${alarmModel!.clientAlarm!.content}'; case 5: - var alarmModel = FallModel.fromJson(json); - return '注意:\n\n有住户 ${alarmModel.userName} 使用了SOS紧急联系报警,请及时上门或联系人员前往查看,住户联系方式:${alarmModel.tel}\n\n' + - '跌倒位置————\n${alarmModel.address},经度${alarmModel.lon},纬度${alarmModel.lat}\n\n如未能联系到住户,可择情报警'; + return '注意:\n\n有住户使用了SOS紧急联系报警,请及时上门或联系人员前往查看,设备号:${alarmModel!.elderlyCareEquipmentReminder!.deviceNo}' + '\n\n${alarmModel.elderlyCareEquipmentReminder!.content}'; + default: return ''; } diff --git a/lib/utils/websocket/web_socket_util.dart b/lib/utils/websocket/web_socket_util.dart index 12d8869e..65b504a8 100644 --- a/lib/utils/websocket/web_socket_util.dart +++ b/lib/utils/websocket/web_socket_util.dart @@ -90,9 +90,11 @@ class WebSocketUtil { void setUser(String user) { this._user = user; } + void setCommunityCode(String communityCode) { this._communityCode = communityCode; } + void setNickName(String nickName) { this._nickName = nickName; } @@ -101,15 +103,15 @@ class WebSocketUtil { void startWebSocket() { closeWebSocket(); try { - _webSocket = IOWebSocketChannel.connect(Uri.parse('$baseUri/$_communityCode/$_nickName')); + _webSocket = IOWebSocketChannel.connect( + Uri.parse('$baseUri/$_communityCode/$_nickName')); print('webSocket已连接服务器:$baseUri/$_user'); _socketStatus = SOCKETSTATUS.CONNECTED; endReconnect(); onStart?.call(); _webSocket!.stream.listen( (event) => webSocketReceiveMessage(event as String), - onError: webSocketOnError, - onDone: webSocketClosed); + onError: webSocketOnError,); initHeartBeat(); } catch (e) { BotToast.showText(text: 'webSocket连接失败');