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

This commit is contained in:
wangmingjun
2023-08-25 14:43:20 +08:00
parent 06ee1e257c
commit 815f5d6914
2 changed files with 32 additions and 24 deletions

View File

@@ -340,7 +340,8 @@ object TaxiTaskModel {
judgeUntruthStation(mDriveToNearestStationTask, mogoLocation)
}
if (checkCurrentTaskCondition()) {
if (checkCurrentTaskCondition()
&& mCurrentTaskWithOrder?.currentStatus == TaskStatusEnum.StartTask.code) {
// judgeTaskStartStation(mogoLocation)
judgeTaskEndSiteStation(mogoLocation)
}
@@ -604,7 +605,9 @@ object TaxiTaskModel {
|| mCurrentTaskWithOrder!! != result
) {
d(TAG, "queryCurrentTaskOnce: 更新本地数据")
if (result?.endSite == null && result?.order == null) {
mCurrentTaskWithOrder = result
if (result.endSite == null && result.order == null) {
mCurrentTaskWithOrder = null
}
@@ -628,10 +631,10 @@ object TaxiTaskModel {
//根据lineId集合去查轨迹集合, 返回的只是接驾任务的line集合, 没有送驾任务
var linesIds = arrayListOf<Long>()
linesIds.add(result.lineId)
linesIds.add(result.lineId) // 当前任务的
result.order?.also {
linesIds.addAll(it.planningLines)
linesIds.add(it.orderLine)
linesIds.addAll(it.planningLines) // 接驾
linesIds.add(it.orderLine) //送驾
}
queryTaskTrajectoryByLineIds(linesIds.toTypedArray(), result.lineId)
@@ -644,6 +647,8 @@ object TaxiTaskModel {
autoStartDriving()
}
}
mTaxiTaskCallback?.onTaskWithOrderDataChanged(mCurrentTaskWithOrder)
}
}
@@ -723,10 +728,10 @@ object TaxiTaskModel {
)
if (data?.data == null) return
//去下载轨迹, 下发给工控机下载
queryTaskTrajectoryByLineIds(
Array(1) { data.data!!.lineId },
data.data!!.lineId
)
// queryTaskTrajectoryByLineIds(
// Array(1) { data.data!!.lineId },
// data.data!!.lineId
// )
}
override fun onFail(code: Int, msg: String?) {

View File

@@ -13,6 +13,8 @@ import com.mogo.och.taxi.constant.TaskStatusEnum;
import com.mogo.och.taxi.constant.TaxiUnmannedConst;
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;
@@ -158,25 +160,26 @@ public class TaxiTrajectoryManager {
final OrderDetail orderDetail = taskAndOrder.getOrder();
TrajectoryListRespBean.Result preloadContrail = null; //预加载的轨迹
final List<TrajectoryListRespBean.Result> orderContrails = TaxiTaskModel.INSTANCE.getCurrentOrderTrajectoryList();
int preLoadIndex = -1;
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);
}
}