From 4230457ee9edca6af738ec3f832ed0f49d0d99c3 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期三, 04 十二月 2024 18:10:30 +0800
Subject: [PATCH] 1.下载地图瓦片判断是否有网。 2.没有上传成功的巡检坐标有网时重新上传。 3.添加网络判断的工具类

---
 app/src/main/java/com/dayu/pipirrapp/dao/InspectionLocationDao.java      |   11 +
 app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java            |    2 
 app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java                 |   90 +++-------
 app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java      |    2 
 app/src/main/assets/js/map.js                                            |   69 +++++--
 app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java           |  109 +++++++++++
 app/src/main/java/com/dayu/pipirrapp/net/MyIntercepterApplication.java   |   12 
 app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionLocationBean.java |    9 
 app/src/main/java/com/dayu/pipirrapp/bean/net/InsectionResult.java       |   12 
 app/src/main/res/layout/activity_login.xml                               |    4 
 app/src/main/java/com/dayu/pipirrapp/dao/InspectionDao.java              |    2 
 app/src/main/java/com/dayu/pipirrapp/utils/NetUtils.java                 |   80 ++++++++
 app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java          |   55 +++++
 app/src/main/java/com/dayu/pipirrapp/bean/db/InspectionBean.java         |   25 ++
 app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java           |   42 +++-
 app/src/main/java/com/dayu/pipirrapp/utils/MyLog.java                    |    4 
 16 files changed, 400 insertions(+), 128 deletions(-)

diff --git a/app/src/main/assets/js/map.js b/app/src/main/assets/js/map.js
index a3f9e30..367686b 100644
--- a/app/src/main/assets/js/map.js
+++ b/app/src/main/assets/js/map.js
@@ -48,7 +48,7 @@
     // 鍦板浘鐐瑰嚮鍚庤幏鍙栫粡绾害
     function getLngLat(lnglat) {
         console.log(lnglat.lng.toFixed(6) + "," + lnglat.lat.toFixed(6));
-        addClickOverLay(lnglat);
+        // addClickOverLay(lnglat);
     }
 
     // 鐐瑰嚮鍚庢坊鍔犲潗鏍囩偣
@@ -169,6 +169,10 @@
         window.setCenterAndZoom = setCenterAndZoom;
         window.updateLocation = updateLocation;
         window.aginShowLocation = aginShowLocation;
+        window.cleanLocationLay = cleanLocationLay;
+        window.updateInspectionLocation=updateInspectionLocation;
+        window.cleanLoclLay=cleanLoclLay;
+
     }
 
     // 璋冪敤鍘熺敓瀹夊崜鏂规硶鏄剧ず鍙栨按鍙h鎯�
@@ -271,18 +275,8 @@
         });
         return "addMarker鍔犺浇鎴愬姛"
     }
