startRunTask method
void
startRunTask({
- String? remark,
- required List<
ShippingNoteInfo> shippingNoteInfos, - SuccessBack? successBack,
开始运输 TODO:起运
Implementation
void startRunTask({String? remark, required List<ShippingNoteInfo> shippingNoteInfos, SuccessBack? successBack}) {
if (shippingNoteInfos.isEmpty) {
taskListener(false, "SYSTEM", "开始运输失败,您传入的运单数量为0", shippingNoteInfos);
return;
}
for (ShippingNoteInfo element in shippingNoteInfos) {
if (element.runState != RunState.create) {
taskListener(false, "SYSTEM", "开始运输失败,您传入的运单中存在非待开始的运单,无法开始运输,请先过滤掉非创建状态的运单", shippingNoteInfos);
return;
}
}
XbrNetworkFreight.start(
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> _){
startRunTask(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);
}
},
);
}