[6.0.0] 轨迹集合无序问题处理

This commit is contained in:
wangmingjun
2023-08-25 14:43:20 +08:00
committed by zhongchao
parent b31c109be0
commit ec0bb3c6db
2 changed files with 961 additions and 825 deletions

View File

@@ -6,14 +6,15 @@ import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.GsonUtils;
import com.mogo.och.taxi.bean.ContrailListRespBean;
import com.mogo.och.taxi.bean.TrajectoryListRespBean;
import com.mogo.och.taxi.bean.OrderDetail;
import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean;
import com.mogo.och.taxi.bean.Site;
import com.mogo.och.taxi.constant.TaskStatusEnum;
import com.mogo.och.taxi.constant.TaxiUnmannedConst;
import com.mogo.och.taxi.model.TaxiModel;
import com.mogo.och.taxi.ui.task.TaxiTaskModel;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -67,7 +68,7 @@ public class TaxiTrajectoryManager {
* 同步订单信息
*/
public void syncTrajectoryInfo() {
QueryCurrentTaskRespBean.Result taskAndOrder = TaxiModel.INSTANCE.getCurTaskAndOrder();
QueryCurrentTaskRespBean.Result taskAndOrder = TaxiTaskModel.INSTANCE.getCurTaskAndOrder();
if (taskAndOrder == null || taskAndOrder.getCurrentStatus() >= TaskStatusEnum.StartTask.getCode()) {
CallerLogger.d(M_TAXI + TAG, "syncTrajectoryInfo() stop.");
stopTrajReqLoop();
@@ -116,7 +117,7 @@ public class TaxiTrajectoryManager {
}
private void setupAutoPilotLine() {
QueryCurrentTaskRespBean.Result taskAndOrder = TaxiModel.INSTANCE.getCurTaskAndOrder();
QueryCurrentTaskRespBean.Result taskAndOrder = TaxiTaskModel.INSTANCE.getCurTaskAndOrder();
if (taskAndOrder == null || taskAndOrder.getEndSite() == null) {
CallerLogger.e(M_TAXI + TAG,
@@ -129,7 +130,7 @@ public class TaxiTrajectoryManager {
* 4、若不存在,说明当前的执行的任务是与订单无关的演练任务,通知下载加载当前任务的轨迹以及预加载订单轨迹集合的第一个
*/
final ContrailListRespBean.Result curTaskContrail = TaxiModel.INSTANCE.getCurTaskContrail();
final TrajectoryListRespBean.Result curTaskContrail = TaxiTaskModel.INSTANCE.getCurrentTaskTrajectory();
if (curTaskContrail == null) return;
long curLineId = taskAndOrder.getLineId();
@@ -157,29 +158,28 @@ public class TaxiTrajectoryManager {
}
final OrderDetail orderDetail = taskAndOrder.getOrder();
ContrailListRespBean.Result preloadContrail = null; //预加载的轨迹
int preLoadIndex = -1;
//包含接驾任务和送驾任务的轨迹, 且集合是有顺序的 , 最后一个是送驾任务轨迹
final List<ContrailListRespBean.Result> orderContrails = TaxiModel.INSTANCE.getCurOrderContrails();
TrajectoryListRespBean.Result preloadContrail = null; //预加载的轨迹
final List<TrajectoryListRespBean.Result> orderContrails = TaxiTaskModel.INSTANCE.getCurrentOrderTrajectoryList();
if (orderDetail != null && orderContrails != null && orderContrails.size() != 0 ){
for (int i = 0; i< orderContrails.size() ; i++){
if (orderContrails.get(i).getLineId() == curLineId){ //预加载轨迹是curLineId索引的下一个
int index = i + 1;
if (orderContrails.size() == index){
//说明找到的是集合最后一个, 最后一个为送驾轨迹,即送驾轨迹和当前的任务轨迹是一样的,不再预加载
preLoadIndex = index;
break;
}else if (orderContrails.size()-1 >= index){
preloadContrail = orderContrails.get(index);
preLoadIndex = index;
break;
List<Long> lineIds = new ArrayList<>();
lineIds.addAll(Arrays.asList(orderDetail.getPlanningLines())); // 接驾
lineIds.add(orderDetail.getOrderLine());//送驾
if (lineIds.contains(curLineId)){ //当前任务在lineIds集合里
//计算预加载的下一个轨迹
int preLoadIndex = lineIds.indexOf(curLineId) + 1;
if (lineIds.size() -1 >= preLoadIndex){
long preLoadLineId = lineIds.get(preLoadIndex);
for (int i = 0; i< orderContrails.size() ; i++){
if (orderContrails.get(i).getLineId() == preLoadLineId){
preloadContrail = orderContrails.get(i);
break;
}
}
}
}
if (preLoadIndex == -1){ //说明当前任务轨迹在接驾/送驾轨迹集合里没有, 直接加载轨迹集合第一个
}else {//说明当前任务轨迹在接驾/送驾轨迹集合里没有, 直接加载轨迹集合第一个
preloadContrail = orderContrails.get(0);
}
}