From 71ac5ea208fb15da401b980fe788d03ed0f086b1 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期三, 04 十二月 2024 09:56:14 +0800
Subject: [PATCH] 1.添加退出登录时判断是否开启巡检,开启巡检不可退出登录。 2.添加异常退出后恢复巡检记录的功能。 3.添加统一的提示Dialog

---
 app/src/main/java/com/dayu/pipirrapp/dao/InspectionLocationDao.java      |    7 
 app/src/main/java/com/dayu/pipirrapp/dao/DaoSingleton.java               |   11 
 app/src/main/java/com/dayu/pipirrapp/view/TipDialog.java                 |   83 ++++++++
 app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java            |   36 ++-
 app/src/main/assets/js/map.js                                            |   15 +
 app/src/main/java/com/dayu/pipirrapp/activity/SplashScreenActivity.java  |    1 
 app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java           |   72 ++++++
 app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionLocationBean.java |   25 +
 app/src/main/java/com/dayu/pipirrapp/bean/net/InsectionResult.java       |   31 +++
 app/src/main/res/layout/text_dialog.xml                                  |   62 ++++++
 app/src/main/java/com/dayu/pipirrapp/view/TipUtil.java                   |   65 ++++++
 app/src/main/java/com/dayu/pipirrapp/dao/InspectionDao.java              |   10 +
 app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionBean.java         |    8 
 app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java           |  143 ++++++++-----
 14 files changed, 474 insertions(+), 95 deletions(-)

diff --git a/app/src/main/assets/js/map.js b/app/src/main/assets/js/map.js
index f149f39..a3f9e30 100644
--- a/app/src/main/assets/js/map.js
+++ b/app/src/main/assets/js/map.js
@@ -19,6 +19,7 @@
 
     });
     window.onload = function () {
+        console.log(window.onload);  // 鎵撳嵃鏁扮粍鏁版嵁
         //鍔犺浇鍧愭爣鐐�
         window.Android.loadMarker();
     };
@@ -167,6 +168,7 @@
         window.addMarker = addMarker;
         window.setCenterAndZoom = setCenterAndZoom;
         window.updateLocation = updateLocation;
+        window.aginShowLocation = aginShowLocation;
     }
 
     // 璋冪敤鍘熺敓瀹夊崜鏂规硶鏄剧ず鍙栨按鍙h鎯�
@@ -283,8 +285,8 @@
         map.addOverLay(lineLayer);
         let icon = new T.Icon({
             iconUrl: locationIMGPath,
-            iconSize: new T.Point(27, 27),
-            iconAnchor: new T.Point(13, 20)
+            iconSize: new T.Point(20, 20),
+            iconAnchor: new T.Point(10, 10)
         });
         if (locationMarker) {
             map.removeOverLay(locationMarker);
@@ -296,6 +298,15 @@
         // }, 500);
 
     }
+    var aginPath = [];
+    function aginShowLocation(lng, lat) {
+        // 璋冪敤 Android 鎻愪緵鐨勬帴鍙o紝鑾峰彇鏁版嵁
+        console.log("aginShowLocation>>lng:"+lng+">>>lat:"+lat);
+        var newPoint = new T.LngLat(lng, lat);
+        aginPath.push(newPoint);
+        lineLayer.setLngLats(aginPath);
+        map.addOverLay(lineLayer);
+    }
 
 
 })();
diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/SplashScreenActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/SplashScreenActivity.java
index 1fe2024..ba7e4ac 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/SplashScreenActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/SplashScreenActivity.java
@@ -44,6 +44,7 @@
                 e.printStackTrace();
                 startLoginActivity();
             }
