[sweeper-cloud]贴边显示问题修改

This commit is contained in:
bxb
2023-05-28 14:11:32 +08:00
parent 7234a55b4b
commit 36937826a6
6 changed files with 124 additions and 107 deletions

View File

@@ -44,6 +44,7 @@ import com.mogo.map.marker.IMogoMarkerManager;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.map.uicontroller.VisualAngleMode;
import com.mogo.och.common.module.manager.OCHAdasAbilityManager;
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil;
import com.mogo.och.common.module.utils.PinYinUtil;
import com.mogo.och.sweepercloud.R;
import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean;
@@ -107,6 +108,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
protected int getLayoutId() {
return R.layout.sweeper_base_fragment;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
@@ -186,8 +188,14 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
SweeperCloudTaskUtils.mockQueryCurrentTaskInfo()
);
// 模拟 云端发送任务
findViewById(R.id.btnSendTask).setOnClickListener(view ->
SweeperCloudTaskUtils.mockSendCloudTaskInfo(SweeperCloudTask.MessageType.CloudPushTask)
findViewById(R.id.btnSendTask).setOnClickListener(view -> {
SweeperCloudTaskUtils.mockSendCloudTaskInfo(SweeperCloudTask.MessageType.CloudPushTask);
UiThreadHandler.postDelayed(() -> {
debugEndSubTask();
}, 5000);
}
);
// 模拟 云端发送子任务确认
findViewById(R.id.btnSendSubTaskConfirm).setOnClickListener(view ->
@@ -249,9 +257,11 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
mapBizView.onCreate(savedInstanceState);
mMapWeltView.onCreateView(savedInstanceState);
}
public void setAutoState(int state){
public void setAutoState(int state) {
mTrafficDataView.setAutoState(state);
}
/**
* 消息盒子
*/
@@ -551,6 +561,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
public void setTaskDataToFragmentCallback(ISweeperTaskDataToFragmentCallback mTaskDataToFragmentCallback) {
this.mTaskDataToFragmentCallback = mTaskDataToFragmentCallback;
}
/**
* 结束子任务
*/
@@ -576,26 +587,25 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
private ArrayList<SweeperRoutePlanningUpdateReqBean.Result> tempData() {
ArrayList<SweeperRoutePlanningUpdateReqBean.Result> results = new ArrayList<>();
results.add(getRoute(116.41732262522, 39.974576894194));
results.add(getRoute(116.43963532201855, 39.9752190287537));
results.add(getRoute(116.4440910789222, 39.96469276598098));
results.add(getRoute(116.45254030604285, 39.958762580403544));
results.add(getRoute(116.46168616811329, 39.94668171374373));
results.add(getRoute(112.56970669282785, 26.8175674285121));
results.add(getRoute(112.57154905962457, 26.81762377130161));
results.add(getRoute(112.57723562917293, 26.819769721883098));
return results;
}
private ArrayList<SweeperRoutePlanningUpdateReqBean.Result> tempData1() {
ArrayList<SweeperRoutePlanningUpdateReqBean.Result> results = new ArrayList<>();
results.add(getRoute(116.41732262522, 39.974576894194));
results.add(getRoute(116.43963532201855, 39.9752190287537));
results.add(getRoute(116.4440910789222, 39.96469276598098));
results.add(getRoute(112.56970669282785, 26.8175674285121));
results.add(getRoute(112.57154905962457, 26.81762377130161));
results.add(getRoute(112.57723562917293, 26.819769721883098));
return results;
}
private SweeperRoutePlanningUpdateReqBean.Result getRoute(double longitude, double latitude) {
LatLng latLng = CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(AbsMogoApplication.getApp(), longitude, latitude);
SweeperRoutePlanningUpdateReqBean.Result result = new SweeperRoutePlanningUpdateReqBean.Result();
result.latitude = latitude;
result.longitude = longitude;
result.latitude = latLng.latitude;
result.longitude = latLng.longitude;
return result;
}
}

View File

@@ -274,6 +274,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
return
}
if (stopTaskType == SweeperTaskStop.StopTaskType.NORMAL) {
mPresenter?.isHasTaskInfo(false)
mDialog = sweeperCloudTaskNormalEndDialog()
showNotice("任务已结束")
} else {
@@ -343,6 +344,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
}
//大任务处于取消状态 异常状态pad端都显示无任务列表
if (subTaskStatus == SweeperBigTaskStatus.BigTaskStatus.CANCLE || subTaskStatus == SweeperBigTaskStatus.BigTaskStatus.ABNORMAL || subTaskStatus == SweeperBigTaskStatus.BigTaskStatus.FINISHED) {
mPresenter?.isHasTaskInfo(false)
//数据重复导致连续弹窗
if (mDialog != null && mDialog!!.isShowing) {
return
@@ -376,22 +378,20 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
* 重置任务面板为无数据状态
*/
private fun resetTaskInfoPanel() {
//清除任务缓存数据
mPresenter?.clearRouteList()
lifecycleScope.launch(Dispatchers.IO) {
//清除任务地图绘制标记和作业路线
clearAllMarkerAndPolyline()
//清除贴边数据缓存
MyDataBase.getInstance().weltDataDao.deleteAllWeltData()
}
setShowCurrentTaskPanelView(false)
mPresenter?.isHasTaskInfo(false)
mTaskInfo = null
mCurrentSubTaskInfo = null
mSubMutableList = null
mSubTaskType = TaskModel.DEFAULT_MODEL
setTaskProgress("0")
//清除任务缓存数据
mPresenter?.clearRouteList()
//清除任务地图绘制标记和作业路线
clearAllMarkerAndPolyline()
lifecycleScope.launch(Dispatchers.IO) {
//清除贴边数据缓存
MyDataBase.getInstance().weltDataDao.deleteAllWeltData()
}
}
/**

View File

@@ -192,6 +192,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
if (null != routeList && routeList.getWayPointsList() != null && routeList.getWayPointsList().size() > 0) {
CallerLogger.INSTANCE.d(M_SWEEPER + TAG,"onAutopilotRotting: "+printMessage(routeList));
if (mCurrentLineId != mLineId) {//判断是否同一条路线
CallerLogger.INSTANCE.d(M_SWEEPER + TAG,"onAutopilotRotting: mCurrentLineId"+mCurrentLineId+"mLineId"+mLineId);
mLineId = mCurrentLineId;
points.addAll(coordinateConverterWgsToGcjList(mContext, routeList.getWayPointsList()));
if (mSweeperTaskCallback != null) {
@@ -305,6 +306,11 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
if (mSweeperTaskCallback != null) {
mSweeperTaskCallback.setRouteList(points);
}
//防止重新绘制轨迹时,覆盖掉原有的贴边
if (mSweeperTaskCallback != null) {
mSweeperTaskCallback.setWeltDataToMap((ArrayList<WeltDataBean>) MyDataBase.getInstance().getWeltDataDao().loadAllWeltDataInfo(),
true, "0cm");
}
}
}
@@ -418,7 +424,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
return;
}
mWeltDataCurrentTimeMillis = current;
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onSweeperFutianTaskIndexData" + printMessage(roboSweeperTaskIndex));
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "mSubTaskType"+mSubTaskType+"+ onSweeperFutianTaskIndexData" + printMessage(roboSweeperTaskIndex));
handleWeltData(roboSweeperTaskIndex);
}

View File

@@ -57,90 +57,90 @@ object SweeperCloudTaskUtils {
subBuilder0.taskStatus = SweeperCommon.TaskStatus.TO_START
val startLocation0 = Location.newBuilder()
startLocation0.siteName = "自动驾驶子任务起点0"
startLocation0.wgsLongitude = 121.6421189511
startLocation0.wgsLatitude = 37.4767125311
startLocation0.longitude = 121.64693997741931
startLocation0.latitude = 37.47740504453125
startLocation0.wgsLongitude =112.56970262448544
startLocation0.wgsLatitude = 26.817567832504274
startLocation0.longitude = 112.57493487730413
startLocation0.latitude = 26.81397095451884
subBuilder0.startLocation = startLocation0.build()
val endLocation0 = Location.newBuilder()
endLocation0.siteName = "自动驾驶子任务终点0"
endLocation0.wgsLongitude = 121.6392313
endLocation0.wgsLatitude = 37.4726471
endLocation0.longitude = 121.64404710861349
endLocation0.latitude = 37.47333410433059
endLocation0.wgsLongitude = 112.57723562874442
endLocation0.wgsLatitude = 26.819769725304003
endLocation0.longitude = 112.5824598556873
endLocation0.latitude = 26.81616501438377
subBuilder0.endLocation = endLocation0.build()
subBuilder0.lineId = 123
subBuilder0.lineName = "测试路线0"
builder.addSubList(subBuilder0.build())
//第二个子任务
val subBuilder1 = SubTaskInfo.newBuilder()
subBuilder1.subTaskId = "2"
subBuilder1.subTaskName = "佛兴禅寺-海水浴场(前岛贴左)"
subBuilder1.taskModel = TaskModel.AUTO
subBuilder1.taskStatus = SweeperCommon.TaskStatus.TO_START
val startLocation1 = Location.newBuilder()
startLocation1.siteName = "自动驾驶子任务起点1"
startLocation1.wgsLongitude = 121.6421189511
startLocation1.wgsLatitude = 37.47264711
startLocation1.longitude = 121.6469395478903
startLocation1.latitude = 37.47333856025812
subBuilder1.startLocation = startLocation1.build()
val endLocation1 = Location.newBuilder()
endLocation1.siteName = "自动驾驶子任务终点1"
endLocation1.wgsLongitude = 121.4261245286646
endLocation1.wgsLatitude = 37.52885874483938
endLocation1.longitude = 121.43138115208806
endLocation1.latitude = 37.52987767688798
subBuilder1.endLocation = endLocation1.build()
subBuilder1.lineId = 124
subBuilder1.lineName = "测试路线1"
builder.addSubList(subBuilder1.build())
//第三个子任务
val subBuilder2 = SubTaskInfo.newBuilder()
subBuilder2.subTaskId = "3"
subBuilder2.subTaskName = "海水浴场-佛兴禅寺(前岛贴左)"
subBuilder2.taskModel = TaskModel.MANUAL
subBuilder2.taskStatus = SweeperCommon.TaskStatus.TO_START
val startLocation2 = Location.newBuilder()
startLocation2.siteName = "人工驾驶子任务起点2"
startLocation2.wgsLongitude = 121.31344761929978
startLocation2.wgsLatitude = 37.53205755535642
startLocation2.longitude = 121.3185679517558
startLocation2.latitude = 37.5329694887952
subBuilder2.startLocation = startLocation2.build()
val endLocation2 = Location.newBuilder()
endLocation2.siteName = "人工驾驶子任务终点2"
endLocation2.wgsLongitude = 121.4551205070834
endLocation2.wgsLatitude = 37.47936696980237
endLocation2.longitude = 121.46030960742117
endLocation2.latitude = 37.48032689641474
subBuilder2.endLocation = endLocation2.build()
subBuilder2.lineId = 125
subBuilder2.lineName = "测试路线2"
builder.addSubList(subBuilder2.build())
//第四个子任务
val subBuilder3 = SubTaskInfo.newBuilder()
subBuilder3.subTaskId = "4"
subBuilder3.subTaskName = "海水浴场-佛兴禅寺(前岛贴左第四个任务)"
subBuilder3.taskModel = TaskModel.MANUAL
subBuilder3.taskStatus = SweeperCommon.TaskStatus.TO_START
val startLocation3 = Location.newBuilder()
startLocation3.siteName = "人工驾驶子任务起点3"
startLocation3.wgsLongitude = 121.31344761929978
startLocation3.wgsLatitude = 37.53205755535642
startLocation3.longitude = 121.3185679517558
startLocation3.latitude = 37.5329694887952
subBuilder3.startLocation = startLocation3.build()
val endLocation3 = Location.newBuilder()
endLocation3.siteName = "人工驾驶子任务终点3"
endLocation3.wgsLongitude = 121.4551205070834
endLocation3.wgsLatitude = 37.47936696980237
endLocation3.longitude = 121.46030960742117
endLocation3.latitude = 37.48032689641474
subBuilder3.endLocation = endLocation3.build()
subBuilder3.lineId = 126
subBuilder3.lineName = "测试路线3"
builder.addSubList(subBuilder3.build())
// val subBuilder1 = SubTaskInfo.newBuilder()
// subBuilder1.subTaskId = "2"
// subBuilder1.subTaskName = "佛兴禅寺-海水浴场(前岛贴左)"
// subBuilder1.taskModel = TaskModel.AUTO
// subBuilder1.taskStatus = SweeperCommon.TaskStatus.TO_START
// val startLocation1 = Location.newBuilder()
// startLocation1.siteName = "自动驾驶子任务起点1"
// startLocation1.wgsLongitude = 112.57723562874442
// startLocation1.wgsLatitude = 26.819769725304003
// startLocation1.longitude = 112.5824598556873
// startLocation1.latitude = 26.81616501438377
// subBuilder1.startLocation = startLocation1.build()
// val endLocation1 = Location.newBuilder()
// endLocation1.siteName = "自动驾驶子任务终点1"
// endLocation1.wgsLongitude = 112.56970262448544
// endLocation1.wgsLatitude = 26.817567832504274
// endLocation1.longitude = 112.57493487730413
// endLocation1.latitude = 26.81397095451884
// subBuilder1.endLocation = endLocation1.build()
// subBuilder1.lineId = 124
// subBuilder1.lineName = "测试路线1"
// builder.addSubList(subBuilder1.build())
// //第三个子任务
// val subBuilder2 = SubTaskInfo.newBuilder()
// subBuilder2.subTaskId = "3"
// subBuilder2.subTaskName = "海水浴场-佛兴禅寺(前岛贴左)"
// subBuilder2.taskModel = TaskModel.MANUAL
// subBuilder2.taskStatus = SweeperCommon.TaskStatus.TO_START
// val startLocation2 = Location.newBuilder()
// startLocation2.siteName = "人工驾驶子任务起点2"
// startLocation2.wgsLongitude = 121.31344761929978
// startLocation2.wgsLatitude = 37.53205755535642
// startLocation2.longitude = 121.3185679517558
// startLocation2.latitude = 37.5329694887952
// subBuilder2.startLocation = startLocation2.build()
// val endLocation2 = Location.newBuilder()
// endLocation2.siteName = "人工驾驶子任务终点2"
// endLocation2.wgsLongitude = 121.4551205070834
// endLocation2.wgsLatitude = 37.47936696980237
// endLocation2.longitude = 121.46030960742117
// endLocation2.latitude = 37.48032689641474
// subBuilder2.endLocation = endLocation2.build()
// subBuilder2.lineId = 125
// subBuilder2.lineName = "测试路线2"
// builder.addSubList(subBuilder2.build())
// //第四个子任务
// val subBuilder3 = SubTaskInfo.newBuilder()
// subBuilder3.subTaskId = "4"
// subBuilder3.subTaskName = "海水浴场-佛兴禅寺(前岛贴左第四个任务)"
// subBuilder3.taskModel = TaskModel.MANUAL
// subBuilder3.taskStatus = SweeperCommon.TaskStatus.TO_START
// val startLocation3 = Location.newBuilder()
// startLocation3.siteName = "人工驾驶子任务起点3"
// startLocation3.wgsLongitude = 121.31344761929978
// startLocation3.wgsLatitude = 37.53205755535642
// startLocation3.longitude = 121.3185679517558
// startLocation3.latitude = 37.5329694887952
// subBuilder3.startLocation = startLocation3.build()
// val endLocation3 = Location.newBuilder()
// endLocation3.siteName = "人工驾驶子任务终点3"
// endLocation3.wgsLongitude = 121.4551205070834
// endLocation3.wgsLatitude = 37.47936696980237
// endLocation3.longitude = 121.46030960742117
// endLocation3.latitude = 37.48032689641474
// subBuilder3.endLocation = endLocation3.build()
// subBuilder3.lineId = 126
// subBuilder3.lineName = "测试路线3"
// builder.addSubList(subBuilder3.build())
SweeperTaskModel.getInstance().onSweeperFutianCloudTask(
messageType,
"${System.currentTimeMillis()}",

View File

@@ -58,7 +58,7 @@ class SweeperTrafficLightView @JvmOverloads constructor(
override fun showTrafficLight(checkLightId: TrafficLightEnum, lightSource: DataSourceType) {
mCurrentLightId = checkLightId
updateTrafficLightIcon(checkLightId)
CallerLogger.d(SceneConstant.M_SWEEPER + TAG,"灯态类型:"+checkLightId.name +"灯态来源:"+DataSourceType.getName(lightSource))
CallerLogger.d(SceneConstant.M_SWEEPER + TAG,"灯态类型:"+checkLightId.name +" 灯态来源:"+DataSourceType.getName(lightSource))
}
/**

View File

@@ -2,7 +2,8 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<com.amap.api.maps.TextureMapView
android:id="@+id/sweeperTextureMapView"
android:layout_width="match_parent"
@@ -32,7 +33,7 @@
android:id="@+id/taskProgressTv"
android:layout_width="0dp"
android:layout_height="@dimen/dp_60"
android:text="进度:60%"
tools:text="进度:60%"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:background="#3f69d9"
@@ -42,15 +43,15 @@
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:textSize="@dimen/dp_34"
app:layout_constraintWidth_percent="0.5"
app:layout_constraintWidth_percent="0.3"
android:gravity="center"
android:visibility="gone"
/>
<com.mogo.och.sweepercloud.view.FontAdaptionTextView
<TextView
android:id="@+id/taskWeltDistanceTv"
android:layout_width="0dp"
android:layout_height="@dimen/dp_60"
android:text="贴边:--cm"
tools:text="贴边:--cm"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:background="#3d98c7"
@@ -62,7 +63,7 @@
android:paddingRight="6dp"
android:textSize="@dimen/dp_34"
android:gravity="center"
app:layout_constraintWidth_percent="0.5"
app:layout_constraintWidth_percent="0.7"
android:visibility="gone"/>
<com.mogo.och.sweepercloud.view.LegendItemView
android:id="@+id/sweeperLegend1"