-    //淇濆瓨瀹氫綅鍧愭爣鐢熸垚杞ㄨ抗
-    var path = [];
-    var lineLayer = new T.Polyline([], { color: '#ff4500', weight: 3, opacity: 0.8 });
-    let locationMarker;
+    //鏇存柊瀹氫綅鍧愭爣
     function updateLocation(log, lat) {
-        var lastLat = lat;
-        // const intervalId = setInterval(() => {
-        // lastLat=lastLat+0.0001;
-        var newPoint = new T.LngLat(log, lastLat);
-        path.push(newPoint);
-        lineLayer.setLngLats(path);
-        map.addOverLay(lineLayer);
         let icon = new T.Icon({
             iconUrl: locationIMGPath,
             iconSize: new T.Point(20, 20),
@@ -291,21 +285,58 @@
         if (locationMarker) {
             map.removeOverLay(locationMarker);
         }
-        locationMarker = new T.Marker(new T.LngLat(log, lastLat), { icon: icon });
+        var newPoint = new T.LngLat(log, lat);
+        locationMarker = new T.Marker(newPoint, { icon: icon });
         map.addOverLay(locationMarker);
-        // 绉诲姩鍦板浘瑙嗚鍒版渶鍚庝竴涓綅缃�
         map.panTo(newPoint);
-        // }, 500);
-
     }
+    //淇濆瓨瀹氫綅鍧愭爣鐢熸垚杞ㄨ抗
+    var path = [];
+    var lineLayer = new T.Polyline([], { color: '#ff4500', weight: 3, opacity: 0.8 });
+    let locationMarker;
+    function updateInspectionLocation(log, lat) {
+        var lastLat = lat;
+        // const intervalId = setInterval(() => {
+        // lastLat=lastLat+0.0001;
+        var newPoint = new T.LngLat(log, lastLat);
+        path.push(newPoint);
+        lineLayer.setLngLats(path);
+        map.addOverLay(lineLayer);
+        // 绉诲姩鍦板浘瑙嗚鍒版渶鍚庝竴涓綅缃�
+  
+        // }, 500);
+    }
+
     var aginPath = [];
+    var oldLineLayer = new T.Polyline([], { color: '#ff4500', weight: 3, opacity: 0.8 });
+    //鏄剧ず鍥犲紓甯稿叧闂殑宸℃璁板綍
     function aginShowLocation(lng, lat) {
         // 璋冪敤 Android 鎻愪緵鐨勬帴鍙o紝鑾峰彇鏁版嵁
-        console.log("aginShowLocation>>lng:"+lng+">>>lat:"+lat);
+        console.log("aginShowLocation>>lng:" + lng + ">>>lat:" + lat);
         var newPoint = new T.LngLat(lng, lat);
         aginPath.push(newPoint);
-        lineLayer.setLngLats(aginPath);
-        map.addOverLay(lineLayer);
+        oldLineLayer.setLngLats(aginPath);
+        map.addOverLay(oldLineLayer);
+    }
+    //娓呴櫎宸℃璁板綍杞ㄨ抗
+    function cleanLocationLay() {
+        if (lineLayer) {
+            map.removeOverLay(lineLayer);
+            path=[]
+        }
+        if (locationMarker) {
+            map.removeOverLay(locationMarker);
+        }
+        if (oldLineLayer) {
+            aginPath=[]
+            map.removeOverLay(oldLineLayer);
+        }
+    }
+    //娓呴櫎鏈湴瀹氫綅鍧愭爣浣嶇疆
+    function cleanLoclLay(){
+        if (locationMarker) {
+            map.removeOverLay(locationMarker);
+        }
     }
 
 
diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java
index 2976fb0..e394ea6 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java
@@ -1,10 +1,13 @@
 package com.dayu.pipirrapp.activity;
 
+import android.net.ConnectivityManager;
+import android.net.Network;
 import android.os.Bundle;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.widget.Toast;
 
+import androidx.annotation.NonNull;
 import androidx.appcompat.app.AppCompatActivity;
 import androidx.core.content.ContextCompat;
 import androidx.fragment.app.Fragment;
@@ -19,6 +22,9 @@
 import com.dayu.pipirrapp.fragment.MapFragment;
 import com.dayu.pipirrapp.fragment.MyFragment;
 import com.dayu.pipirrapp.net.MqttManager;
+import com.dayu.pipirrapp.tool.InspectionUtils;
+import com.dayu.pipirrapp.utils.MyLog;
+import com.dayu.pipirrapp.utils.NetUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -41,13 +47,17 @@
         super.onCreate(savedInstanceState);
         binding = ActivityMainBinding.inflate(LayoutInflater.from(this));
         setContentView(binding.getRoot());
-
+        registNetCallBack();
         setupFragments();
         initView();
         initTab();
 
-        TagBean tagBean = DaoSingleton.getInstance(this).tagDao().findFirst();
-        MyApplication.myApplication.myTag = tagBean.getTag();
+        try {
+            TagBean tagBean = DaoSingleton.getInstance(this).tagDao().findFirst();
+            MyApplication.myApplication.myTag = tagBean.getTag();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
         mqttManager = new MqttManager(this);
         mqttManager.connect();
     }
@@ -90,7 +100,12 @@
     protected void onDestroy() {
         super.onDestroy();
         //鍏抽棴MQ
-        mqttManager.disconnect();
+        try {
+            mqttManager.disconnect();
+            unregisterNetworkCallback();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
     }
 
     /**
@@ -145,4 +160,36 @@
         binding.myImg.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.bottom_my_black));
         binding.myText.setTextColor(ContextCompat.getColor(this, R.color.black));
     }
+
+    //    娉ㄥ唽缃戠粶鐩戞帶
+    private void registNetCallBack() {
+        NetUtils.registerNetCallBack(this, networkCallback);
+    }
+
+    private void unregisterNetworkCallback() {
+        NetUtils.unregisterReceiver(this, networkCallback);
+    }
+
+    //缃戠粶鐩戞帶
+    ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
+        @Override
+        public void onAvailable(@NonNull Network network) {
+            super.onAvailable(network);
+            // 杩欓噷鍙互鎵ц缃戠粶鍙敤鍚庣殑閫昏緫锛屾瘮濡傝繘琛屾暟鎹姹傜瓑
+            MyLog.d("onAvailable");
+            InspectionUtils.aginPutInspectionData(MainActivity.this);
+        }
+
+        @Override
+        public void onLost(@NonNull Network network) {
+            super.onLost(network);
+            // 杩欓噷鍙互鎵ц缃戠粶涓㈠け鍚庣殑閫昏緫锛屾瘮濡傚仠姝㈡暟鎹姹傜瓑
+            MyLog.d("onLost");
+        }
+    };
+
+
+
+
+
 }
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 d370968..55838f4 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
@@ -1,5 +1,6 @@
 package com.dayu.pipirrapp.bean.db;
 
+import androidx.annotation.NonNull;
 import androidx.room.Entity;
 import androidx.room.PrimaryKey;
 
@@ -12,12 +13,32 @@
  */
 @Entity
 public class InspectionBean {
-    @PrimaryKey(autoGenerate = true)
-    public long id;
+    @PrimaryKey()
+    @NonNull
+    public String id;
     public String inspectId;//宸℃ID
     public String mInspectId;//鏈湴鏁版嵁搴撳贰妫�ID
     public String startTime;//寮�濮嬪贰妫�鏃堕棿
     public String stopTime;//鍋滄宸℃鏃堕棿
+    public String inspectorId;//宸℃鍛業D
+
+
+    public String getInspectorId() {
+        return inspectorId;
+    }
+
+    public void setInspectorId(String inspectorId) {
+        this.inspectorId = inspectorId;
+    }
+
+    @NonNull
+    public String getId() {
+        return id;
+    }
+
+    public void setId(@NonNull String id) {
+        this.id = id;
+    }
 
     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 521044c..16739fc 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
@@ -16,7 +16,7 @@
     @PrimaryKey()
     @NonNull
     public String id;
-    public String inspectorId;//宸℃鍛業D
+
     public String inspectId;//宸℃ID
     public String mInspectId;//鏈湴鏁版嵁搴撳贰妫�ID
     public String lng;//缁忓害
@@ -40,13 +40,6 @@
         this.mInspectId = mInspectId;
     }
 
-    public String getInspectorId() {
-        return inspectorId;
-    }
-
-    public void setInspectorId(String inspectorId) {
-        this.inspectorId = inspectorId;
-    }
 
     public String getInspectId() {
         return inspectId;
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
index a7f834e..a509e35 100644
--- a/app/src/main/java/com/dayu/pipirrapp/bean/net/InsectionResult.java
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/InsectionResult.java
@@ -10,22 +10,22 @@
 public class InsectionResult {
 
 
-    String inspectId;//宸℃id
-    String inspectorId;//宸℃鍛榠d
+    long inspectId;//宸℃id
+    long inspectorId;//宸℃鍛榠d
 
-    public String getInspectId() {
+    public long getInspectId() {
         return inspectId;
     }
 
-    public void setInspectId(String inspectId) {
+    public void setInspectId(long inspectId) {
         this.inspectId = inspectId;
     }
 
-    public String getInspectorId() {
+    public long getInspectorId() {
         return inspectorId;
     }
 
-    public void setInspectorId(String inspectorId) {
+    public void setInspectorId(long inspectorId) {
         this.inspectorId = inspectorId;
     }
 }
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 72bd3c5..8903dff 100644
--- a/app/src/main/java/com/dayu/pipirrapp/dao/InspectionDao.java
+++ b/app/src/main/java/com/dayu/pipirrapp/dao/InspectionDao.java
@@ -19,7 +19,7 @@
     Completable insert(InspectionBean inspectionBean);
 
     @Update
-    void update(InspectionBean inspectionBean);
+    Completable update(InspectionBean inspectionBean);
 
     @Delete
     void delete(InspectionBean inspectionBean);
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 801797c..efb9a3a 100644
--- a/app/src/main/java/com/dayu/pipirrapp/dao/InspectionLocationDao.java
+++ b/app/src/main/java/com/dayu/pipirrapp/dao/InspectionLocationDao.java
@@ -32,12 +32,19 @@
     InspectionLocationBean findFirst();
 
     //鏌ヨ鎵�鏈夋病鏈変笂浼犵殑鍧愭爣
-    @Query("select  * from InspectionLocationBean where isPost=false")
-    List<InspectionLocationBean> findByNoPost();
+    @Query("select  * from InspectionLocationBean where isPost=false AND mInspectId=:mInspectId ORDER BY locateTime ASC")
+    Single<List<InspectionLocationBean>> findByNoPostAndInspectId(String mInspectId);
 
 
     //鏌ヨ鎵�鏈夎宸℃id鐨勫潗鏍�
     @Query("select  * from InspectionLocationBean where mInspectId=:mInspectId ORDER BY locateTime ASC")
     Single<List<InspectionLocationBean>> findByInspectId(String mInspectId);
 
+    //鏌ヨ鎵�鏈夋湭涓婁紶鐨刴InspectId
+    @Query("SELECT DISTINCT mInspectId FROM InspectionLocationBean WHERE isPost = false")
+    Single<List<String>> getUnpostedMInspectIds();
+
+    //鏇存柊鎵�鏈塵InspectId涓嬬殑宸蹭笂浼犵姸鎬�
+    @Query("UPDATE InspectionLocationBean SET isPost = true WHERE mInspectId = :mInspectId")
+    Completable updataByInspectIdSetIsPost(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 b4d3094..ac24cfa 100644
--- a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
+++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
@@ -8,6 +8,7 @@
 import android.location.LocationManager;
 import android.os.Build;
 import android.os.Bundle;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -45,6 +46,7 @@
 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;
@@ -278,14 +280,14 @@
             @Override
             public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
                 String url = request.getUrl().toString();
-                Log.i(TAG, "鍔犺浇鍦板潃>>>" + url);
+//                Log.d(TAG, "鍔犺浇鍦板潃>>>" + url);
                 //鍒ゆ柇褰撳墠鏄惁涓哄姞杞界摝鐗�
                 if (MapJpgUtils.getInsatance().isTianDiTuTileRequest(url)) {
                     String androidUrl = url.replace(CommonData.webKey, CommonData.androidKey);
                     // 妫�鏌ユ湰鍦扮紦瀛�
                     File cachedTile = MapJpgUtils.getInsatance().getCachedTile(androidUrl);
                     if (cachedTile != null && cachedTile.exists()) {
-                        Log.i(TAG, "鏈湴缂撳瓨>>>" + androidUrl);
+//                        Log.d(TAG, "鏈湴缂撳瓨>>>" + androidUrl);
 //                        if (MapJpgUtils.getInsatance().validateImageFile(androidUrl,request.))
                         // 鍒ゆ柇缂撳瓨鏄惁杩囨湡
 //                    if (!MapJpgUtils.getInsatance(MapFragment.this.getContext()).isCacheExpired(cachedTile)) {
@@ -298,9 +300,9 @@
 //                    }
                     } else {
                         //涓嬭浇鐡︾墖
-                        ApiManager.getInstance().donwLoadTile(androidUrl);
+                        ApiManager.getInstance().donwLoadTile(MapFragment.this.getContext(),androidUrl);
                     }
-                    Log.i(TAG, "鍦ㄧ嚎鍔犺浇>>>" + url);
+//                    Log.d(TAG, "鍦ㄧ嚎鍔犺浇>>>" + url);
                 }
 
 
@@ -398,10 +400,12 @@
      */
     private void pushLocationData(InspectionLocationBean inspectionLocationBean) {
         inspectionRequest.setInspectId(inspectionLocationBean.getInspectId());
-        inspectionRequest.setInspectorId(inspectionLocationBean.getInspectorId());
+        inspectionRequest.setInspectorId(mInspectionBean.getInspectorId());
         if (mInspectionBean != null) {
             inspectionRequest.setStartTime(mInspectionBean.getStartTime());
-            inspectionRequest.setStopTime(mInspectionBean.getStopTime());
+            if (!TextUtils.isEmpty(mInspectionBean.getStopTime())) {
+                inspectionRequest.setStopTime(mInspectionBean.getStopTime());
+            }
         }
         InspectionRequest.Track track = new InspectionRequest.Track();
         track.setLat(inspectionLocationBean.getLat());
@@ -415,7 +419,8 @@
                 try {
                     if (t.isSuccess()) {
                         if (t.getContent() != null) {
-
+                            mInspectionBean.setInspectId(String.valueOf(t.getContent().get(0).getInspectId()));
+                            InspectionUtils.upataInspectionData(MapFragment.this.getContext(), mInspectionBean);
                         }
                         inspectionLocationBean.setPost(true);
                         InspectionUtils.updateInspectionLocationData(MapFragment.this.getContext(), inspectionLocationBean);
@@ -454,6 +459,8 @@
                     InspectionLocationBean inspectionLocationBean = InspectionUtils.createInspectionLocation(latLonBean, mInspectionBean);
                     InspectionUtils.addInspectionLocationData(MapFragment.this.getContext(), inspectionLocationBean);
                     //鏇存柊鍒板湴鍥�
+                    mWebView.evaluateJavascript("javascript:updateInspectionLocation(\"" + latLonBean.getLongitude() + "\",\"" + latLonBean.getLatitude() + "\")", value -> {
+                    });
                     mWebView.evaluateJavascript("javascript:updateLocation(\"" + latLonBean.getLongitude() + "\",\"" + latLonBean.getLatitude() + "\")", value -> {
                     });
                     //涓婁紶鍧愭爣
@@ -476,7 +483,7 @@
         location.putExtra("isSingle", false);
         //0娌℃湁寮�濮嬶紝1寮�濮嬶紝2鏆傚仠,3鍏抽棴
         switch (inspectionState) {
-            case 0:
+            case InspectionUtils.NO_INSPECTION:
                 binding.inspectButton.setVisibility(View.VISIBLE);
                 binding.inspectRL.setVisibility(View.GONE);
                 binding.inspectButton.setText("宸�");
@@ -493,7 +500,7 @@
 
                 startLocation(location);
                 break;
-            case 2://鏆傚仠
+            case InspectionUtils.PAUSE_INSPECTION://鏆傚仠
                 try {
                     //鍏抽棴瀹氫綅
                     this.getActivity().stopService(location);
@@ -501,17 +508,32 @@
                     binding.inspectPause.setText("缁х画");
                     binding.inspectRL.setBackgroundColor(this.getContext().getResources().getColor(R.color.inspect_rl_bg_color));
                     SharedPreferencesHelper.getInstance(this.getContext()).put(CommonKeyName.inspectionState, InspectionUtils.PAUSE_INSPECTION);
+                    //娓呴櫎鍦板浘宸℃杞ㄨ抗
+                    mWebView.evaluateJavascript("javascript:cleanLoclLay()", value -> {
+                    });
                 } catch (Resources.NotFoundException e) {
                     e.printStackTrace();
                 }
                 break;
-            case 3:
+            case InspectionUtils.STOP_INSPECTION://鍏抽棴
                 ConfirmDialog confirmDialog = new ConfirmDialog(MapFragment.this.getActivity(), "鎻愮ず", "纭鍏抽棴宸℃鍚楋紵", new ConfirmDialog.ConfirmOnClickListener() {
                     @Override
                     public void onClick(ConfirmDialog confirmDialog, View v) {
                         confirmDialog.dismiss();
                         chageInspecState(InspectionUtils.NO_INSPECTION);
                         SharedPreferencesHelper.getInstance(MapFragment.this.getContext()).put(CommonKeyName.inspectionState, InspectionUtils.NO_INSPECTION);
+                        //鏇存柊鏈湴鏁版嵁搴撶粨鏉熸椂闂�
+                        mInspectionBean.setStopTime(DateUtils.getNowDateStr());
+                        InspectionUtils.upataInspectionData(MapFragment.this.getContext(), mInspectionBean);
+                        //涓婃姤缁撴潫鏃堕棿
+                        InspectionLocationBean inspectionLocationBean = InspectionUtils.createInspectionLocation(lastLatLonBean, mInspectionBean);
+                        InspectionUtils.addInspectionLocationData(MapFragment.this.getContext(), inspectionLocationBean);
+                        pushLocationData(inspectionLocationBean);
+                        mInspectionBean = new InspectionBean();
+                        //娓呴櫎鍦板浘宸℃杞ㄨ抗
+                        mWebView.evaluateJavascript("javascript:cleanLocationLay()", value -> {
+                        });
+                        lastLatLonBean = null;
                     }
                 });
                 confirmDialog.show();
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 046e695..4f5be47 100644
--- a/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java
+++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java
@@ -22,8 +22,6 @@
 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;
 
 /**
diff --git a/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java b/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
index 8e03e6f..dc7a736 100644
--- a/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
+++ b/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
@@ -1,10 +1,6 @@
 package com.dayu.pipirrapp.net;
 
 import android.content.Context;
-import android.net.ConnectivityManager;
-import android.net.NetworkCapabilities;
-import android.net.NetworkInfo;
-import android.os.Build;
 import android.util.Log;
 
 import com.dayu.pipirrapp.MyApplication;
@@ -18,6 +14,7 @@
 import com.dayu.pipirrapp.net.upload.UploadFileListener;
 import com.dayu.pipirrapp.utils.MapJpgUtils;
 import com.dayu.pipirrapp.utils.MyJsonParser;
+import com.dayu.pipirrapp.utils.NetUtils;
 
 import java.util.HashMap;
 import java.util.List;
@@ -88,6 +85,7 @@
     public <T> void requestGet(final Context context, final String path, final Class<T> tClass, final Map<String, Object> params, final SubscriberListener listener) {
         request(context, false, path, true, tClass, params, listener);
     }
+
     public <T> void requestGetHideLoading(final Context context, final String path, final Class<T> tClass, final Map<String, Object> params, final SubscriberListener listener) {
         request(context, true, path, true, tClass, params, listener);
     }
@@ -201,7 +199,7 @@
      * @param <T>
      */
     public <T> void getCode(Map<String, Object> params, CodeListener listener) {
-        if (isNetworkAvailable(MyApplication.myApplication)) {
+        if (NetUtils.isNetworkAvailable(MyApplication.myApplication)) {
             Observable observable;
             observable = apiService.getCode(params);
             observable.subscribeOn(Schedulers.io())
@@ -224,33 +222,31 @@
      *
      * @param urlPath
      */
-    public void donwLoadTile(String urlPath) {
-        Observable<ResponseBody> observable;
-        observable = apiService.downloadTile(urlPath);
+    public void donwLoadTile(Context context, String urlPath) {
+        if (NetUtils.isNetworkAvailable(context)) {
+            Observable<ResponseBody> observable;
+            observable = apiService.downloadTile(urlPath);
+            observable
+                    .subscribeOn(Schedulers.io())  // 缃戠粶璇锋眰鍦� I/O 绾跨▼涓繘琛�
+                    .observeOn(Schedulers.io())    // 鍥炶皟澶勭悊涔熷湪 I/O 绾跨▼
+                    .subscribe(
+                            responseBody -> {
 
-
-//        compositeDisposable.add(
-        observable
-                .subscribeOn(Schedulers.io())  // 缃戠粶璇锋眰鍦� I/O 绾跨▼涓繘琛�
-                .observeOn(Schedulers.io())    // 鍥炶皟澶勭悊涔熷湪 I/O 绾跨▼
-                .subscribe(
-                        responseBody -> {
-
-                            boolean success = false;
-                            if (!MapJpgUtils.getInsatance().isHasFiles(urlPath)) {
-                                success = MapJpgUtils.getInsatance().saveTileToCache(urlPath, responseBody);
-                            }
-                            if (success) {
-                                Log.d(TAG, "Download success for tile: " + urlPath);
-                            } else {
-                                Log.e(TAG, "Failed to save tile to disk: " + urlPath);
-                            }
-                        },
-                        throwable -> Log.e(TAG, "Download failed for tile: " + urlPath)
-                );
-//        );
-
-
+                                boolean success = false;
+                                if (!MapJpgUtils.getInsatance().isHasFiles(urlPath)) {
+                                    success = MapJpgUtils.getInsatance().saveTileToCache(urlPath, responseBody);
+                                }
+                                if (success) {
+                                    Log.d(TAG, "Download success for tile: " + urlPath);
+                                } else {
+                                    Log.e(TAG, "Failed to save tile to disk: " + urlPath);
+                                }
+                            },
+                            throwable -> Log.e(TAG, "Download failed for tile: " + urlPath)
+                    );
+        } else {
+            Log.e(TAG, "娌℃湁缃戠粶涓嶄笅杞�: " + urlPath);
+        }
     }
 
     // 鍋滄绾跨▼姹狅紝閲婃斁璧勬簮
@@ -260,36 +256,6 @@
         }
     }
 
-    /**
-     * 鍒ゆ柇褰撳墠鏄惁鏈夌綉缁�
-     *
-     * @param context
-     * @return
-     */
-    public boolean isNetworkAvailable(Context context) {
-        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
-
-        if (connectivityManager != null) {
-            // 瀵逛簬 Android 鐗堟湰澶т簬绛変簬 Android Q (API level 29)
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
-                NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
-                if (capabilities != null) {
-                    // 妫�鏌ョ綉缁滄槸鍚︽湁浼犺緭鑳藉姏锛堝寘鎷� Wi-Fi 鍜岀Щ鍔ㄦ暟鎹級
-                    if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
-                        return true;
-                    }
-                }
-            } else {
-                // 瀵逛簬 Android Q 浠ヤ笅鐗堟湰
-                NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
-                if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {
-                    return true;
-                }
-            }
-        }
-
-        return false;  // 鏃犵綉缁滆繛鎺�
-    }
 
     /**
      * 涓婁紶鏂囦欢
@@ -340,8 +306,6 @@
             }
         });
     }
-
-
 
 
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/dayu/pipirrapp/net/MyIntercepterApplication.java b/app/src/main/java/com/dayu/pipirrapp/net/MyIntercepterApplication.java
index 8da13e0..32f133b 100644
--- a/app/src/main/java/com/dayu/pipirrapp/net/MyIntercepterApplication.java
+++ b/app/src/main/java/com/dayu/pipirrapp/net/MyIntercepterApplication.java
@@ -3,7 +3,7 @@
 import android.text.TextUtils;
 
 import com.dayu.pipirrapp.MyApplication;
-import com.dayu.pipirrapp.utils.ToastUtil;
+import com.dayu.pipirrapp.utils.NetUtils;
 import com.tencent.bugly.crashreport.CrashReport;
 
 import java.io.IOException;
@@ -30,9 +30,8 @@
     public Response intercept(Chain chain) throws IOException {
         Request request = chain.request();
         try {
-
-            Request myRequest = createRequest(chain.request());
-            if (myRequest != null) {
+            if (NetUtils.isNetworkAvailable(MyApplication.myApplication)) {
+                Request myRequest = createRequest(chain.request());
                 Response response = null;
                 try {
                     response = chain.proceed(myRequest);
@@ -42,7 +41,8 @@
                 }
                 return response;
             } else {
-                ToastUtil.showToastLong(MyApplication.myApplication, "璇锋鏌ョ綉缁滆繛鎺�!!");
+                return getNullResponse(request);
+
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -91,7 +91,7 @@
     public Response getNullResponse(Request request) {
         int code = 20010;
         String message = "鍜︼紝璇锋鏌ョ綉缁�";
-        String errJson = "{\"code\":" + code + ",\"message\":\"" + message + "\"}";
+        String errJson = "{\"code\":" + code + ",\"msg\":\"" + message + "\"}";
         Response.Builder builder = new Response.Builder().body(ResponseBody.create(MediaType.parse("application/json"), errJson));
         builder.request(request);
         builder.protocol(Protocol.HTTP_1_1);
diff --git a/app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java b/app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java
index 00c7aea..3b17e9c 100644
--- a/app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java
+++ b/app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java
@@ -219,7 +219,7 @@
 
             String longitude = "Longitude:" + location.getLongitude();
             String latitude = "Latitude:" + location.getLatitude();
-            MyLog.i("鍘熺敓瀹氫綅onLocationChanged:  Latitude锛�" + latitude + "  Longitude锛�" + longitude);
+            MyLog.d("鍘熺敓瀹氫綅onLocationChanged:  Latitude锛�" + latitude + "  Longitude锛�" + longitude);
             postPosition(location.getLatitude(), location.getLongitude());
 //            鏄惁涓�娆℃�у畾浣�
             if (isSingle) {
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 b14376b..add7b6f 100644
--- a/app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java
+++ b/app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java
@@ -1,7 +1,10 @@
 package com.dayu.pipirrapp.tool;
 
+import static com.dayu.pipirrapp.net.Constants.BASE_URL;
+
 import android.content.Context;
 import android.location.Location;
+import android.text.TextUtils;
 import android.util.Log;
 
 import androidx.room.Transaction;
@@ -10,13 +13,22 @@
 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.bean.net.InsectionResult;
+import com.dayu.pipirrapp.bean.net.InspectionRequest;
 import com.dayu.pipirrapp.dao.DaoSingleton;
 import com.dayu.pipirrapp.fragment.MapFragment;
+import com.dayu.pipirrapp.net.ApiManager;
+import com.dayu.pipirrapp.net.BaseResponse;
+import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
 import com.dayu.pipirrapp.utils.DateUtils;
+import com.tencent.bugly.crashreport.CrashReport;
 
+import java.util.List;
 import java.util.UUID;
 
 import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
+import io.reactivex.rxjava3.functions.Action;
+import io.reactivex.rxjava3.functions.Consumer;
 import io.reactivex.rxjava3.schedulers.Schedulers;
 
 /**
@@ -80,6 +92,8 @@
         InspectionBean inspectionBean = new InspectionBean();
         inspectionBean.setmInspectId(UUID.randomUUID().toString());
         inspectionBean.setStartTime(DateUtils.getNowDateStr());
+        inspectionBean.setId(UUID.randomUUID().toString());
+        inspectionBean.setInspectorId(MyApplication.myApplication.userId);
 //        inspectionBean.
         // 寮傛鎻掑叆鍒版暟鎹簱
         DaoSingleton.getAsynchInstance(context)
@@ -90,7 +104,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;  // 鎻掑叆瀹屾垚鍚庡垏鎹㈠埌涓荤嚎绋�
@@ -115,6 +129,82 @@
         ;
     }
 
+
+    //涓婁紶鍥犵綉缁滈棶棰樹骇鐢熺殑鏈笂浼犳暟鎹�
+    public static void aginPutInspectionData(Context context) {
+        //鏌ヨ娌℃湁涓婁紶鐨勬墍鏈夋湰鍦版暟鎹簱鐨勫贰妫�id
+        DaoSingleton.getAsynchInstance(context).inspectionLocationDao().getUnpostedMInspectIds()
+                .subscribeOn(Schedulers.io())
+                .observeOn(Schedulers.io())
+                .subscribe(strings -> {
+                    //寰幆鏌ヨ鎵�鏈塱d
+                    for (String data : strings) {
+                        DaoSingleton.getAsynchInstance(context).inspectionDao().findBymInspectId(data)
+                                .subscribeOn(Schedulers.io())
+                                .observeOn(Schedulers.io())
+                                .subscribe(inspectionBeans -> {
+                                    DaoSingleton.getAsynchInstance(context).inspectionLocationDao().findByNoPostAndInspectId(data)
+                                            .subscribeOn(Schedulers.io())
+                                            .observeOn(Schedulers.io())
+                                            .subscribe(inspectionLocationBeans -> {
+                                                postInspectionData(context, inspectionBeans, inspectionLocationBeans);
+                                            });
+                                });
+                    }
+
+                });
+    }
+
+
+    /**
+     * 涓婁紶鏈笂浼犳垚鍔熺殑鍧愭爣
+     *
+     * @param inspectionBean
+     * @param inspectionLocationBeans
+     */
+    private static void postInspectionData(Context context, InspectionBean inspectionBean, List<InspectionLocationBean> inspectionLocationBeans) {
+        InspectionRequest inspectionRequest = new InspectionRequest();
+        inspectionRequest.setInspectId(inspectionBean.getInspectId());
+        inspectionRequest.setInspectorId(inspectionBean.getInspectorId());
+        inspectionRequest.setStartTime(inspectionBean.getStartTime());
+        if (!TextUtils.isEmpty(inspectionBean.getStopTime())) {
+            inspectionRequest.setStopTime(inspectionBean.getStopTime());
+        }
+        for (InspectionLocationBean inspectionLocationBean : inspectionLocationBeans) {
+            InspectionRequest.Track track = new InspectionRequest.Track();
+            track.setLat(inspectionLocationBean.getLat());
+            track.setLng(inspectionLocationBean.getLng());
+            track.setLocateTime(inspectionLocationBean.getLocateTime());
+            inspectionRequest.addTracks(track);
+        }
+        ApiManager.getInstance().requestPostHideLoading(context, BASE_URL + "/app/inspect/save", InsectionResult.class, inspectionRequest.toMap(inspectionRequest), new SubscriberListener<BaseResponse<List<InsectionResult>>>() {
+            @Override
+            public void onNext(BaseResponse<List<InsectionResult>> t) {
+                try {
+                    if (t.isSuccess()) {
+                        if (t.getContent() != null) {
+                            inspectionBean.setInspectId(String.valueOf(t.getContent().get(0).getInspectId()));
+                            InspectionUtils.upataInspectionData(context, inspectionBean);
+                        }
+                        DaoSingleton.getAsynchInstance(context).inspectionLocationDao().updataByInspectIdSetIsPost(inspectionBean.getmInspectId()).subscribeOn(Schedulers.io()).observeOn(Schedulers.io()).subscribe(() -> {
+                            // 鎻掑叆鎴愬姛鐨勫洖璋�
+                            Log.d(TAG, "addInspectionLocationData鏁版嵁鎻掑叆鎴愬姛");
+                        }, throwable -> {
+                            // 澶勭悊閿欒
+                            Log.e(TAG, "addInspectionLocationData鏁版嵁鎻掑叆澶辫触", throwable);
+                        });
+                    } else {
+
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    CrashReport.postCatchedException(e);
+                }
+
+            }
+        });
+    }
+
     /**
      * 淇敼宸℃璁板綍鍧愭爣
      *
@@ -132,6 +222,21 @@
                     Log.e(TAG, "updateInspectionLocationData鏁版嵁鎻掑叆澶辫触", throwable);
                 });
         ;
+    }
+
+    /**
+     * 淇敼宸℃淇℃伅
+     *
+     * @param context
+     * @param inspectionBean
+     */
+    public static void upataInspectionData(Context context, InspectionBean inspectionBean) {
+        DaoSingleton.getAsynchInstance(context).inspectionDao().update(inspectionBean).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(() -> {
+            // 鎻掑叆鎴愬姛鐨勫洖璋�
+            Log.d(TAG, "uupataInspectionData鏁版嵁鎻掑叆鎴愬姛");
+        }, throwable -> {
+            Log.e(TAG, "upataInspectionData鏁版嵁鎻掑叆澶辫触", throwable);
+        });
     }
 
     /**
@@ -167,7 +272,7 @@
         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/utils/MyLog.java b/app/src/main/java/com/dayu/pipirrapp/utils/MyLog.java
index bb34e84..265e172 100644
--- a/app/src/main/java/com/dayu/pipirrapp/utils/MyLog.java
+++ b/app/src/main/java/com/dayu/pipirrapp/utils/MyLog.java
@@ -15,5 +15,9 @@
         Log.i(TAG, data);
     }
 
+    public static void d(String data) {
+        Log.d(TAG, data);
+    }
+
 
 }
diff --git a/app/src/main/java/com/dayu/pipirrapp/utils/NetUtils.java b/app/src/main/java/com/dayu/pipirrapp/utils/NetUtils.java
new file mode 100644
index 0000000..cbb1d8a
--- /dev/null
+++ b/app/src/main/java/com/dayu/pipirrapp/utils/NetUtils.java
@@ -0,0 +1,80 @@
+package com.dayu.pipirrapp.utils;
+
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkCapabilities;
+import android.net.NetworkInfo;
+import android.net.NetworkRequest;
+import android.os.Build;
+
+/**
+ * NetUtils - 缃戠粶鐩稿叧鍏叡鏂规硶
+ *
+ * @author zuoxiao
+ * @version 1.0
+ * @since 2024-12-04
+ */
+public class NetUtils {
+    public static final String TAG = "NetUtils";
+
+    /**
+     * 鍒ゆ柇褰撳墠鏄惁鏈夌綉缁�
+     *
+     * @param context
+     * @return
+     */
+    public static boolean isNetworkAvailable(Context context) {
+        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+
+        if (connectivityManager != null) {
+            // 瀵逛簬 Android 鐗堟湰澶т簬绛変簬 Android Q (API level 29)
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+                NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
+                if (capabilities != null) {
+                    // 妫�鏌ョ綉缁滄槸鍚︽湁浼犺緭鑳藉姏锛堝寘鎷� Wi-Fi 鍜岀Щ鍔ㄦ暟鎹級
+                    if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
+                        return true;
+                    }
+                }
+            } else {
+                // 瀵逛簬 Android Q 浠ヤ笅鐗堟湰
+                NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
+                if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {
+                    return true;
+                }
+            }
+        }
+
+        return false;  // 鏃犵綉缁滆繛鎺�
+    }
+
+
+    public static void registerNetCallBack(Context context, ConnectivityManager.NetworkCallback networkCallback) {
+        // 娉ㄥ唽缃戠粶鐘舵�佺洃鍚�
+
+        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+
+        // 鏋勫缓涓�涓� NetworkRequest锛屾寚瀹氭劅鍏磋叮鐨勭綉缁滅被鍨�
+        NetworkRequest networkRequest = new NetworkRequest.Builder()
+
+                .build();
+
+        // 缃戠粶鍥炶皟
+
+
+        // 娉ㄥ唽缃戠粶鐩戝惉
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+            cm.registerNetworkCallback(networkRequest, networkCallback);
+        } else {
+            // 瀵逛簬杈冭�佺増鏈紝鍙互浣跨敤鏃х殑鏂规硶娉ㄥ唽缃戠粶鐘舵�佺洃鍚�
+            // ConnectivityManager.setNetworkCallback() 鏃犳硶鍦� API 绾у埆 24 浠ヤ笅浣跨敤
+        }
+    }
+
+    // 娉ㄩ攢骞挎挱鎺ユ敹鍣�
+    public static void unregisterReceiver(Context context,ConnectivityManager.NetworkCallback networkCallback) {
+        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+        cm.unregisterNetworkCallback(networkCallback);
+    }
+
+}
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 20ac86a..e81a015 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -18,7 +18,7 @@
         android:background="@drawable/ic_edt_gray_bg"
         android:hint="璇疯緭鍏ヨ处鍙�"
         android:maxLines="1"
-        android:text="admin"
+        android:text="15802220723"
         android:paddingLeft="15dp"
         android:singleLine="true" />
 
@@ -45,7 +45,7 @@
             android:hint="璇疯緭鍏ュ瘑鐮�"
             android:inputType="textPassword"
             android:maxLines="1"
-            android:text="dyyjy"
+            android:text="abc_123"
             android:paddingLeft="10dp"
             android:singleLine="true" />
 

--
Gitblit v1.8.0