proccessScanModel method
Implementation
Future<ScanModel> proccessScanModel(
RoomModel model, StationData stationModel, Map dataSource) async {
bool scan = dataSource[ScanType.scanAndDownload];
bool upload = dataSource[ScanType.scanDownloadAndUpload] ?? false;
bool isSplit = dataSource[ScanType.scanWaitForSplicing];
num splitNum = 0;
if (isSplit) {
//如果是拼接点云,需要先获取数据列表
List<ScanModel>? modelList = await UnitsForSqlite.queryDataList(
stationModel.roomTaskId!, stationModel.actualOrder!.toString());
if (modelList != null && modelList.isNotEmpty) {
//获取拼接点云中最后的splitNum
modelList.sort((a, b) {
num aNum = a.splitNum ?? 0;
num bNum = b.splitNum ?? 0;
return aNum.compareTo(bNum);
});
ScanModel lastModel = modelList.last;
num lastSplitNum = lastModel.splitNum ?? 0;
splitNum = lastSplitNum + 1;
} else {
splitNum = 1;
}
}
String unit = model.suite!.unit == null ? '' : "${model.suite!.unit}单元";
String taskName = "${model.name}$unit(${model.phaseCode})";
String apiUrl = "$appWebUrl/algorithm/prod-api/algorithm/afterUploading";
String fileUrl;
if (splitNum == 0) {
fileUrl =
"$scannerOssRootDirname/${stationModel.roomTaskId}/${stationModel.actualOrder}/${stationModel.roomTaskId}_${stationModel.actualOrder}.zip.flszip";
} else {
fileUrl =
"$scannerOssRootDirname/${stationModel.roomTaskId}/${stationModel.actualOrder}/$splitNum/${stationModel.roomTaskId}_${stationModel.actualOrder}.zip.flszip";
}
Map param = {
'actualOrder': stationModel.actualOrder,
'ossPath': fileUrl,
'taskId': stationModel.roomTaskId,
'measureModes': [stationModel.measureMode]
};
String taskId = stationModel.roomTaskId ?? '';
String actualOrder = stationModel.actualOrder.toString();
String modelId =
"${taskId}_${actualOrder}_0${splitNum == 0 ? '' : '_${splitNum.toString()}'}";
ScanModel scanModel = ScanModel(
id: modelId,
name: taskName,
taskId: taskId,
splitNum: splitNum,
scan: scan,
actualOrder: actualOrder,
apiUrl: apiUrl,
params: jsonEncode(param),
upload: upload,
wifiName: myWifiName,
wifiPassword: myWifiPassword,
state: ScanState.scanStateNormal);
return scanModel;
}