diff --git a/app/src/main/java/com/casic/dcms/bean/PointDataBean.java b/app/src/main/java/com/casic/dcms/bean/PointDataBean.java new file mode 100644 index 0000000..d0b77c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PointDataBean.java @@ -0,0 +1,34 @@ +package com.casic.dcms.bean; + +/** + * 用于校验Marker点击位置经纬度和实际案卷点经纬度之间的精度 + */ +public class PointDataBean { + private String lng; + private String lat; + private String id; + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PointDataBean.java b/app/src/main/java/com/casic/dcms/bean/PointDataBean.java new file mode 100644 index 0000000..d0b77c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PointDataBean.java @@ -0,0 +1,34 @@ +package com.casic.dcms.bean; + +/** + * 用于校验Marker点击位置经纬度和实际案卷点经纬度之间的精度 + */ +public class PointDataBean { + private String lng; + private String lat; + private String id; + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} diff --git a/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java b/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java index 10c9d85..0a4e1d2 100644 --- a/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java +++ b/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java @@ -1,9 +1,11 @@ package com.casic.dcms.service; import android.content.Context; +import android.util.Log; import com.casic.dcms.base.BaseApplication; import com.casic.dcms.bean.NoticeBean; +import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.BroadcastManager; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.TimeOrDateUtil; @@ -35,7 +37,8 @@ // 接收 cid @Override public void onReceiveClientId(Context context, String clientid) { -// Log.d(TAG, "onReceiveClientId -> " + "clientid = " + clientid); + Log.d(TAG, "onReceiveClientId -> " + "clientid = " + clientid); + AuthenticationHelper.savePushClientID(clientid); } // cid 离线上线通知 diff --git a/app/src/main/java/com/casic/dcms/bean/PointDataBean.java b/app/src/main/java/com/casic/dcms/bean/PointDataBean.java new file mode 100644 index 0000000..d0b77c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PointDataBean.java @@ -0,0 +1,34 @@ +package com.casic.dcms.bean; + +/** + * 用于校验Marker点击位置经纬度和实际案卷点经纬度之间的精度 + */ +public class PointDataBean { + private String lng; + private String lat; + private String id; + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} diff --git a/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java b/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java index 10c9d85..0a4e1d2 100644 --- a/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java +++ b/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java @@ -1,9 +1,11 @@ package com.casic.dcms.service; import android.content.Context; +import android.util.Log; import com.casic.dcms.base.BaseApplication; import com.casic.dcms.bean.NoticeBean; +import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.BroadcastManager; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.TimeOrDateUtil; @@ -35,7 +37,8 @@ // 接收 cid @Override public void onReceiveClientId(Context context, String clientid) { -// Log.d(TAG, "onReceiveClientId -> " + "clientid = " + clientid); + Log.d(TAG, "onReceiveClientId -> " + "clientid = " + clientid); + AuthenticationHelper.savePushClientID(clientid); } // cid 离线上线通知 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 7cf0217..22d7bca 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -1,10 +1,12 @@ package com.casic.dcms.ui; import android.annotation.SuppressLint; -import android.content.Context; +import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; +import android.os.Handler; +import android.os.Message; import android.text.TextUtils; import android.util.Log; import android.view.MotionEvent; @@ -12,6 +14,7 @@ import android.widget.RadioButton; import android.widget.RadioGroup; +import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.casic.dcms.R; @@ -19,6 +22,7 @@ import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.bean.CaseHandleBean; import com.casic.dcms.bean.CaseVerifyBean; +import com.casic.dcms.bean.PointDataBean; import com.casic.dcms.mvp.presenter.CaseCheckPresenterImpl; import com.casic.dcms.mvp.presenter.CaseHandleListPresenterImpl; import com.casic.dcms.mvp.presenter.CaseVerifyPresenterImpl; @@ -28,6 +32,7 @@ import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.data.ServiceFeatureTable; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; @@ -38,15 +43,19 @@ import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; import com.esri.arcgisruntime.mapping.view.Graphic; import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; +import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; import com.esri.arcgisruntime.mapping.view.MapView; import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; -import com.google.gson.Gson; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.concurrent.ExecutionException; import butterknife.BindView; @@ -54,7 +63,6 @@ ICaseHandleListView, ICaseVerifyView, ICaseCheckView { private static final String TAG = "CaseOnMapActivity"; - private final Context context = CaseOnMapActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @BindView(R.id.mapView) @@ -73,6 +81,8 @@ private CaseCheckPresenterImpl caseCheckPresenter; private ListenableList graphics; private ListenableList graphicsOverlays; + private List casePointList = new ArrayList<>(); + private WeakReferenceHandler weakReferenceHandler; @Override public int initLayoutView() { @@ -123,6 +133,9 @@ //Marker相关Layer graphicsOverlays = mapView.getGraphicsOverlays(); + + //handler弱饮用,防止内存泄漏 + weakReferenceHandler = new WeakReferenceHandler(this); } @SuppressLint("ClickableViewAccessibility") @@ -132,30 +145,80 @@ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { @Override public boolean onSingleTapConfirmed(MotionEvent e) { -// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); -// Point clickPoint = mapView.screenToLocation(screenPoint); -// Log.d(TAG, "clickPoint: " + clickPoint); - return true; - } - - @Override - public void onLongPress(MotionEvent e) { - super.onLongPress(e); -// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); -// Point clickPoint = mapView.screenToLocation(screenPoint); -// Log.d(TAG, "onLongPress: " + clickPoint); - } - - @Override - public void onShowPress(MotionEvent e) { - super.onShowPress(e); android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - Point clickPoint = mapView.screenToLocation(screenPoint); - Log.d(TAG, "onShowPress: " + clickPoint); + + final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); + overlaysAsync.addDoneListener(new Runnable() { + @Override + public void run() { + try { + List overlayResultList = overlaysAsync.get(); + if (!overlayResultList.isEmpty()) { + IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); + Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); + for (PointDataBean dataBean : casePointList) { + double parseLng = Double.parseDouble(dataBean.getLng()); + double parseLat = Double.parseDouble(dataBean.getLat()); + if (Math.abs(parseLng - point.getX()) <= Constant.DELTA_LNG_10 || + Math.abs(parseLat - point.getY()) <= Constant.DELTA_LAT_10) { + Message message = weakReferenceHandler.obtainMessage(); + message.what = 2021051401; + message.obj = dataBean.getId(); + weakReferenceHandler.sendMessage(message); + } + } + } else { + weakReferenceHandler.sendEmptyMessage(2021051402); + } + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } + } + }); + return super.onSingleTapConfirmed(e); } }); } + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(CaseOnMapActivity activity) { + reference = new WeakReference<>(activity); + } + + @Override + public void handleMessage(@NonNull Message msg) { + super.handleMessage(msg); + CaseOnMapActivity onMapActivity = reference.get(); + switch (msg.what) { + case 2021051401: + String caseId = (String) msg.obj; + new QMUIDialog.MessageDialogBuilder(onMapActivity) + .setTitle("提示") + .setMessage("已选择案卷:" + caseId + "\r\n确认查看详情?") + .setCanceledOnTouchOutside(false) + .addAction("取消", (dialog, index) -> dialog.dismiss()) + .addAction("确定", new QMUIDialogAction.ActionListener() { + @Override + public void onClick(QMUIDialog dialog, int index) { + dialog.dismiss(); + Intent intent = new Intent(onMapActivity, CaseDetailActivity.class); + intent.putExtra("id", caseId); + onMapActivity.startActivity(intent); + } + }) + .create().show(); + break; + case 2021051402: + ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); + break; + default: + break; + } + } + } + @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { @@ -214,6 +277,7 @@ if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List list = new ArrayList<>(); List pointList = new ArrayList<>(); for (CaseHandleBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); @@ -222,6 +286,8 @@ Log.d(TAG, "案卷经纬度异常"); continue; } + relatePointToCase(list, bean.getId(), lng, lat); + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); pointList.add(point); } @@ -233,15 +299,30 @@ } /** + * 关联Marker和案卷 + * + * @param list 临时数据集合 + */ + private void relatePointToCase(List list, String id, String lng, String lat) { + PointDataBean casePoint = new PointDataBean(); + casePoint.setId(id); + casePoint.setLng(lng); + casePoint.setLat(lat); + list.add(casePoint); + casePointList = list; + } + + /** * 待核实 */ @Override public void obtainVerifyListResult(CaseVerifyBean resultBean) { - Log.d(TAG, "obtainVerifyListResult: " + new Gson().toJson(resultBean)); +// Log.d(TAG, "obtainVerifyListResult: " + new Gson().toJson(resultBean)); clearPictureMarker(); if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List list = new ArrayList<>(); List pointList = new ArrayList<>(); for (CaseVerifyBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); @@ -250,6 +331,8 @@ Log.d(TAG, "案卷经纬度异常"); continue; } + relatePointToCase(list, bean.getId(), lng, lat); + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); pointList.add(point); } @@ -270,6 +353,7 @@ if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List list = new ArrayList<>(); List pointList = new ArrayList<>(); for (CaseCheckBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); @@ -278,6 +362,8 @@ Log.d(TAG, "案卷经纬度异常"); continue; } + relatePointToCase(list, bean.getId(), lng, lat); + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); pointList.add(point); } diff --git a/app/src/main/java/com/casic/dcms/bean/PointDataBean.java b/app/src/main/java/com/casic/dcms/bean/PointDataBean.java new file mode 100644 index 0000000..d0b77c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PointDataBean.java @@ -0,0 +1,34 @@ +package com.casic.dcms.bean; + +/** + * 用于校验Marker点击位置经纬度和实际案卷点经纬度之间的精度 + */ +public class PointDataBean { + private String lng; + private String lat; + private String id; + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} diff --git a/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java b/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java index 10c9d85..0a4e1d2 100644 --- a/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java +++ b/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java @@ -1,9 +1,11 @@ package com.casic.dcms.service; import android.content.Context; +import android.util.Log; import com.casic.dcms.base.BaseApplication; import com.casic.dcms.bean.NoticeBean; +import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.BroadcastManager; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.TimeOrDateUtil; @@ -35,7 +37,8 @@ // 接收 cid @Override public void onReceiveClientId(Context context, String clientid) { -// Log.d(TAG, "onReceiveClientId -> " + "clientid = " + clientid); + Log.d(TAG, "onReceiveClientId -> " + "clientid = " + clientid); + AuthenticationHelper.savePushClientID(clientid); } // cid 离线上线通知 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 7cf0217..22d7bca 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -1,10 +1,12 @@ package com.casic.dcms.ui; import android.annotation.SuppressLint; -import android.content.Context; +import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; +import android.os.Handler; +import android.os.Message; import android.text.TextUtils; import android.util.Log; import android.view.MotionEvent; @@ -12,6 +14,7 @@ import android.widget.RadioButton; import android.widget.RadioGroup; +import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.casic.dcms.R; @@ -19,6 +22,7 @@ import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.bean.CaseHandleBean; import com.casic.dcms.bean.CaseVerifyBean; +import com.casic.dcms.bean.PointDataBean; import com.casic.dcms.mvp.presenter.CaseCheckPresenterImpl; import com.casic.dcms.mvp.presenter.CaseHandleListPresenterImpl; import com.casic.dcms.mvp.presenter.CaseVerifyPresenterImpl; @@ -28,6 +32,7 @@ import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.data.ServiceFeatureTable; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; @@ -38,15 +43,19 @@ import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; import com.esri.arcgisruntime.mapping.view.Graphic; import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; +import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; import com.esri.arcgisruntime.mapping.view.MapView; import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; -import com.google.gson.Gson; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.concurrent.ExecutionException; import butterknife.BindView; @@ -54,7 +63,6 @@ ICaseHandleListView, ICaseVerifyView, ICaseCheckView { private static final String TAG = "CaseOnMapActivity"; - private final Context context = CaseOnMapActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @BindView(R.id.mapView) @@ -73,6 +81,8 @@ private CaseCheckPresenterImpl caseCheckPresenter; private ListenableList graphics; private ListenableList graphicsOverlays; + private List casePointList = new ArrayList<>(); + private WeakReferenceHandler weakReferenceHandler; @Override public int initLayoutView() { @@ -123,6 +133,9 @@ //Marker相关Layer graphicsOverlays = mapView.getGraphicsOverlays(); + + //handler弱饮用,防止内存泄漏 + weakReferenceHandler = new WeakReferenceHandler(this); } @SuppressLint("ClickableViewAccessibility") @@ -132,30 +145,80 @@ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { @Override public boolean onSingleTapConfirmed(MotionEvent e) { -// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); -// Point clickPoint = mapView.screenToLocation(screenPoint); -// Log.d(TAG, "clickPoint: " + clickPoint); - return true; - } - - @Override - public void onLongPress(MotionEvent e) { - super.onLongPress(e); -// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); -// Point clickPoint = mapView.screenToLocation(screenPoint); -// Log.d(TAG, "onLongPress: " + clickPoint); - } - - @Override - public void onShowPress(MotionEvent e) { - super.onShowPress(e); android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - Point clickPoint = mapView.screenToLocation(screenPoint); - Log.d(TAG, "onShowPress: " + clickPoint); + + final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); + overlaysAsync.addDoneListener(new Runnable() { + @Override + public void run() { + try { + List overlayResultList = overlaysAsync.get(); + if (!overlayResultList.isEmpty()) { + IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); + Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); + for (PointDataBean dataBean : casePointList) { + double parseLng = Double.parseDouble(dataBean.getLng()); + double parseLat = Double.parseDouble(dataBean.getLat()); + if (Math.abs(parseLng - point.getX()) <= Constant.DELTA_LNG_10 || + Math.abs(parseLat - point.getY()) <= Constant.DELTA_LAT_10) { + Message message = weakReferenceHandler.obtainMessage(); + message.what = 2021051401; + message.obj = dataBean.getId(); + weakReferenceHandler.sendMessage(message); + } + } + } else { + weakReferenceHandler.sendEmptyMessage(2021051402); + } + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } + } + }); + return super.onSingleTapConfirmed(e); } }); } + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(CaseOnMapActivity activity) { + reference = new WeakReference<>(activity); + } + + @Override + public void handleMessage(@NonNull Message msg) { + super.handleMessage(msg); + CaseOnMapActivity onMapActivity = reference.get(); + switch (msg.what) { + case 2021051401: + String caseId = (String) msg.obj; + new QMUIDialog.MessageDialogBuilder(onMapActivity) + .setTitle("提示") + .setMessage("已选择案卷:" + caseId + "\r\n确认查看详情?") + .setCanceledOnTouchOutside(false) + .addAction("取消", (dialog, index) -> dialog.dismiss()) + .addAction("确定", new QMUIDialogAction.ActionListener() { + @Override + public void onClick(QMUIDialog dialog, int index) { + dialog.dismiss(); + Intent intent = new Intent(onMapActivity, CaseDetailActivity.class); + intent.putExtra("id", caseId); + onMapActivity.startActivity(intent); + } + }) + .create().show(); + break; + case 2021051402: + ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); + break; + default: + break; + } + } + } + @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { @@ -214,6 +277,7 @@ if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List list = new ArrayList<>(); List pointList = new ArrayList<>(); for (CaseHandleBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); @@ -222,6 +286,8 @@ Log.d(TAG, "案卷经纬度异常"); continue; } + relatePointToCase(list, bean.getId(), lng, lat); + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); pointList.add(point); } @@ -233,15 +299,30 @@ } /** + * 关联Marker和案卷 + * + * @param list 临时数据集合 + */ + private void relatePointToCase(List list, String id, String lng, String lat) { + PointDataBean casePoint = new PointDataBean(); + casePoint.setId(id); + casePoint.setLng(lng); + casePoint.setLat(lat); + list.add(casePoint); + casePointList = list; + } + + /** * 待核实 */ @Override public void obtainVerifyListResult(CaseVerifyBean resultBean) { - Log.d(TAG, "obtainVerifyListResult: " + new Gson().toJson(resultBean)); +// Log.d(TAG, "obtainVerifyListResult: " + new Gson().toJson(resultBean)); clearPictureMarker(); if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List list = new ArrayList<>(); List pointList = new ArrayList<>(); for (CaseVerifyBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); @@ -250,6 +331,8 @@ Log.d(TAG, "案卷经纬度异常"); continue; } + relatePointToCase(list, bean.getId(), lng, lat); + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); pointList.add(point); } @@ -270,6 +353,7 @@ if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List list = new ArrayList<>(); List pointList = new ArrayList<>(); for (CaseCheckBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); @@ -278,6 +362,8 @@ Log.d(TAG, "案卷经纬度异常"); continue; } + relatePointToCase(list, bean.getId(), lng, lat); + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); pointList.add(point); } diff --git a/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java index 0f065e1..3d35bd3 100644 --- a/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java @@ -11,10 +11,10 @@ import com.casic.dcms.bean.ActionResultBean; import com.casic.dcms.mvp.presenter.ChangePasswordPresenterImpl; import com.casic.dcms.mvp.view.IChangePasswordView; +import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.RSAUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.TokenHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; @@ -101,7 +101,7 @@ return; } //数据校验OK,可以修改密码 - PublicKey publicKey = RSAUtils.keyStrToPublicKey(TokenHelper.getPublicKey()); + PublicKey publicKey = RSAUtils.keyStrToPublicKey(AuthenticationHelper.getPublicKey()); String oldPassKey = RSAUtils.encryptDataByPublicKey(oldPassword.getBytes(), publicKey); String newPassKey = RSAUtils.encryptDataByPublicKey(newPassword.getBytes(), publicKey); changePasswordPresenter.onReadyRetrofitRequest(oldPassKey, newPassKey); diff --git a/app/src/main/java/com/casic/dcms/bean/PointDataBean.java b/app/src/main/java/com/casic/dcms/bean/PointDataBean.java new file mode 100644 index 0000000..d0b77c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PointDataBean.java @@ -0,0 +1,34 @@ +package com.casic.dcms.bean; + +/** + * 用于校验Marker点击位置经纬度和实际案卷点经纬度之间的精度 + */ +public class PointDataBean { + private String lng; + private String lat; + private String id; + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} diff --git a/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java b/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java index 10c9d85..0a4e1d2 100644 --- a/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java +++ b/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java @@ -1,9 +1,11 @@ package com.casic.dcms.service; import android.content.Context; +import android.util.Log; import com.casic.dcms.base.BaseApplication; import com.casic.dcms.bean.NoticeBean; +import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.BroadcastManager; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.TimeOrDateUtil; @@ -35,7 +37,8 @@ // 接收 cid @Override public void onReceiveClientId(Context context, String clientid) { -// Log.d(TAG, "onReceiveClientId -> " + "clientid = " + clientid); + Log.d(TAG, "onReceiveClientId -> " + "clientid = " + clientid); + AuthenticationHelper.savePushClientID(clientid); } // cid 离线上线通知 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 7cf0217..22d7bca 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -1,10 +1,12 @@ package com.casic.dcms.ui; import android.annotation.SuppressLint; -import android.content.Context; +import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; +import android.os.Handler; +import android.os.Message; import android.text.TextUtils; import android.util.Log; import android.view.MotionEvent; @@ -12,6 +14,7 @@ import android.widget.RadioButton; import android.widget.RadioGroup; +import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.casic.dcms.R; @@ -19,6 +22,7 @@ import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.bean.CaseHandleBean; import com.casic.dcms.bean.CaseVerifyBean; +import com.casic.dcms.bean.PointDataBean; import com.casic.dcms.mvp.presenter.CaseCheckPresenterImpl; import com.casic.dcms.mvp.presenter.CaseHandleListPresenterImpl; import com.casic.dcms.mvp.presenter.CaseVerifyPresenterImpl; @@ -28,6 +32,7 @@ import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.data.ServiceFeatureTable; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; @@ -38,15 +43,19 @@ import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; import com.esri.arcgisruntime.mapping.view.Graphic; import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; +import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; import com.esri.arcgisruntime.mapping.view.MapView; import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; -import com.google.gson.Gson; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.concurrent.ExecutionException; import butterknife.BindView; @@ -54,7 +63,6 @@ ICaseHandleListView, ICaseVerifyView, ICaseCheckView { private static final String TAG = "CaseOnMapActivity"; - private final Context context = CaseOnMapActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @BindView(R.id.mapView) @@ -73,6 +81,8 @@ private CaseCheckPresenterImpl caseCheckPresenter; private ListenableList graphics; private ListenableList graphicsOverlays; + private List casePointList = new ArrayList<>(); + private WeakReferenceHandler weakReferenceHandler; @Override public int initLayoutView() { @@ -123,6 +133,9 @@ //Marker相关Layer graphicsOverlays = mapView.getGraphicsOverlays(); + + //handler弱饮用,防止内存泄漏 + weakReferenceHandler = new WeakReferenceHandler(this); } @SuppressLint("ClickableViewAccessibility") @@ -132,30 +145,80 @@ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { @Override public boolean onSingleTapConfirmed(MotionEvent e) { -// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); -// Point clickPoint = mapView.screenToLocation(screenPoint); -// Log.d(TAG, "clickPoint: " + clickPoint); - return true; - } - - @Override - public void onLongPress(MotionEvent e) { - super.onLongPress(e); -// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); -// Point clickPoint = mapView.screenToLocation(screenPoint); -// Log.d(TAG, "onLongPress: " + clickPoint); - } - - @Override - public void onShowPress(MotionEvent e) { - super.onShowPress(e); android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - Point clickPoint = mapView.screenToLocation(screenPoint); - Log.d(TAG, "onShowPress: " + clickPoint); + + final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); + overlaysAsync.addDoneListener(new Runnable() { + @Override + public void run() { + try { + List overlayResultList = overlaysAsync.get(); + if (!overlayResultList.isEmpty()) { + IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); + Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); + for (PointDataBean dataBean : casePointList) { + double parseLng = Double.parseDouble(dataBean.getLng()); + double parseLat = Double.parseDouble(dataBean.getLat()); + if (Math.abs(parseLng - point.getX()) <= Constant.DELTA_LNG_10 || + Math.abs(parseLat - point.getY()) <= Constant.DELTA_LAT_10) { + Message message = weakReferenceHandler.obtainMessage(); + message.what = 2021051401; + message.obj = dataBean.getId(); + weakReferenceHandler.sendMessage(message); + } + } + } else { + weakReferenceHandler.sendEmptyMessage(2021051402); + } + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } + } + }); + return super.onSingleTapConfirmed(e); } }); } + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(CaseOnMapActivity activity) { + reference = new WeakReference<>(activity); + } + + @Override + public void handleMessage(@NonNull Message msg) { + super.handleMessage(msg); + CaseOnMapActivity onMapActivity = reference.get(); + switch (msg.what) { + case 2021051401: + String caseId = (String) msg.obj; + new QMUIDialog.MessageDialogBuilder(onMapActivity) + .setTitle("提示") + .setMessage("已选择案卷:" + caseId + "\r\n确认查看详情?") + .setCanceledOnTouchOutside(false) + .addAction("取消", (dialog, index) -> dialog.dismiss()) + .addAction("确定", new QMUIDialogAction.ActionListener() { + @Override + public void onClick(QMUIDialog dialog, int index) { + dialog.dismiss(); + Intent intent = new Intent(onMapActivity, CaseDetailActivity.class); + intent.putExtra("id", caseId); + onMapActivity.startActivity(intent); + } + }) + .create().show(); + break; + case 2021051402: + ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); + break; + default: + break; + } + } + } + @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { @@ -214,6 +277,7 @@ if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List list = new ArrayList<>(); List pointList = new ArrayList<>(); for (CaseHandleBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); @@ -222,6 +286,8 @@ Log.d(TAG, "案卷经纬度异常"); continue; } + relatePointToCase(list, bean.getId(), lng, lat); + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); pointList.add(point); } @@ -233,15 +299,30 @@ } /** + * 关联Marker和案卷 + * + * @param list 临时数据集合 + */ + private void relatePointToCase(List list, String id, String lng, String lat) { + PointDataBean casePoint = new PointDataBean(); + casePoint.setId(id); + casePoint.setLng(lng); + casePoint.setLat(lat); + list.add(casePoint); + casePointList = list; + } + + /** * 待核实 */ @Override public void obtainVerifyListResult(CaseVerifyBean resultBean) { - Log.d(TAG, "obtainVerifyListResult: " + new Gson().toJson(resultBean)); +// Log.d(TAG, "obtainVerifyListResult: " + new Gson().toJson(resultBean)); clearPictureMarker(); if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List list = new ArrayList<>(); List pointList = new ArrayList<>(); for (CaseVerifyBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); @@ -250,6 +331,8 @@ Log.d(TAG, "案卷经纬度异常"); continue; } + relatePointToCase(list, bean.getId(), lng, lat); + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); pointList.add(point); } @@ -270,6 +353,7 @@ if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List list = new ArrayList<>(); List pointList = new ArrayList<>(); for (CaseCheckBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); @@ -278,6 +362,8 @@ Log.d(TAG, "案卷经纬度异常"); continue; } + relatePointToCase(list, bean.getId(), lng, lat); + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); pointList.add(point); } diff --git a/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java index 0f065e1..3d35bd3 100644 --- a/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java @@ -11,10 +11,10 @@ import com.casic.dcms.bean.ActionResultBean; import com.casic.dcms.mvp.presenter.ChangePasswordPresenterImpl; import com.casic.dcms.mvp.view.IChangePasswordView; +import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.RSAUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.TokenHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; @@ -101,7 +101,7 @@ return; } //数据校验OK,可以修改密码 - PublicKey publicKey = RSAUtils.keyStrToPublicKey(TokenHelper.getPublicKey()); + PublicKey publicKey = RSAUtils.keyStrToPublicKey(AuthenticationHelper.getPublicKey()); String oldPassKey = RSAUtils.encryptDataByPublicKey(oldPassword.getBytes(), publicKey); String newPassKey = RSAUtils.encryptDataByPublicKey(newPassword.getBytes(), publicKey); changePasswordPresenter.onReadyRetrofitRequest(oldPassKey, newPassKey); diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java index 542a90e..8e43b7e 100644 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java @@ -16,11 +16,11 @@ import com.casic.dcms.mvp.presenter.LoginPresenterImpl; import com.casic.dcms.mvp.view.IAuthenticateView; import com.casic.dcms.mvp.view.ILoginView; +import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.RSAUtils; import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.TokenHelper; import com.casic.dcms.widgets.InputDialog; import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; import com.qmuiteam.qmui.util.QMUIStatusBarHelper; @@ -150,7 +150,7 @@ public void authenticateResult(PublicKeyBean result) { if (result.isSuccess()) { String keyString = result.getData().getPublicKey(); - TokenHelper.savePublicKey(keyString); + AuthenticationHelper.savePublicKey(keyString); PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); String userName = userNameView.getText().toString(); @@ -183,7 +183,7 @@ String token = result.getData().getToken(); if (!TextUtils.isEmpty(token)) { //获取用户信息 - TokenHelper.saveToken(token); + AuthenticationHelper.saveToken(token); //验证成功登录 startActivity(new Intent(this, MainActivity.class)); finish(); diff --git a/app/src/main/java/com/casic/dcms/bean/PointDataBean.java b/app/src/main/java/com/casic/dcms/bean/PointDataBean.java new file mode 100644 index 0000000..d0b77c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PointDataBean.java @@ -0,0 +1,34 @@ +package com.casic.dcms.bean; + +/** + * 用于校验Marker点击位置经纬度和实际案卷点经纬度之间的精度 + */ +public class PointDataBean { + private String lng; + private String lat; + private String id; + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} diff --git a/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java b/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java index 10c9d85..0a4e1d2 100644 --- a/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java +++ b/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java @@ -1,9 +1,11 @@ package com.casic.dcms.service; import android.content.Context; +import android.util.Log; import com.casic.dcms.base.BaseApplication; import com.casic.dcms.bean.NoticeBean; +import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.BroadcastManager; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.TimeOrDateUtil; @@ -35,7 +37,8 @@ // 接收 cid @Override public void onReceiveClientId(Context context, String clientid) { -// Log.d(TAG, "onReceiveClientId -> " + "clientid = " + clientid); + Log.d(TAG, "onReceiveClientId -> " + "clientid = " + clientid); + AuthenticationHelper.savePushClientID(clientid); } // cid 离线上线通知 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 7cf0217..22d7bca 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -1,10 +1,12 @@ package com.casic.dcms.ui; import android.annotation.SuppressLint; -import android.content.Context; +import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; +import android.os.Handler; +import android.os.Message; import android.text.TextUtils; import android.util.Log; import android.view.MotionEvent; @@ -12,6 +14,7 @@ import android.widget.RadioButton; import android.widget.RadioGroup; +import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.casic.dcms.R; @@ -19,6 +22,7 @@ import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.bean.CaseHandleBean; import com.casic.dcms.bean.CaseVerifyBean; +import com.casic.dcms.bean.PointDataBean; import com.casic.dcms.mvp.presenter.CaseCheckPresenterImpl; import com.casic.dcms.mvp.presenter.CaseHandleListPresenterImpl; import com.casic.dcms.mvp.presenter.CaseVerifyPresenterImpl; @@ -28,6 +32,7 @@ import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.data.ServiceFeatureTable; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; @@ -38,15 +43,19 @@ import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; import com.esri.arcgisruntime.mapping.view.Graphic; import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; +import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; import com.esri.arcgisruntime.mapping.view.MapView; import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; -import com.google.gson.Gson; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.concurrent.ExecutionException; import butterknife.BindView; @@ -54,7 +63,6 @@ ICaseHandleListView, ICaseVerifyView, ICaseCheckView { private static final String TAG = "CaseOnMapActivity"; - private final Context context = CaseOnMapActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @BindView(R.id.mapView) @@ -73,6 +81,8 @@ private CaseCheckPresenterImpl caseCheckPresenter; private ListenableList graphics; private ListenableList graphicsOverlays; + private List casePointList = new ArrayList<>(); + private WeakReferenceHandler weakReferenceHandler; @Override public int initLayoutView() { @@ -123,6 +133,9 @@ //Marker相关Layer graphicsOverlays = mapView.getGraphicsOverlays(); + + //handler弱饮用,防止内存泄漏 + weakReferenceHandler = new WeakReferenceHandler(this); } @SuppressLint("ClickableViewAccessibility") @@ -132,30 +145,80 @@ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { @Override public boolean onSingleTapConfirmed(MotionEvent e) { -// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); -// Point clickPoint = mapView.screenToLocation(screenPoint); -// Log.d(TAG, "clickPoint: " + clickPoint); - return true; - } - - @Override - public void onLongPress(MotionEvent e) { - super.onLongPress(e); -// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); -// Point clickPoint = mapView.screenToLocation(screenPoint); -// Log.d(TAG, "onLongPress: " + clickPoint); - } - - @Override - public void onShowPress(MotionEvent e) { - super.onShowPress(e); android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - Point clickPoint = mapView.screenToLocation(screenPoint); - Log.d(TAG, "onShowPress: " + clickPoint); + + final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); + overlaysAsync.addDoneListener(new Runnable() { + @Override + public void run() { + try { + List overlayResultList = overlaysAsync.get(); + if (!overlayResultList.isEmpty()) { + IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); + Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); + for (PointDataBean dataBean : casePointList) { + double parseLng = Double.parseDouble(dataBean.getLng()); + double parseLat = Double.parseDouble(dataBean.getLat()); + if (Math.abs(parseLng - point.getX()) <= Constant.DELTA_LNG_10 || + Math.abs(parseLat - point.getY()) <= Constant.DELTA_LAT_10) { + Message message = weakReferenceHandler.obtainMessage(); + message.what = 2021051401; + message.obj = dataBean.getId(); + weakReferenceHandler.sendMessage(message); + } + } + } else { + weakReferenceHandler.sendEmptyMessage(2021051402); + } + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } + } + }); + return super.onSingleTapConfirmed(e); } }); } + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(CaseOnMapActivity activity) { + reference = new WeakReference<>(activity); + } + + @Override + public void handleMessage(@NonNull Message msg) { + super.handleMessage(msg); + CaseOnMapActivity onMapActivity = reference.get(); + switch (msg.what) { + case 2021051401: + String caseId = (String) msg.obj; + new QMUIDialog.MessageDialogBuilder(onMapActivity) + .setTitle("提示") + .setMessage("已选择案卷:" + caseId + "\r\n确认查看详情?") + .setCanceledOnTouchOutside(false) + .addAction("取消", (dialog, index) -> dialog.dismiss()) + .addAction("确定", new QMUIDialogAction.ActionListener() { + @Override + public void onClick(QMUIDialog dialog, int index) { + dialog.dismiss(); + Intent intent = new Intent(onMapActivity, CaseDetailActivity.class); + intent.putExtra("id", caseId); + onMapActivity.startActivity(intent); + } + }) + .create().show(); + break; + case 2021051402: + ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); + break; + default: + break; + } + } + } + @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { @@ -214,6 +277,7 @@ if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List list = new ArrayList<>(); List pointList = new ArrayList<>(); for (CaseHandleBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); @@ -222,6 +286,8 @@ Log.d(TAG, "案卷经纬度异常"); continue; } + relatePointToCase(list, bean.getId(), lng, lat); + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); pointList.add(point); } @@ -233,15 +299,30 @@ } /** + * 关联Marker和案卷 + * + * @param list 临时数据集合 + */ + private void relatePointToCase(List list, String id, String lng, String lat) { + PointDataBean casePoint = new PointDataBean(); + casePoint.setId(id); + casePoint.setLng(lng); + casePoint.setLat(lat); + list.add(casePoint); + casePointList = list; + } + + /** * 待核实 */ @Override public void obtainVerifyListResult(CaseVerifyBean resultBean) { - Log.d(TAG, "obtainVerifyListResult: " + new Gson().toJson(resultBean)); +// Log.d(TAG, "obtainVerifyListResult: " + new Gson().toJson(resultBean)); clearPictureMarker(); if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List list = new ArrayList<>(); List pointList = new ArrayList<>(); for (CaseVerifyBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); @@ -250,6 +331,8 @@ Log.d(TAG, "案卷经纬度异常"); continue; } + relatePointToCase(list, bean.getId(), lng, lat); + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); pointList.add(point); } @@ -270,6 +353,7 @@ if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List list = new ArrayList<>(); List pointList = new ArrayList<>(); for (CaseCheckBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); @@ -278,6 +362,8 @@ Log.d(TAG, "案卷经纬度异常"); continue; } + relatePointToCase(list, bean.getId(), lng, lat); + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); pointList.add(point); } diff --git a/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java index 0f065e1..3d35bd3 100644 --- a/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java @@ -11,10 +11,10 @@ import com.casic.dcms.bean.ActionResultBean; import com.casic.dcms.mvp.presenter.ChangePasswordPresenterImpl; import com.casic.dcms.mvp.view.IChangePasswordView; +import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.RSAUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.TokenHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; @@ -101,7 +101,7 @@ return; } //数据校验OK,可以修改密码 - PublicKey publicKey = RSAUtils.keyStrToPublicKey(TokenHelper.getPublicKey()); + PublicKey publicKey = RSAUtils.keyStrToPublicKey(AuthenticationHelper.getPublicKey()); String oldPassKey = RSAUtils.encryptDataByPublicKey(oldPassword.getBytes(), publicKey); String newPassKey = RSAUtils.encryptDataByPublicKey(newPassword.getBytes(), publicKey); changePasswordPresenter.onReadyRetrofitRequest(oldPassKey, newPassKey); diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java index 542a90e..8e43b7e 100644 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java @@ -16,11 +16,11 @@ import com.casic.dcms.mvp.presenter.LoginPresenterImpl; import com.casic.dcms.mvp.view.IAuthenticateView; import com.casic.dcms.mvp.view.ILoginView; +import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.RSAUtils; import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.TokenHelper; import com.casic.dcms.widgets.InputDialog; import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; import com.qmuiteam.qmui.util.QMUIStatusBarHelper; @@ -150,7 +150,7 @@ public void authenticateResult(PublicKeyBean result) { if (result.isSuccess()) { String keyString = result.getData().getPublicKey(); - TokenHelper.savePublicKey(keyString); + AuthenticationHelper.savePublicKey(keyString); PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); String userName = userNameView.getText().toString(); @@ -183,7 +183,7 @@ String token = result.getData().getToken(); if (!TextUtils.isEmpty(token)) { //获取用户信息 - TokenHelper.saveToken(token); + AuthenticationHelper.saveToken(token); //验证成功登录 startActivity(new Intent(this, MainActivity.class)); finish(); diff --git a/app/src/main/java/com/casic/dcms/utils/AuthenticationHelper.java b/app/src/main/java/com/casic/dcms/utils/AuthenticationHelper.java new file mode 100644 index 0000000..4278463 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/AuthenticationHelper.java @@ -0,0 +1,28 @@ +package com.casic.dcms.utils; + +public class AuthenticationHelper { + + public static void savePublicKey(String key) { + SaveKeyValues.putValue("keyString", key); + } + + public static String getPublicKey() { + return (String) SaveKeyValues.getValue("keyString", ""); + } + + public static void saveToken(String token) { + SaveKeyValues.putValue("token", token); + } + + public static String getToken() { + return (String) SaveKeyValues.getValue("token", ""); + } + + public static void savePushClientID(String clientid) { + SaveKeyValues.putValue("pushClientID", clientid); + } + + public static String getPushClientID() { + return (String) SaveKeyValues.getValue("pushClientID", ""); + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PointDataBean.java b/app/src/main/java/com/casic/dcms/bean/PointDataBean.java new file mode 100644 index 0000000..d0b77c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PointDataBean.java @@ -0,0 +1,34 @@ +package com.casic.dcms.bean; + +/** + * 用于校验Marker点击位置经纬度和实际案卷点经纬度之间的精度 + */ +public class PointDataBean { + private String lng; + private String lat; + private String id; + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} diff --git a/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java b/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java index 10c9d85..0a4e1d2 100644 --- a/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java +++ b/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java @@ -1,9 +1,11 @@ package com.casic.dcms.service; import android.content.Context; +import android.util.Log; import com.casic.dcms.base.BaseApplication; import com.casic.dcms.bean.NoticeBean; +import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.BroadcastManager; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.TimeOrDateUtil; @@ -35,7 +37,8 @@ // 接收 cid @Override public void onReceiveClientId(Context context, String clientid) { -// Log.d(TAG, "onReceiveClientId -> " + "clientid = " + clientid); + Log.d(TAG, "onReceiveClientId -> " + "clientid = " + clientid); + AuthenticationHelper.savePushClientID(clientid); } // cid 离线上线通知 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 7cf0217..22d7bca 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -1,10 +1,12 @@ package com.casic.dcms.ui; import android.annotation.SuppressLint; -import android.content.Context; +import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; +import android.os.Handler; +import android.os.Message; import android.text.TextUtils; import android.util.Log; import android.view.MotionEvent; @@ -12,6 +14,7 @@ import android.widget.RadioButton; import android.widget.RadioGroup; +import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.casic.dcms.R; @@ -19,6 +22,7 @@ import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.bean.CaseHandleBean; import com.casic.dcms.bean.CaseVerifyBean; +import com.casic.dcms.bean.PointDataBean; import com.casic.dcms.mvp.presenter.CaseCheckPresenterImpl; import com.casic.dcms.mvp.presenter.CaseHandleListPresenterImpl; import com.casic.dcms.mvp.presenter.CaseVerifyPresenterImpl; @@ -28,6 +32,7 @@ import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.data.ServiceFeatureTable; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; @@ -38,15 +43,19 @@ import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; import com.esri.arcgisruntime.mapping.view.Graphic; import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; +import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; import com.esri.arcgisruntime.mapping.view.MapView; import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; -import com.google.gson.Gson; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.concurrent.ExecutionException; import butterknife.BindView; @@ -54,7 +63,6 @@ ICaseHandleListView, ICaseVerifyView, ICaseCheckView { private static final String TAG = "CaseOnMapActivity"; - private final Context context = CaseOnMapActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @BindView(R.id.mapView) @@ -73,6 +81,8 @@ private CaseCheckPresenterImpl caseCheckPresenter; private ListenableList graphics; private ListenableList graphicsOverlays; + private List casePointList = new ArrayList<>(); + private WeakReferenceHandler weakReferenceHandler; @Override public int initLayoutView() { @@ -123,6 +133,9 @@ //Marker相关Layer graphicsOverlays = mapView.getGraphicsOverlays(); + + //handler弱饮用,防止内存泄漏 + weakReferenceHandler = new WeakReferenceHandler(this); } @SuppressLint("ClickableViewAccessibility") @@ -132,30 +145,80 @@ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { @Override public boolean onSingleTapConfirmed(MotionEvent e) { -// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); -// Point clickPoint = mapView.screenToLocation(screenPoint); -// Log.d(TAG, "clickPoint: " + clickPoint); - return true; - } - - @Override - public void onLongPress(MotionEvent e) { - super.onLongPress(e); -// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); -// Point clickPoint = mapView.screenToLocation(screenPoint); -// Log.d(TAG, "onLongPress: " + clickPoint); - } - - @Override - public void onShowPress(MotionEvent e) { - super.onShowPress(e); android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - Point clickPoint = mapView.screenToLocation(screenPoint); - Log.d(TAG, "onShowPress: " + clickPoint); + + final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); + overlaysAsync.addDoneListener(new Runnable() { + @Override + public void run() { + try { + List overlayResultList = overlaysAsync.get(); + if (!overlayResultList.isEmpty()) { + IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); + Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); + for (PointDataBean dataBean : casePointList) { + double parseLng = Double.parseDouble(dataBean.getLng()); + double parseLat = Double.parseDouble(dataBean.getLat()); + if (Math.abs(parseLng - point.getX()) <= Constant.DELTA_LNG_10 || + Math.abs(parseLat - point.getY()) <= Constant.DELTA_LAT_10) { + Message message = weakReferenceHandler.obtainMessage(); + message.what = 2021051401; + message.obj = dataBean.getId(); + weakReferenceHandler.sendMessage(message); + } + } + } else { + weakReferenceHandler.sendEmptyMessage(2021051402); + } + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } + } + }); + return super.onSingleTapConfirmed(e); } }); } + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(CaseOnMapActivity activity) { + reference = new WeakReference<>(activity); + } + + @Override + public void handleMessage(@NonNull Message msg) { + super.handleMessage(msg); + CaseOnMapActivity onMapActivity = reference.get(); + switch (msg.what) { + case 2021051401: + String caseId = (String) msg.obj; + new QMUIDialog.MessageDialogBuilder(onMapActivity) + .setTitle("提示") + .setMessage("已选择案卷:" + caseId + "\r\n确认查看详情?") + .setCanceledOnTouchOutside(false) + .addAction("取消", (dialog, index) -> dialog.dismiss()) + .addAction("确定", new QMUIDialogAction.ActionListener() { + @Override + public void onClick(QMUIDialog dialog, int index) { + dialog.dismiss(); + Intent intent = new Intent(onMapActivity, CaseDetailActivity.class); + intent.putExtra("id", caseId); + onMapActivity.startActivity(intent); + } + }) + .create().show(); + break; + case 2021051402: + ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); + break; + default: + break; + } + } + } + @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { @@ -214,6 +277,7 @@ if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List list = new ArrayList<>(); List pointList = new ArrayList<>(); for (CaseHandleBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); @@ -222,6 +286,8 @@ Log.d(TAG, "案卷经纬度异常"); continue; } + relatePointToCase(list, bean.getId(), lng, lat); + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); pointList.add(point); } @@ -233,15 +299,30 @@ } /** + * 关联Marker和案卷 + * + * @param list 临时数据集合 + */ + private void relatePointToCase(List list, String id, String lng, String lat) { + PointDataBean casePoint = new PointDataBean(); + casePoint.setId(id); + casePoint.setLng(lng); + casePoint.setLat(lat); + list.add(casePoint); + casePointList = list; + } + + /** * 待核实 */ @Override public void obtainVerifyListResult(CaseVerifyBean resultBean) { - Log.d(TAG, "obtainVerifyListResult: " + new Gson().toJson(resultBean)); +// Log.d(TAG, "obtainVerifyListResult: " + new Gson().toJson(resultBean)); clearPictureMarker(); if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List list = new ArrayList<>(); List pointList = new ArrayList<>(); for (CaseVerifyBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); @@ -250,6 +331,8 @@ Log.d(TAG, "案卷经纬度异常"); continue; } + relatePointToCase(list, bean.getId(), lng, lat); + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); pointList.add(point); } @@ -270,6 +353,7 @@ if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List list = new ArrayList<>(); List pointList = new ArrayList<>(); for (CaseCheckBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); @@ -278,6 +362,8 @@ Log.d(TAG, "案卷经纬度异常"); continue; } + relatePointToCase(list, bean.getId(), lng, lat); + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); pointList.add(point); } diff --git a/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java index 0f065e1..3d35bd3 100644 --- a/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java @@ -11,10 +11,10 @@ import com.casic.dcms.bean.ActionResultBean; import com.casic.dcms.mvp.presenter.ChangePasswordPresenterImpl; import com.casic.dcms.mvp.view.IChangePasswordView; +import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.RSAUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.TokenHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; @@ -101,7 +101,7 @@ return; } //数据校验OK,可以修改密码 - PublicKey publicKey = RSAUtils.keyStrToPublicKey(TokenHelper.getPublicKey()); + PublicKey publicKey = RSAUtils.keyStrToPublicKey(AuthenticationHelper.getPublicKey()); String oldPassKey = RSAUtils.encryptDataByPublicKey(oldPassword.getBytes(), publicKey); String newPassKey = RSAUtils.encryptDataByPublicKey(newPassword.getBytes(), publicKey); changePasswordPresenter.onReadyRetrofitRequest(oldPassKey, newPassKey); diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java index 542a90e..8e43b7e 100644 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java @@ -16,11 +16,11 @@ import com.casic.dcms.mvp.presenter.LoginPresenterImpl; import com.casic.dcms.mvp.view.IAuthenticateView; import com.casic.dcms.mvp.view.ILoginView; +import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.RSAUtils; import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.TokenHelper; import com.casic.dcms.widgets.InputDialog; import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; import com.qmuiteam.qmui.util.QMUIStatusBarHelper; @@ -150,7 +150,7 @@ public void authenticateResult(PublicKeyBean result) { if (result.isSuccess()) { String keyString = result.getData().getPublicKey(); - TokenHelper.savePublicKey(keyString); + AuthenticationHelper.savePublicKey(keyString); PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); String userName = userNameView.getText().toString(); @@ -183,7 +183,7 @@ String token = result.getData().getToken(); if (!TextUtils.isEmpty(token)) { //获取用户信息 - TokenHelper.saveToken(token); + AuthenticationHelper.saveToken(token); //验证成功登录 startActivity(new Intent(this, MainActivity.class)); finish(); diff --git a/app/src/main/java/com/casic/dcms/utils/AuthenticationHelper.java b/app/src/main/java/com/casic/dcms/utils/AuthenticationHelper.java new file mode 100644 index 0000000..4278463 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/AuthenticationHelper.java @@ -0,0 +1,28 @@ +package com.casic.dcms.utils; + +public class AuthenticationHelper { + + public static void savePublicKey(String key) { + SaveKeyValues.putValue("keyString", key); + } + + public static String getPublicKey() { + return (String) SaveKeyValues.getValue("keyString", ""); + } + + public static void saveToken(String token) { + SaveKeyValues.putValue("token", token); + } + + public static String getToken() { + return (String) SaveKeyValues.getValue("token", ""); + } + + public static void savePushClientID(String clientid) { + SaveKeyValues.putValue("pushClientID", clientid); + } + + public static String getPushClientID() { + return (String) SaveKeyValues.getValue("pushClientID", ""); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/TokenHelper.java b/app/src/main/java/com/casic/dcms/utils/TokenHelper.java deleted file mode 100644 index 0e63632..0000000 --- a/app/src/main/java/com/casic/dcms/utils/TokenHelper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.dcms.utils; - -public class TokenHelper { - - public static void savePublicKey(String key) { - SaveKeyValues.putValue("keyString", key); - } - - public static String getPublicKey() { - return (String) SaveKeyValues.getValue("keyString", ""); - } - - public static void saveToken(String token) { - SaveKeyValues.putValue("token", token); - } - - public static String getToken() { - return (String) SaveKeyValues.getValue("token", ""); - } -} diff --git a/app/src/main/java/com/casic/dcms/bean/PointDataBean.java b/app/src/main/java/com/casic/dcms/bean/PointDataBean.java new file mode 100644 index 0000000..d0b77c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PointDataBean.java @@ -0,0 +1,34 @@ +package com.casic.dcms.bean; + +/** + * 用于校验Marker点击位置经纬度和实际案卷点经纬度之间的精度 + */ +public class PointDataBean { + private String lng; + private String lat; + private String id; + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} diff --git a/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java b/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java index 10c9d85..0a4e1d2 100644 --- a/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java +++ b/app/src/main/java/com/casic/dcms/service/GeTuiIntentService.java @@ -1,9 +1,11 @@ package com.casic.dcms.service; import android.content.Context; +import android.util.Log; import com.casic.dcms.base.BaseApplication; import com.casic.dcms.bean.NoticeBean; +import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.BroadcastManager; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.TimeOrDateUtil; @@ -35,7 +37,8 @@ // 接收 cid @Override public void onReceiveClientId(Context context, String clientid) { -// Log.d(TAG, "onReceiveClientId -> " + "clientid = " + clientid); + Log.d(TAG, "onReceiveClientId -> " + "clientid = " + clientid); + AuthenticationHelper.savePushClientID(clientid); } // cid 离线上线通知 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 7cf0217..22d7bca 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -1,10 +1,12 @@ package com.casic.dcms.ui; import android.annotation.SuppressLint; -import android.content.Context; +import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; +import android.os.Handler; +import android.os.Message; import android.text.TextUtils; import android.util.Log; import android.view.MotionEvent; @@ -12,6 +14,7 @@ import android.widget.RadioButton; import android.widget.RadioGroup; +import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.casic.dcms.R; @@ -19,6 +22,7 @@ import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.bean.CaseHandleBean; import com.casic.dcms.bean.CaseVerifyBean; +import com.casic.dcms.bean.PointDataBean; import com.casic.dcms.mvp.presenter.CaseCheckPresenterImpl; import com.casic.dcms.mvp.presenter.CaseHandleListPresenterImpl; import com.casic.dcms.mvp.presenter.CaseVerifyPresenterImpl; @@ -28,6 +32,7 @@ import com.casic.dcms.utils.ColorHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.data.ServiceFeatureTable; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; @@ -38,15 +43,19 @@ import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; import com.esri.arcgisruntime.mapping.view.Graphic; import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; +import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; import com.esri.arcgisruntime.mapping.view.MapView; import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; -import com.google.gson.Gson; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.concurrent.ExecutionException; import butterknife.BindView; @@ -54,7 +63,6 @@ ICaseHandleListView, ICaseVerifyView, ICaseCheckView { private static final String TAG = "CaseOnMapActivity"; - private final Context context = CaseOnMapActivity.this; @BindView(R.id.caseTopLayout) QMUITopBarLayout caseTopLayout; @BindView(R.id.mapView) @@ -73,6 +81,8 @@ private CaseCheckPresenterImpl caseCheckPresenter; private ListenableList graphics; private ListenableList graphicsOverlays; + private List casePointList = new ArrayList<>(); + private WeakReferenceHandler weakReferenceHandler; @Override public int initLayoutView() { @@ -123,6 +133,9 @@ //Marker相关Layer graphicsOverlays = mapView.getGraphicsOverlays(); + + //handler弱饮用,防止内存泄漏 + weakReferenceHandler = new WeakReferenceHandler(this); } @SuppressLint("ClickableViewAccessibility") @@ -132,30 +145,80 @@ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { @Override public boolean onSingleTapConfirmed(MotionEvent e) { -// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); -// Point clickPoint = mapView.screenToLocation(screenPoint); -// Log.d(TAG, "clickPoint: " + clickPoint); - return true; - } - - @Override - public void onLongPress(MotionEvent e) { - super.onLongPress(e); -// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); -// Point clickPoint = mapView.screenToLocation(screenPoint); -// Log.d(TAG, "onLongPress: " + clickPoint); - } - - @Override - public void onShowPress(MotionEvent e) { - super.onShowPress(e); android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - Point clickPoint = mapView.screenToLocation(screenPoint); - Log.d(TAG, "onShowPress: " + clickPoint); + + final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); + overlaysAsync.addDoneListener(new Runnable() { + @Override + public void run() { + try { + List overlayResultList = overlaysAsync.get(); + if (!overlayResultList.isEmpty()) { + IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); + Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); + for (PointDataBean dataBean : casePointList) { + double parseLng = Double.parseDouble(dataBean.getLng()); + double parseLat = Double.parseDouble(dataBean.getLat()); + if (Math.abs(parseLng - point.getX()) <= Constant.DELTA_LNG_10 || + Math.abs(parseLat - point.getY()) <= Constant.DELTA_LAT_10) { + Message message = weakReferenceHandler.obtainMessage(); + message.what = 2021051401; + message.obj = dataBean.getId(); + weakReferenceHandler.sendMessage(message); + } + } + } else { + weakReferenceHandler.sendEmptyMessage(2021051402); + } + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } + } + }); + return super.onSingleTapConfirmed(e); } }); } + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(CaseOnMapActivity activity) { + reference = new WeakReference<>(activity); + } + + @Override + public void handleMessage(@NonNull Message msg) { + super.handleMessage(msg); + CaseOnMapActivity onMapActivity = reference.get(); + switch (msg.what) { + case 2021051401: + String caseId = (String) msg.obj; + new QMUIDialog.MessageDialogBuilder(onMapActivity) + .setTitle("提示") + .setMessage("已选择案卷:" + caseId + "\r\n确认查看详情?") + .setCanceledOnTouchOutside(false) + .addAction("取消", (dialog, index) -> dialog.dismiss()) + .addAction("确定", new QMUIDialogAction.ActionListener() { + @Override + public void onClick(QMUIDialog dialog, int index) { + dialog.dismiss(); + Intent intent = new Intent(onMapActivity, CaseDetailActivity.class); + intent.putExtra("id", caseId); + onMapActivity.startActivity(intent); + } + }) + .create().show(); + break; + case 2021051402: + ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); + break; + default: + break; + } + } + } + @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { @@ -214,6 +277,7 @@ if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List list = new ArrayList<>(); List pointList = new ArrayList<>(); for (CaseHandleBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); @@ -222,6 +286,8 @@ Log.d(TAG, "案卷经纬度异常"); continue; } + relatePointToCase(list, bean.getId(), lng, lat); + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); pointList.add(point); } @@ -233,15 +299,30 @@ } /** + * 关联Marker和案卷 + * + * @param list 临时数据集合 + */ + private void relatePointToCase(List list, String id, String lng, String lat) { + PointDataBean casePoint = new PointDataBean(); + casePoint.setId(id); + casePoint.setLng(lng); + casePoint.setLat(lat); + list.add(casePoint); + casePointList = list; + } + + /** * 待核实 */ @Override public void obtainVerifyListResult(CaseVerifyBean resultBean) { - Log.d(TAG, "obtainVerifyListResult: " + new Gson().toJson(resultBean)); +// Log.d(TAG, "obtainVerifyListResult: " + new Gson().toJson(resultBean)); clearPictureMarker(); if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List list = new ArrayList<>(); List pointList = new ArrayList<>(); for (CaseVerifyBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); @@ -250,6 +331,8 @@ Log.d(TAG, "案卷经纬度异常"); continue; } + relatePointToCase(list, bean.getId(), lng, lat); + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); pointList.add(point); } @@ -270,6 +353,7 @@ if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List list = new ArrayList<>(); List pointList = new ArrayList<>(); for (CaseCheckBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); @@ -278,6 +362,8 @@ Log.d(TAG, "案卷经纬度异常"); continue; } + relatePointToCase(list, bean.getId(), lng, lat); + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); pointList.add(point); } diff --git a/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java index 0f065e1..3d35bd3 100644 --- a/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ChangePasswordActivity.java @@ -11,10 +11,10 @@ import com.casic.dcms.bean.ActionResultBean; import com.casic.dcms.mvp.presenter.ChangePasswordPresenterImpl; import com.casic.dcms.mvp.view.IChangePasswordView; +import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.RSAUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.TokenHelper; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; @@ -101,7 +101,7 @@ return; } //数据校验OK,可以修改密码 - PublicKey publicKey = RSAUtils.keyStrToPublicKey(TokenHelper.getPublicKey()); + PublicKey publicKey = RSAUtils.keyStrToPublicKey(AuthenticationHelper.getPublicKey()); String oldPassKey = RSAUtils.encryptDataByPublicKey(oldPassword.getBytes(), publicKey); String newPassKey = RSAUtils.encryptDataByPublicKey(newPassword.getBytes(), publicKey); changePasswordPresenter.onReadyRetrofitRequest(oldPassKey, newPassKey); diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java index 542a90e..8e43b7e 100644 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java @@ -16,11 +16,11 @@ import com.casic.dcms.mvp.presenter.LoginPresenterImpl; import com.casic.dcms.mvp.view.IAuthenticateView; import com.casic.dcms.mvp.view.ILoginView; +import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.RSAUtils; import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.TokenHelper; import com.casic.dcms.widgets.InputDialog; import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; import com.qmuiteam.qmui.util.QMUIStatusBarHelper; @@ -150,7 +150,7 @@ public void authenticateResult(PublicKeyBean result) { if (result.isSuccess()) { String keyString = result.getData().getPublicKey(); - TokenHelper.savePublicKey(keyString); + AuthenticationHelper.savePublicKey(keyString); PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); String userName = userNameView.getText().toString(); @@ -183,7 +183,7 @@ String token = result.getData().getToken(); if (!TextUtils.isEmpty(token)) { //获取用户信息 - TokenHelper.saveToken(token); + AuthenticationHelper.saveToken(token); //验证成功登录 startActivity(new Intent(this, MainActivity.class)); finish(); diff --git a/app/src/main/java/com/casic/dcms/utils/AuthenticationHelper.java b/app/src/main/java/com/casic/dcms/utils/AuthenticationHelper.java new file mode 100644 index 0000000..4278463 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/AuthenticationHelper.java @@ -0,0 +1,28 @@ +package com.casic.dcms.utils; + +public class AuthenticationHelper { + + public static void savePublicKey(String key) { + SaveKeyValues.putValue("keyString", key); + } + + public static String getPublicKey() { + return (String) SaveKeyValues.getValue("keyString", ""); + } + + public static void saveToken(String token) { + SaveKeyValues.putValue("token", token); + } + + public static String getToken() { + return (String) SaveKeyValues.getValue("token", ""); + } + + public static void savePushClientID(String clientid) { + SaveKeyValues.putValue("pushClientID", clientid); + } + + public static String getPushClientID() { + return (String) SaveKeyValues.getValue("pushClientID", ""); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/TokenHelper.java b/app/src/main/java/com/casic/dcms/utils/TokenHelper.java deleted file mode 100644 index 0e63632..0000000 --- a/app/src/main/java/com/casic/dcms/utils/TokenHelper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.casic.dcms.utils; - -public class TokenHelper { - - public static void savePublicKey(String key) { - SaveKeyValues.putValue("keyString", key); - } - - public static String getPublicKey() { - return (String) SaveKeyValues.getValue("keyString", ""); - } - - public static void saveToken(String token) { - SaveKeyValues.putValue("token", token); - } - - public static String getToken() { - return (String) SaveKeyValues.getValue("token", ""); - } -} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index f1081a7..5d29f09 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -28,10 +28,10 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpConfig; import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TokenHelper; import org.jetbrains.annotations.NotNull; @@ -101,7 +101,7 @@ public static Observable getUserData() { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainUser(TokenHelper.getToken()); + return service.obtainUser(AuthenticationHelper.getToken()); } /** @@ -110,7 +110,7 @@ public static Observable getCaseLargeClass(String eorc) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainLargeClass(TokenHelper.getToken(), eorc); + return service.obtainLargeClass(AuthenticationHelper.getToken(), eorc); } /** @@ -119,7 +119,7 @@ public static Observable getCaseSmallClass(String eorc, String typeId) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainLargeClass(TokenHelper.getToken(), eorc, typeId); + return service.obtainLargeClass(AuthenticationHelper.getToken(), eorc, typeId); } /** @@ -136,7 +136,7 @@ int bzhours, int bzminis) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.submitCase(TokenHelper.getToken(), isNeedVerify, isNeedRevisit, longitude, latitude, + return service.submitCase(AuthenticationHelper.getToken(), isNeedVerify, isNeedRevisit, longitude, latitude, source, caseLevel, eorc, casetypeCode, casetypeDetailCode, areaCode, streetCode, communityCode, gridId, description, fieldintro, fileIdVerify, bzhours, bzminis); } @@ -147,7 +147,7 @@ public static Observable getLoginOutResult() { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.loginOut(TokenHelper.getToken()); + return service.loginOut(AuthenticationHelper.getToken()); } /** @@ -156,7 +156,7 @@ public static Observable getChangePasswordResult(String oldPwd, String newPwd) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.changePassword(TokenHelper.getToken(), oldPwd, newPwd); + return service.changePassword(AuthenticationHelper.getToken(), oldPwd, newPwd); } /** @@ -165,7 +165,7 @@ public static Observable getDeptTreeResult(String pid) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainDeptTree(TokenHelper.getToken(), pid); + return service.obtainDeptTree(AuthenticationHelper.getToken(), pid); } /** @@ -174,7 +174,7 @@ public static Observable getPhoneBookResult(String deptid) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainPhoneBook(TokenHelper.getToken(), deptid); + return service.obtainPhoneBook(AuthenticationHelper.getToken(), deptid); } /** @@ -183,7 +183,7 @@ public static Observable getHighEventResult(String begTime, String endTime) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainHighEvent(TokenHelper.getToken(), begTime, endTime); + return service.obtainHighEvent(AuthenticationHelper.getToken(), begTime, endTime); } /** @@ -192,7 +192,7 @@ public static Observable getEventSourceResult(String begTime, String endTime) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainEventSource(TokenHelper.getToken(), begTime, endTime); + return service.obtainEventSource(AuthenticationHelper.getToken(), begTime, endTime); } /** @@ -201,7 +201,7 @@ public static Observable getCaseStatusResult() { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainCaseStatus(TokenHelper.getToken()); + return service.obtainCaseStatus(AuthenticationHelper.getToken()); } /** @@ -212,7 +212,7 @@ String registerTimeEnd, String eorc, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainCaseList(TokenHelper.getToken(), casetypeCode, casetypeDetailCode, caseStateId, + return service.obtainCaseList(AuthenticationHelper.getToken(), casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, 15, offset); } @@ -222,7 +222,7 @@ public static Observable getCaseDetailResult(String id) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainCaseDetail(TokenHelper.getToken(), id); + return service.obtainCaseDetail(AuthenticationHelper.getToken(), id); } /** @@ -231,7 +231,7 @@ public static Observable getCaseProcessResult(String processId) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainCaseProcess(TokenHelper.getToken(), processId); + return service.obtainCaseProcess(AuthenticationHelper.getToken(), processId); } /** @@ -240,7 +240,7 @@ public static Observable getVersionResult() { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainVersion(TokenHelper.getToken()); + return service.obtainVersion(AuthenticationHelper.getToken()); } /** @@ -249,7 +249,7 @@ public static Observable getCaseVerifyListResult(int limit, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainCaseVerifyList(TokenHelper.getToken(), limit, offset); + return service.obtainCaseVerifyList(AuthenticationHelper.getToken(), limit, offset); } /** @@ -258,7 +258,7 @@ public static Observable getCaseVerifiedListResult(int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainCaseVerifiedList(TokenHelper.getToken(), 15, offset); + return service.obtainCaseVerifiedList(AuthenticationHelper.getToken(), 15, offset); } /** @@ -267,7 +267,7 @@ public static Observable getCaseCheckListResult(int limit, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainCaseCheckList(TokenHelper.getToken(), limit, offset); + return service.obtainCaseCheckList(AuthenticationHelper.getToken(), limit, offset); } /** @@ -276,7 +276,7 @@ public static Observable getCaseCheckedListResult(int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainCaseCheckedList(TokenHelper.getToken(), 15, offset); + return service.obtainCaseCheckedList(AuthenticationHelper.getToken(), 15, offset); } /** @@ -290,7 +290,7 @@ RetrofitService service = retrofit.create(RetrofitService.class); RequestBody requestBody = RequestBody.create(MediaType.parse("image/png"), image); MultipartBody.Part imagePart = MultipartBody.Part.createFormData("file", image.getName(), requestBody); - return service.uploadImage(TokenHelper.getToken(), imagePart); + return service.uploadImage(AuthenticationHelper.getToken(), imagePart); } /** @@ -301,7 +301,7 @@ RetrofitService service = retrofit.create(RetrofitService.class); RequestBody requestBody = RequestBody.create(MediaType.parse("audio/m4a"), audio); MultipartBody.Part imagePart = MultipartBody.Part.createFormData("file", audio.getName(), requestBody); - return service.uploadAudio(TokenHelper.getToken(), imagePart); + return service.uploadAudio(AuthenticationHelper.getToken(), imagePart); } /** @@ -312,7 +312,7 @@ RetrofitService service = retrofit.create(RetrofitService.class); RequestBody requestBody = RequestBody.create(MediaType.parse("video/mp4"), video); MultipartBody.Part imagePart = MultipartBody.Part.createFormData("file", video.getName(), requestBody); - return service.uploadVideo(TokenHelper.getToken(), imagePart); + return service.uploadVideo(AuthenticationHelper.getToken(), imagePart); } /** @@ -329,7 +329,7 @@ String shopkeeperName, String shopPhone) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.submitShopCase(TokenHelper.getToken(), isNeedVerify, isNeedRevisit, longitude, + return service.submitShopCase(AuthenticationHelper.getToken(), isNeedVerify, isNeedRevisit, longitude, latitude, source, caseLevel, areaCode, streetCode, communityCode, gridId, description, fieldintro, fileIdVerify, bzhours, bzminis, shopId, shopkeeperName, shopPhone); } @@ -341,7 +341,7 @@ int limit, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainHandleCase(TokenHelper.getToken(), isOvertime, isEmergent, limit, offset); + return service.obtainHandleCase(AuthenticationHelper.getToken(), isOvertime, isEmergent, limit, offset); } /** @@ -350,7 +350,7 @@ public static Observable getCaseHandledListResult(int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainHandledCase(TokenHelper.getToken(), 15, offset); + return service.obtainHandledCase(AuthenticationHelper.getToken(), 15, offset); } /** @@ -359,7 +359,7 @@ public static Observable getUrgentCaseListResult(String isSupervise, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainUrgentCase(TokenHelper.getToken(), isSupervise, 15, offset); + return service.obtainUrgentCase(AuthenticationHelper.getToken(), isSupervise, 15, offset); } /** @@ -368,7 +368,7 @@ public static Observable getOvertimeCaseListResult(String isSupervise, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainOvertimeCase(TokenHelper.getToken(), isSupervise, 15, offset); + return service.obtainOvertimeCase(AuthenticationHelper.getToken(), isSupervise, 15, offset); } /** @@ -377,7 +377,7 @@ public static Observable getOnlinePersonResult(String deptid, String roleTips, String isOnLine) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainOnlinePerson(TokenHelper.getToken(), deptid, roleTips, isOnLine); + return service.obtainOnlinePerson(AuthenticationHelper.getToken(), deptid, roleTips, isOnLine); } /** @@ -386,7 +386,7 @@ public static Observable getPositionUploadResult(String imei, String positionLat, String positionLng) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.uploadDevicePosition(TokenHelper.getToken(), imei, positionLat, positionLng); + return service.uploadDevicePosition(AuthenticationHelper.getToken(), imei, positionLat, positionLng); } /** @@ -397,7 +397,7 @@ public static Observable getProcessNextNodeResult(String caseState) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainProcessNextNode(TokenHelper.getToken(), caseState); + return service.obtainProcessNextNode(AuthenticationHelper.getToken(), caseState); } /** @@ -406,7 +406,7 @@ public static Observable getCommonSentenceResult() { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainCommonSentence(TokenHelper.getToken()); + return service.obtainCommonSentence(AuthenticationHelper.getToken()); } /** @@ -419,7 +419,7 @@ String remarks, String fileId) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.handleCase(TokenHelper.getToken(), processId, bizId, currState, changeState, remarks, fileId); + return service.handleCase(AuthenticationHelper.getToken(), processId, bizId, currState, changeState, remarks, fileId); } /** @@ -433,7 +433,7 @@ String approvalResult) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.handleCase(TokenHelper.getToken(), processId, bizId, currState, changeState, remarks, + return service.handleCase(AuthenticationHelper.getToken(), processId, bizId, currState, changeState, remarks, fileId, approvalResult); } @@ -454,7 +454,7 @@ String fieldintro) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.handleCase(TokenHelper.getToken(), processId, bizId, currState, changeState, + return service.handleCase(AuthenticationHelper.getToken(), processId, bizId, currState, changeState, remarks, fileId, eorc, casetypeCode, casetypeDetailCode, lng, lat, caseLevel, areaCode, streetCode, communityCode, gridId, fieldintro); } @@ -465,7 +465,7 @@ public static Observable getUpdateSuperviseResult(String id, String superviseRemarks) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.updateSuperviseRemarks(TokenHelper.getToken(), id, superviseRemarks); + return service.updateSuperviseRemarks(AuthenticationHelper.getToken(), id, superviseRemarks); } /** @@ -474,6 +474,6 @@ public static Observable getHomePageResult(String resourceType) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainHomePage(TokenHelper.getToken(), resourceType); + return service.obtainHomePage(AuthenticationHelper.getToken(), resourceType); } }