Merge branch 'dev_robosweeper-d_231016_6.1.0_combine_business_model_new' into 'dev_sweeper-d_231101_6.2.0'
Dev robosweeper d 231016 6.1.0 combine business model new See merge request SCA/L4HA/AndroidApp/MoGoEagleEye!830
@@ -48,6 +48,7 @@ dependencies {
|
||||
implementation rootProject.ext.dependencies.kotlinstdlib
|
||||
implementation rootProject.ext.dependencies.androidxappcompat
|
||||
implementation rootProject.ext.dependencies.arouter
|
||||
testImplementation 'junit:junit:4.12'
|
||||
annotationProcessor rootProject.ext.dependencies.aroutercompiler
|
||||
implementation rootProject.ext.dependencies.androidxconstraintlayout
|
||||
implementation rootProject.ext.dependencies.amapnavi3dmap
|
||||
@@ -58,6 +59,7 @@ dependencies {
|
||||
implementation rootProject.ext.dependencies.androidxcardview
|
||||
implementation rootProject.ext.dependencies.androidxroomruntime
|
||||
annotationProcessor rootProject.ext.dependencies.androidxroomcompiler
|
||||
implementation rootProject.ext.dependencies.localbroadcastmanager
|
||||
|
||||
implementation project(":OCH:mogo-och-common-module")
|
||||
compileOnly project(":libraries:mogo-map")
|
||||
@@ -2,11 +2,11 @@
|
||||
"formatVersion": 1,
|
||||
"database": {
|
||||
"version": 1,
|
||||
"identityHash": "0897ef4b7b6a43fccf8bcf4b2144dafa",
|
||||
"identityHash": "48873cc5d9f967e9df0245dc045cf91a",
|
||||
"entities": [
|
||||
{
|
||||
"tableName": "welt_data_table",
|
||||
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `subTaskId` INTEGER NOT NULL, `locLon` REAL NOT NULL, `locLat` REAL NOT NULL, `weltDistance` REAL NOT NULL, `cleanMode` INTEGER NOT NULL, `cleanDirection` INTEGER NOT NULL, `cleanIntensity` INTEGER NOT NULL)",
|
||||
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `subTaskId` TEXT, `locLon` REAL NOT NULL, `locLat` REAL NOT NULL, `weltDistance` REAL NOT NULL, `cleanMode` INTEGER NOT NULL, `cleanDirection` INTEGER NOT NULL, `cleanIntensity` INTEGER NOT NULL)",
|
||||
"fields": [
|
||||
{
|
||||
"fieldPath": "id",
|
||||
@@ -17,8 +17,8 @@
|
||||
{
|
||||
"fieldPath": "subTaskId",
|
||||
"columnName": "subTaskId",
|
||||
"affinity": "INTEGER",
|
||||
"notNull": true
|
||||
"affinity": "TEXT",
|
||||
"notNull": false
|
||||
},
|
||||
{
|
||||
"fieldPath": "locLon",
|
||||
@@ -80,7 +80,7 @@
|
||||
"views": [],
|
||||
"setupQueries": [
|
||||
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
|
||||
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '0897ef4b7b6a43fccf8bcf4b2144dafa')"
|
||||
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '48873cc5d9f967e9df0245dc045cf91a')"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
<application>
|
||||
<!--这里是为了测试增加的广播-->
|
||||
<receiver android:name=".receiver.TestSweeperBroadcastReceiver">
|
||||
<receiver android:name=".common.receiver.TestSweeperBroadcastReceiver">
|
||||
<intent-filter>
|
||||
<action android:name="com.bus.test_control" />
|
||||
|
||||
@@ -0,0 +1,187 @@
|
||||
package com.mogo.och.sweeper;
|
||||
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_SWEEPER;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
|
||||
import com.mogo.eagle.core.function.api.vehicle.IMoGoSweeperModeListener;
|
||||
import com.mogo.eagle.core.function.call.vehicle.CallerSweeperModeListenerManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.mogo.vehicle.SweeperVehicleConfigUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.AppUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
import com.mogo.och.common.module.utils.ToastUtilsOch;
|
||||
import com.mogo.och.sweeper.cloud.fragment.SweeperCloudFragment;
|
||||
import com.mogo.och.sweeper.common.constant.SweeperConst;
|
||||
import com.mogo.och.sweeper.common.database.MyDataBase;
|
||||
import com.mogo.och.sweeper.common.util.SweeperAnalyticsManager;
|
||||
import com.mogo.och.sweeper.operate.fragment.SweeperOperateFragment;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.functions.Consumer;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
/**
|
||||
* 清扫车业务实现入口
|
||||
*
|
||||
* @author tongchenfei
|
||||
*/
|
||||
@Route(path = SweeperConst.PATH)
|
||||
public class SweeperProvider implements IMogoOCH, IMoGoSweeperModeListener {
|
||||
|
||||
private static final String TAG = "SweeperProvider";
|
||||
|
||||
private SweeperOperateFragment sweeperOperateFragment;
|
||||
private SweeperCloudFragment sweeperCloudFragment;
|
||||
private int containerId;
|
||||
private FragmentActivity activity;
|
||||
|
||||
@Override
|
||||
public void init(Context context) {
|
||||
}
|
||||
|
||||
private void showOperateFragment() {
|
||||
FragmentManager supportFragmentManager = activity.getSupportFragmentManager();
|
||||
if (sweeperOperateFragment == null) {
|
||||
CallerLogger.d(TAG, "准备add fragment======");
|
||||
Fragment fragmentByTag = supportFragmentManager.findFragmentByTag(sweeperOperateFragment.TAG);
|
||||
if (fragmentByTag instanceof SweeperOperateFragment) {
|
||||
sweeperOperateFragment = (SweeperOperateFragment) fragmentByTag;
|
||||
} else {
|
||||
sweeperOperateFragment = new SweeperOperateFragment();
|
||||
}
|
||||
if (!sweeperOperateFragment.isAdded()) {
|
||||
supportFragmentManager.beginTransaction().add(containerId, sweeperOperateFragment, sweeperOperateFragment.TAG).commitAllowingStateLoss();
|
||||
}
|
||||
return;
|
||||
}
|
||||
CallerLogger.d(TAG, "准备show fragment");
|
||||
supportFragmentManager.beginTransaction().show(sweeperOperateFragment).commitAllowingStateLoss();
|
||||
}
|
||||
|
||||
private void showCloudFragment() {
|
||||
FragmentManager supportFragmentManager = activity.getSupportFragmentManager();
|
||||
if (sweeperCloudFragment == null) {
|
||||
CallerLogger.d(TAG, "准备add fragment======");
|
||||
Fragment fragmentByTag = supportFragmentManager.findFragmentByTag(sweeperCloudFragment.TAG);
|
||||
if (fragmentByTag instanceof SweeperCloudFragment) {
|
||||
sweeperCloudFragment = (SweeperCloudFragment) fragmentByTag;
|
||||
} else {
|
||||
sweeperCloudFragment = new SweeperCloudFragment();
|
||||
}
|
||||
if (!sweeperCloudFragment.isAdded()) {
|
||||
supportFragmentManager.beginTransaction().add(containerId, sweeperCloudFragment, sweeperCloudFragment.TAG).commitAllowingStateLoss();
|
||||
}
|
||||
return;
|
||||
}
|
||||
CallerLogger.d(TAG, "准备show fragment");
|
||||
supportFragmentManager.beginTransaction().show(sweeperCloudFragment).commitAllowingStateLoss();
|
||||
}
|
||||
|
||||
private void hideFragment() {
|
||||
if (sweeperOperateFragment != null) {
|
||||
CallerLogger.d(TAG, "准备hide operate fragment");
|
||||
activity.getSupportFragmentManager().beginTransaction().hide(sweeperOperateFragment).commitAllowingStateLoss();
|
||||
} else if (sweeperCloudFragment != null) {
|
||||
CallerLogger.d(TAG, "准备hide cloud fragment");
|
||||
activity.getSupportFragmentManager().beginTransaction().hide(sweeperCloudFragment).commitAllowingStateLoss();
|
||||
}
|
||||
CallerSweeperModeListenerManager.INSTANCE.removeListener(TAG);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createCoverage(FragmentActivity activity, int containerId) {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getFunctionName() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Fragment createCoverage(@Nullable FragmentActivity fragmentActivity, @Nullable Integer integer) {
|
||||
this.containerId = integer;
|
||||
this.activity = fragmentActivity;
|
||||
|
||||
// 第一优先级:SP中缓存的当前模式(用户切换后会在SP中写入当前模式,切换完后清除,因为现在产品确认还不需要每次启动时首先使用用户上次选择的模式,目前优先还是使用gradle中默认配置的模式打开)
|
||||
// 第二优先级:gradle中默认配置的当前模式(用户不进行切换时SP中没有配置,默认使用的gradle中默认当前模式)
|
||||
CallerLogger.i(M_SWEEPER + TAG, "清扫车启动,当前业务模式:isSPCurrentSweeperOperateMode="
|
||||
+ SweeperVehicleConfigUtils.isSPCurrentSweeperOperateMode()
|
||||
+ ", isSPCurrentSweeperCloudMode=" + SweeperVehicleConfigUtils.isSPCurrentSweeperCloudMode());
|
||||
if (SweeperVehicleConfigUtils.isSPCurrentSweeperOperateMode()) {
|
||||
FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_OPERATE;
|
||||
showOperateFragment();
|
||||
ToastUtils.showLong("当前清扫业务模式:运营");
|
||||
} else if (SweeperVehicleConfigUtils.isSPCurrentSweeperCloudMode()) {
|
||||
FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_CLOUD;
|
||||
showCloudFragment();
|
||||
ToastUtils.showLong("当前清扫业务模式:云控");
|
||||
} else if (SweeperVehicleConfigUtils.isDefaultSweeperOperateMode(FunctionBuildConfig.sweeperDefaultMode)) {
|
||||
FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_OPERATE;
|
||||
showOperateFragment();
|
||||
ToastUtils.showLong("当前清扫业务模式:运营");
|
||||
} else if (SweeperVehicleConfigUtils.isDefaultSweeperCloudMode(FunctionBuildConfig.sweeperDefaultMode)) {
|
||||
FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_CLOUD;
|
||||
showCloudFragment();
|
||||
ToastUtils.showLong("当前清扫业务模式:云控");
|
||||
} else {
|
||||
// 默认云控模式
|
||||
FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_CLOUD;
|
||||
showCloudFragment();
|
||||
ToastUtils.showLong("当前清扫业务模式:云控");
|
||||
}
|
||||
|
||||
CallerSweeperModeListenerManager.INSTANCE.addListener(TAG, this);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
//若不调用finish, 设置中打开关闭UITouch,会造成och fragment 重叠
|
||||
if (activity == null) return;
|
||||
activity.finish();
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
@Override
|
||||
public void onSweeperCurrentModeChanged(@NonNull String currentMode) {
|
||||
// 日志、埋点
|
||||
CallerLogger.i(M_SWEEPER + TAG, "切换清扫车业务模式,当前切换的模式:" + currentMode);
|
||||
SweeperAnalyticsManager.getInstance().trackSweeperModeChangeEvent(currentMode);
|
||||
|
||||
Observable.just(currentMode)
|
||||
.observeOn(Schedulers.io())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.subscribe(new Consumer<String>() {
|
||||
@Override
|
||||
public void accept(String s) throws Exception {
|
||||
// 写入SP当前模式
|
||||
SweeperVehicleConfigUtils.setSPCurrentSweeperMode(currentMode);
|
||||
// 清除本地业务缓存数据
|
||||
MyDataBase.getInstance().getWeltDataDao().deleteAllWeltData();
|
||||
// 等清除完数据库数据后,重启App
|
||||
UiThreadHandler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
AppUtils.relaunchApp(true);
|
||||
}
|
||||
}, 1000L);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,13 @@
|
||||
package com.mogo.och.sweepercloud.callback
|
||||
package com.mogo.och.sweeper.cloud.callback
|
||||
|
||||
import chassis.ChassisStatesOuterClass
|
||||
import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean
|
||||
import com.mogo.och.sweepercloud.database.bean.WeltDataBean
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable.IsBootableResp
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon.Code
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.cloud.s_r.SweeperTaskCloudSuspendResume.ActionType
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.cloud.s_r.SweeperTaskCloudSuspendResume.BigTaskActionPush
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop.StopTaskType
|
||||
|
||||
/**
|
||||
@@ -62,7 +58,7 @@ interface ISweeperCloudTaskCallback {
|
||||
/**
|
||||
* 设置轨迹坐标点集合
|
||||
*/
|
||||
fun setRouteList(routeList: java.util.ArrayList<SweeperRoutePlanningUpdateReqBean.Result>)
|
||||
fun setRouteList(routeList: java.util.ArrayList<com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean.Result>)
|
||||
/**
|
||||
* 贴边数据回传
|
||||
*/
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.callback;
|
||||
package com.mogo.och.sweeper.cloud.callback;
|
||||
|
||||
import com.mogo.eagle.core.data.map.MogoLocation;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.callback
|
||||
package com.mogo.och.sweeper.cloud.callback
|
||||
|
||||
interface SweeperCloudDialogClickListener {
|
||||
fun onConfirm()
|
||||
@@ -1,7 +1,8 @@
|
||||
package com.mogo.och.sweepercloud.fragment;
|
||||
package com.mogo.och.sweeper.cloud.fragment;
|
||||
|
||||
import static com.mogo.map.MogoMap.DEFAULT;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
@@ -13,16 +14,13 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.constraintlayout.widget.Group;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
|
||||
import com.amap.api.maps.model.LatLng;
|
||||
import com.google.protobuf.TextFormat;
|
||||
import com.mogo.commons.AbsMogoApplication;
|
||||
import com.mogo.commons.mvp.IView;
|
||||
import com.mogo.commons.mvp.MvpFragment;
|
||||
import com.mogo.commons.mvp.Presenter;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters;
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager;
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
|
||||
@@ -33,31 +31,26 @@ import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView;
|
||||
import com.mogo.eagle.core.function.view.MapBizView;
|
||||
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener;
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
import com.mogo.map.listener.IMogoMapListener;
|
||||
import com.mogo.map.listener.MogoMapListenerHandler;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.map.uicontroller.VisualAngleMode;
|
||||
import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager;
|
||||
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil;
|
||||
import com.mogo.och.sweepercloud.R;
|
||||
import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean;
|
||||
import com.mogo.och.sweepercloud.callback.ISweeperTaskDataToFragmentCallback;
|
||||
import com.mogo.och.sweepercloud.callback.IWeltMapSwitchToSmallCallback;
|
||||
import com.mogo.och.sweepercloud.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweepercloud.util.AutopilotModeConfigManager;
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils;
|
||||
import com.mogo.och.sweepercloud.view.SweeperTrafficDataView;
|
||||
import com.mogo.och.sweepercloud.view.WeltSmallMapView;
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask;
|
||||
import com.mogo.och.sweeper.R;
|
||||
import com.mogo.och.sweeper.cloud.view.SweeperCloudTrafficDataView;
|
||||
import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean;
|
||||
import com.mogo.och.sweeper.common.callback.ISweeperTaskDataToFragmentCallback;
|
||||
import com.mogo.och.sweeper.common.callback.IWeltMapSwitchToSmallCallback;
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweeper.common.fragment.WeltMapOverViewFragment;
|
||||
import com.mogo.och.sweeper.common.view.DebugView;
|
||||
import com.mogo.och.sweeper.common.view.WeltSmallMapView;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
|
||||
/**
|
||||
* 网约车基础Fragment,主要负责布局通用界面,处理站点面板和通话面板互斥情况
|
||||
* <p>
|
||||
@@ -65,7 +58,7 @@ import mogo.telematics.pad.MessagePad;
|
||||
*
|
||||
* @author tongchenfei
|
||||
*/
|
||||
public abstract class BaseSweeperTabFragment<V extends IView, P extends Presenter<V>> extends MvpFragment<V, P> implements IMogoMapListener,
|
||||
public abstract class BaseSweeperCloudTabFragment<V extends IView, P extends Presenter<V>> extends MvpFragment<V, P> implements IMogoMapListener,
|
||||
IWeltMapSwitchToSmallCallback, View.OnTouchListener {
|
||||
|
||||
private static final String TAG = "BaseSweeperTabFragment";
|
||||
@@ -82,7 +75,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
private MapBizView mapBizView;
|
||||
private Group groupTestPanel;
|
||||
//清扫车车辆基本信息 速度 档位 转向灯 红绿灯等
|
||||
private SweeperTrafficDataView mTrafficDataView;
|
||||
private SweeperCloudTrafficDataView mTrafficDataView;
|
||||
//作业任务贴边数据展示图
|
||||
private WeltSmallMapView mMapWeltView;
|
||||
//任务作业全览图
|
||||
@@ -101,7 +94,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.sweeper_base_fragment;
|
||||
return R.layout.sweeper_cloud_base_fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -127,105 +120,22 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
setMessageBox();
|
||||
//设置左下角四个按钮监听事件
|
||||
setBottomBtnListener();
|
||||
// 模拟 下发启动自驾命令
|
||||
findViewById(R.id.btnStartAutopilot).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()) {
|
||||
ToastUtils.showLong(OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason() + ", 请稍候重试");
|
||||
return;
|
||||
}
|
||||
new AutopilotModeConfigManager(new AutopilotModeConfigManager.OnReadAutopilotModeConfigListener() {
|
||||
@Override
|
||||
public void onReadFailed(String err) {
|
||||
ThreadUtils.runOnUiThread(() -> {
|
||||
ToastUtils.showLong("读取失败=" + err);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onParseFailed(String err) {
|
||||
ToastUtils.showLong("解析失败=" + err);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onParse(MessagePad.SetAutopilotModeReq bean) {
|
||||
ToastUtils.showLong("下发命令\n" + TextFormat.printer().escapingNonAscii(false).printToString(bean));
|
||||
AutopilotControlParameters parameters = new AutopilotControlParameters();
|
||||
MessagePad.RouteInfo routeInfo = bean.getRouteInfo();
|
||||
if (routeInfo.getRouteID() > 0) {
|
||||
parameters.routeID = routeInfo.getRouteID();
|
||||
}
|
||||
parameters.routeName = routeInfo.getRouteName();
|
||||
parameters.startName = routeInfo.getStartName();//拼音
|
||||
parameters.endName = routeInfo.getEndName();//拼音
|
||||
parameters.startLatLon = new AutopilotControlParameters
|
||||
.AutoPilotLonLat(routeInfo.getStartLocation().getLatitude(), routeInfo.getStartLocation().getLongitude());
|
||||
parameters.endLatLon = new AutopilotControlParameters
|
||||
.AutoPilotLonLat(routeInfo.getEndLocation().getLatitude(), routeInfo.getEndLocation().getLongitude());
|
||||
parameters.vehicleType = 10;
|
||||
MessagePad.Line line = routeInfo.getLine();
|
||||
parameters.autoPilotLine = new AutopilotControlParameters.AutoPilotLine(
|
||||
line.getLineId(), line.getLineName(),
|
||||
line.getTrajUrl(), line.getTrajMd5(),
|
||||
line.getStopUrl(), line.getStopMd5(),
|
||||
line.getTimestamp(), line.getVehicleModel(),
|
||||
line.getTrajUrlDpqp(), line.getTrajMd5Dpqp(),
|
||||
line.getStopUrlDpqp(), line.getStopMd5Dpqp(),
|
||||
line.getTimestampDpqp());
|
||||
CallerAutoPilotControlManager.INSTANCE.startAutoPilot(parameters);
|
||||
}
|
||||
}).read();
|
||||
}
|
||||
});
|
||||
// 模拟 查询当前任务
|
||||
findViewById(R.id.btnQueryCurrentTask).setOnClickListener(view ->
|
||||
SweeperCloudTaskUtils.mockQueryCurrentTaskInfo()
|
||||
//打开调试面板
|
||||
findViewById(R.id.btnOpenDebugView).setOnClickListener(view -> {
|
||||
Intent intent = new Intent();
|
||||
intent.setAction(DebugView.BROADCAST_ACTION);
|
||||
intent.putExtra(DebugView.BROADCAST_DATA_SHOW, true);
|
||||
LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent);
|
||||
}
|
||||
);
|
||||
// 模拟 云端发送任务
|
||||
findViewById(R.id.btnSendTask).setOnClickListener(view -> {
|
||||
SweeperCloudTaskUtils.mockSendCloudTaskInfo(AiCloudTask.MessageType.CloudPushTask);
|
||||
UiThreadHandler.postDelayed(() -> {
|
||||
debugEndSubTask();
|
||||
}, 5000);
|
||||
|
||||
}
|
||||
|
||||
);
|
||||
// 模拟 云端发送子任务确认
|
||||
findViewById(R.id.btnSendSubTaskConfirm).setOnClickListener(view ->
|
||||
SweeperCloudTaskUtils.mockSendCloudSubTaskConfirm()
|
||||
);
|
||||
|
||||
// 模拟 云端请求结束大任务
|
||||
findViewById(R.id.btnSendEndTask).setOnClickListener(view ->
|
||||
SweeperCloudTaskUtils.mockSendCloudBigTaskEnd()
|
||||
);
|
||||
// 模拟 云端发送子任务状态
|
||||
findViewById(R.id.btnSendSubtaskStatus).setOnClickListener(view ->
|
||||
SweeperCloudTaskUtils.mockSendCloudUpdateSubTaskStatus()
|
||||
);
|
||||
// 模拟 云端发送大任务状态
|
||||
findViewById(R.id.btnSendTaskStatus).setOnClickListener(view ->
|
||||
SweeperCloudTaskUtils.mockSendCloudBigTaskStatus()
|
||||
);
|
||||
// 模拟 添加高精地图Marker
|
||||
findViewById(R.id.btnAddHDMarker).setOnClickListener(view -> {
|
||||
// 坐标地址:湖南省衡阳市雁峰区金龙坪街道科学城大道衡山科学城停车场
|
||||
SweeperCloudTaskUtils.mockAddHdMarker("marker_sweeper_subtask_123_start",
|
||||
112.57742887355035,
|
||||
26.82068193910221,
|
||||
true);
|
||||
// 坐标地址:湖南省衡阳市雁峰区岳屏镇雁鸣路
|
||||
SweeperCloudTaskUtils.mockAddHdMarker("marker_sweeper_subtask_123_end",
|
||||
112.56666738544979,
|
||||
26.822879976829867,
|
||||
false);
|
||||
}
|
||||
);
|
||||
// 模拟 移除高精地图Marker
|
||||
findViewById(R.id.btnRemoveHDMarker).setOnClickListener(view ->
|
||||
SweeperCloudTaskUtils.mockRemoveHDMarker()
|
||||
//关闭调试面板
|
||||
findViewById(R.id.btnCloseDebugView).setOnClickListener(view -> {
|
||||
Intent intent = new Intent();
|
||||
intent.setAction(DebugView.BROADCAST_ACTION);
|
||||
intent.putExtra(DebugView.BROADCAST_DATA_SHOW, false);
|
||||
LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent);
|
||||
}
|
||||
);
|
||||
mTrafficDataView.getSpeedImage().setOnLongClickListener(new View.OnLongClickListener() {
|
||||
@Override
|
||||
@@ -368,7 +278,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public SweeperTrafficDataView getTrafficDataView() {
|
||||
public SweeperCloudTrafficDataView getTrafficDataView() {
|
||||
return mTrafficDataView;
|
||||
}
|
||||
|
||||
@@ -464,8 +374,8 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
mWeltDataBeanList,
|
||||
mSubTaskCoordinates,
|
||||
mRouteList,
|
||||
mProgress,
|
||||
(SweeperFragment) this);
|
||||
mProgress);
|
||||
this.setTaskDataToFragmentCallback(mWeltMapOverViewFragment);
|
||||
}
|
||||
if (mWeltMapOverViewFragment.isHidden()) {
|
||||
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.fragment
|
||||
package com.mogo.och.sweeper.cloud.fragment
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
@@ -16,24 +16,23 @@ import com.mogo.map.overlay.core.Level
|
||||
import com.mogo.map.overlay.point.Point
|
||||
import com.mogo.och.common.module.utils.OCHThreadPoolManager
|
||||
import com.mogo.och.common.module.voice.VoiceNotice.showNotice
|
||||
import com.mogo.och.sweepercloud.R
|
||||
import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean
|
||||
import com.mogo.och.sweepercloud.callback.SweeperCloudDialogClickListener
|
||||
import com.mogo.och.sweepercloud.constant.SweeperConst.Companion.TYPE_MARKER_SWEEPER_SUBTASK_START_END
|
||||
import com.mogo.och.sweepercloud.database.MyDataBase
|
||||
import com.mogo.och.sweepercloud.presenter.SweeperPresenter
|
||||
import com.mogo.och.sweepercloud.ui.dialog.SweeperCloudDialog
|
||||
import com.mogo.och.sweepercloud.ui.dialog.SweeperCloudLoadingDialog
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createConfirmStartSubTaskDialog
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createReceivedBigTaskInfoDialog
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createSweeperTaskEndDialog
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createSweeperTaskExceptionEndDialog
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createSweeperTaskNormalEndDialog
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createSweeperTaskResumeDialog
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createSweeperTaskSuspendDialog
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.printMessage
|
||||
import com.mogo.och.sweepercloud.view.SweeperCurrentTaskInfoView
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.cloud.presenter.SweeperCloudPresenter
|
||||
import com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog
|
||||
import com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudLoadingDialog
|
||||
import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils
|
||||
import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils.createConfirmStartSubTaskDialog
|
||||
import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils.createReceivedBigTaskInfoDialog
|
||||
import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils.createSweeperTaskEndDialog
|
||||
import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils.createSweeperTaskExceptionEndDialog
|
||||
import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils.createSweeperTaskNormalEndDialog
|
||||
import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils.createSweeperTaskResumeDialog
|
||||
import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils.createSweeperTaskSuspendDialog
|
||||
import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils.printMessage
|
||||
import com.mogo.och.sweeper.cloud.view.SweeperCloudCurrentTaskInfoView
|
||||
import com.mogo.och.sweeper.common.constant.SweeperConst.Companion.TYPE_MARKER_SWEEPER_SUBTASK_START_END
|
||||
import com.mogo.och.sweeper.common.database.MyDataBase
|
||||
import com.mogo.och.sweeper.common.view.DebugView
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
|
||||
@@ -44,18 +43,19 @@ import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.TaskModel
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.cloud.s_r.SweeperTaskCloudSuspendResume
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop
|
||||
import kotlinx.android.synthetic.main.fragment_och_sweeper.*
|
||||
import kotlinx.android.synthetic.main.sweeper_no_data_common_view.*
|
||||
import kotlinx.android.synthetic.main.fragment_och_sweeper_cloud.sweeper_cl_work_mode
|
||||
import kotlinx.android.synthetic.main.fragment_och_sweeper_cloud.sweeper_current_task_view
|
||||
import kotlinx.android.synthetic.main.sweeper_cloud_no_data_common_view.noTaskDataView
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
/**
|
||||
* 清扫车主界面
|
||||
*/
|
||||
class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresenter?>() {
|
||||
class SweeperCloudFragment : BaseSweeperCloudTabFragment<SweeperCloudFragment?, SweeperCloudPresenter?>() {
|
||||
|
||||
companion object {
|
||||
const val TAG = "SweeperFragment"
|
||||
const val TAG = "SweeperCloudFragment"
|
||||
}
|
||||
|
||||
private var mSubMutableList: MutableList<SubTaskInfo>? = null
|
||||
@@ -82,8 +82,8 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
sweeper_cl_work_mode.setTrafficDataView(trafficDataView)
|
||||
}
|
||||
|
||||
override fun createPresenter(): SweeperPresenter {
|
||||
return SweeperPresenter(this)
|
||||
override fun createPresenter(): SweeperCloudPresenter {
|
||||
return SweeperCloudPresenter(this)
|
||||
}
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
@@ -92,7 +92,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
}
|
||||
|
||||
override fun getTaskListPanelViewId(): Int {
|
||||
return R.layout.fragment_och_sweeper
|
||||
return R.layout.fragment_och_sweeper_cloud
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -313,6 +313,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
//已完成的计入任务进度,未完成的不计入
|
||||
ToastUtils.showLong("任务完成")
|
||||
showNotice("任务完成")
|
||||
DebugView.printInfoMsg("[任务状态]任务完成")
|
||||
|
||||
removeHDMapMarkerBySubTask(subTaskList[index])
|
||||
}
|
||||
@@ -376,9 +377,10 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
mDialog = sweeperCloudTaskNormalEndDialog()
|
||||
showNotice("任务已结束")
|
||||
ToastUtils.showLong("任务已结束")
|
||||
DebugView.printInfoMsg("[任务状态]任务已结束")
|
||||
} else {
|
||||
// 产品确认有弹框时不需要同步弹toast, 只需有TTS
|
||||
mDialog = createSweeperTaskEndDialog(context, object : SweeperCloudDialogClickListener {
|
||||
mDialog = createSweeperTaskEndDialog(context, object : com.mogo.och.sweeper.cloud.callback.SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
// mPresenter?.sendSweeperStopTaskResp(taskId, SweeperTaskStop.StopTaskCode.MANUAL_CONFIRM)
|
||||
// mLoadingDialog.showLoading()
|
||||
@@ -420,7 +422,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
* 大任务结束弹窗
|
||||
*/
|
||||
private fun sweeperCloudTaskNormalEndDialog(): SweeperCloudDialog? {
|
||||
return createSweeperTaskNormalEndDialog(context, object : SweeperCloudDialogClickListener {
|
||||
return createSweeperTaskNormalEndDialog(context, object : com.mogo.och.sweeper.cloud.callback.SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
// ToastUtils.showLong("任务已结束")
|
||||
// resetTaskInfoPanel()
|
||||
@@ -447,7 +449,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
private fun sweeperCloudTaskExceptionEndDialog(isCancel: Boolean): SweeperCloudDialog? {
|
||||
return createSweeperTaskExceptionEndDialog(
|
||||
context,
|
||||
object : SweeperCloudDialogClickListener {
|
||||
object : com.mogo.och.sweeper.cloud.callback.SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
// ToastUtils.showLong("任务已结束")
|
||||
// resetTaskInfoPanel()
|
||||
@@ -503,12 +505,14 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
}
|
||||
|
||||
showNotice("任务已结束")
|
||||
DebugView.printInfoMsg("[任务状态]任务已结束")
|
||||
// 大任务这里也判断移除HD Marker, 双重判断
|
||||
removeHDMapMarkerBySubTask(mCurrentRunningSubTaskInfo)
|
||||
resetTaskInfoPanel()
|
||||
} else if (bigTaskStatus == TaskStatus.SUSPENDED) {// 暂停
|
||||
showNotice("任务已暂停")
|
||||
ToastUtils.showLong("任务已暂停")
|
||||
DebugView.printInfoMsg("[任务状态]任务已暂停")
|
||||
//更新任务列表中大任务状态
|
||||
val builder = it.toBuilder()
|
||||
builder.taskStatus = TaskStatus.SUSPENDED
|
||||
@@ -519,6 +523,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
) { //恢复
|
||||
showNotice("任务已恢复")
|
||||
ToastUtils.showLong("任务已恢复")
|
||||
DebugView.printInfoMsg("[任务状态]任务已恢复")
|
||||
|
||||
//更新任务列表中大任务状态
|
||||
val builder = it.toBuilder()
|
||||
@@ -559,6 +564,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
SweeperTaskCloudSuspendResume.ActionType.SUSPENDED -> {
|
||||
mDialog = sweeperCloudTaskSuspendDialog(it.taskId)
|
||||
showNotice("云端暂停任务,注意车辆即将停车!")
|
||||
DebugView.printInfoMsg("[任务状态]云端暂停任务,注意车辆即将停车!")
|
||||
}
|
||||
|
||||
else -> {
|
||||
@@ -581,6 +587,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
}
|
||||
}
|
||||
showNotice(ttsString)
|
||||
DebugView.printInfoMsg("[任务状态]$ttsString")
|
||||
mDialog = sweeperCloudTaskResumeDialog(ttsString, it.taskId)
|
||||
}
|
||||
}
|
||||
@@ -612,9 +619,11 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
if (isBootableResp.code == SweeperCommon.Code.SUCCEED) {
|
||||
ToastUtils.showLong("上报云控成功")
|
||||
showNotice("上报云控成功")
|
||||
DebugView.printInfoMsg("[任务状态]上报云控成功")
|
||||
} else {
|
||||
ToastUtils.showLong("上报云控失败")
|
||||
showNotice("上报云控失败")
|
||||
DebugView.printErrorMsg("[任务状态]上报云控失败")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -691,11 +700,11 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
/**
|
||||
* 设置路线轨迹
|
||||
*/
|
||||
override fun setTaskRouteList(routeList: ArrayList<SweeperRoutePlanningUpdateReqBean.Result>) {
|
||||
override fun setTaskRouteList(routeList: ArrayList<com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean.Result>) {
|
||||
super.setTaskRouteList(routeList)
|
||||
}
|
||||
|
||||
private fun getCurrentTaskView(): SweeperCurrentTaskInfoView = sweeper_current_task_view
|
||||
private fun getCurrentTaskView(): SweeperCloudCurrentTaskInfoView = sweeper_current_task_view
|
||||
|
||||
fun handleSubTaskInfoDialog(taskId: String, subTaskId: String, isPop: Boolean) {
|
||||
if (mTaskInfo == null) return
|
||||
@@ -733,7 +742,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
return
|
||||
}
|
||||
mDialog =
|
||||
createConfirmStartSubTaskDialog(context, object : SweeperCloudDialogClickListener {
|
||||
createConfirmStartSubTaskDialog(context, object : com.mogo.och.sweeper.cloud.callback.SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
// //ToastUtils.showLong("确认")
|
||||
// mPresenter?.sendSweeperTaskConfirmResp(taskId, subTaskId, SweeperTaskConfirm.TaskConfirmCode.MANUAL_CONFIRM)
|
||||
@@ -775,8 +784,10 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
mDialog?.show()
|
||||
if (subTaskInfo.taskModel == TaskModel.MANUAL) {
|
||||
showNotice("请确认并执行子任务")
|
||||
DebugView.printInfoMsg("[任务状态]请确认并执行子任务")
|
||||
} else { //自动驾驶子任务,需要提醒在N档且拉起手刹,做好准备工作
|
||||
showNotice("请确认并执行子任务, 保持N档拉手刹再进入自动驾驶")
|
||||
DebugView.printInfoMsg("[任务状态]请确认并执行子任务, 保持N档拉手刹再进入自动驾驶")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -791,7 +802,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
return
|
||||
}
|
||||
mDialog =
|
||||
createReceivedBigTaskInfoDialog(context, object : SweeperCloudDialogClickListener {
|
||||
createReceivedBigTaskInfoDialog(context, object : com.mogo.och.sweeper.cloud.callback.SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
// ToastUtils.showLong("确认")
|
||||
// mPresenter?.sendSweeperStartTaskResp(it.taskId, SweeperTask.StartTaskCode.MANUAL_CONFIRM)
|
||||
@@ -832,6 +843,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
}, it)
|
||||
mDialog?.show()
|
||||
showNotice("已为您接取任务")
|
||||
DebugView.printInfoMsg("[任务状态]已为您接取任务")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -839,7 +851,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
* 大任务暂停弹框
|
||||
*/
|
||||
private fun sweeperCloudTaskSuspendDialog(taskId: String): SweeperCloudDialog? {
|
||||
return createSweeperTaskSuspendDialog(context, object : SweeperCloudDialogClickListener {
|
||||
return createSweeperTaskSuspendDialog(context, object : com.mogo.och.sweeper.cloud.callback.SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
// 发送接收到信息的ACK回执
|
||||
mPresenter?.sendSweeperSuspendResumeTaskResp(
|
||||
@@ -873,7 +885,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
contentStr: String,
|
||||
taskId: String
|
||||
): SweeperCloudDialog? {
|
||||
return createSweeperTaskResumeDialog(context, object : SweeperCloudDialogClickListener {
|
||||
return createSweeperTaskResumeDialog(context, object : com.mogo.och.sweeper.cloud.callback.SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
// 发送接收到信息的ACK回执
|
||||
mPresenter?.sendSweeperSuspendResumeTaskResp(
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.mogo.och.sweepercloud.model;
|
||||
package com.mogo.och.sweeper.cloud.model;
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_SWEEPER;
|
||||
import static com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.printMessage;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
@@ -32,13 +31,14 @@ import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager;
|
||||
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil;
|
||||
import com.mogo.och.common.module.utils.NumberFormatUtil;
|
||||
import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean;
|
||||
import com.mogo.och.sweepercloud.callback.ISweeperCloudTaskCallback;
|
||||
import com.mogo.och.sweepercloud.callback.ISweeperControllerStatusCallback;
|
||||
import com.mogo.och.sweepercloud.constant.SweeperConst;
|
||||
import com.mogo.och.sweepercloud.database.MyDataBase;
|
||||
import com.mogo.och.sweepercloud.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils;
|
||||
import com.mogo.och.sweeper.cloud.callback.ISweeperCloudTaskCallback;
|
||||
import com.mogo.och.sweeper.cloud.callback.ISweeperControllerStatusCallback;
|
||||
import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils;
|
||||
import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean;
|
||||
import com.mogo.och.sweeper.common.constant.SweeperConst;
|
||||
import com.mogo.och.sweeper.common.database.MyDataBase;
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweeper.common.view.DebugView;
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask;
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable;
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask;
|
||||
@@ -73,9 +73,9 @@ import system_master.SystemStatusInfo;
|
||||
* <p>
|
||||
* 清扫车任务管理
|
||||
*/
|
||||
public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IMoGoAutopilotStatusListener, IMoGoSweeperFutianCleanSystemListener {
|
||||
private final String TAG = SweeperTaskModel.class.getSimpleName();
|
||||
private static volatile SweeperTaskModel sInstance;
|
||||
public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListener, IMoGoAutopilotStatusListener, IMoGoSweeperFutianCleanSystemListener {
|
||||
private final String TAG = SweeperCloudTaskModel.class.getSimpleName();
|
||||
private static volatile SweeperCloudTaskModel sInstance;
|
||||
public double mLongitude = 0;
|
||||
public double mLatitude = 0;
|
||||
private Context mContext;
|
||||
@@ -112,18 +112,18 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
//用于对应messageType和reqNo绑定在一起,保证请求的reqNo和响应的reqNo一致
|
||||
private HashMap<Integer, String> msgTypeAndReqNo = new HashMap<>();
|
||||
|
||||
public static SweeperTaskModel getInstance() {
|
||||
public static SweeperCloudTaskModel getInstance() {
|
||||
if (sInstance == null) {
|
||||
synchronized (SweeperTaskModel.class) {
|
||||
synchronized (SweeperCloudTaskModel.class) {
|
||||
if (sInstance == null) {
|
||||
sInstance = new SweeperTaskModel();
|
||||
sInstance = new SweeperCloudTaskModel();
|
||||
}
|
||||
}
|
||||
}
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
private SweeperTaskModel() {
|
||||
private SweeperCloudTaskModel() {
|
||||
|
||||
}
|
||||
|
||||
@@ -197,7 +197,8 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
@Override
|
||||
public void onAutopilotRotting(MessagePad.GlobalPathResp routeList) {
|
||||
if (null != routeList && routeList.getWayPointsList() != null && routeList.getWayPointsList().size() > 0) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "onAutopilotRotting: " + printMessage(routeList));
|
||||
CallerLogger.d(M_SWEEPER + TAG, "onAutopilotRotting: " + SweeperCloudTaskUtils.printMessage(routeList));
|
||||
DebugView.Companion.printInfoMsg("[MAP全局规划回调] 回调,getWayPointsList.Size=" + routeList.getWayPointsList().size());
|
||||
|
||||
// MAP返回路线信息,在1秒内返回了2次,这里加上数据过滤
|
||||
long current = System.currentTimeMillis();
|
||||
@@ -291,6 +292,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
if (StatusDescriptor.VR_MODE == descriptor) {
|
||||
if (mControllerStatusCallback != null) {
|
||||
mControllerStatusCallback.onVRModeChanged(isTrue);
|
||||
DebugView.Companion.printInfoMsg("[VRMode变化] isVRMode=" + isTrue);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -336,7 +338,13 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
SweeperTask.TaskInfo taskInfo) {
|
||||
|
||||
CallerLogger.d(M_SWEEPER + TAG,
|
||||
"messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " onSweeperFutianCloudTask:" + (taskInfo == null ? "null" : printMessage(taskInfo)) + " mSweeperTaskCallback:" + mSweeperTaskCallback);
|
||||
"messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " onSweeperFutianCloudTask:" + (taskInfo == null ? "null" : SweeperCloudTaskUtils.printMessage(taskInfo)) + " mSweeperTaskCallback:" + mSweeperTaskCallback);
|
||||
DebugView.Companion.printInfoMsg("[云控]云端下发大任务,messageType=" + messageType.getNumber()
|
||||
+ ", sysTime=" + sysTime
|
||||
+ ", reqNo=" + reqNo
|
||||
+ ", taskInfo=("
|
||||
+ (taskInfo == null ? "null" : "taskId=" + taskInfo.getTaskId() + ", taskName=" + taskInfo.getTaskName() + ", taskStatus=" + taskInfo.getTaskStatus().name())
|
||||
+ ")");
|
||||
if (mSweeperTaskCallback != null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudTask(messageType, taskInfo);
|
||||
@@ -348,7 +356,13 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
SweeperTaskConfirm.TaskConfirm taskConfirm) {
|
||||
|
||||
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
|
||||
"onSweeperFutianCloudTaskConfirm:" + printMessage(taskConfirm));
|
||||
"onSweeperFutianCloudTaskConfirm:" + SweeperCloudTaskUtils.printMessage(taskConfirm));
|
||||
DebugView.Companion.printInfoMsg("[云控]云端下发子任务确认,messageType=" + messageType.getNumber()
|
||||
+ ", sysTime=" + sysTime
|
||||
+ ", reqNo=" + reqNo
|
||||
+ ", taskConfirm=("
|
||||
+ (taskConfirm == null ? "null" : "taskId=" + taskConfirm.getTaskId() + ", subTaskId=" + taskConfirm.getSubTaskId() + ", isPop=" + taskConfirm.getIsPop())
|
||||
+ ")");
|
||||
if (mSweeperTaskCallback != null && taskConfirm != null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudTaskConfirm(taskConfirm.getTaskId(), taskConfirm.getSubTaskId(), taskConfirm.getIsPop());
|
||||
@@ -359,7 +373,13 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
public void onSweeperFutianCloudTaskStatus(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
SweeperTaskStatus.TaskStatusPush taskStatusPush) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
|
||||
"onSweeperFutianCloudTaskStatus:" + printMessage(taskStatusPush));
|
||||
"onSweeperFutianCloudTaskStatus:" + SweeperCloudTaskUtils.printMessage(taskStatusPush));
|
||||
DebugView.Companion.printInfoMsg("[云控]云端下发子任务状态,messageType=" + messageType.getNumber()
|
||||
+ ", sysTime=" + sysTime
|
||||
+ ", reqNo=" + reqNo
|
||||
+ ", taskStatusPush=("
|
||||
+ (taskStatusPush == null ? "null" : "taskId=" + taskStatusPush.getTaskId() + ", subTaskId=" + taskStatusPush.getSubTaskId() + ", taskStatus=" + taskStatusPush.getTaskStatus().name())
|
||||
+ ")");
|
||||
if (mSweeperTaskCallback != null && taskStatusPush != null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudTaskStatus(taskStatusPush.getTaskId(), taskStatusPush.getSubTaskId(), taskStatusPush.getTaskStatus());
|
||||
@@ -370,7 +390,13 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
public void onSweeperFutianCloudTaskStop(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
SweeperTaskStop.StopTaskReq stopTaskReq) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
|
||||
"onSweeperFutianCloudTaskStop:" + printMessage(stopTaskReq));
|
||||
"onSweeperFutianCloudTaskStop:" + SweeperCloudTaskUtils.printMessage(stopTaskReq));
|
||||
DebugView.Companion.printInfoMsg("[云控]云端请求pad结束大任务,messageType=" + messageType.getNumber()
|
||||
+ ", sysTime=" + sysTime
|
||||
+ ", reqNo=" + reqNo
|
||||
+ ", stopTaskReq=("
|
||||
+ (stopTaskReq == null ? "null" : "taskId=" + stopTaskReq.getTaskId() + ", type=" + stopTaskReq.getType() + ", isPop=" + stopTaskReq.getIsPop())
|
||||
+ ")");
|
||||
if (mSweeperTaskCallback != null && stopTaskReq != null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudTaskStop(stopTaskReq.getTaskId(), stopTaskReq.getType(), stopTaskReq.getIsPop());
|
||||
@@ -381,7 +407,13 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
public void onSweeperFutianCloudTaskSuspendResume(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
SweeperTaskSuspendResume.SuspendResumeTaskResp suspendResumeTaskResp) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
|
||||
"onSweeperFutianCloudTaskSuspendResume:" + printMessage(suspendResumeTaskResp));
|
||||
"onSweeperFutianCloudTaskSuspendResume:" + SweeperCloudTaskUtils.printMessage(suspendResumeTaskResp));
|
||||
DebugView.Companion.printInfoMsg("[云控]pad请求挂起/恢复任务云端回执,messageType=" + messageType.getNumber()
|
||||
+ ", sysTime=" + sysTime
|
||||
+ ", reqNo=" + reqNo
|
||||
+ ", suspendResumeTaskResp=("
|
||||
+ (suspendResumeTaskResp == null ? "null" : "taskId=" + suspendResumeTaskResp.getTaskId() + ", subTaskId=" + suspendResumeTaskResp.getSubTaskId() + ", code=" + suspendResumeTaskResp.getCode().name())
|
||||
+ ")");
|
||||
if (mSweeperTaskCallback != null && suspendResumeTaskResp != null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudTaskSuspendResume(messageType, suspendResumeTaskResp.getTaskId(),
|
||||
@@ -393,7 +425,13 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
public void onSweeperFutianCloudBootable(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
SweeperBootable.IsBootableResp isBootableResp) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
|
||||
"onSweeperFutianCloudBootable:" + printMessage(isBootableResp));
|
||||
"onSweeperFutianCloudBootable:" + SweeperCloudTaskUtils.printMessage(isBootableResp));
|
||||
DebugView.Companion.printInfoMsg("[云控]pad请求启自驾云端回执,messageType=" + messageType.getNumber()
|
||||
+ ", sysTime=" + sysTime
|
||||
+ ", reqNo=" + reqNo
|
||||
+ ", isBootableResp=("
|
||||
+ (isBootableResp == null ? "null" : "taskId=" + isBootableResp.getTaskId() + ", subTaskId=" + isBootableResp.getSubTaskId())
|
||||
+ ")");
|
||||
if (mSweeperTaskCallback != null && isBootableResp != null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudBootable(isBootableResp.getTaskId(), isBootableResp.getSubTaskId(), isBootableResp);
|
||||
@@ -404,7 +442,13 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
public void onSweeperFutianCloudBigTaskStatus(@NonNull AiCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
SweeperBigTaskStatus.BigTaskStatusPush bigTaskStatusPush) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
|
||||
"onSweeperFutianCloudBigTaskStatus:" + printMessage(bigTaskStatusPush));
|
||||
"onSweeperFutianCloudBigTaskStatus:" + SweeperCloudTaskUtils.printMessage(bigTaskStatusPush));
|
||||
DebugView.Companion.printInfoMsg("[云控]云端下发大任务状态,messageType=" + messageType.getNumber()
|
||||
+ ", sysTime=" + sysTime
|
||||
+ ", reqNo=" + reqNo
|
||||
+ ", bigTaskStatusPush=("
|
||||
+ (bigTaskStatusPush == null ? "null" : "taskId=" + bigTaskStatusPush.getTaskId() + ", taskStatus=" + bigTaskStatusPush.getTaskStatus().name() + ", isPop=" + bigTaskStatusPush.getIsPop())
|
||||
+ ")");
|
||||
if (mSweeperTaskCallback != null && bigTaskStatusPush != null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudBigTaskStatus(bigTaskStatusPush.getTaskId(), bigTaskStatusPush.getTaskStatus(), bigTaskStatusPush.getIsPop());
|
||||
@@ -415,7 +459,13 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
public void onSweeperFutianCloudTaskCloudSuspendResume(@NonNull AiCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime,
|
||||
@Nullable SweeperTaskCloudSuspendResume.BigTaskActionPush bigTaskActionPush) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
|
||||
"onSweeperFutianCloudTaskCloudSuspendResume:" + printMessage(bigTaskActionPush));
|
||||
"onSweeperFutianCloudTaskCloudSuspendResume:" + SweeperCloudTaskUtils.printMessage(bigTaskActionPush));
|
||||
DebugView.Companion.printInfoMsg("[云控]云端下发暂停/恢复指令,messageType=" + messageType.getNumber()
|
||||
+ ", sysTime=" + sysTime
|
||||
+ ", reqNo=" + reqNo
|
||||
+ ", bigTaskActionPush=("
|
||||
+ (bigTaskActionPush == null ? "null" : "taskId=" + bigTaskActionPush.getTaskId() + ", action=" + bigTaskActionPush.getAction() + ", isPop=" + bigTaskActionPush.getIsPop())
|
||||
+ ")");
|
||||
if (mSweeperTaskCallback != null && bigTaskActionPush != null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudBigTaskSuspendResume(bigTaskActionPush.getTaskId(), bigTaskActionPush.getAction(), bigTaskActionPush.getIsPop());
|
||||
@@ -436,6 +486,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
if (mSweeperTaskCallback != null) {
|
||||
mSweeperTaskCallback.onSweeperFutianCleanSystemState(cleanSystemState);
|
||||
}
|
||||
DebugView.Companion.printInfoMsg("[域控]接收到上装系统状态并更新");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -459,6 +510,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
// CallerLogger.INSTANCE.d(M_SWEEPER + TAG,
|
||||
// "mSubTaskType:" + mSubTaskType + "+ onSweeperFutianTaskIndexData:" + printMessage(roboSweeperTaskIndex));
|
||||
// handleWeltData(roboSweeperTaskIndex);
|
||||
// DebugView.Companion.printInfoMsg("[域控]接收到贴边数据并更新");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -521,7 +573,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
SweeperTask.GetTaskReq getTaskReq = builder.build();
|
||||
|
||||
CallerLogger.d(M_SWEEPER + TAG,
|
||||
"getCurrentTask:" + printMessage(getTaskReq) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.PadSendGetTaskReq.getNumber());
|
||||
"getCurrentTask:" + SweeperCloudTaskUtils.printMessage(getTaskReq) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.PadSendGetTaskReq.getNumber());
|
||||
getAutoPilotControlManager().sendSweeperGetTaskReq(reqNo, getTaskReq);
|
||||
}
|
||||
|
||||
@@ -538,7 +590,10 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
|
||||
getAutoPilotControlManager().sendSweeperStartTaskResp(reqNo, startTaskResp);
|
||||
CallerLogger.d(M_SWEEPER + TAG,
|
||||
"sendSweeperStartTaskResp:" + printMessage(startTaskResp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTask.getNumber());
|
||||
"sendSweeperStartTaskResp:" + SweeperCloudTaskUtils.printMessage(startTaskResp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTask.getNumber());
|
||||
DebugView.Companion.printInfoMsg("[云控]pad发送接收 云端下发大任务信息 回执给云端,taskId=" + taskId
|
||||
+ ", StartTaskCode=" + code
|
||||
+ ", reqNo=" + reqNo);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -552,9 +607,13 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
builder.setCode(code);
|
||||
SweeperTaskConfirm.TaskConfirmResp taskConfirmResp = builder.build();
|
||||
String reqNo = msgTypeAndReqNo.get(AiCloudTask.MessageType.CloudPushTaskConfirm.getNumber());
|
||||
CallerLogger.d(M_SWEEPER + TAG,
|
||||
"sendSweeperTaskConfirmResp" + printMessage(taskConfirmResp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTaskConfirm.getNumber());
|
||||
getAutoPilotControlManager().sendSweeperTaskConfirmResp(reqNo, taskConfirmResp);
|
||||
CallerLogger.d(M_SWEEPER + TAG,
|
||||
"sendSweeperTaskConfirmResp" + SweeperCloudTaskUtils.printMessage(taskConfirmResp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTaskConfirm.getNumber());
|
||||
DebugView.Companion.printInfoMsg("[云控]pad发送接收 云端下发子任务pad确认 回执给云端,taskId=" + taskId
|
||||
+ ", subTaskId=" + subTaskId
|
||||
+ ", TaskConfirmCode=" + code
|
||||
+ ", reqNo=" + reqNo);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -572,8 +631,11 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
String reqNo = msgTypeAndReqNo.get(AiCloudTask.MessageType.CloudPushTaskStop.getNumber());
|
||||
|
||||
CallerLogger.d(M_SWEEPER + TAG,
|
||||
"sendSweeperStopTaskResp" + printMessage(stopTaskResp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTaskStop.getNumber());
|
||||
"sendSweeperStopTaskResp" + SweeperCloudTaskUtils.printMessage(stopTaskResp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTaskStop.getNumber());
|
||||
getAutoPilotControlManager().sendSweeperStopTaskResp(reqNo, stopTaskResp);
|
||||
DebugView.Companion.printInfoMsg("[云控]pad发送接收 云端请求pad结束大任务 回执给云端,taskId=" + taskId
|
||||
+ ", StopTaskCode=" + code
|
||||
+ ", reqNo=" + reqNo);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -593,8 +655,12 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
String reqNo = SweeperCloudTaskUtils.getRequestId();
|
||||
|
||||
CallerLogger.d(M_SWEEPER + TAG,
|
||||
"sendSweeperAutopilotBootable" + printMessage(isBootable) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.PadSendBootable.getNumber());
|
||||
"sendSweeperAutopilotBootable" + SweeperCloudTaskUtils.printMessage(isBootable) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.PadSendBootable.getNumber());
|
||||
getAutoPilotControlManager().sendSweeperAutopilotBootable(reqNo, isBootable);
|
||||
DebugView.Companion.printInfoMsg("[云控]pad发送 请求进入自动驾驶 给云端,taskId=" + taskId
|
||||
+ ", subTaskId=" + subTaskId
|
||||
+ ", lineId=" + lineId
|
||||
+ ", reqNo=" + reqNo);
|
||||
//SweeperCloudTaskUtils.mockSendCloudBootable();
|
||||
}
|
||||
|
||||
@@ -612,8 +678,11 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
String reqNo = msgTypeAndReqNo.get(AiCloudTask.MessageType.CloudPushTaskSuspendResume.getNumber());
|
||||
|
||||
CallerLogger.d(M_SWEEPER + TAG,
|
||||
"sendSweeperSuspendResumeTaskResp" + printMessage(resp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTaskSuspendResume);
|
||||
"sendSweeperSuspendResumeTaskResp" + SweeperCloudTaskUtils.printMessage(resp) + " reqNo:" + reqNo + " messageType:" + AiCloudTask.MessageType.CloudPushTaskSuspendResume);
|
||||
getAutoPilotControlManager().sendSweeperCloudSuspendResumeTaskResp(reqNo, resp);
|
||||
DebugView.Companion.printInfoMsg("[云控]pad发送接收 云端下发大任务暂停/恢复 回执给云端,taskId=" + taskId
|
||||
+ ", SuspendResumeCode=" + code
|
||||
+ ", reqNo=" + reqNo);
|
||||
}
|
||||
|
||||
public CallerAutoPilotControlManager getAutoPilotControlManager() {
|
||||
@@ -631,7 +700,9 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
|
||||
@Override
|
||||
public void onAutopilotArriveAtStation(@Nullable MessagePad.ArrivalNotification arrivalNotification) {
|
||||
|
||||
DebugView.Companion.printInfoMsg("[MAP到站通知] 上报到站,endLocation=("
|
||||
+ ((arrivalNotification == null || arrivalNotification.getEndLocation() == null) ? "null" : arrivalNotification.getEndLocation().toString())
|
||||
+ ")");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -652,6 +723,9 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
getCurrentTask();
|
||||
}, 10000);
|
||||
}
|
||||
DebugView.Companion.printInfoMsg(
|
||||
"[域控连接状态变化] status=" + status
|
||||
+ ", reason=" + reason);
|
||||
//CallerLogger.d(M_SWEEPER + TAG, "onAutopilotIpcConnectStatusChanged status:" + status + " reason:" + reason);
|
||||
}
|
||||
|
||||
@@ -679,6 +753,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
public void onSweeperFutianCloudTaskUnknown(@NonNull byte[] bytes) {
|
||||
String string = new String(bytes, StandardCharsets.UTF_8);
|
||||
CallerLogger.d(M_SWEEPER + TAG, "onSweeperFutianCloudTaskUnknown:" + string);
|
||||
DebugView.Companion.printInfoMsg("[云控]接收到云端未知类型消息,Unknown=" + string);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -690,12 +765,16 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
}
|
||||
switch (state) {
|
||||
case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE://不可自动驾驶
|
||||
DebugView.Companion.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_DISABLE,meaning=不可自动驾驶");
|
||||
break;
|
||||
case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE://人工驾驶
|
||||
DebugView.Companion.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_ENABLE,meaning=可自动驾驶,人工干预状态");
|
||||
break;
|
||||
case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING://自动驾驶中
|
||||
DebugView.Companion.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_RUNNING,meaning=自动驾驶中");
|
||||
break;
|
||||
case IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING://平行驾驶
|
||||
DebugView.Companion.printInfoMsg("[自驾状态变化] afterValue=STATUS_PARALLEL_DRIVING,meaning=平行驾驶中");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.presenter;
|
||||
package com.mogo.och.sweeper.cloud.presenter;
|
||||
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
@@ -10,13 +10,13 @@ import com.mogo.eagle.core.data.map.MogoLocation;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerSweeperFutianCleanSystemListenerManager;
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils;
|
||||
import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager;
|
||||
import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean;
|
||||
import com.mogo.och.sweepercloud.callback.ISweeperCloudTaskCallback;
|
||||
import com.mogo.och.sweepercloud.callback.ISweeperControllerStatusCallback;
|
||||
import com.mogo.och.sweepercloud.callback.ISweeperTaskRouteCallback;
|
||||
import com.mogo.och.sweepercloud.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweepercloud.fragment.SweeperFragment;
|
||||
import com.mogo.och.sweepercloud.model.SweeperTaskModel;
|
||||
import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean;
|
||||
import com.mogo.och.sweeper.cloud.callback.ISweeperCloudTaskCallback;
|
||||
import com.mogo.och.sweeper.cloud.callback.ISweeperControllerStatusCallback;
|
||||
import com.mogo.och.sweeper.common.callback.ISweeperTaskRouteCallback;
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweeper.cloud.fragment.SweeperCloudFragment;
|
||||
import com.mogo.och.sweeper.cloud.model.SweeperCloudTaskModel;
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask;
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable;
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon;
|
||||
@@ -34,15 +34,15 @@ import chassis.ChassisStatesOuterClass;
|
||||
*
|
||||
* @author tongchenfei
|
||||
*/
|
||||
public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
public class SweeperCloudPresenter extends Presenter<SweeperCloudFragment>
|
||||
implements ISweeperControllerStatusCallback,
|
||||
ISweeperCloudTaskCallback, ISweeperTaskRouteCallback {
|
||||
|
||||
private static final String TAG = "SweeperPresenter";
|
||||
|
||||
public SweeperPresenter(SweeperFragment view) {
|
||||
public SweeperCloudPresenter(SweeperCloudFragment view) {
|
||||
super(view);
|
||||
SweeperTaskModel.getInstance().init();
|
||||
SweeperCloudTaskModel.getInstance().init();
|
||||
OCHAdasAbilityManager.getInstance().init(AbsMogoApplication.getApp());
|
||||
}
|
||||
|
||||
@@ -55,18 +55,18 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
@Override
|
||||
public void onDestroy(@NonNull LifecycleOwner owner) {
|
||||
super.onDestroy(owner);
|
||||
SweeperTaskModel.getInstance().release();
|
||||
SweeperCloudTaskModel.getInstance().release();
|
||||
releaseListener();
|
||||
}
|
||||
|
||||
public void initModelListener() {
|
||||
SweeperTaskModel.getInstance().setControllerStatusCallback(this);
|
||||
SweeperTaskModel.getInstance().setSweeperTaskCallback(this);
|
||||
SweeperCloudTaskModel.getInstance().setControllerStatusCallback(this);
|
||||
SweeperCloudTaskModel.getInstance().setSweeperTaskCallback(this);
|
||||
}
|
||||
|
||||
public void releaseListener() {
|
||||
SweeperTaskModel.getInstance().setControllerStatusCallback(null);
|
||||
SweeperTaskModel.getInstance().setSweeperTaskCallback(null);
|
||||
SweeperCloudTaskModel.getInstance().setControllerStatusCallback(null);
|
||||
SweeperCloudTaskModel.getInstance().setSweeperTaskCallback(null);
|
||||
CallerSweeperFutianCleanSystemListenerManager.INSTANCE.removeListener(TAG);
|
||||
}
|
||||
|
||||
@@ -94,28 +94,28 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* @return
|
||||
*/
|
||||
public int getAutopilotState() {
|
||||
return SweeperTaskModel.getInstance().getAutopilotState();
|
||||
return SweeperCloudTaskModel.getInstance().getAutopilotState();
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除路线缓存数据
|
||||
*/
|
||||
public void clearRouteList() {
|
||||
SweeperTaskModel.getInstance().clearRouteList();
|
||||
SweeperCloudTaskModel.getInstance().clearRouteList();
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置当前子任务信息
|
||||
*/
|
||||
public void setSubtask(String subTaskId, SweeperTask.TaskModel subTaskType, int currentLineId) {
|
||||
SweeperTaskModel.getInstance().setSubtask(subTaskId, subTaskType, currentLineId);
|
||||
SweeperCloudTaskModel.getInstance().setSubtask(subTaskId, subTaskType, currentLineId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否有任务数据
|
||||
*/
|
||||
public void isHasTaskInfo(boolean isHasTaskInfo) {
|
||||
SweeperTaskModel.getInstance().isHasTaskInfo(isHasTaskInfo);
|
||||
SweeperCloudTaskModel.getInstance().isHasTaskInfo(isHasTaskInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -123,14 +123,14 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* @param preLineId
|
||||
*/
|
||||
public void setPreLineId(int preLineId) {
|
||||
SweeperTaskModel.getInstance().setPreLineId(preLineId);
|
||||
SweeperCloudTaskModel.getInstance().setPreLineId(preLineId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前正在执行的任务
|
||||
*/
|
||||
public void getCurrentTask() {
|
||||
SweeperTaskModel.getInstance().getCurrentTask();
|
||||
SweeperCloudTaskModel.getInstance().getCurrentTask();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -140,7 +140,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* @param code
|
||||
*/
|
||||
public void sendSweeperStartTaskResp(String taskId, SweeperTask.StartTaskCode code) {
|
||||
SweeperTaskModel.getInstance().sendSweeperStartTaskResp(taskId, code);
|
||||
SweeperCloudTaskModel.getInstance().sendSweeperStartTaskResp(taskId, code);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -151,7 +151,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* @param code
|
||||
*/
|
||||
public void sendSweeperTaskConfirmResp(String taskId, String subTaskId, SweeperTaskConfirm.TaskConfirmCode code) {
|
||||
SweeperTaskModel.getInstance().sendSweeperTaskConfirmResp(taskId, subTaskId, code);
|
||||
SweeperCloudTaskModel.getInstance().sendSweeperTaskConfirmResp(taskId, subTaskId, code);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -161,7 +161,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* @param code
|
||||
*/
|
||||
public void sendSweeperStopTaskResp(String taskId, SweeperTaskStop.StopTaskCode code) {
|
||||
SweeperTaskModel.getInstance().sendSweeperStopTaskResp(taskId, code);
|
||||
SweeperCloudTaskModel.getInstance().sendSweeperStopTaskResp(taskId, code);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -172,7 +172,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* @param lineId
|
||||
*/
|
||||
public void sendSweeperAutopilotBootable(String taskId, String subTaskId, long lineId) {
|
||||
SweeperTaskModel.getInstance().sendSweeperAutopilotBootable(taskId, subTaskId, lineId);
|
||||
SweeperCloudTaskModel.getInstance().sendSweeperAutopilotBootable(taskId, subTaskId, lineId);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -181,7 +181,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* @param code
|
||||
*/
|
||||
public void sendSweeperSuspendResumeTaskResp(String taskId, SweeperTaskCloudSuspendResume.Code code) {
|
||||
SweeperTaskModel.getInstance().sendSweeperSuspendResumeTaskResp(taskId, code);
|
||||
SweeperCloudTaskModel.getInstance().sendSweeperSuspendResumeTaskResp(taskId, code);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.ui.dialog
|
||||
package com.mogo.och.sweeper.cloud.ui.dialog
|
||||
|
||||
import android.animation.ObjectAnimator
|
||||
import android.animation.ValueAnimator
|
||||
@@ -10,9 +10,8 @@ import android.widget.TextView
|
||||
import androidx.lifecycle.LifecycleObserver
|
||||
import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
|
||||
import com.mogo.eagle.core.utilcode.util.ClickUtils
|
||||
import com.mogo.och.sweepercloud.R
|
||||
import com.mogo.och.sweepercloud.callback.SweeperCloudDialogClickListener
|
||||
import com.mogo.och.sweepercloud.view.CountDownView
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.cloud.view.CountDownView
|
||||
|
||||
/**
|
||||
* 清扫车云控任务dialog基类
|
||||
@@ -115,7 +114,7 @@ import com.mogo.och.sweepercloud.view.CountDownView
|
||||
var middleStr: String = ""
|
||||
var rightStr: String = ""
|
||||
var countDownTime: Int = 0
|
||||
var listener: SweeperCloudDialogClickListener? = null
|
||||
var listener: com.mogo.och.sweeper.cloud.callback.SweeperCloudDialogClickListener? = null
|
||||
fun build(context: Context): SweeperCloudDialog {
|
||||
return SweeperCloudDialog(this, context)
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.ui.dialog
|
||||
package com.mogo.och.sweeper.cloud.ui.dialog
|
||||
|
||||
import android.animation.ObjectAnimator
|
||||
import android.content.Context
|
||||
@@ -7,7 +7,7 @@ import androidx.lifecycle.LifecycleObserver
|
||||
import com.elegant.utils.UiThreadHandler
|
||||
import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.sweepercloud.R
|
||||
import com.mogo.och.sweeper.R
|
||||
import kotlinx.android.synthetic.main.dialog_sweeper_cloud_loading.*
|
||||
|
||||
/**
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.util;
|
||||
package com.mogo.och.sweeper.cloud.util;
|
||||
|
||||
import android.os.Environment;
|
||||
import android.text.TextUtils;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.util
|
||||
package com.mogo.och.sweeper.cloud.util
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
@@ -14,11 +14,8 @@ import com.mogo.map.overlay.point.Point
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.OCHThreadPoolManager
|
||||
import com.mogo.och.common.module.voice.VoiceNotice
|
||||
import com.mogo.och.sweepercloud.R
|
||||
import com.mogo.och.sweepercloud.callback.SweeperCloudDialogClickListener
|
||||
import com.mogo.och.sweepercloud.constant.SweeperConst
|
||||
import com.mogo.och.sweepercloud.model.SweeperTaskModel
|
||||
import com.mogo.och.sweepercloud.ui.dialog.SweeperCloudDialog
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.cloud.model.SweeperCloudTaskModel
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
|
||||
@@ -43,7 +40,7 @@ object SweeperCloudTaskUtils {
|
||||
// UiThreadHandler.getsUiHandler().postDelayed({
|
||||
// mockSendCloudTaskInfo(MessageType.PadSendGetTaskReq)
|
||||
// },1000)
|
||||
SweeperTaskModel.getInstance().getCurrentTask()
|
||||
SweeperCloudTaskModel.getInstance().getCurrentTask()
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -150,7 +147,7 @@ object SweeperCloudTaskUtils {
|
||||
// subBuilder3.lineId = 126
|
||||
// subBuilder3.lineName = "测试路线3"
|
||||
// builder.addSubList(subBuilder3.build())
|
||||
SweeperTaskModel.getInstance().onSweeperFutianCloudTask(
|
||||
SweeperCloudTaskModel.getInstance().onSweeperFutianCloudTask(
|
||||
messageType,
|
||||
"${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(),
|
||||
@@ -171,7 +168,7 @@ object SweeperCloudTaskUtils {
|
||||
builder.sn = getDriverSn()
|
||||
builder.taskId = "10"
|
||||
builder.subTaskId = "1"
|
||||
SweeperTaskModel.getInstance().onSweeperFutianCloudTaskConfirm(
|
||||
SweeperCloudTaskModel.getInstance().onSweeperFutianCloudTaskConfirm(
|
||||
AiCloudTask.MessageType.CloudPushTaskConfirm, "${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(), builder.build()
|
||||
)
|
||||
@@ -187,7 +184,7 @@ object SweeperCloudTaskUtils {
|
||||
builder.taskId = "10"
|
||||
builder.subTaskId = "1"
|
||||
builder.taskStatus = SweeperCommon.TaskStatus.RUNNING
|
||||
SweeperTaskModel.getInstance().onSweeperFutianCloudTaskStatus(
|
||||
SweeperCloudTaskModel.getInstance().onSweeperFutianCloudTaskStatus(
|
||||
AiCloudTask.MessageType.CloudPushTaskStatus, "${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(), builder.build()
|
||||
)
|
||||
@@ -202,7 +199,7 @@ object SweeperCloudTaskUtils {
|
||||
builder.sn = getDriverSn()
|
||||
builder.taskId = "10"
|
||||
builder.type = SweeperTaskStop.StopTaskType.ADVANCE
|
||||
SweeperTaskModel.getInstance().onSweeperFutianCloudTaskStop(
|
||||
SweeperCloudTaskModel.getInstance().onSweeperFutianCloudTaskStop(
|
||||
AiCloudTask.MessageType.CloudPushTaskStop, "${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(), builder.build()
|
||||
)
|
||||
@@ -218,7 +215,7 @@ object SweeperCloudTaskUtils {
|
||||
builder.taskId = "10"
|
||||
builder.taskStatus = SweeperCommon.TaskStatus.FINISHED
|
||||
builder.systemTime = System.currentTimeMillis()
|
||||
SweeperTaskModel.getInstance().onSweeperFutianCloudBigTaskStatus(
|
||||
SweeperCloudTaskModel.getInstance().onSweeperFutianCloudBigTaskStatus(
|
||||
AiCloudTask.MessageType.CloudPushBigTaskStatus, "${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(), builder.build()
|
||||
)
|
||||
@@ -235,7 +232,7 @@ object SweeperCloudTaskUtils {
|
||||
builder.subTaskId = "1"
|
||||
builder.code = SweeperCommon.Code.SUCCEED
|
||||
UiThreadHandler.getsUiHandler().postDelayed({
|
||||
SweeperTaskModel.getInstance().onSweeperFutianCloudBootable(
|
||||
SweeperCloudTaskModel.getInstance().onSweeperFutianCloudBootable(
|
||||
AiCloudTask.MessageType.PadSendBootable, "${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(), builder.build()
|
||||
)
|
||||
@@ -251,7 +248,7 @@ object SweeperCloudTaskUtils {
|
||||
val setMapMarkerRunnable = Runnable {
|
||||
val builder =
|
||||
Point.Options.Builder(
|
||||
SweeperConst.TYPE_MARKER_SWEEPER_SUBTASK_START_END,
|
||||
com.mogo.och.sweeper.common.constant.SweeperConst.TYPE_MARKER_SWEEPER_SUBTASK_START_END,
|
||||
Level.MAP_MARKER
|
||||
)
|
||||
.setId(uuid)
|
||||
@@ -277,7 +274,7 @@ object SweeperCloudTaskUtils {
|
||||
//开启线程移除起终点marker设置
|
||||
val removeMapMarkerRunnable = Runnable {
|
||||
val overlayManager = CallerMapUIServiceManager.getOverlayManager()
|
||||
overlayManager?.removeAllPointsInOwner(SweeperConst.TYPE_MARKER_SWEEPER_SUBTASK_START_END)
|
||||
overlayManager?.removeAllPointsInOwner(com.mogo.och.sweeper.common.constant.SweeperConst.TYPE_MARKER_SWEEPER_SUBTASK_START_END)
|
||||
}
|
||||
OCHThreadPoolManager.getsInstance().execute(removeMapMarkerRunnable)
|
||||
}
|
||||
@@ -291,11 +288,11 @@ object SweeperCloudTaskUtils {
|
||||
*/
|
||||
@JvmStatic
|
||||
fun createReceivedBigTaskInfoDialog(
|
||||
context: Context?,
|
||||
listener: SweeperCloudDialogClickListener?,
|
||||
taskInfo: TaskInfo
|
||||
): SweeperCloudDialog? {
|
||||
val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
context: Context?,
|
||||
listener: com.mogo.och.sweeper.cloud.callback.SweeperCloudDialogClickListener?,
|
||||
taskInfo: TaskInfo
|
||||
): com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog? {
|
||||
val builder: com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog.Builder = com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog.Builder()
|
||||
val startCalendar = DateTimeUtil.formatLongToCalendar(taskInfo.taskStartTime)
|
||||
val endCalendar = DateTimeUtil.formatLongToCalendar(taskInfo.taskEndTime)
|
||||
builder.titleStr = "任务接取"
|
||||
@@ -320,11 +317,11 @@ object SweeperCloudTaskUtils {
|
||||
*/
|
||||
@JvmStatic
|
||||
fun createConfirmStartSubTaskDialog(
|
||||
context: Context?,
|
||||
listener: SweeperCloudDialogClickListener?,
|
||||
subTaskInfo: SubTaskInfo
|
||||
): SweeperCloudDialog? {
|
||||
val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
context: Context?,
|
||||
listener: com.mogo.och.sweeper.cloud.callback.SweeperCloudDialogClickListener?,
|
||||
subTaskInfo: SubTaskInfo
|
||||
): com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog? {
|
||||
val builder: com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog.Builder = com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog.Builder()
|
||||
builder.titleStr = "子任务确认"
|
||||
builder.contentStr = "请确认并执行子任务 ${subTaskInfo.subTaskName}"
|
||||
builder.tipStr =
|
||||
@@ -342,12 +339,12 @@ object SweeperCloudTaskUtils {
|
||||
*/
|
||||
@JvmStatic
|
||||
fun createSweeperTaskEndDialog(
|
||||
context: Context?,
|
||||
listener: SweeperCloudDialogClickListener?,
|
||||
stopTaskType: SweeperTaskStop.StopTaskType,
|
||||
timeoutStr: String
|
||||
): SweeperCloudDialog? {
|
||||
val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
context: Context?,
|
||||
listener: com.mogo.och.sweeper.cloud.callback.SweeperCloudDialogClickListener?,
|
||||
stopTaskType: SweeperTaskStop.StopTaskType,
|
||||
timeoutStr: String
|
||||
): com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog? {
|
||||
val builder: com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog.Builder = com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog.Builder()
|
||||
val titleStr = when (stopTaskType) {
|
||||
SweeperTaskStop.StopTaskType.ADVANCE -> "任务中止"
|
||||
SweeperTaskStop.StopTaskType.EXCEPTION -> "任务异常结束"
|
||||
@@ -385,9 +382,9 @@ object SweeperCloudTaskUtils {
|
||||
@JvmStatic
|
||||
fun createSweeperTaskNormalEndDialog(
|
||||
context: Context?,
|
||||
listener: SweeperCloudDialogClickListener?
|
||||
): SweeperCloudDialog? {
|
||||
val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
listener: com.mogo.och.sweeper.cloud.callback.SweeperCloudDialogClickListener?
|
||||
): com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog? {
|
||||
val builder: com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog.Builder = com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog.Builder()
|
||||
builder.titleStr = "任务结束"
|
||||
builder.contentStr = "任务已完成,干的漂亮!"
|
||||
builder.tipStr = ""
|
||||
@@ -404,11 +401,11 @@ object SweeperCloudTaskUtils {
|
||||
*/
|
||||
@JvmStatic
|
||||
fun createSweeperTaskExceptionEndDialog(
|
||||
context: Context?,
|
||||
listener: SweeperCloudDialogClickListener?,
|
||||
isCancel: Boolean
|
||||
): SweeperCloudDialog? {
|
||||
val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
context: Context?,
|
||||
listener: com.mogo.och.sweeper.cloud.callback.SweeperCloudDialogClickListener?,
|
||||
isCancel: Boolean
|
||||
): com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog? {
|
||||
val builder: com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog.Builder = com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog.Builder()
|
||||
builder.titleStr = "任务结束"
|
||||
builder.contentStr = if (isCancel) "任务已取消!" else "任务已异常结束!"
|
||||
builder.tipStr = ""
|
||||
@@ -423,9 +420,9 @@ object SweeperCloudTaskUtils {
|
||||
@JvmStatic
|
||||
fun createSweeperTaskSuspendDialog(
|
||||
context: Context?,
|
||||
listener: SweeperCloudDialogClickListener?
|
||||
): SweeperCloudDialog? {
|
||||
val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
listener: com.mogo.och.sweeper.cloud.callback.SweeperCloudDialogClickListener?
|
||||
): com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog? {
|
||||
val builder: com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog.Builder = com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog.Builder()
|
||||
builder.titleStr = "任务暂停"
|
||||
builder.contentStr = "云端暂停任务,注意车辆即将停车!"
|
||||
builder.tipStr = "【云端任务恢复前不可启动自动驾驶】"
|
||||
@@ -439,11 +436,11 @@ object SweeperCloudTaskUtils {
|
||||
|
||||
@JvmStatic
|
||||
fun createSweeperTaskResumeDialog(
|
||||
context: Context?,
|
||||
listener: SweeperCloudDialogClickListener?,
|
||||
contentStr: String
|
||||
): SweeperCloudDialog? {
|
||||
val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder()
|
||||
context: Context?,
|
||||
listener: com.mogo.och.sweeper.cloud.callback.SweeperCloudDialogClickListener?,
|
||||
contentStr: String
|
||||
): com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog? {
|
||||
val builder: com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog.Builder = com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog.Builder()
|
||||
builder.titleStr = "任务恢复"
|
||||
builder.contentStr = contentStr
|
||||
builder.tipStr = "【注意安全,坐稳扶好】"
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.view
|
||||
package com.mogo.och.sweeper.cloud.view
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Handler
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.view;
|
||||
package com.mogo.och.sweeper.cloud.view;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.view
|
||||
package com.mogo.och.sweeper.cloud.view
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
@@ -6,11 +6,11 @@ import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.och.sweepercloud.R
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.SubTaskInfo
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.TaskModel
|
||||
import kotlinx.android.synthetic.main.sweeper_subtask_view.view.*
|
||||
import kotlinx.android.synthetic.main.sweeper_cloud_subtask_view.view.*
|
||||
|
||||
/**
|
||||
* 子任务View
|
||||
@@ -24,7 +24,7 @@ class SubTaskView : ConstraintLayout {
|
||||
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) {}
|
||||
|
||||
private fun initView(context: Context) {
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_subtask_view, this)
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_cloud_subtask_view, this)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.view
|
||||
package com.mogo.och.sweeper.cloud.view
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
@@ -10,23 +10,23 @@ import android.widget.TextView
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.sweepercloud.R
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon.TaskStatus
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.SubTaskInfo
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.TaskInfo
|
||||
import kotlinx.android.synthetic.main.sweeper_current_task_info.view.currentSubTask
|
||||
import kotlinx.android.synthetic.main.sweeper_current_task_info.view.lastSubTask
|
||||
import kotlinx.android.synthetic.main.sweeper_current_task_info.view.preSubTask
|
||||
import kotlinx.android.synthetic.main.sweeper_current_task_info.view.tvStartAuto
|
||||
import kotlinx.android.synthetic.main.sweeper_current_task_info.view.tvTaskName
|
||||
import kotlinx.android.synthetic.main.sweeper_current_task_info.view.tvTaskState
|
||||
import kotlinx.android.synthetic.main.sweeper_current_task_info.view.tvTaskTime
|
||||
import kotlinx.android.synthetic.main.sweeper_cloud_current_task_info.view.currentSubTask
|
||||
import kotlinx.android.synthetic.main.sweeper_cloud_current_task_info.view.lastSubTask
|
||||
import kotlinx.android.synthetic.main.sweeper_cloud_current_task_info.view.preSubTask
|
||||
import kotlinx.android.synthetic.main.sweeper_cloud_current_task_info.view.tvStartAuto
|
||||
import kotlinx.android.synthetic.main.sweeper_cloud_current_task_info.view.tvTaskName
|
||||
import kotlinx.android.synthetic.main.sweeper_cloud_current_task_info.view.tvTaskState
|
||||
import kotlinx.android.synthetic.main.sweeper_cloud_current_task_info.view.tvTaskTime
|
||||
|
||||
/**
|
||||
* 清扫车当前任务信息展示
|
||||
*/
|
||||
class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
class SweeperCloudCurrentTaskInfoView : ConstraintLayout {
|
||||
private val TAG: String = "SweeperCurrentTaskInfoView"
|
||||
|
||||
//当前任务操作菜单
|
||||
@@ -53,7 +53,7 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
}
|
||||
|
||||
private fun initView(context: Context) {
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_current_task_info, this)
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_cloud_current_task_info, this)
|
||||
updateTaskStateText(TaskStatus.TO_START)
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
) {
|
||||
// 更新 任务名称、任务时间
|
||||
taskInfo?.apply {
|
||||
this@SweeperCurrentTaskInfoView.listTask = subListList
|
||||
this@SweeperCloudCurrentTaskInfoView.listTask = subListList
|
||||
tvTaskName.text = taskName
|
||||
val calendarStart = DateTimeUtil.formatLongToCalendar(taskStartTime)
|
||||
val calendarEnd = DateTimeUtil.formatLongToCalendar(taskEndTime)
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.view
|
||||
package com.mogo.och.sweeper.cloud.view
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
@@ -18,14 +18,14 @@ import com.mogo.eagle.core.function.hmi.ui.widget.TapPositionView
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.och.sweepercloud.R
|
||||
import com.mogo.och.sweeper.R
|
||||
import planning.RoboSweeperTaskIndexOuterClass
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
/**
|
||||
* 车辆基本信息:方向盘下方的档位 转向灯 限速 速度 电量 水量
|
||||
*/
|
||||
class SweeperTrafficDataView : ConstraintLayout,
|
||||
class SweeperCloudTrafficDataView : ConstraintLayout,
|
||||
IMoGoBatteryManagementSystemListener,
|
||||
IMoGoChassisLamplightListener,
|
||||
IMoGoChassisGearStateListener,
|
||||
@@ -64,7 +64,7 @@ class SweeperTrafficDataView : ConstraintLayout,
|
||||
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) {}
|
||||
|
||||
private fun initView(context: Context) {
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_traffic_data, this)
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_cloud_traffic_data, this)
|
||||
tapPositionView = findViewById(R.id.sweeperTrafficPosition)
|
||||
speedImage = findViewById(R.id.sweeperSpeedImage)
|
||||
speedTextView = findViewById(R.id.sweeperSpeedText)
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.view
|
||||
package com.mogo.och.sweeper.cloud.view
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
@@ -9,18 +9,22 @@ import chassis.ChassisStatesOuterClass.SweeperFuTianTaskSystemStates
|
||||
import com.elegant.utils.UiThreadHandler
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.och.sweepercloud.R
|
||||
import com.mogo.och.sweepercloud.callback.ICleaningModeStateCallback
|
||||
import com.mogo.och.sweepercloud.constant.OperateStateEnum
|
||||
import com.mogo.och.sweepercloud.ui.popwindow.SweeperOperatePanelPopWindow
|
||||
import com.mogo.och.sweepercloud.util.SweeperFutianCmdUtil
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.common.constant.OperateStateEnum
|
||||
import com.mogo.och.sweeper.common.util.SweeperFutianCmdUtil
|
||||
import com.mogo.och.sweeper.common.view.SweeperOperatePanelPopWindow
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.TaskModel
|
||||
import kotlinx.android.synthetic.main.sweeper_work_mode.view.*
|
||||
import kotlinx.android.synthetic.main.sweeper_work_mode.view.groupWorkModelPanel
|
||||
import kotlinx.android.synthetic.main.sweeper_work_mode.view.ivOpenOperatePanel
|
||||
import kotlinx.android.synthetic.main.sweeper_work_mode.view.tvCleaningDirection
|
||||
import kotlinx.android.synthetic.main.sweeper_work_mode.view.tvCleaningIntensity
|
||||
import kotlinx.android.synthetic.main.sweeper_work_mode.view.tvCleaningMode
|
||||
import kotlinx.android.synthetic.main.sweeper_work_mode.view.tvNoDataDesc
|
||||
|
||||
/**
|
||||
* 清扫车模式信息展示
|
||||
*/
|
||||
class SweeperWorkModeView : ConstraintLayout,ICleaningModeStateCallback {
|
||||
class SweeperCloudWorkModeView : ConstraintLayout {
|
||||
|
||||
private var isSelectPureSweepMode: Boolean = false
|
||||
private val TAG = "SweeperWorkModeView"
|
||||
@@ -46,7 +50,7 @@ class SweeperWorkModeView : ConstraintLayout,ICleaningModeStateCallback {
|
||||
/**
|
||||
* 设置view
|
||||
*/
|
||||
fun setTrafficDataView(trafficDataView: SweeperTrafficDataView){
|
||||
fun setTrafficDataView(trafficDataView: com.mogo.och.sweeper.cloud.view.SweeperCloudTrafficDataView){
|
||||
//清扫模式选择面板打开关闭处理
|
||||
ivOpenOperatePanel.setOnClickListener {
|
||||
if (mOperatePanelPopWindow?.isShowing != true) {
|
||||
@@ -126,7 +130,7 @@ class SweeperWorkModeView : ConstraintLayout,ICleaningModeStateCallback {
|
||||
}
|
||||
}
|
||||
|
||||
override fun cleaningModeState(operateState: OperateStateEnum, cleanSystemState: SweeperFuTianTaskSystemStates?, isSelectPureSweepMode: Boolean) {
|
||||
fun cleaningModeState(operateState: OperateStateEnum, cleanSystemState: SweeperFuTianTaskSystemStates?, isSelectPureSweepMode: Boolean) {
|
||||
this.isSelectPureSweepMode = isSelectPureSweepMode
|
||||
this.operateState=operateState
|
||||
setShowOrHideCleanSystemState(operateState, cleanSystemState)
|
||||
@@ -1,9 +1,7 @@
|
||||
package com.mogo.och.sweeper.bean;
|
||||
package com.mogo.och.sweeper.common.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by pangfan on 2021/8/19
|
||||
*
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.mogo.och.sweepercloud.callback;
|
||||
package com.mogo.och.sweeper.common.callback;
|
||||
|
||||
import com.mogo.och.sweepercloud.constant.OperateStateEnum;
|
||||
import com.mogo.och.sweeper.common.constant.OperateStateEnum;
|
||||
|
||||
import chassis.ChassisStatesOuterClass;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.callback;
|
||||
package com.mogo.och.sweeper.common.callback;
|
||||
|
||||
/**
|
||||
* Created on 2021/9/8
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.mogo.och.sweepercloud.callback
|
||||
package com.mogo.och.sweeper.common.callback
|
||||
|
||||
import com.amap.api.maps.model.LatLng
|
||||
import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean
|
||||
import com.mogo.och.sweepercloud.database.bean.WeltDataBean
|
||||
import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean
|
||||
import java.util.ArrayList
|
||||
|
||||
interface ISweeperTaskDataToFragmentCallback {
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.mogo.och.sweeper.callback
|
||||
package com.mogo.och.sweeper.common.callback
|
||||
|
||||
import com.mogo.och.sweeper.bean.SweeperRoutePlanningUpdateReqBean
|
||||
import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean
|
||||
import java.util.ArrayList
|
||||
|
||||
interface ISweeperTaskRouteCallback {
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.callback
|
||||
package com.mogo.och.sweeper.common.callback
|
||||
|
||||
interface IWeltMapSwitchToSmallCallback {
|
||||
fun onWeltMapSwitchToSmall()
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.constant
|
||||
package com.mogo.och.sweeper.common.constant
|
||||
|
||||
/**
|
||||
* 上装面板操作状态
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.constant
|
||||
package com.mogo.och.sweeper.common.constant
|
||||
|
||||
import com.mogo.commons.debug.DebugConfig
|
||||
|
||||
@@ -54,6 +54,10 @@ class SweeperConst {
|
||||
const val EVENT_KEY_AP_UNABLE_START_REASON = "event_key_och_bus_ap_unable_start_reason"
|
||||
const val EVENT_PARAM_UNABLE_START_REASON = "unable_start_reason";
|
||||
|
||||
// 埋点Key: 切换清扫业务模式
|
||||
const val EVENT_KEY_CHANGE_CURRENT_SWEEPER_MODE = "event_key_och_change_current_sweeper_mode"
|
||||
const val EVENT_PARAM_CHANGE_CURRENT_SWEEPER_MODE_CURRENT_MODE = "event_param_och_change_current_sweeper_mode_current_mode"
|
||||
|
||||
/**
|
||||
* 子任务起终点Marker类型
|
||||
*/
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.mogo.och.sweeper.database;
|
||||
package com.mogo.och.sweeper.common.database;
|
||||
|
||||
import com.mogo.commons.AbsMogoApplication;
|
||||
import com.mogo.och.sweeper.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweeper.database.dao.WeltDataDao;
|
||||
import com.mogo.och.sweeper.common.database.dao.WeltDataDao;
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean;
|
||||
|
||||
import androidx.room.Database;
|
||||
import androidx.room.Room;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.database.bean;
|
||||
package com.mogo.och.sweeper.common.database.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.mogo.och.sweepercloud.database.dao;
|
||||
package com.mogo.och.sweeper.common.database.dao;
|
||||
|
||||
import com.mogo.och.sweepercloud.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweepercloud.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -10,7 +9,7 @@ import androidx.room.Insert;
|
||||
import androidx.room.OnConflictStrategy;
|
||||
import androidx.room.Query;
|
||||
|
||||
import static com.mogo.och.sweepercloud.database.bean.WeltDataBean.WeltDataTable;
|
||||
import static com.mogo.och.sweeper.common.database.bean.WeltDataBean.WeltDataTable;
|
||||
|
||||
@Dao
|
||||
public interface WeltDataDao {
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.fragment;
|
||||
package com.mogo.och.sweeper.common.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.fragment;
|
||||
package com.mogo.och.sweeper.common.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
@@ -43,21 +43,21 @@ public class SweeperAmapNaviFragment extends BaseSweeperUIFragment implements AM
|
||||
protected void initViews(Bundle savedInstanceState) {
|
||||
super.initViews(savedInstanceState);
|
||||
if (mAMapNaviView != null)
|
||||
mAMapNaviView.onCreate(savedInstanceState);
|
||||
mAMapNaviView.onCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
if (mAMapNaviView != null)
|
||||
mAMapNaviView.onResume();
|
||||
mAMapNaviView.onResume();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
if (mAMapNaviView != null)
|
||||
mAMapNaviView.onPause();
|
||||
mAMapNaviView.onPause();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1,13 +1,12 @@
|
||||
package com.mogo.och.sweepercloud.fragment
|
||||
package com.mogo.och.sweeper.common.fragment
|
||||
|
||||
import android.os.Bundle
|
||||
import com.amap.api.maps.model.LatLng
|
||||
import com.mogo.commons.mvp.BaseFragment
|
||||
import com.mogo.och.sweepercloud.R
|
||||
import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean
|
||||
import com.mogo.och.sweepercloud.callback.ISweeperTaskDataToFragmentCallback
|
||||
import com.mogo.och.sweepercloud.callback.IWeltMapSwitchToSmallCallback
|
||||
import com.mogo.och.sweepercloud.database.bean.WeltDataBean
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.common.callback.ISweeperTaskDataToFragmentCallback
|
||||
import com.mogo.och.sweeper.common.callback.IWeltMapSwitchToSmallCallback
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean
|
||||
import kotlinx.android.synthetic.main.fragment_welt_map_overview.*
|
||||
import kotlinx.android.synthetic.main.sweeper_welt_map_overview.*
|
||||
|
||||
@@ -16,7 +15,6 @@ import kotlinx.android.synthetic.main.sweeper_welt_map_overview.*
|
||||
*/
|
||||
class WeltMapOverViewFragment : BaseFragment(), ISweeperTaskDataToFragmentCallback {
|
||||
private var mIWeltMapSwitchToSmallCallBack: IWeltMapSwitchToSmallCallback? = null
|
||||
private var mFragment: SweeperFragment? = null
|
||||
override fun getLayoutId(): Int = R.layout.fragment_welt_map_overview
|
||||
override fun getTagName(): String {
|
||||
return "WeltMapOverViewFragment"
|
||||
@@ -28,10 +26,6 @@ class WeltMapOverViewFragment : BaseFragment(), ISweeperTaskDataToFragmentCallba
|
||||
fun setWeltMapSwitchToSmallCallBack(iWeltMapSwitchToSmallCallback: IWeltMapSwitchToSmallCallback){
|
||||
this.mIWeltMapSwitchToSmallCallBack=iWeltMapSwitchToSmallCallback
|
||||
}
|
||||
fun setSweeperFragment(fragment: SweeperFragment){
|
||||
this.mFragment=fragment
|
||||
mFragment?.setTaskDataToFragmentCallback(this)
|
||||
}
|
||||
override fun initViews(savedInstanceState: Bundle?) {
|
||||
super.initViews(savedInstanceState)
|
||||
weltMapOverView?.onCreateView(savedInstanceState)
|
||||
@@ -43,7 +37,7 @@ class WeltMapOverViewFragment : BaseFragment(), ISweeperTaskDataToFragmentCallba
|
||||
val latLngs = bundle.getSerializable("subTaskCoordinates") as? ArrayList<LatLng>
|
||||
val latLng = bundle.getParcelable<LatLng>("subTaskEndCoordinates")
|
||||
val weltDataList = bundle.getSerializable("weltDataList") as? ArrayList<WeltDataBean>
|
||||
val routeList = bundle.getSerializable("routeList") as? ArrayList<SweeperRoutePlanningUpdateReqBean.Result>
|
||||
val routeList = bundle.getSerializable("routeList") as? ArrayList<com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean.Result>
|
||||
val progress = bundle.getString("progress")
|
||||
routeList?.let {
|
||||
weltMapOverView?.setRouteList(it)
|
||||
@@ -67,13 +61,12 @@ class WeltMapOverViewFragment : BaseFragment(), ISweeperTaskDataToFragmentCallba
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun newInstance(
|
||||
mIWeltMapSwitchToSmallCallBack: IWeltMapSwitchToSmallCallback,
|
||||
mCurrentTaskEndStation:LatLng?,
|
||||
weltDataList: ArrayList<WeltDataBean>?,
|
||||
latLngs: ArrayList<LatLng>?,
|
||||
routeList: ArrayList<SweeperRoutePlanningUpdateReqBean.Result>?,
|
||||
progress:String?,
|
||||
sweeperFragment: SweeperFragment
|
||||
mIWeltMapSwitchToSmallCallBack: IWeltMapSwitchToSmallCallback,
|
||||
mCurrentTaskEndStation:LatLng?,
|
||||
weltDataList: ArrayList<WeltDataBean>?,
|
||||
latLngs: ArrayList<LatLng>?,
|
||||
routeList: ArrayList<com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean.Result>?,
|
||||
progress:String?
|
||||
): WeltMapOverViewFragment {
|
||||
val args = Bundle()
|
||||
args.putSerializable("weltDataList", weltDataList)
|
||||
@@ -83,7 +76,6 @@ class WeltMapOverViewFragment : BaseFragment(), ISweeperTaskDataToFragmentCallba
|
||||
args.putString("progress", progress)
|
||||
val fragment = WeltMapOverViewFragment()
|
||||
fragment.setWeltMapSwitchToSmallCallBack(mIWeltMapSwitchToSmallCallBack)
|
||||
fragment.setSweeperFragment(sweeperFragment)
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
@@ -119,7 +111,7 @@ class WeltMapOverViewFragment : BaseFragment(), ISweeperTaskDataToFragmentCallba
|
||||
weltMapOverView?.setProgress(progress)
|
||||
}
|
||||
|
||||
override fun setRouteList(routeList: java.util.ArrayList<SweeperRoutePlanningUpdateReqBean.Result>) {
|
||||
override fun setRouteList(routeList: java.util.ArrayList<com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean.Result>) {
|
||||
weltMapOverView?.setRouteList(routeList)
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.receiver;
|
||||
package com.mogo.och.sweeper.common.receiver;
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS;
|
||||
|
||||
@@ -7,7 +7,7 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.och.sweeper.constant.SweeperConst;
|
||||
import com.mogo.och.sweeper.common.constant.SweeperConst;
|
||||
|
||||
/**
|
||||
* 测试小巴车的场景
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.util;
|
||||
package com.mogo.och.sweeper.common.util;
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_SWEEPER;
|
||||
|
||||
@@ -14,7 +14,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.util.DateTimeUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
import com.mogo.och.sweeper.constant.SweeperConst;
|
||||
import com.mogo.och.sweeper.common.constant.SweeperConst;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
@@ -146,4 +146,10 @@ public class SweeperAnalyticsManager {
|
||||
params.put(SweeperConst.EVENT_PARAM_UNABLE_START_REASON, reason);
|
||||
MogoAnalyticUtils.INSTANCE.track(SweeperConst.EVENT_KEY_AP_UNABLE_START_REASON, params);
|
||||
}
|
||||
|
||||
public void trackSweeperModeChangeEvent(String currentMode) {
|
||||
HashMap<String, Object> params = new HashMap<>();
|
||||
params.put(SweeperConst.EVENT_PARAM_CHANGE_CURRENT_SWEEPER_MODE_CURRENT_MODE, currentMode);
|
||||
MogoAnalyticUtils.INSTANCE.track(SweeperConst.EVENT_KEY_CHANGE_CURRENT_SWEEPER_MODE, params);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.util;
|
||||
package com.mogo.och.sweeper.common.util;
|
||||
|
||||
import chassis.ChassisStatesOuterClass;
|
||||
import chassis.SpecialVehicleTaskCmdOuterClass;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.util;
|
||||
package com.mogo.och.sweeper.common.util;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
@@ -0,0 +1,137 @@
|
||||
package com.mogo.och.sweeper.common.view
|
||||
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.IntentFilter
|
||||
import android.text.SpannableString
|
||||
import android.text.Spanned
|
||||
import android.text.method.ScrollingMovementMethod
|
||||
import android.text.style.ForegroundColorSpan
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import androidx.lifecycle.ProcessLifecycleOwner
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||
import com.mogo.commons.utils.MogoAnalyticUtils
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.function.main.MainMoGoApplication
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.sweeper.R
|
||||
import kotlinx.android.synthetic.main.sweeper_debug_view_content.view.currentSweeperModeTextView
|
||||
import kotlinx.android.synthetic.main.sweeper_debug_view_content.view.debugLogHistoryTextView
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
|
||||
class DebugView @JvmOverloads constructor(
|
||||
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0
|
||||
) : LinearLayout(context, attrs, defStyleAttr, defStyleRes) {
|
||||
companion object {
|
||||
const val TAG = "DebugView"
|
||||
private const val ANALYTICS_EVENT_TYPE_DRIVER_SWEEPER_OPERATION_PROCESS_KEY_NODE_LOG =
|
||||
"och.driver.sweeper.operation.process.key.node.log"
|
||||
const val BROADCAST_ACTION = "com.mogo.och.driver.debugview.show"
|
||||
const val BROADCAST_DATA_SHOW = "isShow"
|
||||
private var logHistoryTextView: TextView? = null
|
||||
|
||||
fun printInfoMsg(msg: String) {
|
||||
printMsg("Info $msg", MainMoGoApplication.getApp().getColor(R.color.background_info))
|
||||
trackEvent("Info", msg)
|
||||
}
|
||||
|
||||
fun printWarnMsg(msg: String) {
|
||||
printMsg("Warn $msg", MainMoGoApplication.getApp().getColor(R.color.background_warn))
|
||||
trackEvent("Warn", msg)
|
||||
}
|
||||
|
||||
fun printErrorMsg(msg: String) {
|
||||
printMsg("Error $msg", MainMoGoApplication.getApp().getColor(R.color.background_error))
|
||||
trackEvent("Error", msg)
|
||||
}
|
||||
|
||||
private fun printMsg(msg: String, textColor: Int) {
|
||||
logHistoryTextView?.also {
|
||||
val msg = "${currentDateTimeString()} $msg"
|
||||
val spannableMsg = SpannableString(msg)
|
||||
|
||||
spannableMsg.setSpan(
|
||||
ForegroundColorSpan(textColor), 0, msg.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
|
||||
)
|
||||
UiThreadHandler.post({
|
||||
it.append("\n")
|
||||
it.append(spannableMsg)
|
||||
|
||||
val offset: Int = it.lineCount * it.lineHeight
|
||||
if (offset > it.height) {
|
||||
it.scrollTo(0, offset - it.height)
|
||||
}
|
||||
}, UiThreadHandler.MODE.QUEUE)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 上报埋点
|
||||
*/
|
||||
private fun trackEvent(level: String, msg: String) {
|
||||
ProcessLifecycleOwner.get().lifecycleScope.launch(Dispatchers.IO) {
|
||||
val map: MutableMap<String, Any> = HashMap()
|
||||
map["level"] = level
|
||||
map["msg"] = msg
|
||||
MogoAnalyticUtils.track(ANALYTICS_EVENT_TYPE_DRIVER_SWEEPER_OPERATION_PROCESS_KEY_NODE_LOG, map)
|
||||
}
|
||||
}
|
||||
|
||||
private fun currentDateTimeString(): String {
|
||||
return DateTimeUtil.formatCalendarToString(
|
||||
DateTimeUtil.formatLongToCalendar(System.currentTimeMillis()),
|
||||
DateTimeUtil.yyyy_MM_dd_HH_mm_ss
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private val broadcastReceiver = object : BroadcastReceiver() {
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
if (BROADCAST_ACTION == intent.action) {
|
||||
val isShow = intent.getBooleanExtra(BROADCAST_DATA_SHOW, false)
|
||||
visibility = if (isShow) VISIBLE else GONE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
init {
|
||||
initBroadcastReceiver()
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_debug_view_content, this, true)
|
||||
debugLogHistoryTextView.movementMethod = ScrollingMovementMethod.getInstance()
|
||||
visibility = GONE
|
||||
logHistoryTextView = debugLogHistoryTextView
|
||||
}
|
||||
|
||||
private fun initBroadcastReceiver() {
|
||||
val intentFilter = IntentFilter()
|
||||
intentFilter.addAction(BROADCAST_ACTION)
|
||||
LocalBroadcastManager.getInstance(context).registerReceiver(broadcastReceiver, intentFilter)
|
||||
}
|
||||
|
||||
fun toggleDebugView() {
|
||||
visibility = if (visibility == View.VISIBLE) View.GONE
|
||||
else View.VISIBLE
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
initView()
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
}
|
||||
|
||||
fun initView() {
|
||||
currentSweeperModeTextView.text = "当前清扫业务模式:${FunctionBuildConfig.sweeperCurrentMode}"
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.view
|
||||
package com.mogo.och.sweeper.common.view
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.view;
|
||||
package com.mogo.och.sweeper.common.view;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.view;
|
||||
package com.mogo.och.sweeper.common.view;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.view
|
||||
package com.mogo.och.sweeper.common.view
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.ui.dialog
|
||||
package com.mogo.och.sweeper.common.view
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.TextView
|
||||
@@ -16,7 +16,7 @@ class SweeperManualDrivingDialog: BaseFloatDialog, LifecycleObserver {
|
||||
|
||||
private var clickListener: ClickListener? = null
|
||||
|
||||
constructor(builder: Builder,context: Context) : super(context) {
|
||||
constructor(builder: Builder, context: Context) : super(context) {
|
||||
commonTips?.text = builder.tipsStr
|
||||
commonConfirm?.text = builder.confirmStr
|
||||
}
|
||||
@@ -53,12 +53,12 @@ class SweeperManualDrivingDialog: BaseFloatDialog, LifecycleObserver {
|
||||
class Builder{
|
||||
var tipsStr:String = ""
|
||||
var confirmStr:String = ""
|
||||
fun tips(tips: String) : Builder{
|
||||
fun tips(tips: String) : Builder {
|
||||
this.tipsStr = tips
|
||||
return this
|
||||
}
|
||||
|
||||
fun confirmStr(commit: String) : Builder{
|
||||
fun confirmStr(commit: String) : Builder {
|
||||
this.confirmStr = commit
|
||||
return this
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.ui.dialog
|
||||
package com.mogo.och.sweeper.common.view
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.TextView
|
||||
@@ -17,7 +17,7 @@ class SweeperNoTitleCommonDialog: BaseFloatDialog, LifecycleObserver {
|
||||
|
||||
private var clickListener: ClickListener? = null
|
||||
|
||||
constructor(builder: Builder,context: Context) : super(context) {
|
||||
constructor(builder: Builder, context: Context) : super(context) {
|
||||
commonTips?.text = builder.tipsStr
|
||||
commonCancel?.text = builder.cancelStr
|
||||
commonConfirm?.text = builder.confirmStr
|
||||
@@ -62,17 +62,17 @@ class SweeperNoTitleCommonDialog: BaseFloatDialog, LifecycleObserver {
|
||||
var tipsStr:String = ""
|
||||
var confirmStr:String = ""
|
||||
var cancelStr:String = ""
|
||||
fun tips(tips: String) : Builder{
|
||||
fun tips(tips: String) : Builder {
|
||||
this.tipsStr = tips
|
||||
return this
|
||||
}
|
||||
|
||||
fun confirmStr(commit: String) : Builder{
|
||||
fun confirmStr(commit: String) : Builder {
|
||||
this.confirmStr = commit
|
||||
return this
|
||||
}
|
||||
|
||||
fun cancelStr(cancel: String) : Builder{
|
||||
fun cancelStr(cancel: String) : Builder {
|
||||
this.cancelStr = cancel
|
||||
return this
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.ui.popwindow
|
||||
package com.mogo.och.sweeper.common.view
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
@@ -8,9 +8,9 @@ import android.view.ViewGroup
|
||||
import android.widget.PopupWindow
|
||||
import chassis.ChassisStatesOuterClass
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.callback.ICleaningModeStateCallback
|
||||
import com.mogo.och.sweeper.constant.OperateStateEnum
|
||||
import com.mogo.och.sweeper.ui.SweeperOperatePanelView
|
||||
import com.mogo.och.sweeper.common.callback.ICleaningModeStateCallback
|
||||
import com.mogo.och.sweeper.common.constant.OperateStateEnum
|
||||
import com.mogo.och.sweeper.common.view.SweeperOperatePanelView
|
||||
|
||||
/**
|
||||
* 清扫车面板浮窗
|
||||
@@ -1,14 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.ui;
|
||||
|
||||
import static com.mogo.och.sweepercloud.util.SweeperFutianCmdUtil.CLEAN_DIRECTION_BOTH_SIDE;
|
||||
import static com.mogo.och.sweepercloud.util.SweeperFutianCmdUtil.CLEAN_DIRECTION_LEFT_SIDE;
|
||||
import static com.mogo.och.sweepercloud.util.SweeperFutianCmdUtil.CLEAN_DIRECTION_RIGHT_SIDE;
|
||||
import static com.mogo.och.sweepercloud.util.SweeperFutianCmdUtil.CLEAN_INTENSITY_STRAND;
|
||||
import static com.mogo.och.sweepercloud.util.SweeperFutianCmdUtil.CLEAN_INTENSITY_STRONG;
|
||||
import static com.mogo.och.sweepercloud.util.SweeperFutianCmdUtil.CLEAN_MODE_PURE_DRAW;
|
||||
import static com.mogo.och.sweepercloud.util.SweeperFutianCmdUtil.CLEAN_MODE_PURE_SWEEP;
|
||||
import static com.mogo.och.sweepercloud.util.SweeperFutianCmdUtil.CLEAN_MODE_PURE_WASH;
|
||||
import static com.mogo.och.sweepercloud.util.SweeperFutianCmdUtil.CLEAN_MODE_WASH_SWEEP;
|
||||
package com.mogo.och.sweeper.common.view;
|
||||
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.content.Context;
|
||||
@@ -31,14 +21,11 @@ import androidx.annotation.Nullable;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener;
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
||||
import com.mogo.och.sweepercloud.R;
|
||||
import com.mogo.och.sweepercloud.callback.ICleaningModeStateCallback;
|
||||
import com.mogo.och.sweepercloud.constant.OperateStateEnum;
|
||||
import com.mogo.och.sweepercloud.util.SweeperFutianCmdUtil;
|
||||
import com.mogo.och.sweepercloud.view.NoTouchConstraintLayout;
|
||||
import com.mogo.och.sweepercloud.callback.ICleaningModeStateCallback;
|
||||
import com.mogo.och.sweepercloud.util.SweeperFutianCmdUtil;
|
||||
import com.mogo.och.sweepercloud.view.NoTouchConstraintLayout;
|
||||
import com.mogo.och.sweeper.common.callback.ICleaningModeStateCallback;
|
||||
import com.mogo.och.sweeper.R;
|
||||
import com.mogo.och.sweeper.common.constant.OperateStateEnum;
|
||||
import com.mogo.och.sweeper.common.util.SweeperFutianCmdUtil;
|
||||
import com.mogo.och.sweeper.common.view.NoTouchConstraintLayout;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
@@ -47,11 +34,6 @@ import java.util.List;
|
||||
import chassis.ChassisStatesOuterClass;
|
||||
import chassis.SpecialVehicleTaskCmdOuterClass;
|
||||
|
||||
import static com.mogo.och.sweepercloud.util.SweeperFutianCmdUtil.CLEAN_DIRECTION_CLOSE;
|
||||
import static com.mogo.och.sweepercloud.util.SweeperFutianCmdUtil.CLEAN_MODE_CLOSE;
|
||||
import static com.mogo.och.sweepercloud.util.SweeperFutianCmdUtil.CLEAN_WORK_CLOSE;
|
||||
import static com.mogo.och.sweepercloud.util.SweeperFutianCmdUtil.CLEAN_WORK_OPEN;
|
||||
|
||||
/**
|
||||
* 清扫车操作面板View
|
||||
*/
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.view
|
||||
package com.mogo.och.sweeper.common.view
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.view
|
||||
package com.mogo.och.sweeper.common.view
|
||||
|
||||
import android.animation.AnimatorSet
|
||||
import android.animation.ObjectAnimator
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.view;
|
||||
package com.mogo.och.sweeper.common.view;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.view
|
||||
package com.mogo.och.sweeper.common.view
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
@@ -20,10 +20,10 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.bean.SweeperRoutePlanningUpdateReqBean
|
||||
import com.mogo.och.sweeper.constant.SweeperConst
|
||||
import com.mogo.och.sweeper.database.bean.WeltDataBean
|
||||
import com.mogo.och.sweeper.util.SweeperMapAssetStyleUtil
|
||||
import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean
|
||||
import com.mogo.och.sweeper.common.constant.SweeperConst
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean
|
||||
import com.mogo.och.sweeper.common.util.SweeperMapAssetStyleUtil
|
||||
import kotlinx.android.synthetic.main.sweeper_welt_map_overview.view.*
|
||||
|
||||
/**
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweepercloud.view
|
||||
package com.mogo.och.sweeper.common.view
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
@@ -19,11 +19,8 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.och.sweepercloud.R
|
||||
import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean
|
||||
import com.mogo.och.sweepercloud.constant.SweeperConst
|
||||
import com.mogo.och.sweepercloud.database.bean.WeltDataBean
|
||||
import com.mogo.och.sweepercloud.util.SweeperMapAssetStyleUtil
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean
|
||||
import com.mogo.och.sweeper.R
|
||||
import kotlinx.android.synthetic.main.sweeper_welt_small_map_view.view.*
|
||||
|
||||
|
||||
@@ -120,8 +117,8 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
|
||||
// 加载自定义样式
|
||||
val customMapStyleOptions = CustomMapStyleOptions()
|
||||
.setEnable(true)
|
||||
.setStyleData(SweeperMapAssetStyleUtil.getAssetsStyle(context, "map_style.data"))
|
||||
.setStyleExtraData(SweeperMapAssetStyleUtil.getAssetsExtraStyle(context, "map_style_extra.data"))
|
||||
.setStyleData(com.mogo.och.sweeper.common.util.SweeperMapAssetStyleUtil.getAssetsStyle(context, "map_style.data"))
|
||||
.setStyleExtraData(com.mogo.och.sweeper.common.util.SweeperMapAssetStyleUtil.getAssetsExtraStyle(context, "map_style_extra.data"))
|
||||
// 设置自定义样式
|
||||
mAMap?.setCustomMapStyle(customMapStyleOptions)
|
||||
mAMap?.setOnMapLoadedListener(AMap.OnMapLoadedListener {
|
||||
@@ -129,8 +126,8 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
|
||||
// 加载自定义样式
|
||||
val customMapStyleOptions = CustomMapStyleOptions()
|
||||
.setEnable(true)
|
||||
.setStyleData(SweeperMapAssetStyleUtil.getAssetsStyle(context, "map_style.data"))
|
||||
.setStyleExtraData(SweeperMapAssetStyleUtil.getAssetsExtraStyle(context, "map_style_extra.data"))
|
||||
.setStyleData(com.mogo.och.sweeper.common.util.SweeperMapAssetStyleUtil.getAssetsStyle(context, "map_style.data"))
|
||||
.setStyleExtraData(com.mogo.och.sweeper.common.util.SweeperMapAssetStyleUtil.getAssetsExtraStyle(context, "map_style_extra.data"))
|
||||
// 设置自定义样式
|
||||
mAMap?.setCustomMapStyle(customMapStyleOptions)
|
||||
mAMap?.setPointToCenter(sweeperSmallTextureMapView.width / 2, sweeperSmallTextureMapView.height / 2)
|
||||
@@ -184,7 +181,7 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
|
||||
}
|
||||
}
|
||||
|
||||
if (weltDataBean.weltDistance == SweeperConst.NONWELT) {//非贴边
|
||||
if (weltDataBean.weltDistance == com.mogo.och.sweeper.common.constant.SweeperConst.NONWELT) {//非贴边
|
||||
colorList.add(ContextCompat.getColor(context,R.color.sweeper_236299))
|
||||
} else if (weltDataBean.weltDistance < 0) {
|
||||
colorList.add(ContextCompat.getColor(context,R.color.sweeper_c22101))
|
||||
@@ -249,7 +246,7 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
|
||||
/**
|
||||
* 设置任务轨迹数据
|
||||
*/
|
||||
fun setRouteList(routeList: ArrayList<SweeperRoutePlanningUpdateReqBean.Result>) {
|
||||
fun setRouteList(routeList: ArrayList<com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean.Result>) {
|
||||
val routeCoordinatesLatLngs = mutableListOf<LatLng>()
|
||||
for (i in routeList.indices) {
|
||||
routeCoordinatesLatLngs.add(LatLng(routeList[i].latitude, routeList[i].longitude))
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.bean;
|
||||
package com.mogo.och.sweeper.operate.bean;
|
||||
|
||||
import com.mogo.eagle.core.data.BaseData;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.bean
|
||||
package com.mogo.och.sweeper.operate.bean
|
||||
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.bean
|
||||
package com.mogo.och.sweeper.operate.bean
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.bean
|
||||
package com.mogo.och.sweeper.operate.bean
|
||||
|
||||
/**
|
||||
* 子任务信息
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.bean;
|
||||
package com.mogo.och.sweeper.operate.bean;
|
||||
|
||||
public class SweeperSubTaskDetailBean {
|
||||
private int id; //子任务id
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.callback;
|
||||
package com.mogo.och.sweeper.operate.callback;
|
||||
|
||||
import com.mogo.eagle.core.data.map.MogoLocation;
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
package com.mogo.och.sweeper.callback
|
||||
package com.mogo.och.sweeper.operate.callback
|
||||
|
||||
import com.mogo.och.sweeper.bean.SweeperMainTaskBean
|
||||
import com.mogo.och.sweeper.bean.SweeperRoutePlanningUpdateReqBean
|
||||
import com.mogo.och.sweeper.bean.SweeperSubTaskBean
|
||||
import com.mogo.och.sweeper.bean.SweeperSubTaskDetailBean
|
||||
import com.mogo.och.sweeper.constant.SubTaskTypeEnum
|
||||
import com.mogo.och.sweeper.constant.TaskStatusEnum
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperMainTaskBean
|
||||
import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskBean
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskDetailBean
|
||||
import com.mogo.och.sweeper.operate.constant.SubTaskTypeEnum
|
||||
import com.mogo.och.sweeper.operate.constant.TaskStatusEnum
|
||||
import java.util.ArrayList
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
* @date: 2021/10/22
|
||||
*/
|
||||
interface ISweeperTaskCallback {
|
||||
interface ISweeperOperateTaskCallback {
|
||||
/**
|
||||
* 获取主任务列表
|
||||
*/
|
||||
fun setMainTaskList(mainTaskBeanList: MutableList<SweeperMainTaskBean>?,refresh:Boolean)
|
||||
fun setMainTaskList(mainTaskBeanList: MutableList<SweeperMainTaskBean>?, refresh:Boolean)
|
||||
|
||||
/**
|
||||
* 获取子任务列表
|
||||
*/
|
||||
fun setSubTaskBean(subTaskBean: SweeperSubTaskBean,isWorkingSubTask:Boolean)
|
||||
fun setSubTaskBean(subTaskBean: SweeperSubTaskBean, isWorkingSubTask:Boolean)
|
||||
|
||||
/**
|
||||
* 更新子任务状态
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.constant
|
||||
package com.mogo.och.sweeper.operate.constant
|
||||
|
||||
/**
|
||||
* 任务类型
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.constant
|
||||
package com.mogo.och.sweeper.operate.constant
|
||||
|
||||
/**
|
||||
* 当前任务操作菜单
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.mogo.och.sweeper.fragment;
|
||||
package com.mogo.och.sweeper.operate.fragment;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
@@ -7,12 +8,17 @@ import android.view.View;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.constraintlayout.widget.Group;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
|
||||
import com.amap.api.maps.model.LatLng;
|
||||
import com.amap.api.navi.model.NaviLatLng;
|
||||
import com.mogo.commons.mvp.IView;
|
||||
import com.mogo.commons.mvp.MvpFragment;
|
||||
import com.mogo.commons.mvp.Presenter;
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager;
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
|
||||
@@ -29,22 +35,20 @@ import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.map.uicontroller.VisualAngleMode;
|
||||
import com.mogo.och.common.module.map.AmapNaviToDestinationModel;
|
||||
import com.mogo.och.sweeper.R;
|
||||
import com.mogo.och.sweeper.bean.SweeperRoutePlanningUpdateReqBean;
|
||||
import com.mogo.och.sweeper.callback.ISweeperTaskDataToFragmentCallback;
|
||||
import com.mogo.och.sweeper.callback.IWeltMapSwitchToSmallCallback;
|
||||
import com.mogo.och.sweeper.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweeper.view.SweeperTrafficDataView;
|
||||
import com.mogo.och.sweeper.view.WeltSmallMapView;
|
||||
import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean;
|
||||
import com.mogo.och.sweeper.common.callback.ISweeperTaskDataToFragmentCallback;
|
||||
import com.mogo.och.sweeper.common.callback.IWeltMapSwitchToSmallCallback;
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweeper.common.fragment.SweeperAmapNaviFragment;
|
||||
import com.mogo.och.sweeper.common.fragment.WeltMapOverViewFragment;
|
||||
import com.mogo.och.sweeper.common.view.DebugView;
|
||||
import com.mogo.och.sweeper.common.view.WeltSmallMapView;
|
||||
import com.mogo.och.sweeper.operate.view.SweeperOperateTrafficDataView;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.constraintlayout.widget.Group;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
|
||||
/**
|
||||
* 网约车基础Fragment,主要负责布局通用界面,处理站点面板和通话面板互斥情况
|
||||
* <p>
|
||||
@@ -52,7 +56,7 @@ import androidx.fragment.app.FragmentTransaction;
|
||||
*
|
||||
* @author tongchenfei
|
||||
*/
|
||||
public abstract class BaseSweeperTabFragment<V extends IView, P extends Presenter<V>> extends MvpFragment<V, P> implements IMogoMapListener,
|
||||
public abstract class BaseSweeperOperateTabFragment<V extends IView, P extends Presenter<V>> extends MvpFragment<V, P> implements IMogoMapListener,
|
||||
View.OnClickListener, IWeltMapSwitchToSmallCallback, View.OnTouchListener {
|
||||
|
||||
private static final String TAG = "BaseSweeperTabFragment";
|
||||
@@ -69,7 +73,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
private MapBizView mapBizView;
|
||||
private Group groupTestPanel;
|
||||
//清扫车车辆基本信息 速度 档位 转向灯 红绿灯等
|
||||
private SweeperTrafficDataView mTrafficDataView;
|
||||
private SweeperOperateTrafficDataView mTrafficDataView;
|
||||
//人工驾驶地图View组控制
|
||||
private Group mGroupNaviPanel;
|
||||
//人工驾驶地图Fragment
|
||||
@@ -127,23 +131,21 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
setMessageBox();
|
||||
//设置左下角四个按钮监听事件
|
||||
setBottomBtnListener();
|
||||
// 模拟 不可自动驾驶,目前场景是刚开机,adas还未和工控机连接
|
||||
findViewById(R.id.btnAutopilotDisable).setOnClickListener(view ->
|
||||
debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE)
|
||||
//打开调试面板
|
||||
findViewById(R.id.btnOpenDebugView).setOnClickListener(view -> {
|
||||
Intent intent = new Intent();
|
||||
intent.setAction(DebugView.BROADCAST_ACTION);
|
||||
intent.putExtra(DebugView.BROADCAST_DATA_SHOW, true);
|
||||
LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent);
|
||||
}
|
||||
);
|
||||
|
||||
// 模拟 可自动驾驶,工控机连接正常,且处于人工干预状态
|
||||
findViewById(R.id.btnAutopilotEnable).setOnClickListener(view ->
|
||||
debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE)
|
||||
);
|
||||
|
||||
// 模拟 自动驾驶能力,自动驾驶中,可能是停车,可能是行进,但是是机器在处理车的前进后退,不是人
|
||||
findViewById(R.id.btnAutopilotRunning).setOnClickListener(view ->
|
||||
debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING)
|
||||
);
|
||||
// 模拟 结束子任务
|
||||
findViewById(R.id.btnEndTask).setOnClickListener(view ->
|
||||
debugEndSubTask()
|
||||
//关闭调试面板
|
||||
findViewById(R.id.btnCloseDebugView).setOnClickListener(view -> {
|
||||
Intent intent = new Intent();
|
||||
intent.setAction(DebugView.BROADCAST_ACTION);
|
||||
intent.putExtra(DebugView.BROADCAST_DATA_SHOW, false);
|
||||
LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent);
|
||||
}
|
||||
);
|
||||
mTrafficDataView.setOnLongClickListener(new View.OnLongClickListener() {
|
||||
@Override
|
||||
@@ -282,7 +284,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
/**
|
||||
* 车辆基本信息View
|
||||
*/
|
||||
public SweeperTrafficDataView getTrafficDataView() {
|
||||
public SweeperOperateTrafficDataView getTrafficDataView() {
|
||||
return mTrafficDataView;
|
||||
}
|
||||
|
||||
@@ -362,7 +364,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
if (isShow) {
|
||||
mGroupNaviPanel.setVisibility(View.VISIBLE);
|
||||
if (mOchAmapNaviFragment == null) {
|
||||
mOchAmapNaviFragment=SweeperAmapNaviFragment.newInstance();
|
||||
mOchAmapNaviFragment= SweeperAmapNaviFragment.newInstance();
|
||||
}
|
||||
if (mOchAmapNaviFragment.isHidden()) {
|
||||
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
|
||||
@@ -414,8 +416,8 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
mWeltDataBeanList,
|
||||
mSubTaskCoordinates,
|
||||
mRouteList,
|
||||
mProgress,
|
||||
(SweeperFragment) this);
|
||||
mProgress);
|
||||
this.setTaskDataToFragmentCallback(mWeltMapOverViewFragment);
|
||||
}
|
||||
if (mWeltMapOverViewFragment.isHidden()) {
|
||||
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.fragment
|
||||
package com.mogo.och.sweeper.operate.fragment
|
||||
|
||||
import android.graphics.Color
|
||||
import android.os.Bundle
|
||||
@@ -17,18 +17,21 @@ import com.mogo.eagle.core.utilcode.util.ClickUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.bean.*
|
||||
import com.mogo.och.sweeper.constant.SubTaskTypeEnum
|
||||
import com.mogo.och.sweeper.constant.TaskStatusEnum
|
||||
import com.mogo.och.sweeper.database.MyDataBase
|
||||
import com.mogo.och.sweeper.presenter.SweeperPresenter
|
||||
import com.mogo.och.sweeper.ui.adapter.TaskListAdapter
|
||||
import com.mogo.och.sweeper.ui.dialog.SweeperManualDrivingDialog
|
||||
import com.mogo.och.sweeper.ui.dialog.SweeperNoTitleCommonDialog
|
||||
import com.mogo.och.sweeper.ui.popwindow.MenuPopWindow
|
||||
import kotlinx.android.synthetic.main.fragment_och_sweeper.*
|
||||
import kotlinx.android.synthetic.main.sweeper_current_task_info.view.*
|
||||
import kotlinx.android.synthetic.main.sweeper_no_data_common_view.*
|
||||
import com.mogo.och.sweeper.operate.constant.SubTaskTypeEnum
|
||||
import com.mogo.och.sweeper.operate.constant.TaskStatusEnum
|
||||
import com.mogo.och.sweeper.common.database.MyDataBase
|
||||
import com.mogo.och.sweeper.operate.bean.SubInfo
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperMainTaskBean
|
||||
import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskBean
|
||||
import com.mogo.och.sweeper.operate.presenter.SweeperOperatePresenter
|
||||
import com.mogo.och.sweeper.operate.ui.adapter.TaskListAdapter
|
||||
import com.mogo.och.sweeper.common.view.SweeperManualDrivingDialog
|
||||
import com.mogo.och.sweeper.common.view.SweeperNoTitleCommonDialog
|
||||
import com.mogo.och.sweeper.operate.ui.popwindow.MenuPopWindow
|
||||
import kotlinx.android.synthetic.main.fragment_och_sweeper_operate.*
|
||||
import kotlinx.android.synthetic.main.sweeper_operate_current_task_info.view.*
|
||||
import kotlinx.android.synthetic.main.sweeper_operate_no_data_common_view.*
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlin.math.roundToInt
|
||||
@@ -36,10 +39,10 @@ import kotlin.math.roundToInt
|
||||
/**
|
||||
* 清扫车主界面
|
||||
*/
|
||||
class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresenter?>(), MenuPopWindow.OnMenuItemOnClickListener {
|
||||
class SweeperOperateFragment : BaseSweeperOperateTabFragment<SweeperOperateFragment?, SweeperOperatePresenter?>(), MenuPopWindow.OnMenuItemOnClickListener {
|
||||
|
||||
companion object {
|
||||
const val TAG = "SweeperFragment"
|
||||
const val TAG = "SweeperOperateFragment"
|
||||
}
|
||||
|
||||
private var mAdapter: TaskListAdapter? = null
|
||||
@@ -80,8 +83,8 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
}
|
||||
}
|
||||
|
||||
override fun createPresenter(): SweeperPresenter {
|
||||
return SweeperPresenter(this)
|
||||
override fun createPresenter(): SweeperOperatePresenter {
|
||||
return SweeperOperatePresenter(this)
|
||||
}
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
@@ -90,7 +93,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
}
|
||||
|
||||
override fun getTaskListPanelViewId(): Int {
|
||||
return R.layout.fragment_och_sweeper
|
||||
return R.layout.fragment_och_sweeper_operate
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -179,7 +182,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
mAdapter?.selectPosition(position)
|
||||
tvTaskConfirm.isSelected = true
|
||||
tvTaskConfirm.setTextColor(Color.parseColor("#FFFFFFFF"))
|
||||
this@SweeperFragment.mMainTask = mainTask
|
||||
this@SweeperOperateFragment.mMainTask = mainTask
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,8 +1,10 @@
|
||||
package com.mogo.och.sweeper.model;
|
||||
package com.mogo.och.sweeper.operate.model;
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_SWEEPER;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
@@ -12,6 +14,8 @@ import com.amap.api.maps.model.LatLng;
|
||||
import com.elegant.network.utils.GsonUtil;
|
||||
import com.mogo.aicloud.services.socket.IMogoOnMessageListener;
|
||||
import com.mogo.commons.AbsMogoApplication;
|
||||
import com.mogo.commons.module.intent.IMogoIntentListener;
|
||||
import com.mogo.commons.module.intent.IntentManager;
|
||||
import com.mogo.commons.module.status.IMogoStatusChangedListener;
|
||||
import com.mogo.commons.module.status.MogoStatusManager;
|
||||
import com.mogo.commons.module.status.StatusDescriptor;
|
||||
@@ -40,21 +44,22 @@ import com.mogo.och.common.module.utils.PinYinUtil;
|
||||
import com.mogo.och.common.module.utils.ToastUtilsOch;
|
||||
import com.mogo.och.common.module.voice.VoiceNotice;
|
||||
import com.mogo.och.sweeper.R;
|
||||
import com.mogo.och.sweeper.bean.BaseResponse;
|
||||
import com.mogo.och.sweeper.bean.SubInfo;
|
||||
import com.mogo.och.sweeper.bean.SweeperMainTaskBean;
|
||||
import com.mogo.och.sweeper.bean.SweeperRoutePlanningUpdateReqBean;
|
||||
import com.mogo.och.sweeper.bean.SweeperSubTaskBean;
|
||||
import com.mogo.och.sweeper.bean.SweeperSubTaskDetailBean;
|
||||
import com.mogo.och.sweeper.callback.ISweeperADASStatusCallback;
|
||||
import com.mogo.och.sweeper.callback.ISweeperControllerStatusCallback;
|
||||
import com.mogo.och.sweeper.callback.ISweeperTaskCallback;
|
||||
import com.mogo.och.sweeper.constant.SubTaskTypeEnum;
|
||||
import com.mogo.och.sweeper.constant.SweeperConst;
|
||||
import com.mogo.och.sweeper.constant.TaskStatusEnum;
|
||||
import com.mogo.och.sweeper.net.SweeperServiceManager;
|
||||
import com.mogo.och.sweeper.util.SweeperAnalyticsManager;
|
||||
import com.mogo.och.sweeper.util.SweeperTrajectoryManager;
|
||||
import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean;
|
||||
import com.mogo.och.sweeper.common.callback.ISweeperADASStatusCallback;
|
||||
import com.mogo.och.sweeper.common.constant.SweeperConst;
|
||||
import com.mogo.och.sweeper.common.util.SweeperAnalyticsManager;
|
||||
import com.mogo.och.sweeper.common.view.DebugView;
|
||||
import com.mogo.och.sweeper.operate.bean.BaseResponse;
|
||||
import com.mogo.och.sweeper.operate.bean.SubInfo;
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperMainTaskBean;
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskBean;
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskDetailBean;
|
||||
import com.mogo.och.sweeper.operate.callback.ISweeperControllerStatusCallback;
|
||||
import com.mogo.och.sweeper.operate.callback.ISweeperOperateTaskCallback;
|
||||
import com.mogo.och.sweeper.operate.constant.SubTaskTypeEnum;
|
||||
import com.mogo.och.sweeper.operate.constant.TaskStatusEnum;
|
||||
import com.mogo.och.sweeper.operate.net.SweeperOperateServiceManager;
|
||||
import com.mogo.och.sweeper.operate.util.SweeperTrajectoryManager;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -73,9 +78,9 @@ import mogo.telematics.pad.MessagePad;
|
||||
* <p>
|
||||
* 清扫车任务管理
|
||||
*/
|
||||
public class SweeperTaskModel {
|
||||
private final String TAG = SweeperTaskModel.class.getSimpleName();
|
||||
private static volatile SweeperTaskModel sInstance;
|
||||
public class SweeperOperateTaskModel {
|
||||
private final String TAG = SweeperOperateTaskModel.class.getSimpleName();
|
||||
private static volatile SweeperOperateTaskModel sInstance;
|
||||
public double mLongitude = 0;
|
||||
public double mLatitude = 0;
|
||||
private Context mContext;
|
||||
@@ -83,7 +88,7 @@ public class SweeperTaskModel {
|
||||
private static final int VEHICLE_TYPE = 10;
|
||||
private ISweeperControllerStatusCallback mControllerStatusCallback; //Model->Presenter:VR mode等
|
||||
private ISweeperADASStatusCallback mADASStatusCallback;
|
||||
private ISweeperTaskCallback mSweeperTaskCallback;
|
||||
private ISweeperOperateTaskCallback mSweeperTaskCallback;
|
||||
ArrayList<SweeperRoutePlanningUpdateReqBean.Result> points = new ArrayList<>();//全路径信息
|
||||
//当前子任务详情信息包括轨迹文件信息
|
||||
private SweeperSubTaskDetailBean mCurrentSubTaskDetail;
|
||||
@@ -105,18 +110,18 @@ public class SweeperTaskModel {
|
||||
//自动驾驶状态
|
||||
private int mAutopilotState = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE;
|
||||
|
||||
public static SweeperTaskModel getInstance() {
|
||||
public static SweeperOperateTaskModel getInstance() {
|
||||
if (sInstance == null) {
|
||||
synchronized (SweeperTaskModel.class) {
|
||||
synchronized (SweeperOperateTaskModel.class) {
|
||||
if (sInstance == null) {
|
||||
sInstance = new SweeperTaskModel();
|
||||
sInstance = new SweeperOperateTaskModel();
|
||||
}
|
||||
}
|
||||
}
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
private SweeperTaskModel() {
|
||||
private SweeperOperateTaskModel() {
|
||||
|
||||
}
|
||||
|
||||
@@ -137,6 +142,9 @@ public class SweeperTaskModel {
|
||||
OCHSocketMessageManager.msgMonitorType,
|
||||
mMogoOnMessageListener);
|
||||
|
||||
IntentManager.getInstance()
|
||||
.registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener);
|
||||
|
||||
//2022.1.28
|
||||
// 调用Disposable.dispose() 时候会出现InterruptedException 导致出现崩溃
|
||||
// The exception could not be delivered to the consumer because it has already canceled/disposed
|
||||
@@ -183,7 +191,7 @@ public class SweeperTaskModel {
|
||||
this.mControllerStatusCallback = callback;
|
||||
}
|
||||
|
||||
public void setSweeperTaskCallback(ISweeperTaskCallback callback) {
|
||||
public void setSweeperTaskCallback(ISweeperOperateTaskCallback callback) {
|
||||
this.mSweeperTaskCallback = callback;
|
||||
}
|
||||
|
||||
@@ -191,7 +199,8 @@ public class SweeperTaskModel {
|
||||
|
||||
@Override
|
||||
public void onAutopilotRotting(MessagePad.GlobalPathResp routeList) {
|
||||
if (null != routeList && routeList.getWayPointsList()!=null&&routeList.getWayPointsList().size() > 0) {
|
||||
if (null != routeList && routeList.getWayPointsList() != null && routeList.getWayPointsList().size() > 0) {
|
||||
DebugView.Companion.printInfoMsg("[MAP全局规划回调] 回调,getWayPointsList.Size=" + routeList.getWayPointsList().size());
|
||||
if (mCurrentSubTaskDetail.getLineId() != mLineId) {//判断是否同一条路线
|
||||
mLineId = mCurrentSubTaskDetail.getLineId();
|
||||
points.addAll(coordinateConverterWgsToGcjList(mContext, routeList.getWayPointsList()));
|
||||
@@ -216,7 +225,7 @@ public class SweeperTaskModel {
|
||||
*/
|
||||
public void clearRouteList() {
|
||||
points.clear();
|
||||
mSubTaskType=0;
|
||||
mSubTaskType = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -270,10 +279,26 @@ public class SweeperTaskModel {
|
||||
}
|
||||
CallerLogger.d(M_SWEEPER + TAG, "onMsgReceived = " + obj.getMessage());
|
||||
OCHSocketMessageManager.INSTANCE.pushAppOperationalMsgBox(obj.getPushTimeStamp(),
|
||||
obj.getMessage(),OCHSocketMessageManager.OPERATION_SYSTEM);
|
||||
obj.getMessage(), OCHSocketMessageManager.OPERATION_SYSTEM);
|
||||
}
|
||||
};
|
||||
|
||||
//监听网络变化,避免启动机器时无网导致无法更新信息
|
||||
private final IMogoIntentListener mNetWorkIntentListener = new IMogoIntentListener() {
|
||||
|
||||
@Override
|
||||
public void onIntentReceived(String intentStr, Intent intent) {
|
||||
CallerLogger.d(TAG, "mNetWorkIntentListener: onIntentReceived=" + intentStr);
|
||||
if ((ConnectivityManager.CONNECTIVITY_ACTION.equals(intentStr))) {
|
||||
if (NetworkUtils.isConnected(mContext)) {
|
||||
DebugView.Companion.printInfoMsg("[网络状态变化] isConnected=true");
|
||||
} else {
|
||||
DebugView.Companion.printErrorMsg("[网络状态变化] isConnected=false");
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private final IMogoStatusChangedListener mMogoStatusChangedListener = new IMogoStatusChangedListener() {
|
||||
// VR mode变更回调
|
||||
@Override
|
||||
@@ -281,6 +306,7 @@ public class SweeperTaskModel {
|
||||
if (StatusDescriptor.VR_MODE == descriptor) {
|
||||
if (mControllerStatusCallback != null) {
|
||||
mControllerStatusCallback.onVRModeChanged(isTrue);
|
||||
DebugView.Companion.printInfoMsg("[VRMode变化] isVRMode=" + isTrue);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -294,6 +320,7 @@ public class SweeperTaskModel {
|
||||
|
||||
@Override
|
||||
public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) {
|
||||
DebugView.Companion.printInfoMsg("[启自驾] 执行失败,code=" + startFailedCode + ", msg=" + startFailedMessage);
|
||||
SweeperAnalyticsManager.getInstance().triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage);
|
||||
if (mADASStatusCallback != null && !FunctionBuildConfig.isDemoMode) {
|
||||
CallerLogger.e(M_SWEEPER + TAG, "mAdasStartFailureListener = " + startFailedMessage);
|
||||
@@ -308,7 +335,7 @@ public class SweeperTaskModel {
|
||||
public void onChassisLocationGCJ02(@Nullable MogoLocation gnssInfo) {
|
||||
if (null == gnssInfo) return;
|
||||
CallerLogger.e(M_SWEEPER + TAG, "高德定位到站:mLongitude = " + gnssInfo.getLongitude()
|
||||
+ ", mLatitude=" + gnssInfo.getLatitude() + ", mSubTaskType=" + mSubTaskType +", mIsSubTaskWorking=" + mIsSubTaskWorking
|
||||
+ ", mLatitude=" + gnssInfo.getLatitude() + ", mSubTaskType=" + mSubTaskType + ", mIsSubTaskWorking=" + mIsSubTaskWorking
|
||||
+ ", isAutopilotSubTaskArriveEndSite=" + isAutopilotSubTaskArriveEndSite
|
||||
);
|
||||
if (mControllerStatusCallback != null) {
|
||||
@@ -362,6 +389,9 @@ public class SweeperTaskModel {
|
||||
if (distance <= SweeperConst.ARRIVE_AT_END_STATION_DISTANCE) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "行程日志-judgeArrivedStation() distance = " + distance
|
||||
+ " to " + mCurrentSubTaskDetail.getEndSiteName());
|
||||
DebugView.Companion.printInfoMsg(
|
||||
"[自车定位围栏] 触发围栏,围栏范围:" + SweeperConst.ARRIVE_AT_END_STATION_DISTANCE + "米"
|
||||
);
|
||||
isAutopilotSubTaskArriveEndSite = true;
|
||||
//到达子任务终点 结束子任务
|
||||
subTaskEnd(mIsFirstSubtask, mIsLastSubtask, mSubTaskId); //无自动驾驶到终点信息传null
|
||||
@@ -384,9 +414,11 @@ public class SweeperTaskModel {
|
||||
* @param isRestart
|
||||
*/
|
||||
private void startAutopilot(boolean isRestart) {
|
||||
DebugView.Companion.printInfoMsg("[启自驾] startAutoPilot");
|
||||
if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()) {
|
||||
ToastUtils.showLong(OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason() +
|
||||
", 请稍候重试");
|
||||
DebugView.Companion.printErrorMsg("[启自驾]" + OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason());
|
||||
triggerUnableStartAPReasonEvent();
|
||||
return;
|
||||
}
|
||||
@@ -395,9 +427,11 @@ public class SweeperTaskModel {
|
||||
AutopilotControlParameters parameters = initAutopilotControlParameters();
|
||||
if (null == parameters) {
|
||||
CallerLogger.e(M_SWEEPER + TAG, "行程日志-AutopilotControlParameters is empty.");
|
||||
DebugView.Companion.printErrorMsg("[启自驾]行程日志-AutopilotControlParameters is empty");
|
||||
return;
|
||||
}
|
||||
CallerAutoPilotControlManager.INSTANCE.startAutoPilot(parameters);
|
||||
DebugView.Companion.printInfoMsg("[启自驾] 调用成功");
|
||||
CallerLogger.d(M_SWEEPER + TAG, "行程日志-开启自动驾驶====" + GsonUtil.jsonFromObject(parameters)
|
||||
+ " startLatLon=" + parameters.startName + ",endLatLon=" + parameters.endName +
|
||||
"isRestart = " + isRestart);
|
||||
@@ -444,6 +478,9 @@ public class SweeperTaskModel {
|
||||
public void onArriveTaskEnd(MessagePad.ArrivalNotification data) {
|
||||
//MAP 280 每隔100ms左右返回一次到站, 导致在到达中间站后再次滑动出发后会有时间差,收到一次到站,出现问题
|
||||
//此处比对 自驾告诉的子任务终点坐标和本地应到子任务终点坐标, 一致时才表示子任务完成
|
||||
DebugView.Companion.printInfoMsg("[MAP到站通知] 上报到站,endLocation=("
|
||||
+ ((data == null || data.getEndLocation() == null) ? "null" : data.getEndLocation().toString())
|
||||
+ ")");
|
||||
if (data != null && data.getEndLocation() != null && mCurrentSubTaskDetail != null) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "MAP到站通知:" + mCurrentSubTaskDetail.getEndSiteName() + " 经度:"
|
||||
+ data.getEndLocation().getLongitude() + " 纬度:" + data.getEndLocation().getLatitude());
|
||||
@@ -494,7 +531,6 @@ public class SweeperTaskModel {
|
||||
* 将轨迹文件信息同步到鹰眼
|
||||
*/
|
||||
private void updateAutopilotControlParameters() {
|
||||
|
||||
AutopilotControlParameters parameters = initAutopilotControlParameters();
|
||||
if (null == parameters) {
|
||||
CallerLogger.e(M_SWEEPER + TAG, "AutopilotControlParameters is empty.");
|
||||
@@ -503,11 +539,13 @@ public class SweeperTaskModel {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "AutopilotControlParameters" + GsonUtil.jsonFromObject(parameters));
|
||||
CallerLogger.d(M_SWEEPER + TAG, "AutopilotControlParameters is update.");
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(parameters);
|
||||
DebugView.Companion.printInfoMsg("[启自驾] updateAutopilotControlParameters调用成功");
|
||||
}
|
||||
|
||||
private void clearAutopilotControlParameters() {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "AutopilotControlParameters is clear.");
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(null);
|
||||
DebugView.Companion.printInfoMsg("[启自驾] clearAutopilotControlParameters调用成功");
|
||||
}
|
||||
|
||||
private AutopilotControlParameters initAutopilotControlParameters() {
|
||||
@@ -538,10 +576,12 @@ public class SweeperTaskModel {
|
||||
* 获取当前正在执行的任务
|
||||
*/
|
||||
public void getCurrentTask() {
|
||||
SweeperServiceManager.getCurrentTask(mContext, new OchCommonServiceCallback<BaseResponse<SweeperSubTaskBean>>() {
|
||||
DebugView.Companion.printInfoMsg("[查询当前任务] 请求中");
|
||||
SweeperOperateServiceManager.getCurrentTask(mContext, new OchCommonServiceCallback<BaseResponse<SweeperSubTaskBean>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<SweeperSubTaskBean> data) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "getCurrentTask:" + GsonUtil.jsonFromObject(data));
|
||||
DebugView.Companion.printInfoMsg("[查询当前任务] 请求success");
|
||||
if (mSweeperTaskCallback != null && data != null) {
|
||||
SweeperSubTaskBean sweeperSubTaskBean = data.getData();
|
||||
if (sweeperSubTaskBean != null && sweeperSubTaskBean.getSubList() != null && sweeperSubTaskBean.getSubList().size() > 0) {
|
||||
@@ -556,8 +596,10 @@ public class SweeperTaskModel {
|
||||
public void onError() {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
|
||||
DebugView.Companion.printErrorMsg("[查询当前任务] 请求error," + mContext.getString(R.string.network_error_tip));
|
||||
} else {
|
||||
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
|
||||
DebugView.Companion.printErrorMsg("[查询当前任务] 请求error," + mContext.getString(R.string.request_error_tip));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -566,8 +608,10 @@ public class SweeperTaskModel {
|
||||
if (ToastUtilsOch.isCustomFastClick(5000)) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
DebugView.Companion.printErrorMsg("[查询当前任务] 请求failed, 网络异常,请稍后重试");
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
DebugView.Companion.printErrorMsg("[查询当前任务] 请求failed, " + msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -578,10 +622,12 @@ public class SweeperTaskModel {
|
||||
* 获取主任务列表
|
||||
*/
|
||||
public void getMainTaskList(boolean refresh) {
|
||||
SweeperServiceManager.getMainTaskList(mContext, new OchCommonServiceCallback<BaseResponse<List<SweeperMainTaskBean>>>() {
|
||||
DebugView.Companion.printInfoMsg("[查询主任务] 请求中");
|
||||
SweeperOperateServiceManager.getMainTaskList(mContext, new OchCommonServiceCallback<BaseResponse<List<SweeperMainTaskBean>>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<List<SweeperMainTaskBean>> data) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "getMainTaskList:" + GsonUtil.jsonFromObject(data));
|
||||
DebugView.Companion.printInfoMsg("[查询主任务] 请求success");
|
||||
if (mSweeperTaskCallback != null && data != null && data.getCode() == 0) {
|
||||
List<SweeperMainTaskBean> list = data.getData();
|
||||
mSweeperTaskCallback.setMainTaskList(list, refresh);
|
||||
@@ -593,8 +639,10 @@ public class SweeperTaskModel {
|
||||
if (ToastUtilsOch.isCustomFastClick(5000)) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
DebugView.Companion.printErrorMsg("[查询主任务] 请求error, 网络异常,请稍后重试");
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
DebugView.Companion.printErrorMsg("[查询主任务] 请求error, " + msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -603,8 +651,10 @@ public class SweeperTaskModel {
|
||||
public void onError() {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
|
||||
DebugView.Companion.printErrorMsg("[查询主任务] 请求failed, " + mContext.getString(R.string.network_error_tip));
|
||||
} else {
|
||||
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
|
||||
DebugView.Companion.printErrorMsg("[查询主任务] 请求failed, " + mContext.getString(R.string.request_error_tip));
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -614,10 +664,12 @@ public class SweeperTaskModel {
|
||||
* 获取子任务列表
|
||||
*/
|
||||
public void getSubTaskList(int taskId, SweeperSubTaskBean sweeperSubTaskBean) {
|
||||
SweeperServiceManager.getSubTaskList(taskId, mContext, new OchCommonServiceCallback<BaseResponse<List<SubInfo>>>() {
|
||||
DebugView.Companion.printInfoMsg("[查询子任务] 请求中, taskId=" + taskId);
|
||||
SweeperOperateServiceManager.getSubTaskList(taskId, mContext, new OchCommonServiceCallback<BaseResponse<List<SubInfo>>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<List<SubInfo>> data) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "getSubTaskList:" + GsonUtil.jsonFromObject(data));
|
||||
DebugView.Companion.printInfoMsg("[查询子任务] 请求success, taskId=" + taskId);
|
||||
if (mSweeperTaskCallback != null && data != null && data.getCode() == 0) {
|
||||
List<SubInfo> list = data.getData();
|
||||
if (list != null && list.size() > 0) {
|
||||
@@ -634,8 +686,10 @@ public class SweeperTaskModel {
|
||||
if (ToastUtilsOch.isCustomFastClick(5000)) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
DebugView.Companion.printErrorMsg("[查询子任务] 请求failed, 网络异常,请稍后重试, taskId=" + taskId);
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
DebugView.Companion.printErrorMsg("[查询子任务] 请求failed, " + msg + ", taskId=" + taskId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -644,8 +698,10 @@ public class SweeperTaskModel {
|
||||
public void onError() {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
|
||||
DebugView.Companion.printErrorMsg("[查询子任务] 请求error, " + mContext.getString(R.string.network_error_tip) + ", taskId=" + taskId);
|
||||
} else {
|
||||
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
|
||||
DebugView.Companion.printErrorMsg("[查询子任务] 请求error, " + mContext.getString(R.string.request_error_tip) + ", taskId=" + taskId);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -655,10 +711,12 @@ public class SweeperTaskModel {
|
||||
* 获取子任务详情包括轨迹文件信息
|
||||
*/
|
||||
public void getSubTaskDetail(boolean isFirst, boolean isEnd, int subTaskId, SubTaskTypeEnum subTaskType, boolean isStartSubtask) {
|
||||
SweeperServiceManager.getSubTaskDetail(subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<SweeperSubTaskDetailBean>>() {
|
||||
DebugView.Companion.printInfoMsg("[查询子任务详情及轨迹信息] 请求中, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
SweeperOperateServiceManager.getSubTaskDetail(subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<SweeperSubTaskDetailBean>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<SweeperSubTaskDetailBean> data) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "getSubTaskDetail:" + GsonUtil.jsonFromObject(data));
|
||||
DebugView.Companion.printInfoMsg("[查询子任务详情及轨迹信息] 请求success, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
if (data != null) {
|
||||
mCurrentSubTaskDetail = data.getData();
|
||||
if (mCurrentSubTaskDetail != null) {
|
||||
@@ -693,8 +751,10 @@ public class SweeperTaskModel {
|
||||
if (ToastUtilsOch.isCustomFastClick(5000)) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
DebugView.Companion.printErrorMsg("[查询子任务详情及轨迹信息] 请求failed, 网络异常,请稍后重试, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
DebugView.Companion.printErrorMsg("[查询子任务详情及轨迹信息] 请求failed, " + msg + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -703,8 +763,10 @@ public class SweeperTaskModel {
|
||||
public void onError() {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
|
||||
DebugView.Companion.printErrorMsg("[查询子任务详情及轨迹信息] 请求Error, " + mContext.getString(R.string.network_error_tip) + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
} else {
|
||||
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
|
||||
DebugView.Companion.printErrorMsg("[查询子任务详情及轨迹信息] 请求Error, " + mContext.getString(R.string.request_error_tip) + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -714,10 +776,12 @@ public class SweeperTaskModel {
|
||||
* 子任务开始上报
|
||||
*/
|
||||
public void subTaskStart(boolean isFirst, boolean isEnd, int subTaskId, SubTaskTypeEnum subTaskType) {
|
||||
SweeperServiceManager.subTaskStart(isFirst, isEnd, subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<Boolean>>() {
|
||||
DebugView.Companion.printInfoMsg("[子任务开始上报] 请求中, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
SweeperOperateServiceManager.subTaskStart(isFirst, isEnd, subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<Boolean>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<Boolean> data) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "subTaskStart:" + GsonUtil.jsonFromObject(data));
|
||||
DebugView.Companion.printInfoMsg("[子任务开始上报] 请求success, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
if (mSweeperTaskCallback != null && data != null) {
|
||||
if (data.getData()) {
|
||||
mIsSubTaskWorking = true;
|
||||
@@ -725,7 +789,7 @@ public class SweeperTaskModel {
|
||||
mSweeperTaskCallback.updateSubTaskStatus(TaskStatusEnum.START_SUBTASK, false);
|
||||
if (subTaskType == SubTaskTypeEnum.AUTOPILOT_SUBTYPE) {//如果是自动驾驶子任务子开启自驾
|
||||
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
|
||||
SweeperTaskModel.getInstance().startBeautificationMode();
|
||||
SweeperOperateTaskModel.getInstance().startBeautificationMode();
|
||||
}
|
||||
//ÏstartAutopilot(false);
|
||||
} else {
|
||||
@@ -743,8 +807,10 @@ public class SweeperTaskModel {
|
||||
if (ToastUtilsOch.isCustomFastClick(5000)) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
DebugView.Companion.printErrorMsg("[子任务开始上报] 请求failed, 网络异常,请稍后重试, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
DebugView.Companion.printErrorMsg("[子任务开始上报] 请求failed, " + msg + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -753,8 +819,10 @@ public class SweeperTaskModel {
|
||||
public void onError() {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
|
||||
DebugView.Companion.printErrorMsg("[子任务开始上报] 请求error, " + mContext.getString(R.string.network_error_tip) + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
} else {
|
||||
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
|
||||
DebugView.Companion.printErrorMsg("[子任务开始上报] 请求error, " + mContext.getString(R.string.request_error_tip) + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -764,11 +832,13 @@ public class SweeperTaskModel {
|
||||
* 子任务结束上报
|
||||
*/
|
||||
public void subTaskEnd(boolean isFirst, boolean isEnd, int subTaskId) {
|
||||
SweeperServiceManager.subTaskEnd(isFirst, isEnd, subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<Boolean>>() {
|
||||
DebugView.Companion.printInfoMsg("[子任务结束上报] 请求中, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
SweeperOperateServiceManager.subTaskEnd(isFirst, isEnd, subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<Boolean>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<Boolean> data) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "subTaskEnd:" +
|
||||
String.format("isFirst=%b; isEnd=%b; ", isFirst, isEnd) + GsonUtil.jsonFromObject(data));
|
||||
DebugView.Companion.printInfoMsg("[子任务结束上报] 请求success, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
if (data != null) {
|
||||
if (data.getData()) {
|
||||
mIsSubTaskWorking = false;
|
||||
@@ -777,7 +847,7 @@ public class SweeperTaskModel {
|
||||
}
|
||||
if (isEnd) {
|
||||
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
|
||||
SweeperTaskModel.getInstance().closeBeautificationMode();
|
||||
SweeperOperateTaskModel.getInstance().closeBeautificationMode();
|
||||
}
|
||||
clearAutopilotControlParameters();
|
||||
//结束自动驾驶
|
||||
@@ -792,9 +862,11 @@ public class SweeperTaskModel {
|
||||
if (ToastUtilsOch.isCustomFastClick(5000)) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
DebugView.Companion.printErrorMsg("[子任务结束上报] 请求failed, 网络异常,请稍后重试, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
} else {
|
||||
if (isAutopilotSubTaskArriveEndSite) return;
|
||||
ToastUtils.showShort(msg);
|
||||
DebugView.Companion.printErrorMsg("[子任务结束上报] 请求failed, " + msg + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -803,8 +875,10 @@ public class SweeperTaskModel {
|
||||
public void onError() {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
|
||||
DebugView.Companion.printErrorMsg("[子任务结束上报] 请求error, " + mContext.getString(R.string.network_error_tip) + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
} else {
|
||||
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
|
||||
DebugView.Companion.printErrorMsg("[子任务结束上报] 请求error, " + mContext.getString(R.string.request_error_tip) + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -815,11 +889,13 @@ public class SweeperTaskModel {
|
||||
* 子任务跳过上报
|
||||
*/
|
||||
public void subTaskSkip(boolean isFirst, boolean isEnd, int subTaskId) {
|
||||
SweeperServiceManager.subTaskSkip(isFirst, isEnd, subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<Boolean>>() {
|
||||
DebugView.Companion.printInfoMsg("[子任务跳过上报] 请求中, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
SweeperOperateServiceManager.subTaskSkip(isFirst, isEnd, subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<Boolean>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<Boolean> data) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "subTaskSkip:" +
|
||||
String.format("isFirst=%b; isEnd=%b; ", isFirst, isEnd)+ GsonUtil.jsonFromObject(data));
|
||||
String.format("isFirst=%b; isEnd=%b; ", isFirst, isEnd) + GsonUtil.jsonFromObject(data));
|
||||
DebugView.Companion.printInfoMsg("[子任务跳过上报] 请求success, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
if (mSweeperTaskCallback != null && data != null) {
|
||||
if (data.getData()) {
|
||||
mIsSubTaskWorking = false;
|
||||
@@ -835,8 +911,10 @@ public class SweeperTaskModel {
|
||||
if (ToastUtilsOch.isCustomFastClick(5000)) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
DebugView.Companion.printErrorMsg("[子任务跳过上报] 请求failed, 网络异常,请稍后重试, isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
DebugView.Companion.printErrorMsg("[子任务跳过上报] 请求failed, " + msg + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -845,8 +923,10 @@ public class SweeperTaskModel {
|
||||
public void onError() {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
|
||||
DebugView.Companion.printErrorMsg("[子任务跳过上报] 请求error, " + mContext.getString(R.string.network_error_tip) + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
} else {
|
||||
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
|
||||
DebugView.Companion.printErrorMsg("[子任务跳过上报] 请求error, " + mContext.getString(R.string.request_error_tip) + ", isFirst=" + isFirst + ", isEnd=" + isEnd + ", subTaskId=" + subTaskId);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -856,10 +936,12 @@ public class SweeperTaskModel {
|
||||
* 主任务重置
|
||||
*/
|
||||
public void mainTaskReset(int taskId) {
|
||||
SweeperServiceManager.mainTaskReset(taskId, mContext, new OchCommonServiceCallback<BaseResponse<Boolean>>() {
|
||||
DebugView.Companion.printInfoMsg("[主任务重置] 请求中, taskId=" + taskId);
|
||||
SweeperOperateServiceManager.mainTaskReset(taskId, mContext, new OchCommonServiceCallback<BaseResponse<Boolean>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<Boolean> data) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "mainTaskReset:" + GsonUtil.jsonFromObject(data));
|
||||
DebugView.Companion.printInfoMsg("[主任务重置] 请求success, taskId=" + taskId);
|
||||
// 主任务重置 当前子任务也需重置
|
||||
mIsSubTaskWorking = false;
|
||||
isAutopilotSubTaskArriveEndSite = false;
|
||||
@@ -873,8 +955,10 @@ public class SweeperTaskModel {
|
||||
if (ToastUtilsOch.isCustomFastClick(5000)) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
DebugView.Companion.printErrorMsg("[主任务重置] 请求failed, 网络异常,请稍后重试, taskId=" + taskId);
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
DebugView.Companion.printErrorMsg("[主任务重置] 请求failed, " + msg + ", taskId=" + taskId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -883,8 +967,10 @@ public class SweeperTaskModel {
|
||||
public void onError() {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
|
||||
DebugView.Companion.printErrorMsg("[主任务重置] 请求error, " + mContext.getString(R.string.network_error_tip) + ", taskId=" + taskId);
|
||||
} else {
|
||||
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
|
||||
DebugView.Companion.printErrorMsg("[主任务重置] 请求error, " + mContext.getString(R.string.request_error_tip)+ ", taskId=" + taskId);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -893,5 +979,6 @@ public class SweeperTaskModel {
|
||||
//结束自动驾驶
|
||||
public void cancelAutoPilot() {
|
||||
CallerAutoPilotControlManager.INSTANCE.cancelAutoPilot();
|
||||
DebugView.Companion.printInfoMsg("[取消自动驾驶] 请求成功");
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.mogo.och.sweeper.net;
|
||||
import com.mogo.och.sweeper.bean.BaseResponse;
|
||||
import com.mogo.och.sweeper.bean.SubInfo;
|
||||
import com.mogo.och.sweeper.bean.SubStartRequest;
|
||||
import com.mogo.och.sweeper.bean.SweeperSubTaskBean;
|
||||
import com.mogo.och.sweeper.bean.SweeperMainTaskBean;
|
||||
import com.mogo.och.sweeper.bean.SweeperSubTaskDetailBean;
|
||||
package com.mogo.och.sweeper.operate.net;
|
||||
import com.mogo.och.sweeper.operate.bean.BaseResponse;
|
||||
import com.mogo.och.sweeper.operate.bean.SubInfo;
|
||||
import com.mogo.och.sweeper.operate.bean.SubStartRequest;
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskBean;
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperMainTaskBean;
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskDetailBean;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -21,7 +21,7 @@ import retrofit2.http.QueryMap;
|
||||
/**
|
||||
* 清扫车相关接口
|
||||
*/
|
||||
public interface ISweeperApiService {
|
||||
public interface ISweeperOperateApiService {
|
||||
/**
|
||||
* 获取当前正在执行的任务
|
||||
* @param appId
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.net
|
||||
package com.mogo.och.sweeper.operate.net
|
||||
|
||||
import android.content.Context
|
||||
import com.elegant.network.utils.GsonUtil
|
||||
@@ -10,13 +10,18 @@ import com.mogo.och.common.module.biz.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.biz.network.OchCommonSubscribeImpl
|
||||
import com.mogo.och.common.module.biz.network.interceptor.transformTry
|
||||
import com.mogo.och.sweeper.bean.*
|
||||
import com.mogo.och.sweeper.model.SweeperTaskModel
|
||||
import com.mogo.och.sweeper.operate.model.SweeperOperateTaskModel
|
||||
import com.mogo.och.sweeper.operate.bean.BaseResponse
|
||||
import com.mogo.och.sweeper.operate.bean.SubInfo
|
||||
import com.mogo.och.sweeper.operate.bean.SubStartRequest
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperMainTaskBean
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskBean
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskDetailBean
|
||||
|
||||
object SweeperServiceManager {
|
||||
private val TAG = SweeperTaskModel::class.java.simpleName
|
||||
private val mService: ISweeperApiService = MoGoRetrofitFactory.getInstance(OchCommonConst.getSweeperUrl()).create(
|
||||
ISweeperApiService::class.java
|
||||
object SweeperOperateServiceManager {
|
||||
private val TAG = SweeperOperateTaskModel::class.java.simpleName
|
||||
private val mService: ISweeperOperateApiService = MoGoRetrofitFactory.getInstance(OchCommonConst.getSweeperUrl()).create(
|
||||
ISweeperOperateApiService::class.java
|
||||
)
|
||||
|
||||
/**
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.presenter;
|
||||
package com.mogo.och.sweeper.operate.presenter;
|
||||
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_SWEEPER;
|
||||
@@ -23,23 +23,24 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils;
|
||||
import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager;
|
||||
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil;
|
||||
import com.mogo.och.common.module.utils.NumberFormatUtil;
|
||||
import com.mogo.och.sweeper.bean.SweeperMainTaskBean;
|
||||
import com.mogo.och.sweeper.bean.SweeperRoutePlanningUpdateReqBean;
|
||||
import com.mogo.och.sweeper.bean.SweeperSubTaskBean;
|
||||
import com.mogo.och.sweeper.bean.SweeperSubTaskDetailBean;
|
||||
import com.mogo.och.sweeper.callback.ISweeperADASStatusCallback;
|
||||
import com.mogo.och.sweeper.callback.ISweeperControllerStatusCallback;
|
||||
import com.mogo.och.sweeper.callback.ISweeperTaskCallback;
|
||||
import com.mogo.och.sweeper.callback.ISweeperTaskRouteCallback;
|
||||
import com.mogo.och.sweeper.constant.SubTaskTypeEnum;
|
||||
import com.mogo.och.sweeper.constant.SweeperConst;
|
||||
import com.mogo.och.sweeper.constant.TaskStatusEnum;
|
||||
import com.mogo.och.sweeper.database.MyDataBase;
|
||||
import com.mogo.och.sweeper.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweeper.fragment.SweeperFragment;
|
||||
import com.mogo.och.sweeper.model.SweeperTaskModel;
|
||||
import com.mogo.och.sweeper.util.SweeperFutianCmdUtil;
|
||||
import com.mogo.och.sweeper.util.SweeperTrajectoryManager;
|
||||
import com.mogo.och.sweeper.common.view.DebugView;
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperMainTaskBean;
|
||||
import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean;
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskBean;
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskDetailBean;
|
||||
import com.mogo.och.sweeper.common.callback.ISweeperADASStatusCallback;
|
||||
import com.mogo.och.sweeper.operate.callback.ISweeperControllerStatusCallback;
|
||||
import com.mogo.och.sweeper.operate.callback.ISweeperOperateTaskCallback;
|
||||
import com.mogo.och.sweeper.common.callback.ISweeperTaskRouteCallback;
|
||||
import com.mogo.och.sweeper.operate.constant.SubTaskTypeEnum;
|
||||
import com.mogo.och.sweeper.common.constant.SweeperConst;
|
||||
import com.mogo.och.sweeper.operate.constant.TaskStatusEnum;
|
||||
import com.mogo.och.sweeper.common.database.MyDataBase;
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweeper.operate.fragment.SweeperOperateFragment;
|
||||
import com.mogo.och.sweeper.operate.model.SweeperOperateTaskModel;
|
||||
import com.mogo.och.sweeper.common.util.SweeperFutianCmdUtil;
|
||||
import com.mogo.och.sweeper.operate.util.SweeperTrajectoryManager;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -60,9 +61,9 @@ import system_master.SystemStatusInfo;
|
||||
*
|
||||
* @author tongchenfei
|
||||
*/
|
||||
public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
public class SweeperOperatePresenter extends Presenter<SweeperOperateFragment>
|
||||
implements IMoGoAutopilotStatusListener, ISweeperControllerStatusCallback, ISweeperADASStatusCallback,
|
||||
IMoGoSweeperFutianCleanSystemListener, ISweeperTaskCallback, ISweeperTaskRouteCallback {
|
||||
IMoGoSweeperFutianCleanSystemListener, ISweeperOperateTaskCallback, ISweeperTaskRouteCallback {
|
||||
|
||||
private static final String TAG = "SweeperPresenter";
|
||||
//当前子任务id
|
||||
@@ -80,13 +81,13 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
private String longitude;//经度
|
||||
private String latitude;//纬度
|
||||
|
||||
public SweeperPresenter(SweeperFragment view) {
|
||||
public SweeperOperatePresenter(SweeperOperateFragment view) {
|
||||
super(view);
|
||||
//2021.11.1 鹰眼架构整合,由IMoGoAutopilotStatusListener逐步替代IMogoAdasOCHCallback接口
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.addListener(TAG, this);
|
||||
//清扫车模式和贴边数据回调监听
|
||||
CallerSweeperFutianCleanSystemListenerManager.INSTANCE.addListener(TAG, this);
|
||||
SweeperTaskModel.getInstance().init();
|
||||
SweeperOperateTaskModel.getInstance().init();
|
||||
OCHAdasAbilityManager.getInstance().init(AbsMogoApplication.getApp());
|
||||
}
|
||||
|
||||
@@ -99,20 +100,20 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
@Override
|
||||
public void onDestroy(@NonNull LifecycleOwner owner) {
|
||||
super.onDestroy(owner);
|
||||
SweeperTaskModel.getInstance().release();
|
||||
SweeperOperateTaskModel.getInstance().release();
|
||||
releaseListener();
|
||||
}
|
||||
|
||||
public void initModelListener() {
|
||||
SweeperTaskModel.getInstance().setControllerStatusCallback(this);
|
||||
SweeperTaskModel.getInstance().setAdasStatusCallback(this);
|
||||
SweeperTaskModel.getInstance().setSweeperTaskCallback(this);
|
||||
SweeperOperateTaskModel.getInstance().setControllerStatusCallback(this);
|
||||
SweeperOperateTaskModel.getInstance().setAdasStatusCallback(this);
|
||||
SweeperOperateTaskModel.getInstance().setSweeperTaskCallback(this);
|
||||
}
|
||||
|
||||
public void releaseListener() {
|
||||
SweeperTaskModel.getInstance().setControllerStatusCallback(null);
|
||||
SweeperTaskModel.getInstance().setAdasStatusCallback(null);
|
||||
SweeperTaskModel.getInstance().setSweeperTaskCallback(null);
|
||||
SweeperOperateTaskModel.getInstance().setControllerStatusCallback(null);
|
||||
SweeperOperateTaskModel.getInstance().setAdasStatusCallback(null);
|
||||
SweeperOperateTaskModel.getInstance().setSweeperTaskCallback(null);
|
||||
CallerSweeperFutianCleanSystemListenerManager.INSTANCE.removeListener(TAG);
|
||||
}
|
||||
|
||||
@@ -126,34 +127,38 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
|
||||
@Override
|
||||
public void onAutopilotStatusResponse(int state) {
|
||||
SweeperTaskModel.getInstance().setAutopilotState(state);
|
||||
SweeperOperateTaskModel.getInstance().setAutopilotState(state);
|
||||
ThreadUtils.runOnUiThread(() -> mView.startAutoBtn(state));
|
||||
switch (state) {
|
||||
case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE://不可自动驾驶
|
||||
DebugView.Companion.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_DISABLE,meaning=不可自动驾驶");
|
||||
break;
|
||||
case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE://人工驾驶
|
||||
if (SweeperTaskModel.getInstance().getSubWorking()) {
|
||||
DebugView.Companion.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_ENABLE,meaning=可自动驾驶,人工干预状态");
|
||||
if (SweeperOperateTaskModel.getInstance().getSubWorking()) {
|
||||
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
|
||||
SweeperTaskModel.getInstance().startBeautificationMode();
|
||||
SweeperOperateTaskModel.getInstance().startBeautificationMode();
|
||||
}
|
||||
} else {
|
||||
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
|
||||
//关闭美化模式
|
||||
SweeperTaskModel.getInstance().closeBeautificationMode();
|
||||
SweeperOperateTaskModel.getInstance().closeBeautificationMode();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING://自动驾驶中
|
||||
SweeperTaskModel.getInstance().triggerStartServiceEvent(
|
||||
SweeperTaskModel.getInstance().isRestartAutopilot(), true);
|
||||
if (SweeperTaskModel.getInstance().getSubWorking()) {
|
||||
DebugView.Companion.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_RUNNING,meaning=自动驾驶中");
|
||||
SweeperOperateTaskModel.getInstance().triggerStartServiceEvent(
|
||||
SweeperOperateTaskModel.getInstance().isRestartAutopilot(), true);
|
||||
if (SweeperOperateTaskModel.getInstance().getSubWorking()) {
|
||||
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
|
||||
SweeperTaskModel.getInstance().startBeautificationMode();
|
||||
SweeperOperateTaskModel.getInstance().startBeautificationMode();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING://平行驾驶
|
||||
if (SweeperTaskModel.getInstance().getSubWorking()) {
|
||||
DebugView.Companion.printInfoMsg("[自驾状态变化] afterValue=STATUS_PARALLEL_DRIVING,meaning=平行驾驶中");
|
||||
if (SweeperOperateTaskModel.getInstance().getSubWorking()) {
|
||||
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
|
||||
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true;//是否强制绘制引导线
|
||||
CallerAutoPilotControlManager.INSTANCE.setIPCDemoMode(false);//是否自动启动自驾
|
||||
@@ -161,7 +166,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
} else {
|
||||
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
|
||||
//关闭美化模式
|
||||
SweeperTaskModel.getInstance().closeBeautificationMode();
|
||||
SweeperOperateTaskModel.getInstance().closeBeautificationMode();
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -191,10 +196,10 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* 清除路线缓存数据
|
||||
*/
|
||||
public void clearRouteList(){
|
||||
SweeperTaskModel.getInstance().clearRouteList();
|
||||
SweeperOperateTaskModel.getInstance().clearRouteList();
|
||||
}
|
||||
public void startAutopilot() {
|
||||
SweeperTaskModel.getInstance().startAutopilot();
|
||||
SweeperOperateTaskModel.getInstance().startAutopilot();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -202,10 +207,10 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
*/
|
||||
public void setSubtask(boolean isFirstSubtask, boolean isLastSubtask, int subTaskId,int subTaskType) {
|
||||
this.mSubTaskId = subTaskId;
|
||||
SweeperTaskModel.getInstance().setSubtask(isFirstSubtask, isLastSubtask, subTaskId,subTaskType);
|
||||
SweeperOperateTaskModel.getInstance().setSubtask(isFirstSubtask, isLastSubtask, subTaskId,subTaskType);
|
||||
}
|
||||
public void setWorking(boolean isWorking){
|
||||
SweeperTaskModel.getInstance().setWorking(isWorking);
|
||||
SweeperOperateTaskModel.getInstance().setWorking(isWorking);
|
||||
}
|
||||
/**
|
||||
* 测试使用
|
||||
@@ -223,6 +228,9 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
|
||||
@Override
|
||||
public void onAutopilotIpcConnectStatusChanged(int status, @Nullable String reason) {
|
||||
DebugView.Companion.printInfoMsg(
|
||||
"[域控连接状态变化] status=" + status
|
||||
+ ", reason=" + reason);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -236,7 +244,10 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
|
||||
@Override
|
||||
public void onAutopilotArriveAtStation(@Nullable MessagePad.ArrivalNotification arrivalNotification) {
|
||||
SweeperTaskModel.getInstance().onArriveTaskEnd(arrivalNotification);
|
||||
SweeperOperateTaskModel.getInstance().onArriveTaskEnd(arrivalNotification);
|
||||
DebugView.Companion.printInfoMsg("[MAP到站通知] 上报到站,endLocation=("
|
||||
+ ((arrivalNotification == null || arrivalNotification.getEndLocation() == null) ? "null" : arrivalNotification.getEndLocation().toString())
|
||||
+ ")");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -248,7 +259,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
}
|
||||
|
||||
public void onArriveTaskEnd(@Nullable MessagePad.ArrivalNotification arrivalNotification) {
|
||||
SweeperTaskModel.getInstance().onArriveTaskEnd(arrivalNotification);
|
||||
SweeperOperateTaskModel.getInstance().onArriveTaskEnd(arrivalNotification);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -348,7 +359,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
weltDataBean.setCleanMode(roboSweeperTaskIndex.getCleanMode());
|
||||
weltDataBean.setCleanDirection(roboSweeperTaskIndex.getCleanDirection());
|
||||
weltDataBean.setCleanIntensity(roboSweeperTaskIndex.getCleanIntensity());
|
||||
weltDataBean.setSubTaskId(mSubTaskId);
|
||||
weltDataBean.setSubTaskId(String.valueOf(mSubTaskId));
|
||||
MyDataBase.getInstance().getWeltDataDao().insert(weltDataBean);
|
||||
String distance;
|
||||
if (roboSweeperTaskIndex.getDistToRefEdgePoint() >= 1.0) {//大于等于1m
|
||||
@@ -370,28 +381,28 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* 获取当前正在执行的任务
|
||||
*/
|
||||
public void getCurrentTask() {
|
||||
SweeperTaskModel.getInstance().getCurrentTask();
|
||||
SweeperOperateTaskModel.getInstance().getCurrentTask();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取主任务列表
|
||||
*/
|
||||
public void getMainTaskList(boolean refresh) {
|
||||
SweeperTaskModel.getInstance().getMainTaskList(refresh);
|
||||
SweeperOperateTaskModel.getInstance().getMainTaskList(refresh);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取子任务列表
|
||||
*/
|
||||
public void getSubTaskList(int taskId, SweeperSubTaskBean sweeperSubTaskBean) {
|
||||
SweeperTaskModel.getInstance().getSubTaskList(taskId, sweeperSubTaskBean);
|
||||
SweeperOperateTaskModel.getInstance().getSubTaskList(taskId, sweeperSubTaskBean);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取子任务详情包括轨迹文件信息
|
||||
*/
|
||||
public void getSubTaskDetail(boolean isFirst, boolean isEnd, int subTaskId, SubTaskTypeEnum subTaskType, boolean isStartSubtask) {
|
||||
SweeperTaskModel.getInstance().getSubTaskDetail(isFirst, isEnd, subTaskId, subTaskType, isStartSubtask);
|
||||
SweeperOperateTaskModel.getInstance().getSubTaskDetail(isFirst, isEnd, subTaskId, subTaskType, isStartSubtask);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -399,7 +410,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
*/
|
||||
public void startTask(boolean isFirst, boolean isEnd, int subTaskId, SubTaskTypeEnum subTaskType, int subTaskStatus) {
|
||||
if (SubTaskTypeEnum.AUTOPILOT_SUBTYPE.getCode() == subTaskStatus) {
|
||||
SweeperTaskModel.getInstance().subTaskStart(isFirst, isEnd, subTaskId, subTaskType);
|
||||
SweeperOperateTaskModel.getInstance().subTaskStart(isFirst, isEnd, subTaskId, subTaskType);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -407,21 +418,21 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* 子任务结束上报
|
||||
*/
|
||||
public void subTaskEnd(boolean isFirst, boolean isEnd, int subTaskId) {
|
||||
SweeperTaskModel.getInstance().subTaskEnd(isFirst, isEnd, subTaskId);
|
||||
SweeperOperateTaskModel.getInstance().subTaskEnd(isFirst, isEnd, subTaskId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 子任务跳过上报
|
||||
*/
|
||||
public void subTaskSkip(boolean isFirst, boolean isEnd, int subTaskId) {
|
||||
SweeperTaskModel.getInstance().subTaskSkip(isFirst, isEnd, subTaskId);
|
||||
SweeperOperateTaskModel.getInstance().subTaskSkip(isFirst, isEnd, subTaskId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 主任务重置
|
||||
*/
|
||||
public void mainTaskReset(int taskId) {
|
||||
SweeperTaskModel.getInstance().mainTaskReset(taskId);
|
||||
SweeperOperateTaskModel.getInstance().mainTaskReset(taskId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.ui.adapter
|
||||
package com.mogo.och.sweeper.operate.ui.adapter
|
||||
|
||||
import android.graphics.Color
|
||||
import android.view.LayoutInflater
|
||||
@@ -9,7 +9,7 @@ import android.widget.TextView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.bean.SweeperMainTaskBean
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperMainTaskBean
|
||||
|
||||
class TaskListAdapter() : RecyclerView.Adapter<TaskListAdapter.TaskViewHolder>() {
|
||||
private var mItemClickListener: TaskItemClickListener? = null
|
||||
@@ -42,12 +42,12 @@ class TaskListAdapter() : RecyclerView.Adapter<TaskListAdapter.TaskViewHolder>()
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
interface TaskItemClickListener {
|
||||
fun onItemClick(position: Int,mainTask:SweeperMainTaskBean)
|
||||
fun onItemClick(position: Int,mainTask: SweeperMainTaskBean)
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TaskViewHolder {
|
||||
val view = LayoutInflater.from(parent.context).inflate(
|
||||
R.layout.sweeper_item_task_info, parent, false
|
||||
R.layout.sweeper_operate_item_task_info, parent, false
|
||||
)
|
||||
return TaskViewHolder(view)
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.ui.popwindow
|
||||
package com.mogo.och.sweeper.operate.ui.popwindow
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
@@ -9,7 +9,7 @@ import android.view.ViewGroup.LayoutParams
|
||||
import android.widget.PopupWindow
|
||||
import android.widget.TextView
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.constant.TaskStatusEnum
|
||||
import com.mogo.och.sweeper.operate.constant.TaskStatusEnum
|
||||
|
||||
/**
|
||||
* 当前任务操作菜单栏
|
||||
@@ -24,9 +24,9 @@ class MenuPopWindow : PopupWindow, View.OnClickListener{
|
||||
|
||||
private var mTvCancelTask: TextView? = null
|
||||
|
||||
private var mMenuItemClickListener:OnMenuItemOnClickListener?=null
|
||||
private var mMenuItemClickListener: OnMenuItemOnClickListener?=null
|
||||
|
||||
constructor(context: Context,menuItemClickListener:OnMenuItemOnClickListener) : super(context) {
|
||||
constructor(context: Context,menuItemClickListener: OnMenuItemOnClickListener) : super(context) {
|
||||
init(context)
|
||||
this.mMenuItemClickListener=menuItemClickListener
|
||||
}
|
||||
@@ -36,7 +36,7 @@ class MenuPopWindow : PopupWindow, View.OnClickListener{
|
||||
*/
|
||||
private fun init(context: Context) {
|
||||
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
|
||||
var view: View = LayoutInflater.from(context).inflate(R.layout.sweeper_task_menu, null)
|
||||
var view: View = LayoutInflater.from(context).inflate(R.layout.sweeper_operate_task_menu, null)
|
||||
mTvJumpOverTask = view.findViewById(R.id.tvJumpOverTask)
|
||||
mTaskJumpLineView = view.findViewById(R.id.taskJumpLineView)
|
||||
mTvEndTask = view.findViewById(R.id.tvEndTask)
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.mogo.och.sweeper.util;
|
||||
package com.mogo.och.sweeper.operate.util;
|
||||
|
||||
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.sweeper.bean.SweeperSubTaskDetailBean;
|
||||
import com.mogo.och.sweeper.constant.SweeperConst;
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskDetailBean;
|
||||
import com.mogo.och.sweeper.common.constant.SweeperConst;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.view;
|
||||
package com.mogo.och.sweeper.operate.view;
|
||||
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.animation.ValueAnimator;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.view
|
||||
package com.mogo.och.sweeper.operate.view
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
@@ -11,22 +11,22 @@ import com.mogo.eagle.core.utilcode.util.ClickUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.bean.SubInfo
|
||||
import com.mogo.och.sweeper.bean.SweeperSubTaskBean
|
||||
import com.mogo.och.sweeper.constant.SubTaskTypeEnum
|
||||
import com.mogo.och.sweeper.presenter.SweeperPresenter
|
||||
import com.mogo.och.sweeper.ui.popwindow.MenuPopWindow
|
||||
import kotlinx.android.synthetic.main.sweeper_current_task_info.view.*
|
||||
import com.mogo.och.sweeper.operate.bean.SubInfo
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskBean
|
||||
import com.mogo.och.sweeper.operate.constant.SubTaskTypeEnum
|
||||
import com.mogo.och.sweeper.operate.presenter.SweeperOperatePresenter
|
||||
import com.mogo.och.sweeper.operate.ui.popwindow.MenuPopWindow
|
||||
import kotlinx.android.synthetic.main.sweeper_operate_current_task_info.view.*
|
||||
|
||||
/**
|
||||
* 清扫车当前任务信息展示
|
||||
*/
|
||||
class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
class SweeperOperateCurrentTaskInfoView : ConstraintLayout {
|
||||
private val TAG: String = "SweeperCurrentTaskInfoView"
|
||||
|
||||
//当前任务操作菜单
|
||||
private var mTaskMenuPopWindow: MenuPopWindow? = null
|
||||
private var presenter: SweeperPresenter? = null
|
||||
private var presenter: SweeperOperatePresenter? = null
|
||||
private var mCurrentPosition = 0
|
||||
private var listTask: List<SubInfo>? = null
|
||||
private var mSubTaskType: SubTaskTypeEnum = SubTaskTypeEnum.AUTOPILOT_SUBTYPE
|
||||
@@ -43,7 +43,7 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) {}
|
||||
|
||||
private fun initView(context: Context) {
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_current_task_info, this)
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_operate_current_task_info, this)
|
||||
setEnableClickBtn(false)
|
||||
tvStartAuto.setOnClickListener {
|
||||
if (ClickUtils.isFastClick()){//防止重复点击
|
||||
@@ -51,7 +51,7 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
ToastUtils.showLong("任务未开始无轨迹,无法启动自驾")
|
||||
return@setOnClickListener
|
||||
}
|
||||
if (mSubTaskType==SubTaskTypeEnum.MANUAL_DRIVING_SUBTYPE){
|
||||
if (mSubTaskType== SubTaskTypeEnum.MANUAL_DRIVING_SUBTYPE){
|
||||
ToastUtils.showLong("人工子任务无轨迹,无法启动自驾")
|
||||
return@setOnClickListener
|
||||
}
|
||||
@@ -66,17 +66,17 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
* 设置当前任务数据
|
||||
*/
|
||||
fun setData(
|
||||
workModePanelView: SweeperWorkModeView,
|
||||
subTaskBean: SweeperSubTaskBean?,
|
||||
currentPosition: Int,
|
||||
menuItemClickListener: MenuPopWindow.OnMenuItemOnClickListener,
|
||||
presenter: SweeperPresenter?
|
||||
workModePanelView: SweeperOperateWorkModeView,
|
||||
subTaskBean: SweeperSubTaskBean?,
|
||||
currentPosition: Int,
|
||||
menuItemClickListener: MenuPopWindow.OnMenuItemOnClickListener,
|
||||
presenter: SweeperOperatePresenter?
|
||||
) {
|
||||
this.presenter = presenter
|
||||
this.mCurrentPosition = currentPosition
|
||||
mTaskMenuPopWindow = MenuPopWindow(context, menuItemClickListener)
|
||||
subTaskBean?.apply {
|
||||
this@SweeperCurrentTaskInfoView.listTask = subList
|
||||
this@SweeperOperateCurrentTaskInfoView.listTask = subList
|
||||
tvTaskName.text = taskName
|
||||
val calendar = DateTimeUtil.formatLongToCalendar(taskStartTime)
|
||||
tvTaskTime.text = DateTimeUtil.formatCalendarToString(calendar, DateTimeUtil.HH_mm)
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.view
|
||||
package com.mogo.och.sweeper.operate.view
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
@@ -8,13 +8,13 @@ import android.view.View
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.bean.SubInfo
|
||||
import kotlinx.android.synthetic.main.sweeper_subtask_view.view.*
|
||||
import com.mogo.och.sweeper.operate.bean.SubInfo
|
||||
import kotlinx.android.synthetic.main.sweeper_operate_subtask_view.view.*
|
||||
|
||||
/**
|
||||
* 子任务View
|
||||
*/
|
||||
class SubTaskView : ConstraintLayout {
|
||||
class SweeperOperateSubTaskView : ConstraintLayout {
|
||||
constructor(context: Context) : super(context) {}
|
||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
|
||||
initView(context)
|
||||
@@ -24,7 +24,7 @@ class SubTaskView : ConstraintLayout {
|
||||
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) {}
|
||||
|
||||
private fun initView(context: Context) {
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_subtask_view, this)
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_operate_subtask_view, this)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.view
|
||||
package com.mogo.och.sweeper.operate.view
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
@@ -22,13 +22,14 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.common.view.TurnSignalView
|
||||
import planning.RoboSweeperTaskIndexOuterClass
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
/**
|
||||
* 车辆基本信息:方向盘下方的档位 转向灯 限速 速度 电量 水量
|
||||
*/
|
||||
class SweeperTrafficDataView : ConstraintLayout,
|
||||
class SweeperOperateTrafficDataView : ConstraintLayout,
|
||||
IMoGoBatteryManagementSystemListener,
|
||||
IMoGoChassisLamplightListener,
|
||||
IMoGoChassisGearStateListener,
|
||||
@@ -68,7 +69,7 @@ class SweeperTrafficDataView : ConstraintLayout,
|
||||
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) {}
|
||||
|
||||
private fun initView(context: Context) {
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_traffic_data, this)
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_operate_traffic_data, this)
|
||||
tapPositionView = findViewById(R.id.sweeperTrafficPosition)
|
||||
speedImage = findViewById(R.id.sweeperSpeedImage)
|
||||
speedTextView = findViewById(R.id.sweeperSpeedText)
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.view
|
||||
package com.mogo.och.sweeper.operate.view
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
@@ -10,25 +10,25 @@ import com.elegant.utils.UiThreadHandler
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.callback.ICleaningModeStateCallback
|
||||
import com.mogo.och.sweeper.constant.OperateStateEnum
|
||||
import com.mogo.och.sweeper.constant.SubTaskTypeEnum
|
||||
import com.mogo.och.sweeper.ui.popwindow.SweeperOperatePanelPopWindow
|
||||
import com.mogo.och.sweeper.util.SweeperFutianCmdUtil
|
||||
import com.mogo.och.sweeper.common.callback.ICleaningModeStateCallback
|
||||
import com.mogo.och.sweeper.common.constant.OperateStateEnum
|
||||
import com.mogo.och.sweeper.operate.constant.SubTaskTypeEnum
|
||||
import com.mogo.och.sweeper.common.view.SweeperOperatePanelPopWindow
|
||||
import com.mogo.och.sweeper.common.util.SweeperFutianCmdUtil
|
||||
import kotlinx.android.synthetic.main.sweeper_work_mode.view.*
|
||||
|
||||
/**
|
||||
* 清扫车模式信息展示
|
||||
*/
|
||||
class SweeperWorkModeView : ConstraintLayout,
|
||||
ICleaningModeStateCallback {
|
||||
class SweeperOperateWorkModeView : ConstraintLayout,
|
||||
ICleaningModeStateCallback {
|
||||
|
||||
private var isSelectPureSweepMode: Boolean = false
|
||||
private val TAG = "SweeperWorkModeView"
|
||||
//清扫模式选择面板
|
||||
private var mOperatePanelPopWindow: SweeperOperatePanelPopWindow? = null
|
||||
|
||||
private var operateState: OperateStateEnum=OperateStateEnum.SYNCING_STATUS
|
||||
private var operateState: OperateStateEnum = OperateStateEnum.SYNCING_STATUS
|
||||
|
||||
constructor(context: Context) : super(context) {}
|
||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
|
||||
@@ -47,7 +47,7 @@ class SweeperWorkModeView : ConstraintLayout,
|
||||
/**
|
||||
* 设置view
|
||||
*/
|
||||
fun setTrafficDataView(trafficDataView: SweeperTrafficDataView){
|
||||
fun setTrafficDataView(trafficDataView: SweeperOperateTrafficDataView){
|
||||
//清扫模式选择面板打开关闭处理
|
||||
ivOpenOperatePanel.setOnClickListener {
|
||||
if (mOperatePanelPopWindow?.isShowing != true) {
|
||||
@@ -72,12 +72,12 @@ class SweeperWorkModeView : ConstraintLayout,
|
||||
fun setSweeperFutianCleanSystemState(taskType: SubTaskTypeEnum, cleanSystemState: SweeperFuTianTaskSystemStates?) {
|
||||
// TODO:传递清扫车底盘数据给上装面板
|
||||
//mOperatePanelPopWindow?.setCleanSystemState(cleanSystemState, this@SweeperWorkModeView)
|
||||
if (this.operateState.code==OperateStateEnum.STARTING_STATUS.code){
|
||||
if (this.operateState.code== OperateStateEnum.STARTING_STATUS.code){
|
||||
return
|
||||
}
|
||||
//如果状态是同步中,在底盘首次回调时把状态强制修改成成功
|
||||
if (this.operateState.code==OperateStateEnum.SYNCING_STATUS.code){
|
||||
this.operateState=OperateStateEnum.SUCCESS_STATUS
|
||||
if (this.operateState.code== OperateStateEnum.SYNCING_STATUS.code){
|
||||
this.operateState= OperateStateEnum.SUCCESS_STATUS
|
||||
d(SceneConstant.M_SWEEPER + TAG, "SystemState operateState:"+operateState.code)
|
||||
}
|
||||
//清扫车暂未选择清扫模式或者任务类型是人工驾驶子任务,则暂无清扫模式
|
||||
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 622 KiB After Width: | Height: | Size: 622 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 544 B After Width: | Height: | Size: 544 B |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 351 B After Width: | Height: | Size: 351 B |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 807 B After Width: | Height: | Size: 807 B |
|
Before Width: | Height: | Size: 1000 B After Width: | Height: | Size: 1000 B |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |