From d565f299ad277b635ad775daf2d20fc13e3e2d1c Mon Sep 17 00:00:00 2001
From: xiaoyan-5800X <xiaoyan159@163.com>
Date: Mon, 19 Dec 2022 16:37:39 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86?=
 =?UTF-8?q?=E6=83=85=E5=86=B5=E4=B8=8B=E7=85=A7=E7=89=87=E6=96=87=E4=BB=B6?=
 =?UTF-8?q?=E6=8D=9F=E5=9D=8F=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../activity/AutoTakePictureActivity.java     | 21 ++++++++++++++++++-
 .../navinfo/outdoor/http/HttpInterface.java   |  4 ++--
 2 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java
index cf1ceb5..93d0966 100644
--- a/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java
+++ b/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java
@@ -1309,7 +1309,9 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic
     /**
      * 结束采集,对照片归档
      * */
+    private boolean hasFinishTask = false; // 当前是否包含已完成任务未处理完
     private void finishRoadTask(Map<Integer, RoadMatchEntity> finishEntityMap) {
+        hasFinishTask = true;
         Observable.fromIterable(finishEntityMap.values())
                 .subscribeOn(Schedulers.io()).observeOn(Schedulers.computation())
                 .filter(roadMatchEntity -> roadMatchEntity!=null)
@@ -1352,23 +1354,36 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic
                     }
                 })
                 .observeOn(AndroidSchedulers.mainThread())
+                .onErrorResumeNext(new Function<Throwable, ObservableSource<? extends PoiEntity>>() {
+                    @Override
+                    public ObservableSource<? extends PoiEntity> apply(Throwable throwable) throws Exception {
+                        return null;
+                    }
+                })
                 .subscribe(new Consumer<PoiEntity>() {
                     @Override
                     public void accept(PoiEntity poiEntity) {
-
+                        // 已经处理过该任务,将其从finish列表中移除
+                        if (poiEntity!=null) {
+                            finishEntityMap.remove(poiEntity.getTaskId());
+                        }
                     }
                 }, new Consumer<Throwable>() {
                     @Override
                     public void accept(Throwable throwable) {
                         // 此处异常可能是服务返回的数据无法解析,但http正常返回了,因此可能为程序问题,不再重复尝试上报
                         systemTTS.playText("注意,领取任务失败!");
+                        XLog.e("完成失败:"+throwable.getMessage());
                         ToastUtils.Message(AutoTakePictureActivity.this, throwable.getMessage());
+                        hasFinishTask = false;
                     }
                 }, new Action() {
                     @Override
                     public void run() throws Exception {
                         // 重新绘制网络任务和本地任务
                         initRoadLine2Map();
+                        finishEntityMap.clear();
+                        hasFinishTask = false;
                     }
                 });
     }
@@ -1677,6 +1692,10 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic
     @Override
     public void onBackPressed() {
         DialogSettings.style = DialogSettings.STYLE.STYLE_IOS;
+        if (hasFinishTask) {
+            MessageDialog.show(this, "提示", "后台正在处理已拍摄完成的任务,请稍后再退出当前界面");
+            return;
+        }
         MessageDialog.show(this, "提示", "退出自动采集模式?", "是", "否").setOnOkButtonClickListener(new OnDialogButtonClickListener() {
             @Override
             public boolean onClick(BaseDialog baseDialog, View v) {
diff --git a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java
index e73822a..720779c 100644
--- a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java
+++ b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java
@@ -3,8 +3,8 @@ package com.navinfo.outdoor.http;
 public class HttpInterface {
 //    public static final String IP = "http://172.23.138.133:9999/m4";//测试接口-IP
     public static final String IPm = "http://dtxbmaps.navinfo.com/dtxb/dev/m4";//开发接口-外网
-    public static final String IP1 = "http://dtxbmaps.navinfo.com/dtxb/test/m4";//测试接口-外网
-    public static final String IP = "http://dtxbmaps.navinfo.com/dtxb/m4";//正式接口
+    public static final String IP = "http://dtxbmaps.navinfo.com/dtxb/test/m4";//测试接口-外网
+    public static final String IP1 = "http://dtxbmaps.navinfo.com/dtxb/m4";//正式接口
     public static final String USER_PATH = "/user/";//我的
     public static final String MSG_LIST_PATH = "/msgList/";//发现
     public static final String USER_LOGIN_PATH = "/userlogin/";//登录