From 5aa4aff7a2ea7953283cffccf3b1835931295d55 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期一, 23 十二月 2024 15:35:25 +0800
Subject: [PATCH] 1.优化工单提醒功能,添加强制震动,防止同一个工单id重复提醒。
---
app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java | 237 ++++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 184 insertions(+), 53 deletions(-)
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 61e1fa0..aff517f 100644
--- a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
+++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
@@ -22,6 +22,7 @@
import androidx.annotation.Nullable;
import androidx.lifecycle.Observer;
+import com.dayu.pipirrapp.MyApplication;
import com.dayu.pipirrapp.R;
import com.dayu.pipirrapp.activity.AddIssueActivity;
import com.dayu.pipirrapp.bean.db.CenterPointBean;
@@ -36,7 +37,6 @@
import com.dayu.pipirrapp.bean.net.MarkerResult;
import com.dayu.pipirrapp.dao.DaoSingleton;
import com.dayu.pipirrapp.databinding.FragmentMapBinding;
-import com.dayu.pipirrapp.tool.MyWebViewInterface;
import com.dayu.pipirrapp.net.ApiManager;
import com.dayu.pipirrapp.net.BaseResponse;
import com.dayu.pipirrapp.net.Constants;
@@ -44,6 +44,7 @@
import com.dayu.pipirrapp.observer.MapFragmenObserver;
import com.dayu.pipirrapp.tool.InspectionUtils;
import com.dayu.pipirrapp.tool.MarkerUtils;
+import com.dayu.pipirrapp.tool.MyWebViewInterface;
import com.dayu.pipirrapp.utils.CommonData;
import com.dayu.pipirrapp.utils.CommonKeyName;
import com.dayu.pipirrapp.utils.DateUtils;
@@ -68,6 +69,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.schedulers.Schedulers;
@@ -90,9 +92,8 @@
MapFragmenObserver mapFragmenObserver;
//褰撳墠宸℃璁板綍鐨勭浉鍏充俊鎭�
public InspectionBean mInspectionBean;
+ //鏈�鍚庝竴娆″畾浣嶇殑鍧愭爣
LatLonBean lastLatLonBean;
- InspectionRequest inspectionRequest;
- // volatile boolean isHaseAginData = false;
//web鏄惁鍔犺浇瀹屾垚
volatile boolean webViewIsFinished = false;
List<InspectionLocationBean> aginShowlocationBeans;
@@ -100,6 +101,9 @@
List<MarkerBean> webNoFinishMarkerData = new ArrayList<>();
//鎵�鏈夌殑Marker鏁版嵁閿负marker鐨処d
Map<String, MarkerBean> markerBeanSet = new HashMap<>();
+ //涓績鐐瑰潗鏍�
+ public double centerLng;
+ public double centerLat;
@Override
public void onAttach(@NonNull Context context) {
@@ -242,41 +246,43 @@
@Override
public void onNext(BaseResponse<MarkerListResult> t) {
if (t.isSuccess()) {
- if (t.isSuccess()) {
- if (t.getContent().getObj() != null && !t.getContent().getObj().isEmpty()) {
- List<MarkerBean> markerBeans = new ArrayList<>();
- for (int i = 0; i < t.getContent().getObj().size(); i++) {
- MarkerResult result = t.getContent().getObj().get(i);
- //淇濆瓨鏁版嵁
- MarkerBean markerBean = new MarkerBean();
- markerBean.setId(result.getId());
- markerBean.setLng(result.getLng());
- markerBean.setLat(result.getLat());
- markerBean.setBlockId(result.getBlockId());
- markerBean.setName(result.getName());
- markerBean.setRemarks(result.getRemarks());
- markerBean.setTownId(result.getTownId());
- markerBean.setVillageId(result.getVillageId());
- markerBean.setCountyId(result.getCountyId());
- markerBean.setAddress(result.getAddress());
- markerBean.setBlockName(result.getBlockName());
- markerBeans.add(markerBean);
- setMapMarker(markerBean);
- }
- DaoSingleton.getInstance(MapFragment.this.getContext()).markerDao().deleteAll();
- // 浣跨敤 RxJava 寮傛鎻掑叆鏁版嵁
- DaoSingleton.getAsynchInstance(MapFragment.this.getContext()).markerDao().insertAll(markerBeans)
- .subscribeOn(Schedulers.io()) // 鍦� IO 绾跨▼涓婃墽琛�
- .observeOn(AndroidSchedulers.mainThread()) // 鍦ㄤ富绾跨▼涓婅瀵�
- .subscribe(() -> {
- // 鎻掑叆鎴愬姛
- Log.i("mWebView", "鏁版嵁鎻掑叆鎴愬姛");
- }, throwable -> {
- // 鎻掑叆澶辫触
- Log.e("mWebView", "鏁版嵁鎻掑叆澶辫触: " + throwable.getMessage());
- });
- }
+
+ if (t.getContent().getObj() != null && !t.getContent().getObj().isEmpty()) {
+
+ List<MarkerBean> markerBeans = t.getContent().getObj().stream()
+ .map(result -> {
+ MarkerBean markerBean = new MarkerBean();
+ markerBean.setId(result.getId());
+ markerBean.setLng(result.getLng());
+ markerBean.setLat(result.getLat());
+ markerBean.setBlockId(result.getBlockId());
+ markerBean.setName(result.getName());
+ markerBean.setRemarks(result.getRemarks());
+ markerBean.setTownId(result.getTownId());
+ markerBean.setVillageId(result.getVillageId());
+ markerBean.setCountyId(result.getCountyId());
+ markerBean.setAddress(result.getAddress());
+ markerBean.setBlockName(result.getBlockName());
+ markerBean.setDivideId(result.getDivideId());
+ setMapMarker(markerBean);
+ return markerBean;
+ })
+ .collect(Collectors.toList());
+
+ DaoSingleton.getInstance(MapFragment.this.getContext()).markerDao().deleteAll();
+ // 浣跨敤 RxJava 寮傛鎻掑叆鏁版嵁
+ DaoSingleton.getAsynchInstance(MapFragment.this.getContext()).markerDao().insertAll(markerBeans)
+ .subscribeOn(Schedulers.io()) // 鍦� IO 绾跨▼涓婃墽琛�
+ .observeOn(AndroidSchedulers.mainThread()) // 鍦ㄤ富绾跨▼涓婅瀵�
+ .subscribe(() -> {
+ // 鎻掑叆鎴愬姛
+ Log.i("mWebView", "鏁版嵁鎻掑叆鎴愬姛");
+ }, throwable -> {
+ // 鎻掑叆澶辫触
+ Log.e("mWebView", "鏁版嵁鎻掑叆澶辫触: " + throwable.getMessage());
+ });
}
+
} else {
ToastUtil.showToast(MapFragment.this.getContext(), t.getMsg());
}
@@ -287,7 +293,6 @@
void initView() {
-
//宸℃鎸夐挳
binding.inspectButton.setOnClickListener(v -> {
@@ -333,16 +338,7 @@
MyLog.i(data);
MarkerBean markerBean = markerBeanSet.get(data);
if (markerBean != null) {
- binding.bottomLL.setVisibility(View.VISIBLE);
- binding.markerAddress.setText(markerBean.getAddress());
- binding.markerName.setText(markerBean.getName());
- binding.markerBlockName.setText(markerBean.getBlockName());
- binding.lat.setText(markerBean.getLat());
- binding.lng.setText(markerBean.getLng());
- binding.editePoint.setOnClickListener(v -> {
- mWebView.evaluateJavascript("javascript:showPin()", value -> {
- });
- });
+ getInstakeDetail(markerBean);
}
}
@@ -352,7 +348,7 @@
* 鑾峰彇鍦板浘涓績鐐�
*/
private void getCenterPoint() {
- ApiManager.getInstance().requestGet(this.getContext(), Constants.BASE_URL + "/base/dict_item/map_center", CenterPointResult.class, null, new SubscriberListener<BaseResponse<CenterPointResult>>() {
+ ApiManager.getInstance().requestGetHideLoading(this.getContext(), Constants.BASE_URL + "/base/dict_item/map_center", CenterPointResult.class, null, new SubscriberListener<BaseResponse<CenterPointResult>>() {
@Override
public void onNext(BaseResponse<CenterPointResult> t) {
if (t.isSuccess()) {
@@ -380,6 +376,7 @@
* 涓婃姤宸℃璁板綍
*/
private void pushLocationData(InspectionLocationBean inspectionLocationBean) {
+ InspectionRequest inspectionRequest = InspectionRequest.getInstance();
inspectionRequest.setInspectId(inspectionLocationBean.getInspectId());
inspectionRequest.setInspectorId(mInspectionBean.getInspectorId());
if (mInspectionBean != null) {
@@ -392,7 +389,6 @@
track.setLat(inspectionLocationBean.getLat());
track.setLng(inspectionLocationBean.getLng());
track.setLocateTime(inspectionLocationBean.getLocateTime());
- inspectionRequest.getTracks().clear();
inspectionRequest.addTracks(track);
ApiManager.getInstance().requestPostHideLoading(MapFragment.this.getContext(), BASE_URL + "/app/inspect/save", InsectionResult.class, inspectionRequest.toMap(inspectionRequest), new SubscriberListener<BaseResponse<List<InsectionResult>>>() {
@Override
@@ -400,6 +396,7 @@
try {
if (t.isSuccess()) {
if (t.getContent() != null) {
+ MyLog.d("InspectId:" + String.valueOf(t.getContent().get(0).getInspectId()));
mInspectionBean.setInspectId(String.valueOf(t.getContent().get(0).getInspectId()));
InspectionUtils.upataInspectionData(MapFragment.this.getContext(), mInspectionBean);
}
@@ -431,6 +428,7 @@
lastLatLonBean = latLonBean;
Log.i("chageInspecState", "lat:" + latLonBean.getLatitude() + ",log:" + latLonBean.getLongitude());
InspectionLocationBean inspectionLocationBean = InspectionUtils.createInspectionLocation(latLonBean, mInspectionBean);
+ //娣诲姞宸℃璁板綍鍧愭爣
InspectionUtils.addInspectionLocationData(MapFragment.this.getContext(), inspectionLocationBean);
//鏇存柊鍒板湴鍥�
mWebView.evaluateJavascript("javascript:updateInspectionLocation(\"" + latLonBean.getLongitude() + "\",\"" + latLonBean.getLatitude() + "\")", value -> {
@@ -558,7 +556,6 @@
public void setMapMarker(MarkerBean markerBean) {
if (markerBean != null) {
if (webViewIsFinished) {
- Log.i("mWebView", "addMarker????????????");
mWebView.evaluateJavascript("javascript:addMarker(\"" + markerBean.getId() + "\",\"" + markerBean.getLng() + "\",\"" + markerBean.getLat() + "\",\"" + markerBean.getName() + "\")", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
@@ -580,13 +577,12 @@
*/
private void startLocation() {
//鑾峰彇瀹氫綅鏈嶅姟浼犺繃鏉ョ殑鍧愭爣鐐�
- LiveEventBus.get(CommonKeyName.locationData).observeForever(locationObserver);
+ LiveEventBus.get(CommonKeyName.locationData).observe(this, 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));
- inspectionRequest = new InspectionRequest();
SharedPreferencesHelper.getInstance(this.getContext()).put(CommonKeyName.inspectionState, InspectionUtils.STAT_INSPECTION);
ServiceUtils.startLocationService(MapFragment.this.getContext(), false);
}
@@ -629,4 +625,139 @@
e.printStackTrace();
}
}
+
+ /**
+ * 鎺ユ敹js浼犳潵鐨勪腑蹇冪偣鍧愭爣
+ *
+ * @param lng
+ * @param lat
+ */
+ public void refreshCenterPoint(double lng, double lat) {
+ centerLng = lng;
+ centerLat = lat;
+ binding.pointText.setText(centerLng + "锛�" + centerLat);
+ }
+
+ /**
+ * 淇敼缁忕含搴�
+ *
+ * @param markerBean
+ */
+ private void updataInstake(MarkerBean markerBean) {
+ String lng = String.valueOf(centerLng);
+ String lat = String.valueOf(centerLat);
+ Map<String, Object> params = new HashMap<>();
+ params.put("id", markerBean.getId());
+ params.put("lng", lng);
+ params.put("lat", lat);
+ params.put("operator", MyApplication.myApplication.userId);
+
+ ApiManager.getInstance().requestPost(MapFragment.this.getContext(), BASE_URL + "/project/intake/updateIntakeLngLat", Boolean.class, params, new SubscriberListener<BaseResponse<Boolean>>() {
+ @Override
+ public void onNext(BaseResponse<Boolean> t) {
+ try {
+ if (t.isSuccess()) {
+ mWebView.evaluateJavascript("javascript:refreshMarker(\"" + markerBean.getId() + "\",\"" + centerLng + "\",\"" + centerLat + "\",\"" + markerBean.getName() + "\")", new ValueCallback<String>() {
+ @Override
+ public void onReceiveValue(String value) {
+ }
+ });
+ binding.pointCenterImg.setVisibility(View.GONE);
+ binding.pointRL.setVisibility(View.GONE);
+ binding.lng.setText(lng);
+ binding.lat.setText(lat);
+ mWebView.evaluateJavascript("javascript:cancelPin()", value -> {
+ });
+ ToastUtil.showToastLong(MapFragment.this.getContext(), "淇敼鎴愬姛锛�");
+
+ } else {
+ ToastUtil.showToastLong(MapFragment.this.getContext(), t.getMsg());
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ CrashReport.postCatchedException(e);
+ }
+
+ }
+ });
+ }
+
+ /**
+ * 鑾峰彇鍙栨按鍙h鎯�
+ *
+ * @param markerBean
+ */
+ private void getInstakeDetail(MarkerBean markerBean) {
+ Map<String, Object> params = new HashMap<>();
+ params.put("id", markerBean.getId());
+ ApiManager.getInstance().requestGet(this.getContext(), Constants.BASE_URL + "/project/intake/one", MarkerResult.class, params, new SubscriberListener<BaseResponse<MarkerResult>>() {
+ @Override
+ public void onNext(BaseResponse<MarkerResult> t) {
+ if (t.isSuccess()) {
+ MarkerResult result = t.getContent();
+ MarkerBean markerBean = new MarkerBean();
+ markerBean.setId(result.getId());
+ markerBean.setLng(result.getLng());
+ markerBean.setLat(result.getLat());
+ markerBean.setBlockId(result.getBlockId());
+ markerBean.setName(result.getName());
+ markerBean.setRemarks(result.getRemarks());
+ markerBean.setTownId(result.getTownId());
+ markerBean.setVillageId(result.getVillageId());
+ markerBean.setCountyId(result.getCountyId());
+ markerBean.setAddress(result.getAddress());
+ markerBean.setBlockName(result.getBlockName());
+ markerBean.setDivideId(result.getDivideId());
+ showMarker(markerBean);
+ } else {
+ ToastUtil.showToast(MapFragment.this.getContext(), t.getMsg());
+ }
+ }
+
+ });
+ }
+
+ private void showMarker(MarkerBean markerBean) {
+ binding.bottomLL.setVisibility(View.VISIBLE);
+ binding.markerAddress.setText(markerBean.getAddress());
+ binding.markerName.setText(markerBean.getName());
+ binding.markerBlockName.setText(markerBean.getBlockName());
+ binding.lat.setText(markerBean.getLat());
+ binding.lng.setText(markerBean.getLng());
+ //淇敼缁忕含搴�
+ binding.editePoint.setOnClickListener(v -> {
+
+ mWebView.evaluateJavascript("javascript:showPin(\"" + markerBean.getLng() + "\",\"" + markerBean.getLat() + "\")", value -> {
+ binding.pointRL.setVisibility(View.VISIBLE);
+ binding.pointCenterImg.setVisibility(View.VISIBLE);
+ MyLog.d("showPin>>" + value);
+ });
+
+ });
+ //鍙栨秷淇敼缁忕含搴�
+ binding.pointCancel.setOnClickListener(v -> {
+ binding.pointCenterImg.setVisibility(View.GONE);
+ binding.pointRL.setVisibility(View.GONE);
+ mWebView.evaluateJavascript("javascript:cancelPin()", value -> {
+
+ });
+ }
+ );
+ //纭淇敼缁忕含搴�
+ binding.pointEdt.setOnClickListener(v -> {
+ ConfirmDialog confirmDialog = new ConfirmDialog(MapFragment.this.getActivity(), "纭淇敼鍒拌浣嶇疆鍚楋紵", (confirmDialog1, v1) -> {
+ confirmDialog1.dismiss();
+ updataInstake(markerBean);
+ });
+ confirmDialog.show();
+ });
+ }
+
+
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ LiveEventBus.get(CommonKeyName.locationData).removeObserver(locationObserver);
+ }
}
--
Gitblit v1.8.0