reStartRunTask method

void reStartRunTask({
  1. String? remark,
  2. required List<ShippingNoteInfo> shippingNoteInfos,
  3. SuccessBack? successBack,
})

重启 TODO:暂停结束/切换司机成功/车辆后点击

Implementation

void reStartRunTask({String? remark, required List<ShippingNoteInfo> shippingNoteInfos, SuccessBack? successBack}) {
  if (shippingNoteInfos.isEmpty) {
    taskListener(false, OTHER_ERR_CODE, "当前未传入任何运单,请指定需要重启的运单", shippingNoteInfos);
    return;
  }
  for (ShippingNoteInfo element in shippingNoteInfos) {
    if (element.runState != RunState.pause) {
      taskListener(false, "SYSTEM", "重启失败,您传入的运单中存在非暂停状态的运单,无法重启,请先过滤掉非暂停状态的运单", shippingNoteInfos);
      return;
    }
  }
  XbrNetworkFreight.restart(
    vehicleNumber: shippingNoteInfos[0].vehicleNumber,
    driverName: shippingNoteInfos[0].driverName,
    shippingNoteInfos: shippingNoteInfos,
    remark: remark,
    returnBack: (ReqReturn ret) {
      if (ret.success == null || ret.success == false) {
        if (ret.code == NO_AUTH_CODE) {
          taskListener(false, NO_AUTH_CODE, "运单重启时返回认证授权失效,正在恢复认证重新发送", shippingNoteInfos);
          authBack(successBack:(String code,String msg, List<ShippingNoteInfo> _){
            reStartRunTask(remark: remark, shippingNoteInfos: shippingNoteInfos,successBack:successBack);
          });
          return;
        }
        taskListener(false, ret.code, "运单重启时失败:${ret.msg},请重新提交命令", shippingNoteInfos);
        return;
      }
      for (var info in shippingNoteInfos) {
        info.runState = RunState.start;
        if(ret.data != null && ret.data!.isNotEmpty){
          for(var element in ret.data!){
            if(element.shippingNoteNumber==info.shippingNoteNumber) {
              info.interval = element.interval;
            }
          }
        }
        runMap[info.shippingNoteNumber!] = info;
      }
      int interval = shippingNoteInfos[0].interval ?? DEFAULT_MILL;
      taskListener(true, SUCCESS_CODE, "运单重启成功,数量:${shippingNoteInfos.length},即将在${interval / 1000}秒后发送定位", shippingNoteInfos);
      taskRunTimer?.cancel();
      taskRunTimer = Timer(Duration(milliseconds: interval), () {
        _sendRunTask();
      });
      if(successBack!=null){
        successBack(ret.code??OTHER_ERR_CODE,ret.msg??"",shippingNoteInfos);
      }
    },
  );
}