对接连续任务列表接口和连续任务下发,便捷操作中暂停任务的对接,底部导航tab项的设置根据用户角色显示和设置

This commit is contained in:
2026-11-11 16:51:21 +08:00
parent 47f518f94c
commit 985bcf4b55
54 changed files with 5017 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
import 'dart:convert';
import 'package:dio/dio.dart';
import '../../../../core/consts/http_api_consts.dart';
import '../../../../core/logging/i_logger_service.dart';
import '../../domain/entities/consecutive_task_request.dart';
class ConsecutiveTaskRemoteDatasource {
ConsecutiveTaskRemoteDatasource(this.dio, this.logger);
final Dio dio;
final ILoggerService logger;
Future<void> create(ConsecutiveTaskRequest request) async {
final body = {
'deviceId': request.deviceId.trim(),
'routeIds': request.routeIds,
'orgId': request.orgId,
'siteId': request.siteId,
};
final clock = Stopwatch()..start();
final url = HttpApiConsts.createConsecutiveTask;
logger.logWithLevel(
'[区域下发] 请求: POST $url, 参数: ${jsonEncode(body)}',
shouldLog: true,
);
try {
final response = await dio.post(
url,
data: body,
options: Options(
sendTimeout: const Duration(seconds: 20),
receiveTimeout: const Duration(seconds: 20),
),
);
final data = response.data;
logger.logWithLevel(
'[区域下发] 响应: HTTP ${response.statusCode}, ${jsonEncode(data)}, 耗时=${clock.elapsedMilliseconds}ms',
shouldLog: true,
);
if (response.statusCode != 200 ||
data is! Map ||
'${data['code']}' != '200') {
throw Exception(data is Map ? data['msg'] ?? '区域任务下发失败' : '区域任务响应格式错误');
}
final result = data['data'];
// data: 1 是成功结果,不能按 bool 强转。
if (result == false || result is num && result <= 0) {
throw Exception('区域任务未下发成功,请查看接口响应');
}
logger.logWithLevel(
'[区域下发] 成功: deviceId=${request.deviceId}, routeIds=${request.routeIds}',
shouldLog: true,
);
} catch (error) {
logger.logWithLevel(
'[区域下发] 异常: $error, 耗时=${clock.elapsedMilliseconds}ms',
shouldLog: true,
);
rethrow;
} finally {
clock.stop();
}
}
}