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