cpnav/lib/pages/pass_track/controller.dart

100 lines
2.8 KiB
Dart
Raw Normal View History

2024-08-18 22:42:37 +08:00
import 'dart:ui';
2024-09-06 09:52:06 +08:00
2024-08-18 22:42:37 +08:00
import 'package:get/get.dart';
import 'package:scence_map/controller.dart';
import 'package:cpnav/service/base.dart';
2024-09-06 09:52:06 +08:00
import 'package:pass_track/pass_track.dart';
2024-09-06 09:11:06 +08:00
import 'sevice/file_handle.dart';
2024-09-06 09:52:06 +08:00
2024-09-06 09:11:06 +08:00
FileHandle fileHandle = FileHandle();
2024-08-18 22:42:37 +08:00
class PassTrackController extends GetxController {
2024-09-06 09:52:06 +08:00
int allLen = 0;
2024-08-18 22:42:37 +08:00
final mapController = Get.put(ScenceMapController());
String projCode;
String projType;
late final GetServices service;
2024-09-06 09:52:06 +08:00
// final PassTrack _passTrackPlugin;
2024-08-18 22:42:37 +08:00
PassTrackController(this.projCode, this.projType);
2024-09-06 15:16:09 +08:00
Map<String, int> deviceMap = {};
2024-08-18 22:42:37 +08:00
@override
void onInit() {
super.onInit();
service = GetServices(projCode: projCode, projType: projType);
loadProject();
2024-09-06 15:16:09 +08:00
// loadSideLine();
2024-08-18 22:42:37 +08:00
loadBindDevice();
2024-09-06 09:52:06 +08:00
// getHisFileList();
2024-08-18 22:42:37 +08:00
}
loadBindDevice() async {
var binddevices = await service.getDeviceBind();
for (var device in binddevices) {
var dev = DeviceItem.fromJson(device);
2024-09-06 15:16:09 +08:00
deviceMap[dev.TID.toString()] = 0;
// deviceMap[dev.TID as String] = dev[int.parse(dev["width"])];
2024-08-18 22:42:37 +08:00
}
}
loadCoorTrans() async {}
loadProject() async {}
loadSideLine() async {
var data = await service.getSideLine();
double maxX = -double.infinity;
double maxY = -double.infinity;
double minX = double.infinity;
double minY = double.infinity;
var sideLineData = data as Map<String, dynamic>;
sideLineData.forEach((group, items) {
for (var item in items) {
SideLineItem sideLineItem = SideLineItem.fromJson(item);
var sideLineList = mapController.sideLinListeMap[group];
if (sideLineList == null) {
sideLineList = [];
mapController.sideLinListeMap[group] = sideLineList;
}
sideLineList.add(sideLineItem);
if (sideLineItem.x > maxX) {
maxX = sideLineItem.x;
}
if (sideLineItem.y > maxY) {
maxY = sideLineItem.y;
}
if (sideLineItem.x < minX) {
minX = sideLineItem.x;
}
if (sideLineItem.y < minY) {
minY = sideLineItem.y;
}
}
});
if (maxX != -double.infinity &&
maxY != -double.infinity &&
minX != double.infinity &&
minY != double.infinity) {
mapController.centerXY = Offset((maxX + minX) / 2, (maxY + minY) / 2);
}
}
2024-09-06 09:11:06 +08:00
2024-09-06 15:16:09 +08:00
Future<int> getHisFileList(PassTrack passTrackPlugin) async {
2024-09-06 09:11:06 +08:00
Map textlist = await GetServices().getHisFileList();
List fileList = textlist['list'];
for (var i = 0; i < fileList.length; i++) {
var file = fileList[i];
2024-09-06 15:16:09 +08:00
var jsData = await GetServices().getHisFil1(file);
print("have message");
2024-09-06 09:11:06 +08:00
int len = fileHandle.resolveJson(jsData, passTrackPlugin);
allLen += len;
2024-09-06 15:16:09 +08:00
if (allLen >= 20000) {
break;
}
2024-09-06 09:11:06 +08:00
}
2024-09-06 15:16:09 +08:00
return allLen;
2024-09-06 09:11:06 +08:00
}
2024-08-18 22:42:37 +08:00
}