更新快检功能必传mac参数

This commit is contained in:
wyf
2026-03-14 10:44:28 +08:00
parent 6472baf993
commit 2d28a550bd
28 changed files with 1993 additions and 795 deletions

View File

@@ -20,6 +20,7 @@ import 'package:vbvs_app/controller/device/device_type_controller.dart';
import 'package:vbvs_app/controller/main_bottom/global_controller.dart';
import 'package:vbvs_app/controller/theme_controller/ThemeController.dart';
import 'package:vbvs_app/controller/user_info_controller.dart';
import 'package:vbvs_app/enum/APPQuickCheckStatus.dart';
import 'package:vbvs_app/model/WebSocketMessage.dart';
import 'package:vbvs_app/pages/device/component/DeviceStatusInfoWidget.dart';
import 'package:vbvs_app/pages/device_bind/componnet/CalibrationProgressWidget.dart';
@@ -68,13 +69,22 @@ class _HealthCheckPageState extends State<HealthCheckPage>
_isInitialized = true;
});
// 如果当前状态是体验中,启动定时器
if (deviceTypeController.experience_status.value == 200) {
if (deviceTypeController.experience_status.value == 200 &&
deviceTypeController.own.value) {
_startCheckStatusTimer();
}
});
} catch (e) {
ef.log("快检初始化数据失败");
}
_initWebSocket();
super.initState();
}
Future<void> _initWebSocket() async {
// 发送WebSocket请求
try {
Future.delayed(Duration(seconds: 0), () {
CommonVariables.callMap["/vsbs/web/rt/marttress"] = (data) {
@@ -128,13 +138,6 @@ class _HealthCheckPageState extends State<HealthCheckPage>
edm.EasyDartModule.logger
.error("[webscoekt]格式化数据错误-->${{"mac": widget.personInfo['mac']}}");
}
_initWebSocket();
super.initState();
}
void _initWebSocket() {
// 发送WebSocket请求
if (widget.personInfo['status'] != null) {
try {
onlineState =
@@ -151,6 +154,11 @@ class _HealthCheckPageState extends State<HealthCheckPage>
.info("[webscoekt]发送请求:数据-->${{"mac": widget.personInfo['mac']}}");
DailyLogUtils.writeLog(
"[webscoekt]发送请求:数据-->${{"mac": widget.personInfo['mac']}}");
edm.EasyDartModule.websocket.sendData(jsonEncode(WebSocketMessage(
path: "/vsbs/web/rt/marttress",
type: 1,
data: {"mac": widget.personInfo['mac']})));
await Future.delayed(Duration(seconds: 3));
edm.EasyDartModule.websocket.sendData(jsonEncode(WebSocketMessage(
path: "/vsbs/web/rt/marttress",
type: 1,
@@ -177,12 +185,14 @@ class _HealthCheckPageState extends State<HealthCheckPage>
edm.EasyDartModule.logger.info("app切回页面重连websocket");
_initWebSocket();
_initWebSocket();
// 重新查询状态,然后根据状态决定是否启动定时器
deviceTypeController
.checkReportStatus(widget.personInfo['mac'])
.then((_) {
// 如果当前状态是体验中,重新启动定时器
if (deviceTypeController.experience_status.value != 404) {
if (deviceTypeController.experience_status.value != 404 &&
deviceTypeController.own.value) {
_startCheckStatusTimer();
}
});
@@ -258,7 +268,9 @@ class _HealthCheckPageState extends State<HealthCheckPage>
child: returnIconButtom,
),
Obx(() {
return deviceTypeController.experience_status.value != 200
return deviceTypeController.experience_status.value !=
200 ||
!deviceTypeController.own.value
? Positioned(
right: 0.rpx,
child: ClickableContainer(
@@ -323,8 +335,9 @@ class _HealthCheckPageState extends State<HealthCheckPage>
mainAxisSize: MainAxisSize.max,
children: [
if (deviceTypeController
.experience_status.value !=
200)
.experience_status.value !=
200 ||
!deviceTypeController.own.value)
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
30.rpx, 0.rpx, 30.rpx, 100.rpx),
@@ -1221,8 +1234,9 @@ class _HealthCheckPageState extends State<HealthCheckPage>
),
),
if (deviceTypeController
.experience_status.value ==
200)
.experience_status.value ==
200 &&
deviceTypeController.own.value)
Padding(
padding:
EdgeInsets.fromLTRB(46.rpx, 0, 46.rpx, 0),
@@ -1274,8 +1288,9 @@ class _HealthCheckPageState extends State<HealthCheckPage>
Expanded(
child: SingleChildScrollView(
child: deviceTypeController
.experience_status.value !=
200
.experience_status.value !=
200 ||
!deviceTypeController.own.value
? Container()
: Column(
children: [
@@ -1403,8 +1418,9 @@ class _HealthCheckPageState extends State<HealthCheckPage>
),
)),
if (deviceTypeController
.experience_status.value !=
200)
.experience_status.value !=
200 ||
!deviceTypeController.own.value)
ClickableContainer(
backgroundColor:
Colors.transparent, // 可自定义背景色
@@ -1469,8 +1485,9 @@ class _HealthCheckPageState extends State<HealthCheckPage>
height: 40.rpx,
),
if (deviceTypeController
.experience_status.value !=
200)
.experience_status.value !=
200 ||
!deviceTypeController.own.value)
Padding(
padding: EdgeInsets.fromLTRB(
100.rpx, 0, 100.rpx, 0),
@@ -1484,7 +1501,24 @@ class _HealthCheckPageState extends State<HealthCheckPage>
await deviceTypeController
.checkReportStatus(
widget.personInfo['mac']);
if (!canStart) {
// if (!canStart) {
// NewTopSlideNotification.show(
// text: "设备正在快检中,请稍后再试!".tr,
// textColor: themeController
// .currentColor.sc9);
// return;
// }
if (!deviceTypeController.own.value &&
deviceTypeController
.experience_status
.value ==
APPQuickCheckStatus
.inProgress.value) {
NewTopSlideNotification.show(
text: "设备正在快检中,请稍后再试!".tr,
textColor: themeController
.currentColor.sc9);
return;
}
bool opRes =
@@ -1542,8 +1576,9 @@ class _HealthCheckPageState extends State<HealthCheckPage>
),
),
if (deviceTypeController
.experience_status.value ==
200)
.experience_status.value ==
200 &&
deviceTypeController.own.value)
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
100.rpx, 0.rpx, 100.rpx, 60.rpx),
@@ -1553,8 +1588,9 @@ class _HealthCheckPageState extends State<HealthCheckPage>
),
),
if (deviceTypeController
.experience_status.value ==
200)
.experience_status.value ==
200 &&
deviceTypeController.own.value)
Padding(
padding: EdgeInsets.fromLTRB(
100.rpx, 0, 100.rpx, 0),
@@ -1702,7 +1738,8 @@ class _HealthCheckPageState extends State<HealthCheckPage>
progressNotifier.value =
deviceTypeController.experience_percent.value.toDouble();
deviceTypeController.updateAll();
if (deviceTypeController.experience_status.value == 201) {
if (deviceTypeController.experience_status.value ==
APPQuickCheckStatus.completed.value) {
//体验正常结束
deviceTypeController.experience_status.value = 404;
deviceTypeController.experience_status.value = 0;
@@ -1710,24 +1747,60 @@ class _HealthCheckPageState extends State<HealthCheckPage>
edm.EasyDartModule.logger.info("快检结束,停止定时查询");
_checkStatusTimer?.cancel();
await deviceTypeController.getCheckHistory(
id: deviceTypeController.experience_id.value);
id: deviceTypeController.experience_id.value,mac: widget.personInfo['mac']);
Get.toNamed('/healthQuickCheckReportPage',
arguments: deviceTypeController.currentCq.value);
}
if (deviceTypeController.experience_status.value != 200 &&
deviceTypeController.experience_status.value != 201 &&
deviceTypeController.experience_status.value != 404 &&
deviceTypeController.experience_status.value != 203) {
// if (deviceTypeController.experience_status.value != APPQuickCheckStatus.inProgress.value &&
// deviceTypeController.experience_status.value != 201 &&
// deviceTypeController.experience_status.value != 404 &&
// deviceTypeController.experience_status.value != 203) {
// //体验异常结束
// deviceTypeController.experience_status.value = 404;
// deviceTypeController.experience_percent.value = 0;
// progressNotifier.value = 0;
// edm.EasyDartModule.logger.info("快检结束,停止定时查询");
// _checkStatusTimer?.cancel();
// // NewTopSlideNotification.show(
// // text:
// // "体验异常结束".tr,
// // textColor: themeController.currentColor.sc9);
// }
if (deviceTypeController.experience_status.value ==
APPQuickCheckStatus.timeout.value ||
deviceTypeController.experience_status.value ==
APPQuickCheckStatus.calculateError.value ||
deviceTypeController.experience_status.value ==
APPQuickCheckStatus.insufficientData.value) {
// 根据状态码获取对应的枚举
APPQuickCheckStatus? status = APPQuickCheckStatusExtension.fromInt(
deviceTypeController.experience_status.value);
// 获取对应的状态描述文字
String statusMessage = status?.description ?? "体验异常结束".tr;
//体验异常结束
deviceTypeController.experience_status.value = 404;
deviceTypeController.experience_percent.value = 0;
progressNotifier.value = 0;
edm.EasyDartModule.logger.info("快检结束,停止定时查询");
edm.EasyDartModule.logger
.info("快检结束,停止定时查询 - 状态: ${status?.description}");
_checkStatusTimer?.cancel();
// NewTopSlideNotification.show(
// text:
// "体验异常结束".tr,
// text: statusMessage,
// textColor: themeController.currentColor.sc9);
await showTipDialog(
context,
Text(
statusMessage,
style: TextStyle(
color: Colors.white,
),
),
);
}
if (!deviceTypeController.own.value) {
_checkStatusTimer?.cancel();
}
});
}