+            SplashScreenActivity.this.finish();
 //            Intent intent = new Intent(this, OrderDealActivity.class);
 //            startActivity(intent);
 //            SplashScreenActivity.this.finish();
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionBean.java b/app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionBean.java
index ce6c214..d370968 100644
--- a/app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionBean.java
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionBean.java
@@ -14,10 +14,10 @@
 public class InspectionBean {
     @PrimaryKey(autoGenerate = true)
     public long id;
-    String inspectId;//宸℃ID
-    String mInspectId;//鏈湴鏁版嵁搴撳贰妫�ID
-    String startTime;//寮�濮嬪贰妫�鏃堕棿
-    String stopTime;//鍋滄宸℃鏃堕棿
+    public String inspectId;//宸℃ID
+    public String mInspectId;//鏈湴鏁版嵁搴撳贰妫�ID
+    public String startTime;//寮�濮嬪贰妫�鏃堕棿
+    public String stopTime;//鍋滄宸℃鏃堕棿
 
     public String getmInspectId() {
         return mInspectId;
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionLocationBean.java b/app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionLocationBean.java
index d78479a..521044c 100644
--- a/app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionLocationBean.java
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionLocationBean.java
@@ -1,5 +1,6 @@
 package com.dayu.pipirrapp.bean.db;
 
+import androidx.annotation.NonNull;
 import androidx.room.Entity;
 import androidx.room.PrimaryKey;
 
@@ -12,16 +13,24 @@
  */
 @Entity
 public class InspectionLocationBean {
-    @PrimaryKey(autoGenerate = true)
-    public long id;
-    String inspectorId;//宸℃鍛業D
-    String inspectId;//宸℃ID
-    String mInspectId;//鏈湴鏁版嵁搴撳贰妫�ID
-    String lng;//缁忓害
-    String lat;//绾害
-    String locateTime;//鎵撶偣鏃堕棿
+    @PrimaryKey()
+    @NonNull
+    public String id;
+    public String inspectorId;//宸℃鍛業D
+    public String inspectId;//宸℃ID
+    public String mInspectId;//鏈湴鏁版嵁搴撳贰妫�ID
+    public String lng;//缁忓害
+    public String lat;//绾害
+    public String locateTime;//鎵撶偣鏃堕棿
     boolean isPost;//鏄惁宸茬粡涓婁紶
 
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
 
     public String getmInspectId() {
         return mInspectId;
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/InsectionResult.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/InsectionResult.java
new file mode 100644
index 0000000..a7f834e
--- /dev/null
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/InsectionResult.java
@@ -0,0 +1,31 @@
+package com.dayu.pipirrapp.bean.net;
+
+/**
+ * InsectionResult -涓婁紶杞ㄨ抗杩斿洖鍊�
+ *
+ * @author zuoxiao
+ * @version 1.0
+ * @since 2024-12-04
+ */
+public class InsectionResult {
+
+
+    String inspectId;//宸℃id
+    String inspectorId;//宸℃鍛榠d
+
+    public String getInspectId() {
+        return inspectId;
+    }
+
+    public void setInspectId(String inspectId) {
+        this.inspectId = inspectId;
+    }
+
+    public String getInspectorId() {
+        return inspectorId;
+    }
+
+    public void setInspectorId(String inspectorId) {
+        this.inspectorId = inspectorId;
+    }
+}
diff --git a/app/src/main/java/com/dayu/pipirrapp/dao/DaoSingleton.java b/app/src/main/java/com/dayu/pipirrapp/dao/DaoSingleton.java
index fe5d101..47042f5 100644
--- a/app/src/main/java/com/dayu/pipirrapp/dao/DaoSingleton.java
+++ b/app/src/main/java/com/dayu/pipirrapp/dao/DaoSingleton.java
@@ -5,8 +5,6 @@
 import androidx.room.Room;
 import androidx.room.RoomDatabase;
 
-import java.io.File;
-
 /**
  * Copyright (C), 2023,
  * Author: zuo
@@ -37,10 +35,11 @@
 
         if (AsynchBaseDao == null) {
             AsynchBaseDao = Room.databaseBuilder(
-                    context,
-                    AppDatabase.class,
-                    name
-            ).build();
+                            context,
+                            AppDatabase.class,
+                            name
+                    ).setJournalMode(RoomDatabase.JournalMode.TRUNCATE) // 鍙�夛紝璁剧疆鏃ュ織妯″紡
+                    .build();
         }
         return AsynchBaseDao;
 
diff --git a/app/src/main/java/com/dayu/pipirrapp/dao/InspectionDao.java b/app/src/main/java/com/dayu/pipirrapp/dao/InspectionDao.java
index eb0ddb2..72bd3c5 100644
--- a/app/src/main/java/com/dayu/pipirrapp/dao/InspectionDao.java
+++ b/app/src/main/java/com/dayu/pipirrapp/dao/InspectionDao.java
@@ -27,8 +27,18 @@
     @Query("DELETE FROM InspectionBean")
     void deleteAll();
 
+
     //鏌ヨ褰撳墠娌℃湁鍏抽棴宸℃鐨勫贰妫�ID
     @Query("SELECT * FROM InspectionBean WHERE stopTime IS NULL OR stopTime = '' ORDER BY startTime DESC LIMIT 1")
     Single<InspectionBean> getMostRecentInspectionWithNoStopTime();
 
+    /**
+     * 鏍规嵁鏈湴宸℃id鏌ヨ宸℃璁板綍淇℃伅
+     *
+     * @param mInspectId
+     * @return
+     */
+    @Query("SELECT * FROM InspectionBean WHERE mInspectId  =:mInspectId  ORDER BY startTime DESC LIMIT 1")
+    Single<InspectionBean> findBymInspectId(String mInspectId);
+
 }
diff --git a/app/src/main/java/com/dayu/pipirrapp/dao/InspectionLocationDao.java b/app/src/main/java/com/dayu/pipirrapp/dao/InspectionLocationDao.java
index 68b69ec..801797c 100644
--- a/app/src/main/java/com/dayu/pipirrapp/dao/InspectionLocationDao.java
+++ b/app/src/main/java/com/dayu/pipirrapp/dao/InspectionLocationDao.java
@@ -12,6 +12,7 @@
 import java.util.List;
 
 import io.reactivex.rxjava3.core.Completable;
+import io.reactivex.rxjava3.core.Single;
 
 @Dao
 public interface InspectionLocationDao {
@@ -33,4 +34,10 @@
     //鏌ヨ鎵�鏈夋病鏈変笂浼犵殑鍧愭爣
     @Query("select  * from InspectionLocationBean where isPost=false")
     List<InspectionLocationBean> findByNoPost();
+
+
+    //鏌ヨ鎵�鏈夎宸℃id鐨勫潗鏍�
+    @Query("select  * from InspectionLocationBean where mInspectId=:mInspectId ORDER BY locateTime ASC")
+    Single<List<InspectionLocationBean>> findByInspectId(String mInspectId);
+
 }
diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
index 73b3946..b4d3094 100644
--- a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
+++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
@@ -1,8 +1,6 @@
 package com.dayu.pipirrapp.fragment;
 
 import static com.dayu.pipirrapp.net.Constants.BASE_URL;
-import static com.dayu.pipirrapp.tool.InspectionUtils.addInspectionLocationData;
-import static com.dayu.pipirrapp.tool.InspectionUtils.updateInspectionLocationData;
 
 import android.content.Context;
 import android.content.Intent;
@@ -25,7 +23,6 @@
 import androidx.annotation.Nullable;
 import androidx.lifecycle.Observer;
 
-import com.dayu.pipirrapp.MyApplication;
 import com.dayu.pipirrapp.R;
 import com.dayu.pipirrapp.bean.db.CenterPointBean;
 import com.dayu.pipirrapp.bean.db.InspectionBean;
@@ -33,8 +30,8 @@
 import com.dayu.pipirrapp.bean.db.LatLonBean;
 import com.dayu.pipirrapp.bean.db.MarkerBean;
 import com.dayu.pipirrapp.bean.net.CenterPointResult;
+import com.dayu.pipirrapp.bean.net.InsectionResult;
 import com.dayu.pipirrapp.bean.net.InspectionRequest;
-import com.dayu.pipirrapp.bean.net.LoginResult;
 import com.dayu.pipirrapp.bean.net.MarkerResult;
 import com.dayu.pipirrapp.dao.DaoSingleton;
 import com.dayu.pipirrapp.databinding.FragmentMapBinding;
@@ -48,7 +45,6 @@
 import com.dayu.pipirrapp.tool.InspectionUtils;
 import com.dayu.pipirrapp.utils.CommonData;
 import com.dayu.pipirrapp.utils.CommonKeyName;
-import com.dayu.pipirrapp.utils.DateUtils;
 import com.dayu.pipirrapp.utils.MapJpgUtils;
 import com.dayu.pipirrapp.utils.MyLog;
 import com.dayu.pipirrapp.utils.SharedPreferencesHelper;
@@ -88,9 +84,12 @@
     int mInspectionState;
     MapFragmenObserver mapFragmenObserver;
     //褰撳墠宸℃璁板綍鐨勭浉鍏充俊鎭�
-    InspectionBean mInspectionBean;
+    public InspectionBean mInspectionBean;
     LatLonBean lastLatLonBean;
     InspectionRequest inspectionRequest;
+    volatile boolean isHaseAginData = false;
+    volatile boolean webViewIsFinished = false;
+    List<InspectionLocationBean> aginShowlocationBeans;
 
     @Override
     public void onAttach(@NonNull Context context) {
@@ -130,7 +129,12 @@
         initView();
         initLocalData();
         getMarkerData();
-        //鏄剧ず宸℃鐘舵��
+        //鏄剧ず宸℃鐘舵�佸苟涓旀樉绀哄洜鎰忓鍏抽棴鐨勫巻鍙叉暟鎹�
+        switch (mInspectionState) {
+            case InspectionUtils.STAT_INSPECTION:
+            case InspectionUtils.PAUSE_INSPECTION:
+                InspectionUtils.aginShowLocation(MapFragment.this);
+        }
         chageInspecState(mInspectionState);
         return binding.getRoot();
     }
@@ -324,10 +328,20 @@
                 Log.e("setWebViewClient", "statusCode:" + statusCode + ">>>>description:" + description);
                 // 鏍规嵁HTTP鐘舵�佺爜澶勭悊閿欒
             }
+
+            @Override
+            public void onPageFinished(WebView view, String url) {
+                super.onPageFinished(view, url);
+                webViewIsFinished = true;
+                //椤甸潰鍔犺浇瀹屾垚
+                if (isHaseAginData) {
+                    aginShowLocation(null);
+                }
+            }
         });
         //宸℃鎸夐挳
         binding.inspectButton.setOnClickListener(v -> {
-            chageInspecState(InspectionUtils.STAT_INSPECTION);
+            chageInspecState(InspectionUtils.STAT_INSPECTION_ONCLICK);
         });
         //鏆傚仠宸℃
         binding.inspectPause.setOnClickListener(v -> {
@@ -395,13 +409,16 @@
         track.setLocateTime(inspectionLocationBean.getLocateTime());
         inspectionRequest.getTracks().clear();
         inspectionRequest.addTracks(track);
-        ApiManager.getInstance().requestPostHideLoading(MapFragment.this.getContext(), BASE_URL + "/app/inspect/save", LoginResult.class, inspectionRequest.toMap(inspectionRequest), new SubscriberListener<BaseResponse<LoginResult>>() {
+        ApiManager.getInstance().requestPostHideLoading(MapFragment.this.getContext(), BASE_URL + "/app/inspect/save", InsectionResult.class, inspectionRequest.toMap(inspectionRequest), new SubscriberListener<BaseResponse<List<InsectionResult>>>() {
             @Override
-            public void onNext(BaseResponse<LoginResult> t) {
+            public void onNext(BaseResponse<List<InsectionResult>> t) {
                 try {
                     if (t.isSuccess()) {
+                        if (t.getContent() != null) {
+
+                        }
                         inspectionLocationBean.setPost(true);
-                        updateInspectionLocationData(MapFragment.this.getContext(), inspectionLocationBean);
+                        InspectionUtils.updateInspectionLocationData(MapFragment.this.getContext(), inspectionLocationBean);
                     } else {
 
                     }
@@ -418,12 +435,7 @@
      * 寮�濮嬪贰妫�
      */
     private void startInspection() {
-        DaoSingleton.getAsynchInstance(this.getContext()).inspectionDao().getMostRecentInspectionWithNoStopTime()
-                .subscribeOn(Schedulers.io())
-                .observeOn(AndroidSchedulers.mainThread()).subscribe(inspectionBean -> {
-                    // 鏇存柊 UI
-                    mInspectionBean = inspectionBean;
-                });
+
     }
 
 
@@ -439,8 +451,8 @@
                     //澶т簬鏈�灏忚窛绂�
                     lastLatLonBean = latLonBean;
                     Log.i("chageInspecState", "lat:" + latLonBean.getLatitude() + ",log:" + latLonBean.getLongitude());
-                    InspectionLocationBean inspectionLocationBean = createInspectionLocation(latLonBean);
-                    addInspectionLocationData(MapFragment.this.getContext(), inspectionLocationBean);
+                    InspectionLocationBean inspectionLocationBean = InspectionUtils.createInspectionLocation(latLonBean, mInspectionBean);
+                    InspectionUtils.addInspectionLocationData(MapFragment.this.getContext(), inspectionLocationBean);
                     //鏇存柊鍒板湴鍥�
                     mWebView.evaluateJavascript("javascript:updateLocation(\"" + latLonBean.getLongitude() + "\",\"" + latLonBean.getLatitude() + "\")", value -> {
                     });
@@ -449,30 +461,15 @@
                 } else {
                     Log.d(TAG, "isThanMinMeters>>>false");
                 }
-
-
             }
         }
     };
 
 
     /**
-     * 鍒涘缓InspectionLocationBean
-     */
-    private InspectionLocationBean createInspectionLocation(LatLonBean latLonBean) {
-        InspectionLocationBean inspectionLocationBean = new InspectionLocationBean();
-        inspectionLocationBean.setInspectId(mInspectionBean.getInspectId());
-        inspectionLocationBean.setLocateTime(DateUtils.getNowDateStr());
-        inspectionLocationBean.setPost(false);
-        inspectionLocationBean.setInspectorId(MyApplication.myApplication.userId);
-        inspectionLocationBean.setLng(String.valueOf(latLonBean.getLongitude()));
-        inspectionLocationBean.setLat(String.valueOf(latLonBean.getLatitude()));
-        return inspectionLocationBean;
-    }
-
-
-    /**
      * 淇敼宸℃鐘舵��
+     *
+     * @param inspectionState
      */
     private void chageInspecState(int inspectionState) {
         Intent location = new Intent(this.getActivity(), MyLocationService.class);
@@ -487,30 +484,17 @@
                 //鍏抽棴瀹氫綅
                 this.getActivity().stopService(location);
                 break;
-            case InspectionUtils.STAT_INSPECTION://1寮�濮�
+            case InspectionUtils.STAT_INSPECTION_ONCLICK:
                 //娣诲姞鏂扮殑宸℃璁板綍
-                startInspection();
-                //鑾峰彇瀹氫綅鏈嶅姟浼犺繃鏉ョ殑鍧愭爣鐐�
-                LiveEventBus.get(CommonKeyName.locationData).observeForever(locationObserver);
-                binding.inspectRL.setVisibility(View.VISIBLE);
-                binding.inspectButton.setVisibility(View.GONE);
-                binding.inspectPause.setText("鏆傚仠");
-                binding.stateText.setText("宸插紑鍚贰妫�");
-                binding.inspectRL.setBackgroundColor(this.getContext().getResources().getColor(R.color.base_blue));
-                //寮�鍚畾浣�
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
-                    this.getActivity().startForegroundService(location);
-                } else {
-                    this.getActivity().startService(location);
-                }
                 mInspectionBean = InspectionUtils.startInspection(this.getContext());
-                inspectionRequest = new InspectionRequest();
-                SharedPreferencesHelper.getInstance(this.getContext()).put(CommonKeyName.inspectionState, InspectionUtils.STAT_INSPECTION);
+                startLocation(location);
+                break;
+            case InspectionUtils.STAT_INSPECTION://1寮�濮�
+
+                startLocation(location);
                 break;
             case 2://鏆傚仠
-
                 try {
-                    LiveEventBus.get(CommonKeyName.locationData).removeObserver(locationObserver);
                     //鍏抽棴瀹氫綅
                     this.getActivity().stopService(location);
                     binding.stateText.setText("宸叉殏鍋滃贰妫�");
@@ -535,6 +519,53 @@
             default:
         }
         mInspectionState = inspectionState;
-
     }
+
+    /**
+     * 鎰忓閫�鍑哄悗缁х画鏄剧ず涔嬪墠鐨勫潗鏍�
+     */
+    public void aginShowLocation(List<InspectionLocationBean> locationBeans) {
+        isHaseAginData = true;
+        if (locationBeans != null) {
+            aginShowlocationBeans = locationBeans;
+        }
+        if (webViewIsFinished) {
+            if (aginShowlocationBeans != null) {
+                for (InspectionLocationBean inspectionLocationBean : aginShowlocationBeans) {
+                    Log.i("mWebView", "aginShowLocation" + inspectionLocationBean.getLng() + "\",\"" + inspectionLocationBean.getLat());
+                    mWebView.evaluateJavascript("javascript:aginShowLocation(\"" + inspectionLocationBean.getLng() + "\",\"" + inspectionLocationBean.getLat() + "\")", value -> {
+                    });
+                }
+                // 鍚� WebView 娉ㄥ叆鏁版嵁
+
+                aginShowlocationBeans.clear();
+
+            }
+
+        }
+    }
+
+    /**
+     * 寮�濮嬪贰妫�鐨勭浉鍏抽�昏緫
+     *
+     * @param location
+     */
+    private void startLocation(Intent location) {
+        //鑾峰彇瀹氫綅鏈嶅姟浼犺繃鏉ョ殑鍧愭爣鐐�
+        LiveEventBus.get(CommonKeyName.locationData).observeForever(locationObserver);
+        binding.inspectRL.setVisibility(View.VISIBLE);
+        binding.inspectButton.setVisibility(View.GONE);
+        binding.inspectPause.setText("鏆傚仠");
+        binding.stateText.setText("宸插紑鍚贰妫�");
+        binding.inspectRL.setBackgroundColor(this.getContext().getResources().getColor(R.color.base_blue));
+        //寮�鍚畾浣�
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+            this.getActivity().startForegroundService(location);
+        } else {
+            this.getActivity().startService(location);
+        }
+        inspectionRequest = new InspectionRequest();
+        SharedPreferencesHelper.getInstance(this.getContext()).put(CommonKeyName.inspectionState, InspectionUtils.STAT_INSPECTION);
+    }
+
 }
diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java
index 635c5ab..046e695 100644
--- a/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java
+++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java
@@ -16,9 +16,15 @@
 import com.dayu.pipirrapp.bean.db.LoginBean;
 import com.dayu.pipirrapp.dao.DaoSingleton;
 import com.dayu.pipirrapp.databinding.FragmentMyBinding;
+import com.dayu.pipirrapp.tool.InspectionUtils;
 import com.dayu.pipirrapp.utils.CleanDataUtils;
+import com.dayu.pipirrapp.utils.CommonKeyName;
+import com.dayu.pipirrapp.utils.SharedPreferencesHelper;
 import com.dayu.pipirrapp.utils.ToastUtil;
 import com.dayu.pipirrapp.view.ConfirmDialog;
+import com.dayu.pipirrapp.view.TagDialog;
+import com.dayu.pipirrapp.view.TipDialog;
+import com.dayu.pipirrapp.view.TipUtil;
 
 /**
  * author: zuo
@@ -46,19 +52,25 @@
         });
         //閫�鍑虹櫥褰�
         binding.loginOutRL.setOnClickListener((v) -> {
+            int inspectionState = SharedPreferencesHelper.getInstance(this.getContext()).get(CommonKeyName.inspectionState, 0);
+            if (inspectionState == InspectionUtils.NO_INSPECTION) {
+                ConfirmDialog confirmDialog = new ConfirmDialog(MyFragment.this.getActivity(), "纭畾閫�鍑哄悧锛�", (confirmDialog1, v12) -> {
+                    try {
+                        confirmDialog1.dismiss();
+                        CleanDataUtils.cleanUserData(MyFragment.this.getContext());
+                        Intent intent = new Intent(MyFragment.this.getContext(), LoginActivity.class);
 
-            ConfirmDialog confirmDialog = new ConfirmDialog(MyFragment.this.getActivity(), "纭畾閫�鍑哄悧锛�", (confirmDialog1, v12) -> {
-                try {
-                    confirmDialog1.dismiss();
-                    CleanDataUtils.cleanUserData(MyFragment.this.getContext());
-                    Intent intent = new Intent(MyFragment.this.getContext(), LoginActivity.class);
-                    MyFragment.this.getActivity().startActivity(intent);
-                    MyFragment.this.getActivity().finish();
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            });
-            confirmDialog.show();
+                        MyFragment.this.getActivity().startActivity(intent);
+                        MyFragment.this.getActivity().finish();
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                });
+                confirmDialog.show();
+            } else {
+                TipUtil.show(MyFragment.this.getActivity(), "鎮ㄨ繕鏈粨鏉熷贰妫�锛岃缁撴潫宸℃鍚庨��鍑猴紒");
+            }
+
 
         });
         LoginBean loginBean = DaoSingleton.getInstance(MyFragment.this.getContext()).loginDao().findFirst();
diff --git a/app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java b/app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java
index f4f3ebb..b14376b 100644
--- a/app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java
+++ b/app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java
@@ -4,10 +4,14 @@
 import android.location.Location;
 import android.util.Log;
 
+import androidx.room.Transaction;
+
+import com.dayu.pipirrapp.MyApplication;
 import com.dayu.pipirrapp.bean.db.InspectionBean;
 import com.dayu.pipirrapp.bean.db.InspectionLocationBean;
 import com.dayu.pipirrapp.bean.db.LatLonBean;
 import com.dayu.pipirrapp.dao.DaoSingleton;
+import com.dayu.pipirrapp.fragment.MapFragment;
 import com.dayu.pipirrapp.utils.DateUtils;
 
 import java.util.UUID;
@@ -26,9 +30,10 @@
     private static final String TAG = "InspectionUtils";
     //鎵撶偣鐨勬渶灏忎袱鐐规渶灏忚窛绂�
     private static final int MinMeters = 10;
-    //0娌℃湁寮�濮嬶紝1寮�濮嬶紝2鏆傚仠,3鍏抽棴
+    //0娌℃湁寮�濮嬶紝1寮�濮嬶紝2鏆傚仠,3鍏抽棴,4鏄偣鍑荤殑寮�濮嬫寜閽�
     public static final int NO_INSPECTION = 0;
     public static final int STAT_INSPECTION = 1;
+    public static final int STAT_INSPECTION_ONCLICK = 4;
     public static final int PAUSE_INSPECTION = 2;
     public static final int STOP_INSPECTION = 3;
 
@@ -36,13 +41,31 @@
     /**
      * 鑾峰彇褰撳墠宸℃璁板綍ID
      *
-     * @param context
+     * @param fragment
      * @return
      */
-    public static String getInspectionId(Context context) {
+    public static String getInspectionId(MapFragment fragment) {
+        DaoSingleton.getAsynchInstance(fragment.getContext()).inspectionDao().getMostRecentInspectionWithNoStopTime()
+                .subscribeOn(Schedulers.io())
+                .observeOn(Schedulers.io()).subscribe(inspectionBean -> {
 
-
+                });
         return "";
+    }
+
+
+    public static void aginShowLocation(MapFragment fragment) {
+        //鏌ヨ褰撳墠鏈叧闂殑宸℃璁板綍
+        DaoSingleton.getAsynchInstance(fragment.getContext()).inspectionDao().getMostRecentInspectionWithNoStopTime()
+                .subscribeOn(Schedulers.io())
+                .observeOn(Schedulers.io()).subscribe(inspectionBean -> {
+                    fragment.mInspectionBean = inspectionBean;
+                    // 鏌ヨ褰撳墠鏈叧闂殑宸℃璁板綍涓嬫墍鏈夌殑鍧愭爣
+                    DaoSingleton.getAsynchInstance(fragment.getContext()).inspectionLocationDao().findByInspectId(inspectionBean.getmInspectId()).subscribeOn(Schedulers.io())
+                            .observeOn(AndroidSchedulers.mainThread()).subscribe(inspectionLocationBeans -> {
+                                fragment.aginShowLocation(inspectionLocationBeans);
+                            });
+                });
     }
 
 
@@ -57,6 +80,7 @@
         InspectionBean inspectionBean = new InspectionBean();
         inspectionBean.setmInspectId(UUID.randomUUID().toString());
         inspectionBean.setStartTime(DateUtils.getNowDateStr());
+//        inspectionBean.
         // 寮傛鎻掑叆鍒版暟鎹簱
         DaoSingleton.getAsynchInstance(context)
                 .inspectionDao()
@@ -66,7 +90,7 @@
                 .subscribe(() -> {
                     Log.i(TAG, "Inspection started and inserted successfully.");
                 }, throwable -> {
-                    Log.e(TAG, "Error inserting inspection data: ", throwable);
+                    Log.e(TAG, "Error inserting inspection data: "+throwable);
                 });
         // 鑾峰彇Dao骞舵墽琛屾彃鍏ユ搷浣�
         return inspectionBean;  // 鎻掑叆瀹屾垚鍚庡垏鎹㈠埌涓荤嚎绋�
@@ -80,7 +104,15 @@
      * @param locationBean
      */
     public static void addInspectionLocationData(Context context, InspectionLocationBean locationBean) {
-        DaoSingleton.getAsynchInstance(context).inspectionLocationDao().insert(locationBean).subscribeOn(Schedulers.io());
+        DaoSingleton.getAsynchInstance(context).inspectionLocationDao().insert(locationBean).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
+                .subscribe(() -> {
+                    // 鎻掑叆鎴愬姛鐨勫洖璋�
+                    Log.d(TAG, "addInspectionLocationData鏁版嵁鎻掑叆鎴愬姛");
+                }, throwable -> {
+                    // 澶勭悊閿欒
+                    Log.e(TAG, "addInspectionLocationData鏁版嵁鎻掑叆澶辫触", throwable);
+                });
+        ;
     }
 
     /**
@@ -89,8 +121,17 @@
      * @param context
      * @param locationBean
      */
+    @Transaction
     public static void updateInspectionLocationData(Context context, InspectionLocationBean locationBean) {
-        DaoSingleton.getAsynchInstance(context).inspectionLocationDao().update(locationBean).subscribeOn(Schedulers.io());
+        DaoSingleton.getAsynchInstance(context).inspectionLocationDao().update(locationBean).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
+                .subscribe(() -> {
+                    // 鎻掑叆鎴愬姛鐨勫洖璋�
+                    Log.d(TAG, "updateInspectionLocationData鏁版嵁鎻掑叆鎴愬姛");
+                }, throwable -> {
+                    // 澶勭悊閿欒
+                    Log.e(TAG, "updateInspectionLocationData鏁版嵁鎻掑叆澶辫触", throwable);
+                });
+        ;
     }
 
     /**
@@ -115,4 +156,21 @@
         }
 
     }
+
+    /**
+     * 鍒涘缓InspectionLocationBean
+     */
+    public static InspectionLocationBean createInspectionLocation(LatLonBean latLonBean, InspectionBean mInspectionBean) {
+        InspectionLocationBean inspectionLocationBean = new InspectionLocationBean();
+        inspectionLocationBean.setId(UUID.randomUUID().toString());
+        inspectionLocationBean.setInspectId(mInspectionBean.getInspectId());
+        inspectionLocationBean.setmInspectId(mInspectionBean.getmInspectId());
+        inspectionLocationBean.setLocateTime(DateUtils.getNowDateStr());
+        inspectionLocationBean.setPost(false);
+        inspectionLocationBean.setInspectorId(MyApplication.myApplication.userId);
+        inspectionLocationBean.setLng(String.valueOf(latLonBean.getLongitude()));
+        inspectionLocationBean.setLat(String.valueOf(latLonBean.getLatitude()));
+        return inspectionLocationBean;
+    }
+
 }
diff --git a/app/src/main/java/com/dayu/pipirrapp/view/TipDialog.java b/app/src/main/java/com/dayu/pipirrapp/view/TipDialog.java
new file mode 100644
index 0000000..1ee6c92
--- /dev/null
+++ b/app/src/main/java/com/dayu/pipirrapp/view/TipDialog.java
@@ -0,0 +1,83 @@
+package com.dayu.pipirrapp.view;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.TextView;
+
+import com.dayu.pipirrapp.R;
+
+
+/**
+ * Created by Android Studio.
+ * author: zuo
+ * Date: 2023-11-22
+ * Time: 9:12
+ * 澶囨敞锛�
+ */
+public class TipDialog extends Dialog {
+
+
+    Context mContext;
+    String mData;
+    TipUtil.TipListener listener;
+
+    public TipDialog(Context context, String data, TipUtil.TipListener tipListener) {
+        super(context, R.style.showSelfDialog);
+        mContext = context;
+        mData = data;
+        listener = tipListener;
+        initView();
+    }
+
+    public TipDialog(Context context, String data) {
+        super(context, R.style.showSelfDialog);
+        mContext = context;
+        mData = data;
+        initView();
+    }
+
+
+    private void initView() {
+        getWindow().setGravity(Gravity.CENTER);
+        setContentView(R.layout.text_dialog);
+        setCanceledOnTouchOutside(false);
+        final TextView editText = (TextView) this.findViewById(R.id.textData);
+        editText.setText(mData);
+        TextView cannel = (TextView) this.findViewById(R.id.cannel);
+
+        cannel.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (listener != null) {
+                    listener.onCancle();
+                }
+                TipDialog.this.dismiss();
+            }
+        });
+
+    }
+
+    @Override
+    public void show() {
+
+        super.show();
+        /**
+         * 璁剧疆瀹藉害鍏ㄥ睆锛岃璁剧疆鍦╯how鐨勫悗闈�
+         */
+        WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
+        layoutParams.gravity = Gravity.CENTER;
+        layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
+        layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
+        getWindow().getDecorView().setPadding(0, 0, 0, 0);
+        getWindow().setAttributes(layoutParams);
+    }
+
+    public interface DialogBack {
+        void onOk(String data);
+        void onCancel();
+    }
+}
diff --git a/app/src/main/java/com/dayu/pipirrapp/view/TipUtil.java b/app/src/main/java/com/dayu/pipirrapp/view/TipUtil.java
new file mode 100644
index 0000000..0ec205d
--- /dev/null
+++ b/app/src/main/java/com/dayu/pipirrapp/view/TipUtil.java
@@ -0,0 +1,65 @@
+package com.dayu.pipirrapp.view;
+
+import android.app.Activity;
+import android.os.Build;
+import android.widget.Toast;
+
+import com.dayu.pipirrapp.MyApplication;
+
+
+public class TipUtil {
+    public interface TipListener {
+         void onCancle();
+    }
+
+    public static void show(Activity mActivity, String data) {
+//        Toast.makeText(context, data, Toast.LENGTH_LONG).show();
+        try {
+            if (!isDestroy(mActivity)) {
+                TipDialog tipDialog = new TipDialog(mActivity, data);
+                tipDialog.show();
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
+    public static void show(Activity mActivity, String data, TipListener tipListener) {
+//        Toast.makeText(context, data, Toast.LENGTH_LONG).show();
+        if (!isDestroy(mActivity)) {
+            TipDialog tipDialog = new TipDialog(mActivity, data, tipListener);
+            tipDialog.show();
+        }
+
+    }
+
+    public static void show(String data) {
+        Toast.makeText(MyApplication.myApplication, data, Toast.LENGTH_LONG).show();
+
+    }
+
+//    public static void show(String data, TipListener tipListener) {
+////        Toast.makeText(, data, Toast.LENGTH_LONG).show();
+//        TipDialog tipDialog = new TipDialog(MainActivity.myMainActivity, data, tipListener);
+//        tipDialog.show();
+//    }
+
+    /**
+     * 鍒ゆ柇Activity鏄惁Destroy
+     *
+     * @param mActivity
+     * @return true:宸查攢姣�
+     */
+    public static boolean isDestroy(Activity mActivity) {
+        if (mActivity == null ||
+                mActivity.isFinishing() ||
+                (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && mActivity.isDestroyed())) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+}
diff --git a/app/src/main/res/layout/text_dialog.xml b/app/src/main/res/layout/text_dialog.xml
new file mode 100644
index 0000000..23619c7
--- /dev/null
+++ b/app/src/main/res/layout/text_dialog.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="#00ffffff"
+    android:gravity="center"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:background="@drawable/base_bg_dialog_top_stroke"
+        android:gravity="center"
+        android:orientation="vertical"
+        android:paddingRight="20dp"
+        android:paddingLeft="20dp"
+        android:paddingTop="20dp"
+        >
+
+
+        <TextView
+            android:id="@+id/textData"
+            android:layout_width="300dp"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="20dp"
+            android:gravity="center"
+            android:textColor="#000000"
+            android:textSize="20sp" />
+
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_horizontal"
+            android:layout_marginTop="15dp"
+            android:layout_marginBottom="10dp"
+            android:orientation="vertical">
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="2px"
+                android:background="@color/line_bg" />
+
+            <TextView
+                android:id="@+id/cannel"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/dialog_btn_height"
+                android:layout_weight="1"
+                android:background="@drawable/textview_select_bg"
+                android:gravity="center"
+                android:text="纭�    璁�"
+                android:textColor="@color/dialog_btn"
+                android:textSize="20sp" />
+
+
+        </LinearLayout>
+
+
+    </LinearLayout>
+
+</LinearLayout>
+

--
Gitblit v1.8.0