proccessScanModel method

Future<ScanModel> proccessScanModel(
  1. RoomModel model,
  2. StationData stationModel,
  3. Map dataSource
)

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;
}