diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fd91f6c..d329792 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -123,7 +123,8 @@
-
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fd91f6c..d329792 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -123,7 +123,8 @@
-
+
+
diff --git a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
index bd5e484..97254a7 100644
--- a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
@@ -19,7 +19,6 @@
import com.casic.dcms.view.OvertimeCaseActivity;
import com.casic.dcms.view.PersonActivity;
import com.casic.dcms.view.SearchCaseActivity;
-import com.casic.dcms.view.StreetlightManagerActivity;
import com.casic.dcms.view.UrgentCaseActivity;
import com.casic.dcms.view.bridge.BridgeMaintainActivity;
import com.casic.dcms.view.business.ChangeShopInfoActivity;
@@ -30,6 +29,7 @@
import com.casic.dcms.view.map.CaseOnMapActivity;
import com.casic.dcms.view.pipeline.PipelineManagerActivity;
import com.casic.dcms.view.statistics.DataAnalysisActivity;
+import com.casic.dcms.view.streetlight.StreetlightManagerActivity;
import com.casic.dcms.view.toilet.PublicToiletActivity;
import com.casic.dcms.view.upload.BriefCaseActivity;
import com.casic.dcms.view.upload.BusinessCaseActivity;
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fd91f6c..d329792 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -123,7 +123,8 @@
-
+
+
diff --git a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
index bd5e484..97254a7 100644
--- a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
@@ -19,7 +19,6 @@
import com.casic.dcms.view.OvertimeCaseActivity;
import com.casic.dcms.view.PersonActivity;
import com.casic.dcms.view.SearchCaseActivity;
-import com.casic.dcms.view.StreetlightManagerActivity;
import com.casic.dcms.view.UrgentCaseActivity;
import com.casic.dcms.view.bridge.BridgeMaintainActivity;
import com.casic.dcms.view.business.ChangeShopInfoActivity;
@@ -30,6 +29,7 @@
import com.casic.dcms.view.map.CaseOnMapActivity;
import com.casic.dcms.view.pipeline.PipelineManagerActivity;
import com.casic.dcms.view.statistics.DataAnalysisActivity;
+import com.casic.dcms.view.streetlight.StreetlightManagerActivity;
import com.casic.dcms.view.toilet.PublicToiletActivity;
import com.casic.dcms.view.upload.BriefCaseActivity;
import com.casic.dcms.view.upload.BusinessCaseActivity;
diff --git a/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java b/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java
deleted file mode 100644
index a9cc331..0000000
--- a/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package com.casic.dcms.fragment;
-
-import android.graphics.Color;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.text.TextUtils;
-import android.view.View;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.cardview.widget.CardView;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.casic.dcms.R;
-import com.casic.dcms.adapter.NormalRecyclerAdapter;
-import com.casic.dcms.databinding.FragmentLightListBinding;
-import com.casic.dcms.model.ActionResultBean;
-import com.casic.dcms.model.LightDetailBean;
-import com.casic.dcms.model.LightListBean;
-import com.casic.dcms.vm.LightViewModel;
-import com.casic.dcms.widgets.LightDetailDialog;
-import com.pengxh.androidx.lite.adapter.ViewHolder;
-import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
-import com.pengxh.androidx.lite.divider.RecyclerViewItemDivider;
-import com.pengxh.androidx.lite.kit.IntKit;
-import com.pengxh.androidx.lite.kit.StringKit;
-import com.pengxh.androidx.lite.utils.LoadState;
-import com.pengxh.androidx.lite.utils.LoadingDialog;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
-import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class LightOnListFragment extends AndroidxBaseFragment implements Handler.Callback {
-
- private static final String TAG = "LightOnListFragment";
- private final WeakReferenceHandler weakReferenceHandler = new WeakReferenceHandler(this);
- private LightViewModel lightViewModel;
- private NormalRecyclerAdapter adapter;
- private List dataBeans = new ArrayList<>();
- private int pageIndex = 1;
- private boolean isRefresh, isLoadMore = false;
-
- @Override
- protected void setupTopBarLayout() {
-
- }
-
- @Override
- protected void initOnCreate(@Nullable Bundle savedInstanceState) {
- lightViewModel = new ViewModelProvider(this).get(LightViewModel.class);
- lightViewModel.getLightList(pageIndex);
- }
-
- @Override
- protected void observeRequestState() {
- lightViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- LoadingDialog.show(requireActivity(), "处理中,请稍后...");
- } else {
- LoadingDialog.dismiss();
- }
- }
- });
- }
-
- @Override
- protected void initEvent() {
- getBinding().refreshLayout.setOnRefreshListener(new OnRefreshListener() {
- @Override
- public void onRefresh(@NonNull final RefreshLayout refreshLayout) {
- isRefresh = true;
- //刷新之后页码重置
- pageIndex = 1;
- lightViewModel.getLightList(pageIndex);
- }
- });
- getBinding().refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
- @Override
- public void onLoadMore(@NonNull final RefreshLayout refreshLayout) {
- isLoadMore = true;
- pageIndex++;
- lightViewModel.getLightList(pageIndex);
- }
- });
-
- lightViewModel.lightListModel.observe(this, new Observer() {
- @Override
- public void onChanged(LightListBean resultBean) {
- if (resultBean.getCode() == 200) {
- List dataRows = resultBean.getData().getRows();
- if (isRefresh) {
- adapter.refresh(dataRows);
- getBinding().refreshLayout.finishRefresh();
- isRefresh = false;
- } else if (isLoadMore) {
- if (dataRows.size() == 0) {
- StringKit.show(requireContext(), "到底了,别拉了");
- }
- adapter.loadMore(dataRows);
- getBinding().refreshLayout.finishLoadMore();
- isLoadMore = false;
- } else {
- dataBeans = dataRows;
- weakReferenceHandler.sendEmptyMessage(20210623);
- }
- }
- }
- });
-
- lightViewModel.lightControlModel.observe(this, new Observer() {
- @Override
- public void onChanged(ActionResultBean resultBean) {
- if (resultBean.getCode() == 200) {
- //开灯指令发下去之后,虽然返回成功,但仅仅表示app发送指令到后台成功,但是开没开灯无法确定,所以,只能延迟几秒再刷新列表
- StringKit.show(requireContext(), "指令发送成功");
- weakReferenceHandler.sendEmptyMessageDelayed(20210624, 3000);
- }
- }
- });
-
- lightViewModel.lightDetailModel.observe(this, new Observer() {
- @Override
- public void onChanged(LightDetailBean resultBean) {
- new LightDetailDialog.Builder().setContext(requireContext()).setLightDetailBean(resultBean).build().show();
- }
- });
- }
-
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- if (msg.what == 20210623) {
- //首次加载数据
- if (dataBeans.size() == 0) {
- getBinding().emptyView.show("没有路灯数据", null);
- } else {
- getBinding().emptyView.hide();
- adapter = new NormalRecyclerAdapter(R.layout.item_light_recycleview, dataBeans) {
- @Override
- public void convertView(ViewHolder viewHolder, int position, LightListBean.DataBean.RowsBean item) {
- String statusName = item.getStatusName();
- viewHolder.setText(R.id.lightNameView, item.getLampName())
- .setText(R.id.lightStatusView, "已" + statusName);
-
- CardView statueTagView = viewHolder.getView(R.id.statueTagView);
- if (statusName.equals("灭灯")) {
- viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_off);
- statueTagView.setCardBackgroundColor(IntKit.convertColor(requireContext(), R.color.darkGray));
- } else if (statusName.equals("报警")) {
- viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_warning);
- statueTagView.setCardBackgroundColor(IntKit.convertColor(requireContext(), R.color.warnColor));
- } else {
- viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_on);
- statueTagView.setCardBackgroundColor(IntKit.convertColor(requireContext(), R.color.onLineColor));
- }
-
- viewHolder.setOnClickListener(R.id.lightSwitch, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- List lampIds = new ArrayList<>();
- lampIds.add(Long.parseLong(item.getLampId()));
-
- String statusName = item.getStatusName();
- String controlType;
- if (statusName.equals("灭灯")) {
- controlType = "1";
- } else {
- controlType = "0";
- }
- lightViewModel.controlLight(requireContext(), lampIds, controlType);
- }
- });
- }
- };
- getBinding().recyclerView.addItemDecoration(new RecyclerViewItemDivider(1, Color.LTGRAY));
- getBinding().recyclerView.setAdapter(adapter);
- adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() {
- @Override
- public void onItemClicked(int position, LightListBean.DataBean.RowsBean rowsBean) {
- String lampId = rowsBean.getLampId();
- if (TextUtils.isEmpty(lampId)) {
- StringKit.show(requireContext(), "错误,路灯编号为空");
- return;
- }
-
- lightViewModel.getLightDetail(requireContext(), lampId);
- }
- });
- }
- } else if (msg.what == 20210624) {
- isRefresh = true;
- pageIndex = 1;
- lightViewModel.getLightList(pageIndex);
- }
- return true;
- }
-}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fd91f6c..d329792 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -123,7 +123,8 @@
-
+
+
diff --git a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
index bd5e484..97254a7 100644
--- a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
@@ -19,7 +19,6 @@
import com.casic.dcms.view.OvertimeCaseActivity;
import com.casic.dcms.view.PersonActivity;
import com.casic.dcms.view.SearchCaseActivity;
-import com.casic.dcms.view.StreetlightManagerActivity;
import com.casic.dcms.view.UrgentCaseActivity;
import com.casic.dcms.view.bridge.BridgeMaintainActivity;
import com.casic.dcms.view.business.ChangeShopInfoActivity;
@@ -30,6 +29,7 @@
import com.casic.dcms.view.map.CaseOnMapActivity;
import com.casic.dcms.view.pipeline.PipelineManagerActivity;
import com.casic.dcms.view.statistics.DataAnalysisActivity;
+import com.casic.dcms.view.streetlight.StreetlightManagerActivity;
import com.casic.dcms.view.toilet.PublicToiletActivity;
import com.casic.dcms.view.upload.BriefCaseActivity;
import com.casic.dcms.view.upload.BusinessCaseActivity;
diff --git a/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java b/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java
deleted file mode 100644
index a9cc331..0000000
--- a/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package com.casic.dcms.fragment;
-
-import android.graphics.Color;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.text.TextUtils;
-import android.view.View;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.cardview.widget.CardView;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.casic.dcms.R;
-import com.casic.dcms.adapter.NormalRecyclerAdapter;
-import com.casic.dcms.databinding.FragmentLightListBinding;
-import com.casic.dcms.model.ActionResultBean;
-import com.casic.dcms.model.LightDetailBean;
-import com.casic.dcms.model.LightListBean;
-import com.casic.dcms.vm.LightViewModel;
-import com.casic.dcms.widgets.LightDetailDialog;
-import com.pengxh.androidx.lite.adapter.ViewHolder;
-import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
-import com.pengxh.androidx.lite.divider.RecyclerViewItemDivider;
-import com.pengxh.androidx.lite.kit.IntKit;
-import com.pengxh.androidx.lite.kit.StringKit;
-import com.pengxh.androidx.lite.utils.LoadState;
-import com.pengxh.androidx.lite.utils.LoadingDialog;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
-import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class LightOnListFragment extends AndroidxBaseFragment implements Handler.Callback {
-
- private static final String TAG = "LightOnListFragment";
- private final WeakReferenceHandler weakReferenceHandler = new WeakReferenceHandler(this);
- private LightViewModel lightViewModel;
- private NormalRecyclerAdapter adapter;
- private List dataBeans = new ArrayList<>();
- private int pageIndex = 1;
- private boolean isRefresh, isLoadMore = false;
-
- @Override
- protected void setupTopBarLayout() {
-
- }
-
- @Override
- protected void initOnCreate(@Nullable Bundle savedInstanceState) {
- lightViewModel = new ViewModelProvider(this).get(LightViewModel.class);
- lightViewModel.getLightList(pageIndex);
- }
-
- @Override
- protected void observeRequestState() {
- lightViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- LoadingDialog.show(requireActivity(), "处理中,请稍后...");
- } else {
- LoadingDialog.dismiss();
- }
- }
- });
- }
-
- @Override
- protected void initEvent() {
- getBinding().refreshLayout.setOnRefreshListener(new OnRefreshListener() {
- @Override
- public void onRefresh(@NonNull final RefreshLayout refreshLayout) {
- isRefresh = true;
- //刷新之后页码重置
- pageIndex = 1;
- lightViewModel.getLightList(pageIndex);
- }
- });
- getBinding().refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
- @Override
- public void onLoadMore(@NonNull final RefreshLayout refreshLayout) {
- isLoadMore = true;
- pageIndex++;
- lightViewModel.getLightList(pageIndex);
- }
- });
-
- lightViewModel.lightListModel.observe(this, new Observer() {
- @Override
- public void onChanged(LightListBean resultBean) {
- if (resultBean.getCode() == 200) {
- List dataRows = resultBean.getData().getRows();
- if (isRefresh) {
- adapter.refresh(dataRows);
- getBinding().refreshLayout.finishRefresh();
- isRefresh = false;
- } else if (isLoadMore) {
- if (dataRows.size() == 0) {
- StringKit.show(requireContext(), "到底了,别拉了");
- }
- adapter.loadMore(dataRows);
- getBinding().refreshLayout.finishLoadMore();
- isLoadMore = false;
- } else {
- dataBeans = dataRows;
- weakReferenceHandler.sendEmptyMessage(20210623);
- }
- }
- }
- });
-
- lightViewModel.lightControlModel.observe(this, new Observer() {
- @Override
- public void onChanged(ActionResultBean resultBean) {
- if (resultBean.getCode() == 200) {
- //开灯指令发下去之后,虽然返回成功,但仅仅表示app发送指令到后台成功,但是开没开灯无法确定,所以,只能延迟几秒再刷新列表
- StringKit.show(requireContext(), "指令发送成功");
- weakReferenceHandler.sendEmptyMessageDelayed(20210624, 3000);
- }
- }
- });
-
- lightViewModel.lightDetailModel.observe(this, new Observer() {
- @Override
- public void onChanged(LightDetailBean resultBean) {
- new LightDetailDialog.Builder().setContext(requireContext()).setLightDetailBean(resultBean).build().show();
- }
- });
- }
-
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- if (msg.what == 20210623) {
- //首次加载数据
- if (dataBeans.size() == 0) {
- getBinding().emptyView.show("没有路灯数据", null);
- } else {
- getBinding().emptyView.hide();
- adapter = new NormalRecyclerAdapter(R.layout.item_light_recycleview, dataBeans) {
- @Override
- public void convertView(ViewHolder viewHolder, int position, LightListBean.DataBean.RowsBean item) {
- String statusName = item.getStatusName();
- viewHolder.setText(R.id.lightNameView, item.getLampName())
- .setText(R.id.lightStatusView, "已" + statusName);
-
- CardView statueTagView = viewHolder.getView(R.id.statueTagView);
- if (statusName.equals("灭灯")) {
- viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_off);
- statueTagView.setCardBackgroundColor(IntKit.convertColor(requireContext(), R.color.darkGray));
- } else if (statusName.equals("报警")) {
- viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_warning);
- statueTagView.setCardBackgroundColor(IntKit.convertColor(requireContext(), R.color.warnColor));
- } else {
- viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_on);
- statueTagView.setCardBackgroundColor(IntKit.convertColor(requireContext(), R.color.onLineColor));
- }
-
- viewHolder.setOnClickListener(R.id.lightSwitch, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- List lampIds = new ArrayList<>();
- lampIds.add(Long.parseLong(item.getLampId()));
-
- String statusName = item.getStatusName();
- String controlType;
- if (statusName.equals("灭灯")) {
- controlType = "1";
- } else {
- controlType = "0";
- }
- lightViewModel.controlLight(requireContext(), lampIds, controlType);
- }
- });
- }
- };
- getBinding().recyclerView.addItemDecoration(new RecyclerViewItemDivider(1, Color.LTGRAY));
- getBinding().recyclerView.setAdapter(adapter);
- adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() {
- @Override
- public void onItemClicked(int position, LightListBean.DataBean.RowsBean rowsBean) {
- String lampId = rowsBean.getLampId();
- if (TextUtils.isEmpty(lampId)) {
- StringKit.show(requireContext(), "错误,路灯编号为空");
- return;
- }
-
- lightViewModel.getLightDetail(requireContext(), lampId);
- }
- });
- }
- } else if (msg.what == 20210624) {
- isRefresh = true;
- pageIndex = 1;
- lightViewModel.getLightList(pageIndex);
- }
- return true;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/fragment/LightOnMapFragment.java b/app/src/main/java/com/casic/dcms/fragment/LightOnMapFragment.java
deleted file mode 100644
index db55ff0..0000000
--- a/app/src/main/java/com/casic/dcms/fragment/LightOnMapFragment.java
+++ /dev/null
@@ -1,441 +0,0 @@
-package com.casic.dcms.fragment;
-
-import android.annotation.SuppressLint;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.drawable.BitmapDrawable;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.amap.api.location.AMapLocation;
-import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
-import com.casic.dcms.bean.LightLocalBean;
-import com.casic.dcms.databinding.FragmentLightMapBinding;
-import com.casic.dcms.greendao.LightLocalBeanDao;
-import com.casic.dcms.model.ActionResultBean;
-import com.casic.dcms.model.LightMapBean;
-import com.casic.dcms.utils.ArcGisMapCreator;
-import com.casic.dcms.utils.AuthenticationHelper;
-import com.casic.dcms.utils.HttpRequestManager;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.LocationHelper;
-import com.casic.dcms.utils.callback.ILocationListener;
-import com.casic.dcms.vm.LightViewModel;
-import com.esri.arcgisruntime.concurrent.ListenableFuture;
-import com.esri.arcgisruntime.geometry.Point;
-import com.esri.arcgisruntime.geometry.SpatialReferences;
-import com.esri.arcgisruntime.mapping.ArcGISMap;
-import com.esri.arcgisruntime.mapping.Basemap;
-import com.esri.arcgisruntime.mapping.BasemapStyle;
-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.symbology.PictureMarkerSymbol;
-import com.esri.arcgisruntime.util.ListenableList;
-import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
-import com.pengxh.androidx.lite.kit.StringKit;
-import com.pengxh.androidx.lite.utils.LoadState;
-import com.pengxh.androidx.lite.utils.LoadingDialog;
-import com.pengxh.androidx.lite.utils.SaveKeyValues;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
-import com.qmuiteam.qmui.widget.popup.QMUIPopup;
-import com.qmuiteam.qmui.widget.popup.QMUIPopups;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-
-public class LightOnMapFragment extends AndroidxBaseFragment implements Handler.Callback {
-
- private static final String TAG = "LightOnMapFragment";
- private final WeakReferenceHandler weakReferenceHandler = new WeakReferenceHandler(this);
- private LightViewModel lightViewModel;
- private ListenableList graphicsOverlays;
- private ListenableList graphics;
- private double DELTA_L = LocaleConstant.DELTA_LNG_75;
- private LightLocalBeanDao lightLocalBeanDao;
-
- @Override
- protected void setupTopBarLayout() {
-
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initOnCreate(@Nullable Bundle savedInstanceState) {
- lightLocalBeanDao = BaseApplication.getDaoSession().getLightLocalBeanDao();
-
- lightViewModel = new ViewModelProvider(this).get(LightViewModel.class);
- lightViewModel.getLightOnMap(requireContext());
- lightViewModel.lightMapModel.observe(this, new Observer() {
- @Override
- public void onChanged(LightMapBean resultBean) {
- if (resultBean.getCode() == 200) {
- for (LightMapBean.DataBean dataBean : resultBean.getData()) {
- LightLocalBean bean = new LightLocalBean();
- bean.setControllerCode(dataBean.getControllerCode());
- bean.setLampCode(dataBean.getLampCode());
- String lampId = dataBean.getLampId();
- bean.setLampId(lampId);
- bean.setLatitude(dataBean.getLatitude());
- bean.setDeptId(dataBean.getDeptId());
- bean.setStatusName(dataBean.getStatusName());
- bean.setLampName(dataBean.getLampName());
- bean.setLatestTime(dataBean.getLatestTime());
- bean.setLongitude(dataBean.getLongitude());
- bean.setStatus(dataBean.getStatus());
-
- LightLocalBean uniqueBean = lightLocalBeanDao.queryBuilder().where(LightLocalBeanDao.Properties.LampId.eq(lampId)).unique();
- if (uniqueBean == null) {
- lightLocalBeanDao.insert(bean);
- } else {
- lightLocalBeanDao.update(bean);
- }
- }
- }
- }
- });
-
- lightViewModel.lightControlModel.observe(this, new Observer() {
- @Override
- public void onChanged(ActionResultBean resultBean) {
- if (resultBean.getCode() == 200) {
- //开灯指令发下去之后,虽然返回成功,但仅仅表示app发送指令到后台成功,但是开没开灯无法确定,所以,只能延迟几秒再刷新列表
- StringKit.show(requireContext(), "指令发送成功");
- weakReferenceHandler.sendEmptyMessageDelayed(20210624, 3000);
- }
- }
- });
- lightViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- LoadingDialog.show(requireActivity(), "处理中,请稍后...");
- } else {
- LoadingDialog.dismiss();
- }
- }
- });
-
- getBinding().mapView.setAttributionTextVisible(false);//去掉左下角属性标识
- ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS);
- //创建底图、并设置底图图层
- Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer());
- arcGISMap.setBasemap(basemap);
- Point point = new Point(LocaleConstant.DEFAULT_LNG, LocaleConstant.DEFAULT_LAT, SpatialReferences.getWgs84());
- getBinding().mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示
- getBinding().mapView.setMap(arcGISMap);
-
- //Marker相关Layer
- graphicsOverlays = getBinding().mapView.getGraphicsOverlays();
- //显示定位点附近路灯
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- getBinding().mapView.setViewpointCenterAsync(point, 2800);
-
- List streetLightBeans = lightLocalBeanDao.loadAll();
- List pointList = new ArrayList<>();
- for (LightLocalBean bean : streetLightBeans) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= LocaleConstant.DELTA_LNG_75 && Math.abs(latitude - gcjToWgs[1]) <= LocaleConstant.DELTA_LAT_75) {
- pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
-// if (Math.abs(longitude - Constant.DEFAULT_LNG) <= Constant.DELTA_LNG_75 &&
-// Math.abs(latitude - Constant.DEFAULT_LAT) <= Constant.DELTA_LAT_75) {
-// pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
-// }
- }
- addPictureMarker(pointList);
- }
- }
- }, true);
- }
-
- @SuppressLint("ClickableViewAccessibility")
- @Override
- protected void initEvent() {
- getBinding().expandMapView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- getBinding().mapView.setViewpointScaleAsync(getBinding().mapView.getMapScale() * 0.5);
- clearPictureMarker();
- //计算比例尺
- DELTA_L -= 0.0001;
- if (DELTA_L < 0) {
- DELTA_L = 0;
- }
-// List minusList = new ArrayList<>();
-// for (StreetLightLocalBean bean : lightBeans) {
-// double longitude = bean.getLongitude();
-// double latitude = bean.getLatitude();
-// if (Math.abs(longitude - Constant.DEFAULT_LNG) > DELTA_L ||
-// Math.abs(latitude - Constant.DEFAULT_LAT) > DELTA_L) {
-// continue;
-// }
-// minusList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
-// }
-// addPictureMarker(minusList);
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- List minusList = new ArrayList<>();
- for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= DELTA_L && Math.abs(latitude - gcjToWgs[1]) <= DELTA_L) {
- minusList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
- }
- addPictureMarker(minusList);
- }
- }
- }, true);
- }
- });
-
- getBinding().minusMapView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- getBinding().mapView.setViewpointScaleAsync(getBinding().mapView.getMapScale() * 2);
- clearPictureMarker();
- //计算比例尺
- DELTA_L += 0.0001;
- if (DELTA_L > 0.01) {
- DELTA_L = LocaleConstant.DELTA_LNG_75;
- }
-// List expandList = new ArrayList<>();
-// for (StreetLightLocalBean bean : lightBeans) {
-// double longitude = bean.getLongitude();
-// double latitude = bean.getLatitude();
-// if (Math.abs(longitude - Constant.DEFAULT_LNG) > DELTA_L ||
-// Math.abs(latitude - Constant.DEFAULT_LAT) > DELTA_L) {
-// continue;
-// }
-// expandList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
-// }
-// addPictureMarker(expandList);
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- List expandList = new ArrayList<>();
- for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= DELTA_L && Math.abs(latitude - gcjToWgs[1]) <= DELTA_L) {
- expandList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
- }
- addPictureMarker(expandList);
- }
- }
- }, true);
- }
- });
-
- getBinding().removeToLocalView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- clearPictureMarker();
- LoadingDialog.show(requireActivity(), "定位中,请稍后");
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- List pointList = new ArrayList<>();
- for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= LocaleConstant.DELTA_LNG_75 && Math.abs(latitude - gcjToWgs[1]) <= LocaleConstant.DELTA_LAT_75) {
- pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
- }
- addPictureMarker(pointList);
- getBinding().mapView.setViewpointCenterAsync(point, 3000);
- LoadingDialog.dismiss();
- }
- }
- }, true);
- }
- });
-
- getBinding().mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(requireContext(), getBinding().mapView) {
- @Override
- public boolean onSingleTapConfirmed(MotionEvent e) {
- List lightBeans = lightLocalBeanDao.loadAll();
- android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY()));
- 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 (LightLocalBean dataBean : lightBeans) {
- if (Math.abs(dataBean.getLongitude() - point.getX()) <= LocaleConstant.DELTA_LNG_10 && Math.abs(dataBean.getLatitude() - point.getY()) <= LocaleConstant.DELTA_LAT_10) {
- Message message = weakReferenceHandler.obtainMessage();
- message.what = 2021062401;
- message.obj = dataBean.getLampId();
- weakReferenceHandler.sendMessage(message);
- }
- }
- } else {
- weakReferenceHandler.sendEmptyMessage(2021062402);
- }
- } catch (InterruptedException | ExecutionException e) {
- e.printStackTrace();
- }
- }
- });
- return super.onSingleTapConfirmed(e);
- }
- });
- }
-
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- switch (msg.what) {
- case 2021062401:
- String lampId = (String) msg.obj;
-
- View popupView = LayoutInflater.from(requireContext()).inflate(R.layout.popu_street_light, null);
- TextView lightStateView = popupView.findViewById(R.id.lightStateView);
- TextView lightAddressView = popupView.findViewById(R.id.lightAddressView);
- TextView lightStreetView = popupView.findViewById(R.id.lightStreetView);
- TextView lightElecView = popupView.findViewById(R.id.lightElecView);
- TextView lightVolView = popupView.findViewById(R.id.lightVolView);
- TextView lightTimeView = popupView.findViewById(R.id.lightTimeView);
- ImageView lightSwitch = popupView.findViewById(R.id.lightSwitch);
-
- LoadingDialog.show(requireActivity(), "路灯详情获取中,请稍后...");
- String ip = (String) SaveKeyValues.getValue(LocaleConstant.IP_KEY, "http://111.198.10.15:11409");
- new HttpRequestManager.Builder()
- .setAuthentication("token", AuthenticationHelper.getToken())
- .setRequestTarget(ip + LocaleConstant.LIGHT_DETAIL + lampId)
- .setOnHttpRequestListener(new HttpRequestManager.OnHttpRequestListener() {
- @Override
- public void onSuccess(String result) {
- LoadingDialog.dismiss();
- try {
- JSONObject jsonObject = new JSONObject(result);
- int code = jsonObject.getInt("code");
- if (code == 200) {
- JSONObject dataObject = jsonObject.getJSONObject("data");
-
- String statusName = dataObject.getString("statusName");
- lightStateView.setText(statusName);
- lightAddressView.setText(dataObject.getString("address"));
- lightStreetView.setText(dataObject.getString("streetName"));
- lightElecView.setText(String.valueOf(dataObject.getDouble("latestElec")));
- lightVolView.setText(String.valueOf(dataObject.getDouble("latestVol")));
- lightTimeView.setText(dataObject.getString("latestTime"));
-
- QMUIPopups.popup(requireContext(), QMUIDisplayHelper.dp2px(requireContext(), 280)).preferredDirection(QMUIPopup.DIRECTION_BOTTOM).view(popupView).edgeProtection(QMUIDisplayHelper.dp2px(requireContext(), 20)).dimAmount(0.6f).animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER).onDismiss(null).show(getBinding().mapView);
-
- lightSwitch.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- List lampIds = new ArrayList<>();
- lampIds.add(Long.parseLong(lampId));
-
- String controlType;
- if (statusName.equals("离线")) {
- controlType = "1";
- } else {
- controlType = "0";
- }
- lightViewModel.controlLight(requireContext(), lampIds, controlType);
- }
- });
- } else {
- StringKit.show(requireContext(), "服务器异常,请重新选点");
- }
- } catch (JSONException e) {
- StringKit.show(requireContext(), "解析失败,请重新选点");
- }
- }
-
- @Override
- public void onFailure(Throwable throwable) {
- LoadingDialog.dismiss();
- StringKit.show(requireContext(), "网络连接失败,请重新选点");
- }
- }).build().start();
- break;
- case 2021062402:
- StringKit.show(requireContext(), "此附近无路灯,请重新选点");
- break;
- default:
- break;
- }
- return true;
- }
-
- private void addPictureMarker(List points) {
- for (Point point : points) {
- Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify);
- BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap);
- PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable);
- pictureMarker.setWidth(24);
- pictureMarker.setHeight(24);
- pictureMarker.loadAsync();
-
- GraphicsOverlay graphicsOverlay = new GraphicsOverlay();
- graphics = graphicsOverlay.getGraphics();
- graphics.add(new Graphic(point, pictureMarker));
- graphicsOverlays.add(graphicsOverlay);
- }
- }
-
- private void clearPictureMarker() {
- if (graphics != null && graphicsOverlays != null) {
- graphics.clear();
- graphicsOverlays.clear();
- }
- }
-
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- getBinding().mapView.dispose();
- }
-}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fd91f6c..d329792 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -123,7 +123,8 @@
-
+
+
diff --git a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
index bd5e484..97254a7 100644
--- a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
@@ -19,7 +19,6 @@
import com.casic.dcms.view.OvertimeCaseActivity;
import com.casic.dcms.view.PersonActivity;
import com.casic.dcms.view.SearchCaseActivity;
-import com.casic.dcms.view.StreetlightManagerActivity;
import com.casic.dcms.view.UrgentCaseActivity;
import com.casic.dcms.view.bridge.BridgeMaintainActivity;
import com.casic.dcms.view.business.ChangeShopInfoActivity;
@@ -30,6 +29,7 @@
import com.casic.dcms.view.map.CaseOnMapActivity;
import com.casic.dcms.view.pipeline.PipelineManagerActivity;
import com.casic.dcms.view.statistics.DataAnalysisActivity;
+import com.casic.dcms.view.streetlight.StreetlightManagerActivity;
import com.casic.dcms.view.toilet.PublicToiletActivity;
import com.casic.dcms.view.upload.BriefCaseActivity;
import com.casic.dcms.view.upload.BusinessCaseActivity;
diff --git a/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java b/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java
deleted file mode 100644
index a9cc331..0000000
--- a/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package com.casic.dcms.fragment;
-
-import android.graphics.Color;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.text.TextUtils;
-import android.view.View;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.cardview.widget.CardView;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.casic.dcms.R;
-import com.casic.dcms.adapter.NormalRecyclerAdapter;
-import com.casic.dcms.databinding.FragmentLightListBinding;
-import com.casic.dcms.model.ActionResultBean;
-import com.casic.dcms.model.LightDetailBean;
-import com.casic.dcms.model.LightListBean;
-import com.casic.dcms.vm.LightViewModel;
-import com.casic.dcms.widgets.LightDetailDialog;
-import com.pengxh.androidx.lite.adapter.ViewHolder;
-import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
-import com.pengxh.androidx.lite.divider.RecyclerViewItemDivider;
-import com.pengxh.androidx.lite.kit.IntKit;
-import com.pengxh.androidx.lite.kit.StringKit;
-import com.pengxh.androidx.lite.utils.LoadState;
-import com.pengxh.androidx.lite.utils.LoadingDialog;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
-import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class LightOnListFragment extends AndroidxBaseFragment implements Handler.Callback {
-
- private static final String TAG = "LightOnListFragment";
- private final WeakReferenceHandler weakReferenceHandler = new WeakReferenceHandler(this);
- private LightViewModel lightViewModel;
- private NormalRecyclerAdapter adapter;
- private List dataBeans = new ArrayList<>();
- private int pageIndex = 1;
- private boolean isRefresh, isLoadMore = false;
-
- @Override
- protected void setupTopBarLayout() {
-
- }
-
- @Override
- protected void initOnCreate(@Nullable Bundle savedInstanceState) {
- lightViewModel = new ViewModelProvider(this).get(LightViewModel.class);
- lightViewModel.getLightList(pageIndex);
- }
-
- @Override
- protected void observeRequestState() {
- lightViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- LoadingDialog.show(requireActivity(), "处理中,请稍后...");
- } else {
- LoadingDialog.dismiss();
- }
- }
- });
- }
-
- @Override
- protected void initEvent() {
- getBinding().refreshLayout.setOnRefreshListener(new OnRefreshListener() {
- @Override
- public void onRefresh(@NonNull final RefreshLayout refreshLayout) {
- isRefresh = true;
- //刷新之后页码重置
- pageIndex = 1;
- lightViewModel.getLightList(pageIndex);
- }
- });
- getBinding().refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
- @Override
- public void onLoadMore(@NonNull final RefreshLayout refreshLayout) {
- isLoadMore = true;
- pageIndex++;
- lightViewModel.getLightList(pageIndex);
- }
- });
-
- lightViewModel.lightListModel.observe(this, new Observer() {
- @Override
- public void onChanged(LightListBean resultBean) {
- if (resultBean.getCode() == 200) {
- List dataRows = resultBean.getData().getRows();
- if (isRefresh) {
- adapter.refresh(dataRows);
- getBinding().refreshLayout.finishRefresh();
- isRefresh = false;
- } else if (isLoadMore) {
- if (dataRows.size() == 0) {
- StringKit.show(requireContext(), "到底了,别拉了");
- }
- adapter.loadMore(dataRows);
- getBinding().refreshLayout.finishLoadMore();
- isLoadMore = false;
- } else {
- dataBeans = dataRows;
- weakReferenceHandler.sendEmptyMessage(20210623);
- }
- }
- }
- });
-
- lightViewModel.lightControlModel.observe(this, new Observer() {
- @Override
- public void onChanged(ActionResultBean resultBean) {
- if (resultBean.getCode() == 200) {
- //开灯指令发下去之后,虽然返回成功,但仅仅表示app发送指令到后台成功,但是开没开灯无法确定,所以,只能延迟几秒再刷新列表
- StringKit.show(requireContext(), "指令发送成功");
- weakReferenceHandler.sendEmptyMessageDelayed(20210624, 3000);
- }
- }
- });
-
- lightViewModel.lightDetailModel.observe(this, new Observer() {
- @Override
- public void onChanged(LightDetailBean resultBean) {
- new LightDetailDialog.Builder().setContext(requireContext()).setLightDetailBean(resultBean).build().show();
- }
- });
- }
-
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- if (msg.what == 20210623) {
- //首次加载数据
- if (dataBeans.size() == 0) {
- getBinding().emptyView.show("没有路灯数据", null);
- } else {
- getBinding().emptyView.hide();
- adapter = new NormalRecyclerAdapter(R.layout.item_light_recycleview, dataBeans) {
- @Override
- public void convertView(ViewHolder viewHolder, int position, LightListBean.DataBean.RowsBean item) {
- String statusName = item.getStatusName();
- viewHolder.setText(R.id.lightNameView, item.getLampName())
- .setText(R.id.lightStatusView, "已" + statusName);
-
- CardView statueTagView = viewHolder.getView(R.id.statueTagView);
- if (statusName.equals("灭灯")) {
- viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_off);
- statueTagView.setCardBackgroundColor(IntKit.convertColor(requireContext(), R.color.darkGray));
- } else if (statusName.equals("报警")) {
- viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_warning);
- statueTagView.setCardBackgroundColor(IntKit.convertColor(requireContext(), R.color.warnColor));
- } else {
- viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_on);
- statueTagView.setCardBackgroundColor(IntKit.convertColor(requireContext(), R.color.onLineColor));
- }
-
- viewHolder.setOnClickListener(R.id.lightSwitch, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- List lampIds = new ArrayList<>();
- lampIds.add(Long.parseLong(item.getLampId()));
-
- String statusName = item.getStatusName();
- String controlType;
- if (statusName.equals("灭灯")) {
- controlType = "1";
- } else {
- controlType = "0";
- }
- lightViewModel.controlLight(requireContext(), lampIds, controlType);
- }
- });
- }
- };
- getBinding().recyclerView.addItemDecoration(new RecyclerViewItemDivider(1, Color.LTGRAY));
- getBinding().recyclerView.setAdapter(adapter);
- adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() {
- @Override
- public void onItemClicked(int position, LightListBean.DataBean.RowsBean rowsBean) {
- String lampId = rowsBean.getLampId();
- if (TextUtils.isEmpty(lampId)) {
- StringKit.show(requireContext(), "错误,路灯编号为空");
- return;
- }
-
- lightViewModel.getLightDetail(requireContext(), lampId);
- }
- });
- }
- } else if (msg.what == 20210624) {
- isRefresh = true;
- pageIndex = 1;
- lightViewModel.getLightList(pageIndex);
- }
- return true;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/fragment/LightOnMapFragment.java b/app/src/main/java/com/casic/dcms/fragment/LightOnMapFragment.java
deleted file mode 100644
index db55ff0..0000000
--- a/app/src/main/java/com/casic/dcms/fragment/LightOnMapFragment.java
+++ /dev/null
@@ -1,441 +0,0 @@
-package com.casic.dcms.fragment;
-
-import android.annotation.SuppressLint;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.drawable.BitmapDrawable;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.amap.api.location.AMapLocation;
-import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
-import com.casic.dcms.bean.LightLocalBean;
-import com.casic.dcms.databinding.FragmentLightMapBinding;
-import com.casic.dcms.greendao.LightLocalBeanDao;
-import com.casic.dcms.model.ActionResultBean;
-import com.casic.dcms.model.LightMapBean;
-import com.casic.dcms.utils.ArcGisMapCreator;
-import com.casic.dcms.utils.AuthenticationHelper;
-import com.casic.dcms.utils.HttpRequestManager;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.LocationHelper;
-import com.casic.dcms.utils.callback.ILocationListener;
-import com.casic.dcms.vm.LightViewModel;
-import com.esri.arcgisruntime.concurrent.ListenableFuture;
-import com.esri.arcgisruntime.geometry.Point;
-import com.esri.arcgisruntime.geometry.SpatialReferences;
-import com.esri.arcgisruntime.mapping.ArcGISMap;
-import com.esri.arcgisruntime.mapping.Basemap;
-import com.esri.arcgisruntime.mapping.BasemapStyle;
-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.symbology.PictureMarkerSymbol;
-import com.esri.arcgisruntime.util.ListenableList;
-import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
-import com.pengxh.androidx.lite.kit.StringKit;
-import com.pengxh.androidx.lite.utils.LoadState;
-import com.pengxh.androidx.lite.utils.LoadingDialog;
-import com.pengxh.androidx.lite.utils.SaveKeyValues;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
-import com.qmuiteam.qmui.widget.popup.QMUIPopup;
-import com.qmuiteam.qmui.widget.popup.QMUIPopups;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-
-public class LightOnMapFragment extends AndroidxBaseFragment implements Handler.Callback {
-
- private static final String TAG = "LightOnMapFragment";
- private final WeakReferenceHandler weakReferenceHandler = new WeakReferenceHandler(this);
- private LightViewModel lightViewModel;
- private ListenableList graphicsOverlays;
- private ListenableList graphics;
- private double DELTA_L = LocaleConstant.DELTA_LNG_75;
- private LightLocalBeanDao lightLocalBeanDao;
-
- @Override
- protected void setupTopBarLayout() {
-
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initOnCreate(@Nullable Bundle savedInstanceState) {
- lightLocalBeanDao = BaseApplication.getDaoSession().getLightLocalBeanDao();
-
- lightViewModel = new ViewModelProvider(this).get(LightViewModel.class);
- lightViewModel.getLightOnMap(requireContext());
- lightViewModel.lightMapModel.observe(this, new Observer() {
- @Override
- public void onChanged(LightMapBean resultBean) {
- if (resultBean.getCode() == 200) {
- for (LightMapBean.DataBean dataBean : resultBean.getData()) {
- LightLocalBean bean = new LightLocalBean();
- bean.setControllerCode(dataBean.getControllerCode());
- bean.setLampCode(dataBean.getLampCode());
- String lampId = dataBean.getLampId();
- bean.setLampId(lampId);
- bean.setLatitude(dataBean.getLatitude());
- bean.setDeptId(dataBean.getDeptId());
- bean.setStatusName(dataBean.getStatusName());
- bean.setLampName(dataBean.getLampName());
- bean.setLatestTime(dataBean.getLatestTime());
- bean.setLongitude(dataBean.getLongitude());
- bean.setStatus(dataBean.getStatus());
-
- LightLocalBean uniqueBean = lightLocalBeanDao.queryBuilder().where(LightLocalBeanDao.Properties.LampId.eq(lampId)).unique();
- if (uniqueBean == null) {
- lightLocalBeanDao.insert(bean);
- } else {
- lightLocalBeanDao.update(bean);
- }
- }
- }
- }
- });
-
- lightViewModel.lightControlModel.observe(this, new Observer() {
- @Override
- public void onChanged(ActionResultBean resultBean) {
- if (resultBean.getCode() == 200) {
- //开灯指令发下去之后,虽然返回成功,但仅仅表示app发送指令到后台成功,但是开没开灯无法确定,所以,只能延迟几秒再刷新列表
- StringKit.show(requireContext(), "指令发送成功");
- weakReferenceHandler.sendEmptyMessageDelayed(20210624, 3000);
- }
- }
- });
- lightViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- LoadingDialog.show(requireActivity(), "处理中,请稍后...");
- } else {
- LoadingDialog.dismiss();
- }
- }
- });
-
- getBinding().mapView.setAttributionTextVisible(false);//去掉左下角属性标识
- ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS);
- //创建底图、并设置底图图层
- Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer());
- arcGISMap.setBasemap(basemap);
- Point point = new Point(LocaleConstant.DEFAULT_LNG, LocaleConstant.DEFAULT_LAT, SpatialReferences.getWgs84());
- getBinding().mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示
- getBinding().mapView.setMap(arcGISMap);
-
- //Marker相关Layer
- graphicsOverlays = getBinding().mapView.getGraphicsOverlays();
- //显示定位点附近路灯
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- getBinding().mapView.setViewpointCenterAsync(point, 2800);
-
- List streetLightBeans = lightLocalBeanDao.loadAll();
- List pointList = new ArrayList<>();
- for (LightLocalBean bean : streetLightBeans) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= LocaleConstant.DELTA_LNG_75 && Math.abs(latitude - gcjToWgs[1]) <= LocaleConstant.DELTA_LAT_75) {
- pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
-// if (Math.abs(longitude - Constant.DEFAULT_LNG) <= Constant.DELTA_LNG_75 &&
-// Math.abs(latitude - Constant.DEFAULT_LAT) <= Constant.DELTA_LAT_75) {
-// pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
-// }
- }
- addPictureMarker(pointList);
- }
- }
- }, true);
- }
-
- @SuppressLint("ClickableViewAccessibility")
- @Override
- protected void initEvent() {
- getBinding().expandMapView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- getBinding().mapView.setViewpointScaleAsync(getBinding().mapView.getMapScale() * 0.5);
- clearPictureMarker();
- //计算比例尺
- DELTA_L -= 0.0001;
- if (DELTA_L < 0) {
- DELTA_L = 0;
- }
-// List minusList = new ArrayList<>();
-// for (StreetLightLocalBean bean : lightBeans) {
-// double longitude = bean.getLongitude();
-// double latitude = bean.getLatitude();
-// if (Math.abs(longitude - Constant.DEFAULT_LNG) > DELTA_L ||
-// Math.abs(latitude - Constant.DEFAULT_LAT) > DELTA_L) {
-// continue;
-// }
-// minusList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
-// }
-// addPictureMarker(minusList);
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- List minusList = new ArrayList<>();
- for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= DELTA_L && Math.abs(latitude - gcjToWgs[1]) <= DELTA_L) {
- minusList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
- }
- addPictureMarker(minusList);
- }
- }
- }, true);
- }
- });
-
- getBinding().minusMapView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- getBinding().mapView.setViewpointScaleAsync(getBinding().mapView.getMapScale() * 2);
- clearPictureMarker();
- //计算比例尺
- DELTA_L += 0.0001;
- if (DELTA_L > 0.01) {
- DELTA_L = LocaleConstant.DELTA_LNG_75;
- }
-// List expandList = new ArrayList<>();
-// for (StreetLightLocalBean bean : lightBeans) {
-// double longitude = bean.getLongitude();
-// double latitude = bean.getLatitude();
-// if (Math.abs(longitude - Constant.DEFAULT_LNG) > DELTA_L ||
-// Math.abs(latitude - Constant.DEFAULT_LAT) > DELTA_L) {
-// continue;
-// }
-// expandList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
-// }
-// addPictureMarker(expandList);
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- List expandList = new ArrayList<>();
- for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= DELTA_L && Math.abs(latitude - gcjToWgs[1]) <= DELTA_L) {
- expandList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
- }
- addPictureMarker(expandList);
- }
- }
- }, true);
- }
- });
-
- getBinding().removeToLocalView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- clearPictureMarker();
- LoadingDialog.show(requireActivity(), "定位中,请稍后");
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- List pointList = new ArrayList<>();
- for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= LocaleConstant.DELTA_LNG_75 && Math.abs(latitude - gcjToWgs[1]) <= LocaleConstant.DELTA_LAT_75) {
- pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
- }
- addPictureMarker(pointList);
- getBinding().mapView.setViewpointCenterAsync(point, 3000);
- LoadingDialog.dismiss();
- }
- }
- }, true);
- }
- });
-
- getBinding().mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(requireContext(), getBinding().mapView) {
- @Override
- public boolean onSingleTapConfirmed(MotionEvent e) {
- List lightBeans = lightLocalBeanDao.loadAll();
- android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY()));
- 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 (LightLocalBean dataBean : lightBeans) {
- if (Math.abs(dataBean.getLongitude() - point.getX()) <= LocaleConstant.DELTA_LNG_10 && Math.abs(dataBean.getLatitude() - point.getY()) <= LocaleConstant.DELTA_LAT_10) {
- Message message = weakReferenceHandler.obtainMessage();
- message.what = 2021062401;
- message.obj = dataBean.getLampId();
- weakReferenceHandler.sendMessage(message);
- }
- }
- } else {
- weakReferenceHandler.sendEmptyMessage(2021062402);
- }
- } catch (InterruptedException | ExecutionException e) {
- e.printStackTrace();
- }
- }
- });
- return super.onSingleTapConfirmed(e);
- }
- });
- }
-
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- switch (msg.what) {
- case 2021062401:
- String lampId = (String) msg.obj;
-
- View popupView = LayoutInflater.from(requireContext()).inflate(R.layout.popu_street_light, null);
- TextView lightStateView = popupView.findViewById(R.id.lightStateView);
- TextView lightAddressView = popupView.findViewById(R.id.lightAddressView);
- TextView lightStreetView = popupView.findViewById(R.id.lightStreetView);
- TextView lightElecView = popupView.findViewById(R.id.lightElecView);
- TextView lightVolView = popupView.findViewById(R.id.lightVolView);
- TextView lightTimeView = popupView.findViewById(R.id.lightTimeView);
- ImageView lightSwitch = popupView.findViewById(R.id.lightSwitch);
-
- LoadingDialog.show(requireActivity(), "路灯详情获取中,请稍后...");
- String ip = (String) SaveKeyValues.getValue(LocaleConstant.IP_KEY, "http://111.198.10.15:11409");
- new HttpRequestManager.Builder()
- .setAuthentication("token", AuthenticationHelper.getToken())
- .setRequestTarget(ip + LocaleConstant.LIGHT_DETAIL + lampId)
- .setOnHttpRequestListener(new HttpRequestManager.OnHttpRequestListener() {
- @Override
- public void onSuccess(String result) {
- LoadingDialog.dismiss();
- try {
- JSONObject jsonObject = new JSONObject(result);
- int code = jsonObject.getInt("code");
- if (code == 200) {
- JSONObject dataObject = jsonObject.getJSONObject("data");
-
- String statusName = dataObject.getString("statusName");
- lightStateView.setText(statusName);
- lightAddressView.setText(dataObject.getString("address"));
- lightStreetView.setText(dataObject.getString("streetName"));
- lightElecView.setText(String.valueOf(dataObject.getDouble("latestElec")));
- lightVolView.setText(String.valueOf(dataObject.getDouble("latestVol")));
- lightTimeView.setText(dataObject.getString("latestTime"));
-
- QMUIPopups.popup(requireContext(), QMUIDisplayHelper.dp2px(requireContext(), 280)).preferredDirection(QMUIPopup.DIRECTION_BOTTOM).view(popupView).edgeProtection(QMUIDisplayHelper.dp2px(requireContext(), 20)).dimAmount(0.6f).animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER).onDismiss(null).show(getBinding().mapView);
-
- lightSwitch.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- List lampIds = new ArrayList<>();
- lampIds.add(Long.parseLong(lampId));
-
- String controlType;
- if (statusName.equals("离线")) {
- controlType = "1";
- } else {
- controlType = "0";
- }
- lightViewModel.controlLight(requireContext(), lampIds, controlType);
- }
- });
- } else {
- StringKit.show(requireContext(), "服务器异常,请重新选点");
- }
- } catch (JSONException e) {
- StringKit.show(requireContext(), "解析失败,请重新选点");
- }
- }
-
- @Override
- public void onFailure(Throwable throwable) {
- LoadingDialog.dismiss();
- StringKit.show(requireContext(), "网络连接失败,请重新选点");
- }
- }).build().start();
- break;
- case 2021062402:
- StringKit.show(requireContext(), "此附近无路灯,请重新选点");
- break;
- default:
- break;
- }
- return true;
- }
-
- private void addPictureMarker(List points) {
- for (Point point : points) {
- Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify);
- BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap);
- PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable);
- pictureMarker.setWidth(24);
- pictureMarker.setHeight(24);
- pictureMarker.loadAsync();
-
- GraphicsOverlay graphicsOverlay = new GraphicsOverlay();
- graphics = graphicsOverlay.getGraphics();
- graphics.add(new Graphic(point, pictureMarker));
- graphicsOverlays.add(graphicsOverlay);
- }
- }
-
- private void clearPictureMarker() {
- if (graphics != null && graphicsOverlays != null) {
- graphics.clear();
- graphicsOverlays.clear();
- }
- }
-
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- getBinding().mapView.dispose();
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/view/StreetlightManagerActivity.java b/app/src/main/java/com/casic/dcms/view/StreetlightManagerActivity.java
deleted file mode 100644
index 6640fd3..0000000
--- a/app/src/main/java/com/casic/dcms/view/StreetlightManagerActivity.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.casic.dcms.view;
-
-import android.os.Bundle;
-import android.widget.LinearLayout;
-
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-
-import com.casic.dcms.R;
-import com.casic.dcms.adapter.SubViewPagerAdapter;
-import com.casic.dcms.databinding.ActivityStreetLightBinding;
-import com.casic.dcms.fragment.LightOnListFragment;
-import com.casic.dcms.fragment.LightOnMapFragment;
-import com.casic.dcms.utils.LinearLayoutHelper;
-import com.casic.dcms.utils.ViewGroupHub;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class StreetlightManagerActivity extends AndroidxBaseActivity {
-
- private final String[] pageTitles = new String[]{"路灯分布", "路灯列表"};
-
- @Override
- protected void setupTopBarLayout() {
- ViewGroupHub.initImmersionBar(binding.rootView, this, true, R.color.white);
-
- binding.titleBarLayout.titleView.setText("路灯管理");
- binding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initOnCreate(@Nullable Bundle savedInstanceState) {
- List fragmentList = new ArrayList<>();
- fragmentList.add(new LightOnMapFragment());
- fragmentList.add(new LightOnListFragment());
- SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList);
- binding.viewPager.setAdapter(adapter);
- //绑定TabLayout
- binding.tabLayout.setupWithViewPager(binding.viewPager);
- LinearLayout linearLayout = (LinearLayout) binding.tabLayout.getChildAt(0);
- LinearLayoutHelper.setDivider(this, linearLayout);
- }
-
- @Override
- protected void initEvent() {
-
- }
-}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fd91f6c..d329792 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -123,7 +123,8 @@
-
+
+
diff --git a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
index bd5e484..97254a7 100644
--- a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
@@ -19,7 +19,6 @@
import com.casic.dcms.view.OvertimeCaseActivity;
import com.casic.dcms.view.PersonActivity;
import com.casic.dcms.view.SearchCaseActivity;
-import com.casic.dcms.view.StreetlightManagerActivity;
import com.casic.dcms.view.UrgentCaseActivity;
import com.casic.dcms.view.bridge.BridgeMaintainActivity;
import com.casic.dcms.view.business.ChangeShopInfoActivity;
@@ -30,6 +29,7 @@
import com.casic.dcms.view.map.CaseOnMapActivity;
import com.casic.dcms.view.pipeline.PipelineManagerActivity;
import com.casic.dcms.view.statistics.DataAnalysisActivity;
+import com.casic.dcms.view.streetlight.StreetlightManagerActivity;
import com.casic.dcms.view.toilet.PublicToiletActivity;
import com.casic.dcms.view.upload.BriefCaseActivity;
import com.casic.dcms.view.upload.BusinessCaseActivity;
diff --git a/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java b/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java
deleted file mode 100644
index a9cc331..0000000
--- a/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package com.casic.dcms.fragment;
-
-import android.graphics.Color;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.text.TextUtils;
-import android.view.View;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.cardview.widget.CardView;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.casic.dcms.R;
-import com.casic.dcms.adapter.NormalRecyclerAdapter;
-import com.casic.dcms.databinding.FragmentLightListBinding;
-import com.casic.dcms.model.ActionResultBean;
-import com.casic.dcms.model.LightDetailBean;
-import com.casic.dcms.model.LightListBean;
-import com.casic.dcms.vm.LightViewModel;
-import com.casic.dcms.widgets.LightDetailDialog;
-import com.pengxh.androidx.lite.adapter.ViewHolder;
-import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
-import com.pengxh.androidx.lite.divider.RecyclerViewItemDivider;
-import com.pengxh.androidx.lite.kit.IntKit;
-import com.pengxh.androidx.lite.kit.StringKit;
-import com.pengxh.androidx.lite.utils.LoadState;
-import com.pengxh.androidx.lite.utils.LoadingDialog;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
-import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class LightOnListFragment extends AndroidxBaseFragment implements Handler.Callback {
-
- private static final String TAG = "LightOnListFragment";
- private final WeakReferenceHandler weakReferenceHandler = new WeakReferenceHandler(this);
- private LightViewModel lightViewModel;
- private NormalRecyclerAdapter adapter;
- private List dataBeans = new ArrayList<>();
- private int pageIndex = 1;
- private boolean isRefresh, isLoadMore = false;
-
- @Override
- protected void setupTopBarLayout() {
-
- }
-
- @Override
- protected void initOnCreate(@Nullable Bundle savedInstanceState) {
- lightViewModel = new ViewModelProvider(this).get(LightViewModel.class);
- lightViewModel.getLightList(pageIndex);
- }
-
- @Override
- protected void observeRequestState() {
- lightViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- LoadingDialog.show(requireActivity(), "处理中,请稍后...");
- } else {
- LoadingDialog.dismiss();
- }
- }
- });
- }
-
- @Override
- protected void initEvent() {
- getBinding().refreshLayout.setOnRefreshListener(new OnRefreshListener() {
- @Override
- public void onRefresh(@NonNull final RefreshLayout refreshLayout) {
- isRefresh = true;
- //刷新之后页码重置
- pageIndex = 1;
- lightViewModel.getLightList(pageIndex);
- }
- });
- getBinding().refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
- @Override
- public void onLoadMore(@NonNull final RefreshLayout refreshLayout) {
- isLoadMore = true;
- pageIndex++;
- lightViewModel.getLightList(pageIndex);
- }
- });
-
- lightViewModel.lightListModel.observe(this, new Observer() {
- @Override
- public void onChanged(LightListBean resultBean) {
- if (resultBean.getCode() == 200) {
- List dataRows = resultBean.getData().getRows();
- if (isRefresh) {
- adapter.refresh(dataRows);
- getBinding().refreshLayout.finishRefresh();
- isRefresh = false;
- } else if (isLoadMore) {
- if (dataRows.size() == 0) {
- StringKit.show(requireContext(), "到底了,别拉了");
- }
- adapter.loadMore(dataRows);
- getBinding().refreshLayout.finishLoadMore();
- isLoadMore = false;
- } else {
- dataBeans = dataRows;
- weakReferenceHandler.sendEmptyMessage(20210623);
- }
- }
- }
- });
-
- lightViewModel.lightControlModel.observe(this, new Observer() {
- @Override
- public void onChanged(ActionResultBean resultBean) {
- if (resultBean.getCode() == 200) {
- //开灯指令发下去之后,虽然返回成功,但仅仅表示app发送指令到后台成功,但是开没开灯无法确定,所以,只能延迟几秒再刷新列表
- StringKit.show(requireContext(), "指令发送成功");
- weakReferenceHandler.sendEmptyMessageDelayed(20210624, 3000);
- }
- }
- });
-
- lightViewModel.lightDetailModel.observe(this, new Observer() {
- @Override
- public void onChanged(LightDetailBean resultBean) {
- new LightDetailDialog.Builder().setContext(requireContext()).setLightDetailBean(resultBean).build().show();
- }
- });
- }
-
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- if (msg.what == 20210623) {
- //首次加载数据
- if (dataBeans.size() == 0) {
- getBinding().emptyView.show("没有路灯数据", null);
- } else {
- getBinding().emptyView.hide();
- adapter = new NormalRecyclerAdapter(R.layout.item_light_recycleview, dataBeans) {
- @Override
- public void convertView(ViewHolder viewHolder, int position, LightListBean.DataBean.RowsBean item) {
- String statusName = item.getStatusName();
- viewHolder.setText(R.id.lightNameView, item.getLampName())
- .setText(R.id.lightStatusView, "已" + statusName);
-
- CardView statueTagView = viewHolder.getView(R.id.statueTagView);
- if (statusName.equals("灭灯")) {
- viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_off);
- statueTagView.setCardBackgroundColor(IntKit.convertColor(requireContext(), R.color.darkGray));
- } else if (statusName.equals("报警")) {
- viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_warning);
- statueTagView.setCardBackgroundColor(IntKit.convertColor(requireContext(), R.color.warnColor));
- } else {
- viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_on);
- statueTagView.setCardBackgroundColor(IntKit.convertColor(requireContext(), R.color.onLineColor));
- }
-
- viewHolder.setOnClickListener(R.id.lightSwitch, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- List lampIds = new ArrayList<>();
- lampIds.add(Long.parseLong(item.getLampId()));
-
- String statusName = item.getStatusName();
- String controlType;
- if (statusName.equals("灭灯")) {
- controlType = "1";
- } else {
- controlType = "0";
- }
- lightViewModel.controlLight(requireContext(), lampIds, controlType);
- }
- });
- }
- };
- getBinding().recyclerView.addItemDecoration(new RecyclerViewItemDivider(1, Color.LTGRAY));
- getBinding().recyclerView.setAdapter(adapter);
- adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() {
- @Override
- public void onItemClicked(int position, LightListBean.DataBean.RowsBean rowsBean) {
- String lampId = rowsBean.getLampId();
- if (TextUtils.isEmpty(lampId)) {
- StringKit.show(requireContext(), "错误,路灯编号为空");
- return;
- }
-
- lightViewModel.getLightDetail(requireContext(), lampId);
- }
- });
- }
- } else if (msg.what == 20210624) {
- isRefresh = true;
- pageIndex = 1;
- lightViewModel.getLightList(pageIndex);
- }
- return true;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/fragment/LightOnMapFragment.java b/app/src/main/java/com/casic/dcms/fragment/LightOnMapFragment.java
deleted file mode 100644
index db55ff0..0000000
--- a/app/src/main/java/com/casic/dcms/fragment/LightOnMapFragment.java
+++ /dev/null
@@ -1,441 +0,0 @@
-package com.casic.dcms.fragment;
-
-import android.annotation.SuppressLint;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.drawable.BitmapDrawable;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.amap.api.location.AMapLocation;
-import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
-import com.casic.dcms.bean.LightLocalBean;
-import com.casic.dcms.databinding.FragmentLightMapBinding;
-import com.casic.dcms.greendao.LightLocalBeanDao;
-import com.casic.dcms.model.ActionResultBean;
-import com.casic.dcms.model.LightMapBean;
-import com.casic.dcms.utils.ArcGisMapCreator;
-import com.casic.dcms.utils.AuthenticationHelper;
-import com.casic.dcms.utils.HttpRequestManager;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.LocationHelper;
-import com.casic.dcms.utils.callback.ILocationListener;
-import com.casic.dcms.vm.LightViewModel;
-import com.esri.arcgisruntime.concurrent.ListenableFuture;
-import com.esri.arcgisruntime.geometry.Point;
-import com.esri.arcgisruntime.geometry.SpatialReferences;
-import com.esri.arcgisruntime.mapping.ArcGISMap;
-import com.esri.arcgisruntime.mapping.Basemap;
-import com.esri.arcgisruntime.mapping.BasemapStyle;
-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.symbology.PictureMarkerSymbol;
-import com.esri.arcgisruntime.util.ListenableList;
-import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
-import com.pengxh.androidx.lite.kit.StringKit;
-import com.pengxh.androidx.lite.utils.LoadState;
-import com.pengxh.androidx.lite.utils.LoadingDialog;
-import com.pengxh.androidx.lite.utils.SaveKeyValues;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
-import com.qmuiteam.qmui.widget.popup.QMUIPopup;
-import com.qmuiteam.qmui.widget.popup.QMUIPopups;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-
-public class LightOnMapFragment extends AndroidxBaseFragment implements Handler.Callback {
-
- private static final String TAG = "LightOnMapFragment";
- private final WeakReferenceHandler weakReferenceHandler = new WeakReferenceHandler(this);
- private LightViewModel lightViewModel;
- private ListenableList graphicsOverlays;
- private ListenableList graphics;
- private double DELTA_L = LocaleConstant.DELTA_LNG_75;
- private LightLocalBeanDao lightLocalBeanDao;
-
- @Override
- protected void setupTopBarLayout() {
-
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initOnCreate(@Nullable Bundle savedInstanceState) {
- lightLocalBeanDao = BaseApplication.getDaoSession().getLightLocalBeanDao();
-
- lightViewModel = new ViewModelProvider(this).get(LightViewModel.class);
- lightViewModel.getLightOnMap(requireContext());
- lightViewModel.lightMapModel.observe(this, new Observer() {
- @Override
- public void onChanged(LightMapBean resultBean) {
- if (resultBean.getCode() == 200) {
- for (LightMapBean.DataBean dataBean : resultBean.getData()) {
- LightLocalBean bean = new LightLocalBean();
- bean.setControllerCode(dataBean.getControllerCode());
- bean.setLampCode(dataBean.getLampCode());
- String lampId = dataBean.getLampId();
- bean.setLampId(lampId);
- bean.setLatitude(dataBean.getLatitude());
- bean.setDeptId(dataBean.getDeptId());
- bean.setStatusName(dataBean.getStatusName());
- bean.setLampName(dataBean.getLampName());
- bean.setLatestTime(dataBean.getLatestTime());
- bean.setLongitude(dataBean.getLongitude());
- bean.setStatus(dataBean.getStatus());
-
- LightLocalBean uniqueBean = lightLocalBeanDao.queryBuilder().where(LightLocalBeanDao.Properties.LampId.eq(lampId)).unique();
- if (uniqueBean == null) {
- lightLocalBeanDao.insert(bean);
- } else {
- lightLocalBeanDao.update(bean);
- }
- }
- }
- }
- });
-
- lightViewModel.lightControlModel.observe(this, new Observer() {
- @Override
- public void onChanged(ActionResultBean resultBean) {
- if (resultBean.getCode() == 200) {
- //开灯指令发下去之后,虽然返回成功,但仅仅表示app发送指令到后台成功,但是开没开灯无法确定,所以,只能延迟几秒再刷新列表
- StringKit.show(requireContext(), "指令发送成功");
- weakReferenceHandler.sendEmptyMessageDelayed(20210624, 3000);
- }
- }
- });
- lightViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- LoadingDialog.show(requireActivity(), "处理中,请稍后...");
- } else {
- LoadingDialog.dismiss();
- }
- }
- });
-
- getBinding().mapView.setAttributionTextVisible(false);//去掉左下角属性标识
- ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS);
- //创建底图、并设置底图图层
- Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer());
- arcGISMap.setBasemap(basemap);
- Point point = new Point(LocaleConstant.DEFAULT_LNG, LocaleConstant.DEFAULT_LAT, SpatialReferences.getWgs84());
- getBinding().mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示
- getBinding().mapView.setMap(arcGISMap);
-
- //Marker相关Layer
- graphicsOverlays = getBinding().mapView.getGraphicsOverlays();
- //显示定位点附近路灯
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- getBinding().mapView.setViewpointCenterAsync(point, 2800);
-
- List streetLightBeans = lightLocalBeanDao.loadAll();
- List pointList = new ArrayList<>();
- for (LightLocalBean bean : streetLightBeans) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= LocaleConstant.DELTA_LNG_75 && Math.abs(latitude - gcjToWgs[1]) <= LocaleConstant.DELTA_LAT_75) {
- pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
-// if (Math.abs(longitude - Constant.DEFAULT_LNG) <= Constant.DELTA_LNG_75 &&
-// Math.abs(latitude - Constant.DEFAULT_LAT) <= Constant.DELTA_LAT_75) {
-// pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
-// }
- }
- addPictureMarker(pointList);
- }
- }
- }, true);
- }
-
- @SuppressLint("ClickableViewAccessibility")
- @Override
- protected void initEvent() {
- getBinding().expandMapView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- getBinding().mapView.setViewpointScaleAsync(getBinding().mapView.getMapScale() * 0.5);
- clearPictureMarker();
- //计算比例尺
- DELTA_L -= 0.0001;
- if (DELTA_L < 0) {
- DELTA_L = 0;
- }
-// List minusList = new ArrayList<>();
-// for (StreetLightLocalBean bean : lightBeans) {
-// double longitude = bean.getLongitude();
-// double latitude = bean.getLatitude();
-// if (Math.abs(longitude - Constant.DEFAULT_LNG) > DELTA_L ||
-// Math.abs(latitude - Constant.DEFAULT_LAT) > DELTA_L) {
-// continue;
-// }
-// minusList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
-// }
-// addPictureMarker(minusList);
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- List minusList = new ArrayList<>();
- for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= DELTA_L && Math.abs(latitude - gcjToWgs[1]) <= DELTA_L) {
- minusList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
- }
- addPictureMarker(minusList);
- }
- }
- }, true);
- }
- });
-
- getBinding().minusMapView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- getBinding().mapView.setViewpointScaleAsync(getBinding().mapView.getMapScale() * 2);
- clearPictureMarker();
- //计算比例尺
- DELTA_L += 0.0001;
- if (DELTA_L > 0.01) {
- DELTA_L = LocaleConstant.DELTA_LNG_75;
- }
-// List expandList = new ArrayList<>();
-// for (StreetLightLocalBean bean : lightBeans) {
-// double longitude = bean.getLongitude();
-// double latitude = bean.getLatitude();
-// if (Math.abs(longitude - Constant.DEFAULT_LNG) > DELTA_L ||
-// Math.abs(latitude - Constant.DEFAULT_LAT) > DELTA_L) {
-// continue;
-// }
-// expandList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
-// }
-// addPictureMarker(expandList);
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- List expandList = new ArrayList<>();
- for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= DELTA_L && Math.abs(latitude - gcjToWgs[1]) <= DELTA_L) {
- expandList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
- }
- addPictureMarker(expandList);
- }
- }
- }, true);
- }
- });
-
- getBinding().removeToLocalView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- clearPictureMarker();
- LoadingDialog.show(requireActivity(), "定位中,请稍后");
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- List pointList = new ArrayList<>();
- for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= LocaleConstant.DELTA_LNG_75 && Math.abs(latitude - gcjToWgs[1]) <= LocaleConstant.DELTA_LAT_75) {
- pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
- }
- addPictureMarker(pointList);
- getBinding().mapView.setViewpointCenterAsync(point, 3000);
- LoadingDialog.dismiss();
- }
- }
- }, true);
- }
- });
-
- getBinding().mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(requireContext(), getBinding().mapView) {
- @Override
- public boolean onSingleTapConfirmed(MotionEvent e) {
- List lightBeans = lightLocalBeanDao.loadAll();
- android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY()));
- 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 (LightLocalBean dataBean : lightBeans) {
- if (Math.abs(dataBean.getLongitude() - point.getX()) <= LocaleConstant.DELTA_LNG_10 && Math.abs(dataBean.getLatitude() - point.getY()) <= LocaleConstant.DELTA_LAT_10) {
- Message message = weakReferenceHandler.obtainMessage();
- message.what = 2021062401;
- message.obj = dataBean.getLampId();
- weakReferenceHandler.sendMessage(message);
- }
- }
- } else {
- weakReferenceHandler.sendEmptyMessage(2021062402);
- }
- } catch (InterruptedException | ExecutionException e) {
- e.printStackTrace();
- }
- }
- });
- return super.onSingleTapConfirmed(e);
- }
- });
- }
-
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- switch (msg.what) {
- case 2021062401:
- String lampId = (String) msg.obj;
-
- View popupView = LayoutInflater.from(requireContext()).inflate(R.layout.popu_street_light, null);
- TextView lightStateView = popupView.findViewById(R.id.lightStateView);
- TextView lightAddressView = popupView.findViewById(R.id.lightAddressView);
- TextView lightStreetView = popupView.findViewById(R.id.lightStreetView);
- TextView lightElecView = popupView.findViewById(R.id.lightElecView);
- TextView lightVolView = popupView.findViewById(R.id.lightVolView);
- TextView lightTimeView = popupView.findViewById(R.id.lightTimeView);
- ImageView lightSwitch = popupView.findViewById(R.id.lightSwitch);
-
- LoadingDialog.show(requireActivity(), "路灯详情获取中,请稍后...");
- String ip = (String) SaveKeyValues.getValue(LocaleConstant.IP_KEY, "http://111.198.10.15:11409");
- new HttpRequestManager.Builder()
- .setAuthentication("token", AuthenticationHelper.getToken())
- .setRequestTarget(ip + LocaleConstant.LIGHT_DETAIL + lampId)
- .setOnHttpRequestListener(new HttpRequestManager.OnHttpRequestListener() {
- @Override
- public void onSuccess(String result) {
- LoadingDialog.dismiss();
- try {
- JSONObject jsonObject = new JSONObject(result);
- int code = jsonObject.getInt("code");
- if (code == 200) {
- JSONObject dataObject = jsonObject.getJSONObject("data");
-
- String statusName = dataObject.getString("statusName");
- lightStateView.setText(statusName);
- lightAddressView.setText(dataObject.getString("address"));
- lightStreetView.setText(dataObject.getString("streetName"));
- lightElecView.setText(String.valueOf(dataObject.getDouble("latestElec")));
- lightVolView.setText(String.valueOf(dataObject.getDouble("latestVol")));
- lightTimeView.setText(dataObject.getString("latestTime"));
-
- QMUIPopups.popup(requireContext(), QMUIDisplayHelper.dp2px(requireContext(), 280)).preferredDirection(QMUIPopup.DIRECTION_BOTTOM).view(popupView).edgeProtection(QMUIDisplayHelper.dp2px(requireContext(), 20)).dimAmount(0.6f).animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER).onDismiss(null).show(getBinding().mapView);
-
- lightSwitch.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- List lampIds = new ArrayList<>();
- lampIds.add(Long.parseLong(lampId));
-
- String controlType;
- if (statusName.equals("离线")) {
- controlType = "1";
- } else {
- controlType = "0";
- }
- lightViewModel.controlLight(requireContext(), lampIds, controlType);
- }
- });
- } else {
- StringKit.show(requireContext(), "服务器异常,请重新选点");
- }
- } catch (JSONException e) {
- StringKit.show(requireContext(), "解析失败,请重新选点");
- }
- }
-
- @Override
- public void onFailure(Throwable throwable) {
- LoadingDialog.dismiss();
- StringKit.show(requireContext(), "网络连接失败,请重新选点");
- }
- }).build().start();
- break;
- case 2021062402:
- StringKit.show(requireContext(), "此附近无路灯,请重新选点");
- break;
- default:
- break;
- }
- return true;
- }
-
- private void addPictureMarker(List points) {
- for (Point point : points) {
- Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify);
- BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap);
- PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable);
- pictureMarker.setWidth(24);
- pictureMarker.setHeight(24);
- pictureMarker.loadAsync();
-
- GraphicsOverlay graphicsOverlay = new GraphicsOverlay();
- graphics = graphicsOverlay.getGraphics();
- graphics.add(new Graphic(point, pictureMarker));
- graphicsOverlays.add(graphicsOverlay);
- }
- }
-
- private void clearPictureMarker() {
- if (graphics != null && graphicsOverlays != null) {
- graphics.clear();
- graphicsOverlays.clear();
- }
- }
-
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- getBinding().mapView.dispose();
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/view/StreetlightManagerActivity.java b/app/src/main/java/com/casic/dcms/view/StreetlightManagerActivity.java
deleted file mode 100644
index 6640fd3..0000000
--- a/app/src/main/java/com/casic/dcms/view/StreetlightManagerActivity.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.casic.dcms.view;
-
-import android.os.Bundle;
-import android.widget.LinearLayout;
-
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-
-import com.casic.dcms.R;
-import com.casic.dcms.adapter.SubViewPagerAdapter;
-import com.casic.dcms.databinding.ActivityStreetLightBinding;
-import com.casic.dcms.fragment.LightOnListFragment;
-import com.casic.dcms.fragment.LightOnMapFragment;
-import com.casic.dcms.utils.LinearLayoutHelper;
-import com.casic.dcms.utils.ViewGroupHub;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class StreetlightManagerActivity extends AndroidxBaseActivity {
-
- private final String[] pageTitles = new String[]{"路灯分布", "路灯列表"};
-
- @Override
- protected void setupTopBarLayout() {
- ViewGroupHub.initImmersionBar(binding.rootView, this, true, R.color.white);
-
- binding.titleBarLayout.titleView.setText("路灯管理");
- binding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initOnCreate(@Nullable Bundle savedInstanceState) {
- List fragmentList = new ArrayList<>();
- fragmentList.add(new LightOnMapFragment());
- fragmentList.add(new LightOnListFragment());
- SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList);
- binding.viewPager.setAdapter(adapter);
- //绑定TabLayout
- binding.tabLayout.setupWithViewPager(binding.viewPager);
- LinearLayout linearLayout = (LinearLayout) binding.tabLayout.getChildAt(0);
- LinearLayoutHelper.setDivider(this, linearLayout);
- }
-
- @Override
- protected void initEvent() {
-
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/view/streetlight/LightOnMapActivity.java b/app/src/main/java/com/casic/dcms/view/streetlight/LightOnMapActivity.java
new file mode 100644
index 0000000..c09dbc8
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/streetlight/LightOnMapActivity.java
@@ -0,0 +1,454 @@
+package com.casic.dcms.view.streetlight;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.BitmapDrawable;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.amap.api.location.AMapLocation;
+import com.casic.dcms.R;
+import com.casic.dcms.base.BaseApplication;
+import com.casic.dcms.bean.LightLocalBean;
+import com.casic.dcms.databinding.ActivityStreetLightMapBinding;
+import com.casic.dcms.greendao.LightLocalBeanDao;
+import com.casic.dcms.model.ActionResultBean;
+import com.casic.dcms.model.LightDetailBean;
+import com.casic.dcms.model.LightMapBean;
+import com.casic.dcms.utils.ArcGisMapCreator;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.LocationHelper;
+import com.casic.dcms.utils.ViewGroupHub;
+import com.casic.dcms.utils.callback.ILocationListener;
+import com.casic.dcms.vm.LightViewModel;
+import com.esri.arcgisruntime.concurrent.ListenableFuture;
+import com.esri.arcgisruntime.geometry.Point;
+import com.esri.arcgisruntime.geometry.SpatialReferences;
+import com.esri.arcgisruntime.mapping.ArcGISMap;
+import com.esri.arcgisruntime.mapping.Basemap;
+import com.esri.arcgisruntime.mapping.BasemapStyle;
+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.symbology.PictureMarkerSymbol;
+import com.esri.arcgisruntime.util.ListenableList;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.kit.StringKit;
+import com.pengxh.androidx.lite.utils.LoadState;
+import com.pengxh.androidx.lite.utils.LoadingDialog;
+import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
+import com.pengxh.androidx.lite.widget.TitleBarView;
+import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.qmuiteam.qmui.widget.popup.QMUIPopup;
+import com.qmuiteam.qmui.widget.popup.QMUIPopups;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+
+public class LightOnMapActivity extends AndroidxBaseActivity implements Handler.Callback {
+
+ private static final String TAG = "LightOnMapFragment";
+ private final Context context = this;
+ private final WeakReferenceHandler weakReferenceHandler = new WeakReferenceHandler(this);
+ private LightViewModel lightViewModel;
+ private ListenableList graphicsOverlays;
+ private ListenableList graphics;
+ private double DELTA_L = LocaleConstant.DELTA_LNG_75;
+ private LightLocalBeanDao lightLocalBeanDao;
+ private boolean isControlLight = false;
+ private boolean isGetLightDetail = false;
+
+ @Override
+ protected void setupTopBarLayout() {
+ ViewGroupHub.initImmersionBar(binding.rootView, this, true, R.color.white);
+ binding.titleView.setOnClickListener(new TitleBarView.OnClickListener() {
+ @Override
+ public void onLeftClick() {
+ finish();
+ }
+
+ @Override
+ public void onRightClick() {
+
+ }
+ });
+ }
+
+ @Override
+ protected void observeRequestState() {
+ lightViewModel.loadState.observe(this, new Observer() {
+ @Override
+ public void onChanged(LoadState loadState) {
+ if (isControlLight) {
+ if (loadState == LoadState.Loading) {
+ LoadingDialog.show(LightOnMapActivity.this, "处理中,请稍后...");
+ } else {
+ LoadingDialog.dismiss();
+ }
+ } else if (isGetLightDetail) {
+ if (loadState == LoadState.Loading) {
+ LoadingDialog.show(LightOnMapActivity.this, "路灯详情获取中,请稍后...");
+ } else {
+ LoadingDialog.dismiss();
+ }
+ } else {
+ if (loadState == LoadState.Loading) {
+ LoadingDialog.show(LightOnMapActivity.this, "数据加载中,请稍后...");
+ } else {
+ LoadingDialog.dismiss();
+ }
+ }
+ }
+ });
+ }
+
+ @Override
+ protected void initOnCreate(@Nullable Bundle savedInstanceState) {
+ lightLocalBeanDao = BaseApplication.getDaoSession().getLightLocalBeanDao();
+
+ lightViewModel = new ViewModelProvider(this).get(LightViewModel.class);
+ lightViewModel.getLightOnMap(this);
+ lightViewModel.lightMapModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(LightMapBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ for (LightMapBean.DataBean dataBean : resultBean.getData()) {
+ LightLocalBean bean = new LightLocalBean();
+ bean.setControllerCode(dataBean.getControllerCode());
+ bean.setLampCode(dataBean.getLampCode());
+ String lampId = dataBean.getLampId();
+ bean.setLampId(lampId);
+ bean.setLatitude(dataBean.getLatitude());
+ bean.setDeptId(dataBean.getDeptId());
+ bean.setStatusName(dataBean.getStatusName());
+ bean.setLampName(dataBean.getLampName());
+ bean.setLatestTime(dataBean.getLatestTime());
+ bean.setLongitude(dataBean.getLongitude());
+ bean.setStatus(dataBean.getStatus());
+
+ LightLocalBean uniqueBean = lightLocalBeanDao.queryBuilder().where(LightLocalBeanDao.Properties.LampId.eq(lampId)).unique();
+ if (uniqueBean == null) {
+ lightLocalBeanDao.insert(bean);
+ } else {
+ lightLocalBeanDao.update(bean);
+ }
+ }
+ }
+ }
+ });
+
+ lightViewModel.lightDetailModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(LightDetailBean resultBean) {
+ isGetLightDetail = false;
+
+ View popupView = LayoutInflater.from(context).inflate(R.layout.popu_street_light, null);
+
+ TextView lightStateView = popupView.findViewById(R.id.lightStateView);
+ TextView lightAddressView = popupView.findViewById(R.id.lightAddressView);
+ TextView lightStreetView = popupView.findViewById(R.id.lightStreetView);
+ TextView lightElecView = popupView.findViewById(R.id.lightElecView);
+ TextView lightVolView = popupView.findViewById(R.id.lightVolView);
+ TextView lightTimeView = popupView.findViewById(R.id.lightTimeView);
+ ImageView lightSwitch = popupView.findViewById(R.id.lightSwitch);
+
+ LightDetailBean.DataModel data = resultBean.getData();
+ String statusName = data.getStatusName();
+ lightStateView.setText(statusName);
+ lightAddressView.setText(data.getAddress());
+ lightStreetView.setText(data.getStreetName());
+ lightElecView.setText(String.format("%sA", data.getLatestElec()));
+ lightVolView.setText(String.format("%sA", data.getLatestVol()));
+ lightTimeView.setText(data.getLatestTime());
+
+ QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 280))
+ .preferredDirection(QMUIPopup.DIRECTION_BOTTOM).view(popupView)
+ .edgeProtection(QMUIDisplayHelper.dp2px(context, 20))
+ .dimAmount(0.6f).animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER)
+ .onDismiss(null).show(binding.mapView);
+
+ lightSwitch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ isControlLight = true;
+ List lampIds = new ArrayList<>();
+ lampIds.add(Long.parseLong(data.getLampId()));
+
+ String controlType;
+ if (statusName.equals("灭灯")) {
+ controlType = "1";
+ } else {
+ controlType = "0";
+ }
+ lightViewModel.controlLight(context, lampIds, controlType);
+ }
+ });
+ }
+ });
+
+ lightViewModel.lightControlModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(ActionResultBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ isControlLight = false;
+ //开灯指令发下去之后,虽然返回成功,但仅仅表示app发送指令到后台成功,但是开没开灯无法确定,所以,只能延迟几秒再刷新列表
+ StringKit.show(context, "指令发送成功");
+ weakReferenceHandler.sendEmptyMessageDelayed(20210624, 3000);
+ }
+ }
+ });
+
+ binding.mapView.setAttributionTextVisible(false);//去掉左下角属性标识
+ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS);
+ //创建底图、并设置底图图层
+ Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer());
+ arcGISMap.setBasemap(basemap);
+ Point point = new Point(LocaleConstant.DEFAULT_LNG, LocaleConstant.DEFAULT_LAT, SpatialReferences.getWgs84());
+ binding.mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示
+ binding.mapView.setMap(arcGISMap);
+
+ //Marker相关Layer
+ graphicsOverlays = binding.mapView.getGraphicsOverlays();
+ //显示定位点附近路灯
+ LocationHelper.getCurrentLocation(this, new ILocationListener() {
+
+ @Override
+ public void onAMapLocationGet(AMapLocation aMapLocation) {
+ if (aMapLocation != null) {
+ double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
+ Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
+ binding.mapView.setViewpointCenterAsync(point, 2800);
+
+ List streetLightBeans = lightLocalBeanDao.loadAll();
+ List pointList = new ArrayList<>();
+ for (LightLocalBean bean : streetLightBeans) {
+ double longitude = bean.getLongitude();
+ double latitude = bean.getLatitude();
+ if (Math.abs(longitude - gcjToWgs[0]) <= LocaleConstant.DELTA_LNG_75 && Math.abs(latitude - gcjToWgs[1]) <= LocaleConstant.DELTA_LAT_75) {
+ pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+ }
+// if (Math.abs(longitude - Constant.DEFAULT_LNG) <= Constant.DELTA_LNG_75 &&
+// Math.abs(latitude - Constant.DEFAULT_LAT) <= Constant.DELTA_LAT_75) {
+// pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+// }
+ }
+ addPictureMarker(pointList);
+ }
+ }
+ }, true);
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ protected void initEvent() {
+ binding.expandMapView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ binding.mapView.setViewpointScaleAsync(binding.mapView.getMapScale() * 0.5);
+ clearPictureMarker();
+ //计算比例尺
+ DELTA_L -= 0.0001;
+ if (DELTA_L < 0) {
+ DELTA_L = 0;
+ }
+// List minusList = new ArrayList<>();
+// for (StreetLightLocalBean bean : lightBeans) {
+// double longitude = bean.getLongitude();
+// double latitude = bean.getLatitude();
+// if (Math.abs(longitude - Constant.DEFAULT_LNG) > DELTA_L ||
+// Math.abs(latitude - Constant.DEFAULT_LAT) > DELTA_L) {
+// continue;
+// }
+// minusList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+// }
+// addPictureMarker(minusList);
+ LocationHelper.getCurrentLocation(context, new ILocationListener() {
+
+ @Override
+ public void onAMapLocationGet(AMapLocation aMapLocation) {
+ if (aMapLocation != null) {
+ double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
+ Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
+ List minusList = new ArrayList<>();
+ for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
+ double longitude = bean.getLongitude();
+ double latitude = bean.getLatitude();
+ if (Math.abs(longitude - gcjToWgs[0]) <= DELTA_L && Math.abs(latitude - gcjToWgs[1]) <= DELTA_L) {
+ minusList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+ }
+ }
+ addPictureMarker(minusList);
+ }
+ }
+ }, true);
+ }
+ });
+
+ binding.minusMapView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ binding.mapView.setViewpointScaleAsync(binding.mapView.getMapScale() * 2);
+ clearPictureMarker();
+ //计算比例尺
+ DELTA_L += 0.0001;
+ if (DELTA_L > 0.01) {
+ DELTA_L = LocaleConstant.DELTA_LNG_75;
+ }
+// List expandList = new ArrayList<>();
+// for (StreetLightLocalBean bean : lightBeans) {
+// double longitude = bean.getLongitude();
+// double latitude = bean.getLatitude();
+// if (Math.abs(longitude - Constant.DEFAULT_LNG) > DELTA_L ||
+// Math.abs(latitude - Constant.DEFAULT_LAT) > DELTA_L) {
+// continue;
+// }
+// expandList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+// }
+// addPictureMarker(expandList);
+ LocationHelper.getCurrentLocation(context, new ILocationListener() {
+
+ @Override
+ public void onAMapLocationGet(AMapLocation aMapLocation) {
+ if (aMapLocation != null) {
+ double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
+ Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
+ List expandList = new ArrayList<>();
+ for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
+ double longitude = bean.getLongitude();
+ double latitude = bean.getLatitude();
+ if (Math.abs(longitude - gcjToWgs[0]) <= DELTA_L && Math.abs(latitude - gcjToWgs[1]) <= DELTA_L) {
+ expandList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+ }
+ }
+ addPictureMarker(expandList);
+ }
+ }
+ }, true);
+ }
+ });
+
+ binding.removeToLocalView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ clearPictureMarker();
+ LoadingDialog.show(LightOnMapActivity.this, "定位中,请稍后");
+ LocationHelper.getCurrentLocation(context, new ILocationListener() {
+
+ @Override
+ public void onAMapLocationGet(AMapLocation aMapLocation) {
+ if (aMapLocation != null) {
+ double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
+ Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
+ List pointList = new ArrayList<>();
+ for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
+ double longitude = bean.getLongitude();
+ double latitude = bean.getLatitude();
+ if (Math.abs(longitude - gcjToWgs[0]) <= LocaleConstant.DELTA_LNG_75 && Math.abs(latitude - gcjToWgs[1]) <= LocaleConstant.DELTA_LAT_75) {
+ pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+ }
+ }
+ addPictureMarker(pointList);
+ binding.mapView.setViewpointCenterAsync(point, 3000);
+ LoadingDialog.dismiss();
+ }
+ }
+ }, true);
+ }
+ });
+
+ binding.mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(context, binding.mapView) {
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+ List lightBeans = lightLocalBeanDao.loadAll();
+ android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY()));
+ 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 (LightLocalBean dataBean : lightBeans) {
+ if (Math.abs(dataBean.getLongitude() - point.getX()) <= LocaleConstant.DELTA_LNG_10 && Math.abs(dataBean.getLatitude() - point.getY()) <= LocaleConstant.DELTA_LAT_10) {
+ Message message = weakReferenceHandler.obtainMessage();
+ message.what = 2021062401;
+ message.obj = dataBean.getLampId();
+ weakReferenceHandler.sendMessage(message);
+ }
+ }
+ } else {
+ weakReferenceHandler.sendEmptyMessage(2021062402);
+ }
+ } catch (InterruptedException | ExecutionException e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ return super.onSingleTapConfirmed(e);
+ }
+ });
+ }
+
+ @Override
+ public boolean handleMessage(@NonNull Message msg) {
+ switch (msg.what) {
+ case 2021062401:
+ String lampId = (String) msg.obj;
+ if (TextUtils.isEmpty(lampId)) {
+ StringKit.show(context, "错误,路灯编号为空");
+ return true;
+ }
+
+ isGetLightDetail = true;
+ lightViewModel.getLightDetail(context, lampId);
+ break;
+ case 2021062402:
+ StringKit.show(context, "此附近无路灯,请重新选点");
+ break;
+ default:
+ break;
+ }
+ return true;
+ }
+
+ private void addPictureMarker(List points) {
+ for (Point point : points) {
+ Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify);
+ BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap);
+ PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable);
+ pictureMarker.setWidth(24);
+ pictureMarker.setHeight(24);
+ pictureMarker.loadAsync();
+
+ GraphicsOverlay graphicsOverlay = new GraphicsOverlay();
+ graphics = graphicsOverlay.getGraphics();
+ graphics.add(new Graphic(point, pictureMarker));
+ graphicsOverlays.add(graphicsOverlay);
+ }
+ }
+
+ private void clearPictureMarker() {
+ if (graphics != null && graphicsOverlays != null) {
+ graphics.clear();
+ graphicsOverlays.clear();
+ }
+ }
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fd91f6c..d329792 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -123,7 +123,8 @@
-
+
+
diff --git a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
index bd5e484..97254a7 100644
--- a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
@@ -19,7 +19,6 @@
import com.casic.dcms.view.OvertimeCaseActivity;
import com.casic.dcms.view.PersonActivity;
import com.casic.dcms.view.SearchCaseActivity;
-import com.casic.dcms.view.StreetlightManagerActivity;
import com.casic.dcms.view.UrgentCaseActivity;
import com.casic.dcms.view.bridge.BridgeMaintainActivity;
import com.casic.dcms.view.business.ChangeShopInfoActivity;
@@ -30,6 +29,7 @@
import com.casic.dcms.view.map.CaseOnMapActivity;
import com.casic.dcms.view.pipeline.PipelineManagerActivity;
import com.casic.dcms.view.statistics.DataAnalysisActivity;
+import com.casic.dcms.view.streetlight.StreetlightManagerActivity;
import com.casic.dcms.view.toilet.PublicToiletActivity;
import com.casic.dcms.view.upload.BriefCaseActivity;
import com.casic.dcms.view.upload.BusinessCaseActivity;
diff --git a/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java b/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java
deleted file mode 100644
index a9cc331..0000000
--- a/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package com.casic.dcms.fragment;
-
-import android.graphics.Color;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.text.TextUtils;
-import android.view.View;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.cardview.widget.CardView;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.casic.dcms.R;
-import com.casic.dcms.adapter.NormalRecyclerAdapter;
-import com.casic.dcms.databinding.FragmentLightListBinding;
-import com.casic.dcms.model.ActionResultBean;
-import com.casic.dcms.model.LightDetailBean;
-import com.casic.dcms.model.LightListBean;
-import com.casic.dcms.vm.LightViewModel;
-import com.casic.dcms.widgets.LightDetailDialog;
-import com.pengxh.androidx.lite.adapter.ViewHolder;
-import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
-import com.pengxh.androidx.lite.divider.RecyclerViewItemDivider;
-import com.pengxh.androidx.lite.kit.IntKit;
-import com.pengxh.androidx.lite.kit.StringKit;
-import com.pengxh.androidx.lite.utils.LoadState;
-import com.pengxh.androidx.lite.utils.LoadingDialog;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
-import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class LightOnListFragment extends AndroidxBaseFragment implements Handler.Callback {
-
- private static final String TAG = "LightOnListFragment";
- private final WeakReferenceHandler weakReferenceHandler = new WeakReferenceHandler(this);
- private LightViewModel lightViewModel;
- private NormalRecyclerAdapter adapter;
- private List dataBeans = new ArrayList<>();
- private int pageIndex = 1;
- private boolean isRefresh, isLoadMore = false;
-
- @Override
- protected void setupTopBarLayout() {
-
- }
-
- @Override
- protected void initOnCreate(@Nullable Bundle savedInstanceState) {
- lightViewModel = new ViewModelProvider(this).get(LightViewModel.class);
- lightViewModel.getLightList(pageIndex);
- }
-
- @Override
- protected void observeRequestState() {
- lightViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- LoadingDialog.show(requireActivity(), "处理中,请稍后...");
- } else {
- LoadingDialog.dismiss();
- }
- }
- });
- }
-
- @Override
- protected void initEvent() {
- getBinding().refreshLayout.setOnRefreshListener(new OnRefreshListener() {
- @Override
- public void onRefresh(@NonNull final RefreshLayout refreshLayout) {
- isRefresh = true;
- //刷新之后页码重置
- pageIndex = 1;
- lightViewModel.getLightList(pageIndex);
- }
- });
- getBinding().refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
- @Override
- public void onLoadMore(@NonNull final RefreshLayout refreshLayout) {
- isLoadMore = true;
- pageIndex++;
- lightViewModel.getLightList(pageIndex);
- }
- });
-
- lightViewModel.lightListModel.observe(this, new Observer() {
- @Override
- public void onChanged(LightListBean resultBean) {
- if (resultBean.getCode() == 200) {
- List dataRows = resultBean.getData().getRows();
- if (isRefresh) {
- adapter.refresh(dataRows);
- getBinding().refreshLayout.finishRefresh();
- isRefresh = false;
- } else if (isLoadMore) {
- if (dataRows.size() == 0) {
- StringKit.show(requireContext(), "到底了,别拉了");
- }
- adapter.loadMore(dataRows);
- getBinding().refreshLayout.finishLoadMore();
- isLoadMore = false;
- } else {
- dataBeans = dataRows;
- weakReferenceHandler.sendEmptyMessage(20210623);
- }
- }
- }
- });
-
- lightViewModel.lightControlModel.observe(this, new Observer() {
- @Override
- public void onChanged(ActionResultBean resultBean) {
- if (resultBean.getCode() == 200) {
- //开灯指令发下去之后,虽然返回成功,但仅仅表示app发送指令到后台成功,但是开没开灯无法确定,所以,只能延迟几秒再刷新列表
- StringKit.show(requireContext(), "指令发送成功");
- weakReferenceHandler.sendEmptyMessageDelayed(20210624, 3000);
- }
- }
- });
-
- lightViewModel.lightDetailModel.observe(this, new Observer() {
- @Override
- public void onChanged(LightDetailBean resultBean) {
- new LightDetailDialog.Builder().setContext(requireContext()).setLightDetailBean(resultBean).build().show();
- }
- });
- }
-
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- if (msg.what == 20210623) {
- //首次加载数据
- if (dataBeans.size() == 0) {
- getBinding().emptyView.show("没有路灯数据", null);
- } else {
- getBinding().emptyView.hide();
- adapter = new NormalRecyclerAdapter(R.layout.item_light_recycleview, dataBeans) {
- @Override
- public void convertView(ViewHolder viewHolder, int position, LightListBean.DataBean.RowsBean item) {
- String statusName = item.getStatusName();
- viewHolder.setText(R.id.lightNameView, item.getLampName())
- .setText(R.id.lightStatusView, "已" + statusName);
-
- CardView statueTagView = viewHolder.getView(R.id.statueTagView);
- if (statusName.equals("灭灯")) {
- viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_off);
- statueTagView.setCardBackgroundColor(IntKit.convertColor(requireContext(), R.color.darkGray));
- } else if (statusName.equals("报警")) {
- viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_warning);
- statueTagView.setCardBackgroundColor(IntKit.convertColor(requireContext(), R.color.warnColor));
- } else {
- viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_on);
- statueTagView.setCardBackgroundColor(IntKit.convertColor(requireContext(), R.color.onLineColor));
- }
-
- viewHolder.setOnClickListener(R.id.lightSwitch, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- List lampIds = new ArrayList<>();
- lampIds.add(Long.parseLong(item.getLampId()));
-
- String statusName = item.getStatusName();
- String controlType;
- if (statusName.equals("灭灯")) {
- controlType = "1";
- } else {
- controlType = "0";
- }
- lightViewModel.controlLight(requireContext(), lampIds, controlType);
- }
- });
- }
- };
- getBinding().recyclerView.addItemDecoration(new RecyclerViewItemDivider(1, Color.LTGRAY));
- getBinding().recyclerView.setAdapter(adapter);
- adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() {
- @Override
- public void onItemClicked(int position, LightListBean.DataBean.RowsBean rowsBean) {
- String lampId = rowsBean.getLampId();
- if (TextUtils.isEmpty(lampId)) {
- StringKit.show(requireContext(), "错误,路灯编号为空");
- return;
- }
-
- lightViewModel.getLightDetail(requireContext(), lampId);
- }
- });
- }
- } else if (msg.what == 20210624) {
- isRefresh = true;
- pageIndex = 1;
- lightViewModel.getLightList(pageIndex);
- }
- return true;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/fragment/LightOnMapFragment.java b/app/src/main/java/com/casic/dcms/fragment/LightOnMapFragment.java
deleted file mode 100644
index db55ff0..0000000
--- a/app/src/main/java/com/casic/dcms/fragment/LightOnMapFragment.java
+++ /dev/null
@@ -1,441 +0,0 @@
-package com.casic.dcms.fragment;
-
-import android.annotation.SuppressLint;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.drawable.BitmapDrawable;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.amap.api.location.AMapLocation;
-import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
-import com.casic.dcms.bean.LightLocalBean;
-import com.casic.dcms.databinding.FragmentLightMapBinding;
-import com.casic.dcms.greendao.LightLocalBeanDao;
-import com.casic.dcms.model.ActionResultBean;
-import com.casic.dcms.model.LightMapBean;
-import com.casic.dcms.utils.ArcGisMapCreator;
-import com.casic.dcms.utils.AuthenticationHelper;
-import com.casic.dcms.utils.HttpRequestManager;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.LocationHelper;
-import com.casic.dcms.utils.callback.ILocationListener;
-import com.casic.dcms.vm.LightViewModel;
-import com.esri.arcgisruntime.concurrent.ListenableFuture;
-import com.esri.arcgisruntime.geometry.Point;
-import com.esri.arcgisruntime.geometry.SpatialReferences;
-import com.esri.arcgisruntime.mapping.ArcGISMap;
-import com.esri.arcgisruntime.mapping.Basemap;
-import com.esri.arcgisruntime.mapping.BasemapStyle;
-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.symbology.PictureMarkerSymbol;
-import com.esri.arcgisruntime.util.ListenableList;
-import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
-import com.pengxh.androidx.lite.kit.StringKit;
-import com.pengxh.androidx.lite.utils.LoadState;
-import com.pengxh.androidx.lite.utils.LoadingDialog;
-import com.pengxh.androidx.lite.utils.SaveKeyValues;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
-import com.qmuiteam.qmui.widget.popup.QMUIPopup;
-import com.qmuiteam.qmui.widget.popup.QMUIPopups;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-
-public class LightOnMapFragment extends AndroidxBaseFragment implements Handler.Callback {
-
- private static final String TAG = "LightOnMapFragment";
- private final WeakReferenceHandler weakReferenceHandler = new WeakReferenceHandler(this);
- private LightViewModel lightViewModel;
- private ListenableList graphicsOverlays;
- private ListenableList graphics;
- private double DELTA_L = LocaleConstant.DELTA_LNG_75;
- private LightLocalBeanDao lightLocalBeanDao;
-
- @Override
- protected void setupTopBarLayout() {
-
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initOnCreate(@Nullable Bundle savedInstanceState) {
- lightLocalBeanDao = BaseApplication.getDaoSession().getLightLocalBeanDao();
-
- lightViewModel = new ViewModelProvider(this).get(LightViewModel.class);
- lightViewModel.getLightOnMap(requireContext());
- lightViewModel.lightMapModel.observe(this, new Observer() {
- @Override
- public void onChanged(LightMapBean resultBean) {
- if (resultBean.getCode() == 200) {
- for (LightMapBean.DataBean dataBean : resultBean.getData()) {
- LightLocalBean bean = new LightLocalBean();
- bean.setControllerCode(dataBean.getControllerCode());
- bean.setLampCode(dataBean.getLampCode());
- String lampId = dataBean.getLampId();
- bean.setLampId(lampId);
- bean.setLatitude(dataBean.getLatitude());
- bean.setDeptId(dataBean.getDeptId());
- bean.setStatusName(dataBean.getStatusName());
- bean.setLampName(dataBean.getLampName());
- bean.setLatestTime(dataBean.getLatestTime());
- bean.setLongitude(dataBean.getLongitude());
- bean.setStatus(dataBean.getStatus());
-
- LightLocalBean uniqueBean = lightLocalBeanDao.queryBuilder().where(LightLocalBeanDao.Properties.LampId.eq(lampId)).unique();
- if (uniqueBean == null) {
- lightLocalBeanDao.insert(bean);
- } else {
- lightLocalBeanDao.update(bean);
- }
- }
- }
- }
- });
-
- lightViewModel.lightControlModel.observe(this, new Observer() {
- @Override
- public void onChanged(ActionResultBean resultBean) {
- if (resultBean.getCode() == 200) {
- //开灯指令发下去之后,虽然返回成功,但仅仅表示app发送指令到后台成功,但是开没开灯无法确定,所以,只能延迟几秒再刷新列表
- StringKit.show(requireContext(), "指令发送成功");
- weakReferenceHandler.sendEmptyMessageDelayed(20210624, 3000);
- }
- }
- });
- lightViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- LoadingDialog.show(requireActivity(), "处理中,请稍后...");
- } else {
- LoadingDialog.dismiss();
- }
- }
- });
-
- getBinding().mapView.setAttributionTextVisible(false);//去掉左下角属性标识
- ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS);
- //创建底图、并设置底图图层
- Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer());
- arcGISMap.setBasemap(basemap);
- Point point = new Point(LocaleConstant.DEFAULT_LNG, LocaleConstant.DEFAULT_LAT, SpatialReferences.getWgs84());
- getBinding().mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示
- getBinding().mapView.setMap(arcGISMap);
-
- //Marker相关Layer
- graphicsOverlays = getBinding().mapView.getGraphicsOverlays();
- //显示定位点附近路灯
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- getBinding().mapView.setViewpointCenterAsync(point, 2800);
-
- List streetLightBeans = lightLocalBeanDao.loadAll();
- List pointList = new ArrayList<>();
- for (LightLocalBean bean : streetLightBeans) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= LocaleConstant.DELTA_LNG_75 && Math.abs(latitude - gcjToWgs[1]) <= LocaleConstant.DELTA_LAT_75) {
- pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
-// if (Math.abs(longitude - Constant.DEFAULT_LNG) <= Constant.DELTA_LNG_75 &&
-// Math.abs(latitude - Constant.DEFAULT_LAT) <= Constant.DELTA_LAT_75) {
-// pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
-// }
- }
- addPictureMarker(pointList);
- }
- }
- }, true);
- }
-
- @SuppressLint("ClickableViewAccessibility")
- @Override
- protected void initEvent() {
- getBinding().expandMapView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- getBinding().mapView.setViewpointScaleAsync(getBinding().mapView.getMapScale() * 0.5);
- clearPictureMarker();
- //计算比例尺
- DELTA_L -= 0.0001;
- if (DELTA_L < 0) {
- DELTA_L = 0;
- }
-// List minusList = new ArrayList<>();
-// for (StreetLightLocalBean bean : lightBeans) {
-// double longitude = bean.getLongitude();
-// double latitude = bean.getLatitude();
-// if (Math.abs(longitude - Constant.DEFAULT_LNG) > DELTA_L ||
-// Math.abs(latitude - Constant.DEFAULT_LAT) > DELTA_L) {
-// continue;
-// }
-// minusList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
-// }
-// addPictureMarker(minusList);
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- List minusList = new ArrayList<>();
- for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= DELTA_L && Math.abs(latitude - gcjToWgs[1]) <= DELTA_L) {
- minusList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
- }
- addPictureMarker(minusList);
- }
- }
- }, true);
- }
- });
-
- getBinding().minusMapView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- getBinding().mapView.setViewpointScaleAsync(getBinding().mapView.getMapScale() * 2);
- clearPictureMarker();
- //计算比例尺
- DELTA_L += 0.0001;
- if (DELTA_L > 0.01) {
- DELTA_L = LocaleConstant.DELTA_LNG_75;
- }
-// List expandList = new ArrayList<>();
-// for (StreetLightLocalBean bean : lightBeans) {
-// double longitude = bean.getLongitude();
-// double latitude = bean.getLatitude();
-// if (Math.abs(longitude - Constant.DEFAULT_LNG) > DELTA_L ||
-// Math.abs(latitude - Constant.DEFAULT_LAT) > DELTA_L) {
-// continue;
-// }
-// expandList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
-// }
-// addPictureMarker(expandList);
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- List expandList = new ArrayList<>();
- for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= DELTA_L && Math.abs(latitude - gcjToWgs[1]) <= DELTA_L) {
- expandList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
- }
- addPictureMarker(expandList);
- }
- }
- }, true);
- }
- });
-
- getBinding().removeToLocalView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- clearPictureMarker();
- LoadingDialog.show(requireActivity(), "定位中,请稍后");
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- List pointList = new ArrayList<>();
- for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= LocaleConstant.DELTA_LNG_75 && Math.abs(latitude - gcjToWgs[1]) <= LocaleConstant.DELTA_LAT_75) {
- pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
- }
- addPictureMarker(pointList);
- getBinding().mapView.setViewpointCenterAsync(point, 3000);
- LoadingDialog.dismiss();
- }
- }
- }, true);
- }
- });
-
- getBinding().mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(requireContext(), getBinding().mapView) {
- @Override
- public boolean onSingleTapConfirmed(MotionEvent e) {
- List lightBeans = lightLocalBeanDao.loadAll();
- android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY()));
- 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 (LightLocalBean dataBean : lightBeans) {
- if (Math.abs(dataBean.getLongitude() - point.getX()) <= LocaleConstant.DELTA_LNG_10 && Math.abs(dataBean.getLatitude() - point.getY()) <= LocaleConstant.DELTA_LAT_10) {
- Message message = weakReferenceHandler.obtainMessage();
- message.what = 2021062401;
- message.obj = dataBean.getLampId();
- weakReferenceHandler.sendMessage(message);
- }
- }
- } else {
- weakReferenceHandler.sendEmptyMessage(2021062402);
- }
- } catch (InterruptedException | ExecutionException e) {
- e.printStackTrace();
- }
- }
- });
- return super.onSingleTapConfirmed(e);
- }
- });
- }
-
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- switch (msg.what) {
- case 2021062401:
- String lampId = (String) msg.obj;
-
- View popupView = LayoutInflater.from(requireContext()).inflate(R.layout.popu_street_light, null);
- TextView lightStateView = popupView.findViewById(R.id.lightStateView);
- TextView lightAddressView = popupView.findViewById(R.id.lightAddressView);
- TextView lightStreetView = popupView.findViewById(R.id.lightStreetView);
- TextView lightElecView = popupView.findViewById(R.id.lightElecView);
- TextView lightVolView = popupView.findViewById(R.id.lightVolView);
- TextView lightTimeView = popupView.findViewById(R.id.lightTimeView);
- ImageView lightSwitch = popupView.findViewById(R.id.lightSwitch);
-
- LoadingDialog.show(requireActivity(), "路灯详情获取中,请稍后...");
- String ip = (String) SaveKeyValues.getValue(LocaleConstant.IP_KEY, "http://111.198.10.15:11409");
- new HttpRequestManager.Builder()
- .setAuthentication("token", AuthenticationHelper.getToken())
- .setRequestTarget(ip + LocaleConstant.LIGHT_DETAIL + lampId)
- .setOnHttpRequestListener(new HttpRequestManager.OnHttpRequestListener() {
- @Override
- public void onSuccess(String result) {
- LoadingDialog.dismiss();
- try {
- JSONObject jsonObject = new JSONObject(result);
- int code = jsonObject.getInt("code");
- if (code == 200) {
- JSONObject dataObject = jsonObject.getJSONObject("data");
-
- String statusName = dataObject.getString("statusName");
- lightStateView.setText(statusName);
- lightAddressView.setText(dataObject.getString("address"));
- lightStreetView.setText(dataObject.getString("streetName"));
- lightElecView.setText(String.valueOf(dataObject.getDouble("latestElec")));
- lightVolView.setText(String.valueOf(dataObject.getDouble("latestVol")));
- lightTimeView.setText(dataObject.getString("latestTime"));
-
- QMUIPopups.popup(requireContext(), QMUIDisplayHelper.dp2px(requireContext(), 280)).preferredDirection(QMUIPopup.DIRECTION_BOTTOM).view(popupView).edgeProtection(QMUIDisplayHelper.dp2px(requireContext(), 20)).dimAmount(0.6f).animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER).onDismiss(null).show(getBinding().mapView);
-
- lightSwitch.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- List lampIds = new ArrayList<>();
- lampIds.add(Long.parseLong(lampId));
-
- String controlType;
- if (statusName.equals("离线")) {
- controlType = "1";
- } else {
- controlType = "0";
- }
- lightViewModel.controlLight(requireContext(), lampIds, controlType);
- }
- });
- } else {
- StringKit.show(requireContext(), "服务器异常,请重新选点");
- }
- } catch (JSONException e) {
- StringKit.show(requireContext(), "解析失败,请重新选点");
- }
- }
-
- @Override
- public void onFailure(Throwable throwable) {
- LoadingDialog.dismiss();
- StringKit.show(requireContext(), "网络连接失败,请重新选点");
- }
- }).build().start();
- break;
- case 2021062402:
- StringKit.show(requireContext(), "此附近无路灯,请重新选点");
- break;
- default:
- break;
- }
- return true;
- }
-
- private void addPictureMarker(List points) {
- for (Point point : points) {
- Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify);
- BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap);
- PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable);
- pictureMarker.setWidth(24);
- pictureMarker.setHeight(24);
- pictureMarker.loadAsync();
-
- GraphicsOverlay graphicsOverlay = new GraphicsOverlay();
- graphics = graphicsOverlay.getGraphics();
- graphics.add(new Graphic(point, pictureMarker));
- graphicsOverlays.add(graphicsOverlay);
- }
- }
-
- private void clearPictureMarker() {
- if (graphics != null && graphicsOverlays != null) {
- graphics.clear();
- graphicsOverlays.clear();
- }
- }
-
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- getBinding().mapView.dispose();
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/view/StreetlightManagerActivity.java b/app/src/main/java/com/casic/dcms/view/StreetlightManagerActivity.java
deleted file mode 100644
index 6640fd3..0000000
--- a/app/src/main/java/com/casic/dcms/view/StreetlightManagerActivity.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.casic.dcms.view;
-
-import android.os.Bundle;
-import android.widget.LinearLayout;
-
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-
-import com.casic.dcms.R;
-import com.casic.dcms.adapter.SubViewPagerAdapter;
-import com.casic.dcms.databinding.ActivityStreetLightBinding;
-import com.casic.dcms.fragment.LightOnListFragment;
-import com.casic.dcms.fragment.LightOnMapFragment;
-import com.casic.dcms.utils.LinearLayoutHelper;
-import com.casic.dcms.utils.ViewGroupHub;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class StreetlightManagerActivity extends AndroidxBaseActivity {
-
- private final String[] pageTitles = new String[]{"路灯分布", "路灯列表"};
-
- @Override
- protected void setupTopBarLayout() {
- ViewGroupHub.initImmersionBar(binding.rootView, this, true, R.color.white);
-
- binding.titleBarLayout.titleView.setText("路灯管理");
- binding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initOnCreate(@Nullable Bundle savedInstanceState) {
- List fragmentList = new ArrayList<>();
- fragmentList.add(new LightOnMapFragment());
- fragmentList.add(new LightOnListFragment());
- SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList);
- binding.viewPager.setAdapter(adapter);
- //绑定TabLayout
- binding.tabLayout.setupWithViewPager(binding.viewPager);
- LinearLayout linearLayout = (LinearLayout) binding.tabLayout.getChildAt(0);
- LinearLayoutHelper.setDivider(this, linearLayout);
- }
-
- @Override
- protected void initEvent() {
-
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/view/streetlight/LightOnMapActivity.java b/app/src/main/java/com/casic/dcms/view/streetlight/LightOnMapActivity.java
new file mode 100644
index 0000000..c09dbc8
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/streetlight/LightOnMapActivity.java
@@ -0,0 +1,454 @@
+package com.casic.dcms.view.streetlight;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.BitmapDrawable;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.amap.api.location.AMapLocation;
+import com.casic.dcms.R;
+import com.casic.dcms.base.BaseApplication;
+import com.casic.dcms.bean.LightLocalBean;
+import com.casic.dcms.databinding.ActivityStreetLightMapBinding;
+import com.casic.dcms.greendao.LightLocalBeanDao;
+import com.casic.dcms.model.ActionResultBean;
+import com.casic.dcms.model.LightDetailBean;
+import com.casic.dcms.model.LightMapBean;
+import com.casic.dcms.utils.ArcGisMapCreator;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.LocationHelper;
+import com.casic.dcms.utils.ViewGroupHub;
+import com.casic.dcms.utils.callback.ILocationListener;
+import com.casic.dcms.vm.LightViewModel;
+import com.esri.arcgisruntime.concurrent.ListenableFuture;
+import com.esri.arcgisruntime.geometry.Point;
+import com.esri.arcgisruntime.geometry.SpatialReferences;
+import com.esri.arcgisruntime.mapping.ArcGISMap;
+import com.esri.arcgisruntime.mapping.Basemap;
+import com.esri.arcgisruntime.mapping.BasemapStyle;
+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.symbology.PictureMarkerSymbol;
+import com.esri.arcgisruntime.util.ListenableList;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.kit.StringKit;
+import com.pengxh.androidx.lite.utils.LoadState;
+import com.pengxh.androidx.lite.utils.LoadingDialog;
+import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
+import com.pengxh.androidx.lite.widget.TitleBarView;
+import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.qmuiteam.qmui.widget.popup.QMUIPopup;
+import com.qmuiteam.qmui.widget.popup.QMUIPopups;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+
+public class LightOnMapActivity extends AndroidxBaseActivity implements Handler.Callback {
+
+ private static final String TAG = "LightOnMapFragment";
+ private final Context context = this;
+ private final WeakReferenceHandler weakReferenceHandler = new WeakReferenceHandler(this);
+ private LightViewModel lightViewModel;
+ private ListenableList graphicsOverlays;
+ private ListenableList graphics;
+ private double DELTA_L = LocaleConstant.DELTA_LNG_75;
+ private LightLocalBeanDao lightLocalBeanDao;
+ private boolean isControlLight = false;
+ private boolean isGetLightDetail = false;
+
+ @Override
+ protected void setupTopBarLayout() {
+ ViewGroupHub.initImmersionBar(binding.rootView, this, true, R.color.white);
+ binding.titleView.setOnClickListener(new TitleBarView.OnClickListener() {
+ @Override
+ public void onLeftClick() {
+ finish();
+ }
+
+ @Override
+ public void onRightClick() {
+
+ }
+ });
+ }
+
+ @Override
+ protected void observeRequestState() {
+ lightViewModel.loadState.observe(this, new Observer() {
+ @Override
+ public void onChanged(LoadState loadState) {
+ if (isControlLight) {
+ if (loadState == LoadState.Loading) {
+ LoadingDialog.show(LightOnMapActivity.this, "处理中,请稍后...");
+ } else {
+ LoadingDialog.dismiss();
+ }
+ } else if (isGetLightDetail) {
+ if (loadState == LoadState.Loading) {
+ LoadingDialog.show(LightOnMapActivity.this, "路灯详情获取中,请稍后...");
+ } else {
+ LoadingDialog.dismiss();
+ }
+ } else {
+ if (loadState == LoadState.Loading) {
+ LoadingDialog.show(LightOnMapActivity.this, "数据加载中,请稍后...");
+ } else {
+ LoadingDialog.dismiss();
+ }
+ }
+ }
+ });
+ }
+
+ @Override
+ protected void initOnCreate(@Nullable Bundle savedInstanceState) {
+ lightLocalBeanDao = BaseApplication.getDaoSession().getLightLocalBeanDao();
+
+ lightViewModel = new ViewModelProvider(this).get(LightViewModel.class);
+ lightViewModel.getLightOnMap(this);
+ lightViewModel.lightMapModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(LightMapBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ for (LightMapBean.DataBean dataBean : resultBean.getData()) {
+ LightLocalBean bean = new LightLocalBean();
+ bean.setControllerCode(dataBean.getControllerCode());
+ bean.setLampCode(dataBean.getLampCode());
+ String lampId = dataBean.getLampId();
+ bean.setLampId(lampId);
+ bean.setLatitude(dataBean.getLatitude());
+ bean.setDeptId(dataBean.getDeptId());
+ bean.setStatusName(dataBean.getStatusName());
+ bean.setLampName(dataBean.getLampName());
+ bean.setLatestTime(dataBean.getLatestTime());
+ bean.setLongitude(dataBean.getLongitude());
+ bean.setStatus(dataBean.getStatus());
+
+ LightLocalBean uniqueBean = lightLocalBeanDao.queryBuilder().where(LightLocalBeanDao.Properties.LampId.eq(lampId)).unique();
+ if (uniqueBean == null) {
+ lightLocalBeanDao.insert(bean);
+ } else {
+ lightLocalBeanDao.update(bean);
+ }
+ }
+ }
+ }
+ });
+
+ lightViewModel.lightDetailModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(LightDetailBean resultBean) {
+ isGetLightDetail = false;
+
+ View popupView = LayoutInflater.from(context).inflate(R.layout.popu_street_light, null);
+
+ TextView lightStateView = popupView.findViewById(R.id.lightStateView);
+ TextView lightAddressView = popupView.findViewById(R.id.lightAddressView);
+ TextView lightStreetView = popupView.findViewById(R.id.lightStreetView);
+ TextView lightElecView = popupView.findViewById(R.id.lightElecView);
+ TextView lightVolView = popupView.findViewById(R.id.lightVolView);
+ TextView lightTimeView = popupView.findViewById(R.id.lightTimeView);
+ ImageView lightSwitch = popupView.findViewById(R.id.lightSwitch);
+
+ LightDetailBean.DataModel data = resultBean.getData();
+ String statusName = data.getStatusName();
+ lightStateView.setText(statusName);
+ lightAddressView.setText(data.getAddress());
+ lightStreetView.setText(data.getStreetName());
+ lightElecView.setText(String.format("%sA", data.getLatestElec()));
+ lightVolView.setText(String.format("%sA", data.getLatestVol()));
+ lightTimeView.setText(data.getLatestTime());
+
+ QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 280))
+ .preferredDirection(QMUIPopup.DIRECTION_BOTTOM).view(popupView)
+ .edgeProtection(QMUIDisplayHelper.dp2px(context, 20))
+ .dimAmount(0.6f).animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER)
+ .onDismiss(null).show(binding.mapView);
+
+ lightSwitch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ isControlLight = true;
+ List lampIds = new ArrayList<>();
+ lampIds.add(Long.parseLong(data.getLampId()));
+
+ String controlType;
+ if (statusName.equals("灭灯")) {
+ controlType = "1";
+ } else {
+ controlType = "0";
+ }
+ lightViewModel.controlLight(context, lampIds, controlType);
+ }
+ });
+ }
+ });
+
+ lightViewModel.lightControlModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(ActionResultBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ isControlLight = false;
+ //开灯指令发下去之后,虽然返回成功,但仅仅表示app发送指令到后台成功,但是开没开灯无法确定,所以,只能延迟几秒再刷新列表
+ StringKit.show(context, "指令发送成功");
+ weakReferenceHandler.sendEmptyMessageDelayed(20210624, 3000);
+ }
+ }
+ });
+
+ binding.mapView.setAttributionTextVisible(false);//去掉左下角属性标识
+ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS);
+ //创建底图、并设置底图图层
+ Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer());
+ arcGISMap.setBasemap(basemap);
+ Point point = new Point(LocaleConstant.DEFAULT_LNG, LocaleConstant.DEFAULT_LAT, SpatialReferences.getWgs84());
+ binding.mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示
+ binding.mapView.setMap(arcGISMap);
+
+ //Marker相关Layer
+ graphicsOverlays = binding.mapView.getGraphicsOverlays();
+ //显示定位点附近路灯
+ LocationHelper.getCurrentLocation(this, new ILocationListener() {
+
+ @Override
+ public void onAMapLocationGet(AMapLocation aMapLocation) {
+ if (aMapLocation != null) {
+ double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
+ Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
+ binding.mapView.setViewpointCenterAsync(point, 2800);
+
+ List streetLightBeans = lightLocalBeanDao.loadAll();
+ List pointList = new ArrayList<>();
+ for (LightLocalBean bean : streetLightBeans) {
+ double longitude = bean.getLongitude();
+ double latitude = bean.getLatitude();
+ if (Math.abs(longitude - gcjToWgs[0]) <= LocaleConstant.DELTA_LNG_75 && Math.abs(latitude - gcjToWgs[1]) <= LocaleConstant.DELTA_LAT_75) {
+ pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+ }
+// if (Math.abs(longitude - Constant.DEFAULT_LNG) <= Constant.DELTA_LNG_75 &&
+// Math.abs(latitude - Constant.DEFAULT_LAT) <= Constant.DELTA_LAT_75) {
+// pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+// }
+ }
+ addPictureMarker(pointList);
+ }
+ }
+ }, true);
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ protected void initEvent() {
+ binding.expandMapView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ binding.mapView.setViewpointScaleAsync(binding.mapView.getMapScale() * 0.5);
+ clearPictureMarker();
+ //计算比例尺
+ DELTA_L -= 0.0001;
+ if (DELTA_L < 0) {
+ DELTA_L = 0;
+ }
+// List minusList = new ArrayList<>();
+// for (StreetLightLocalBean bean : lightBeans) {
+// double longitude = bean.getLongitude();
+// double latitude = bean.getLatitude();
+// if (Math.abs(longitude - Constant.DEFAULT_LNG) > DELTA_L ||
+// Math.abs(latitude - Constant.DEFAULT_LAT) > DELTA_L) {
+// continue;
+// }
+// minusList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+// }
+// addPictureMarker(minusList);
+ LocationHelper.getCurrentLocation(context, new ILocationListener() {
+
+ @Override
+ public void onAMapLocationGet(AMapLocation aMapLocation) {
+ if (aMapLocation != null) {
+ double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
+ Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
+ List minusList = new ArrayList<>();
+ for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
+ double longitude = bean.getLongitude();
+ double latitude = bean.getLatitude();
+ if (Math.abs(longitude - gcjToWgs[0]) <= DELTA_L && Math.abs(latitude - gcjToWgs[1]) <= DELTA_L) {
+ minusList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+ }
+ }
+ addPictureMarker(minusList);
+ }
+ }
+ }, true);
+ }
+ });
+
+ binding.minusMapView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ binding.mapView.setViewpointScaleAsync(binding.mapView.getMapScale() * 2);
+ clearPictureMarker();
+ //计算比例尺
+ DELTA_L += 0.0001;
+ if (DELTA_L > 0.01) {
+ DELTA_L = LocaleConstant.DELTA_LNG_75;
+ }
+// List expandList = new ArrayList<>();
+// for (StreetLightLocalBean bean : lightBeans) {
+// double longitude = bean.getLongitude();
+// double latitude = bean.getLatitude();
+// if (Math.abs(longitude - Constant.DEFAULT_LNG) > DELTA_L ||
+// Math.abs(latitude - Constant.DEFAULT_LAT) > DELTA_L) {
+// continue;
+// }
+// expandList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+// }
+// addPictureMarker(expandList);
+ LocationHelper.getCurrentLocation(context, new ILocationListener() {
+
+ @Override
+ public void onAMapLocationGet(AMapLocation aMapLocation) {
+ if (aMapLocation != null) {
+ double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
+ Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
+ List expandList = new ArrayList<>();
+ for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
+ double longitude = bean.getLongitude();
+ double latitude = bean.getLatitude();
+ if (Math.abs(longitude - gcjToWgs[0]) <= DELTA_L && Math.abs(latitude - gcjToWgs[1]) <= DELTA_L) {
+ expandList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+ }
+ }
+ addPictureMarker(expandList);
+ }
+ }
+ }, true);
+ }
+ });
+
+ binding.removeToLocalView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ clearPictureMarker();
+ LoadingDialog.show(LightOnMapActivity.this, "定位中,请稍后");
+ LocationHelper.getCurrentLocation(context, new ILocationListener() {
+
+ @Override
+ public void onAMapLocationGet(AMapLocation aMapLocation) {
+ if (aMapLocation != null) {
+ double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
+ Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
+ List pointList = new ArrayList<>();
+ for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
+ double longitude = bean.getLongitude();
+ double latitude = bean.getLatitude();
+ if (Math.abs(longitude - gcjToWgs[0]) <= LocaleConstant.DELTA_LNG_75 && Math.abs(latitude - gcjToWgs[1]) <= LocaleConstant.DELTA_LAT_75) {
+ pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+ }
+ }
+ addPictureMarker(pointList);
+ binding.mapView.setViewpointCenterAsync(point, 3000);
+ LoadingDialog.dismiss();
+ }
+ }
+ }, true);
+ }
+ });
+
+ binding.mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(context, binding.mapView) {
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+ List lightBeans = lightLocalBeanDao.loadAll();
+ android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY()));
+ 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 (LightLocalBean dataBean : lightBeans) {
+ if (Math.abs(dataBean.getLongitude() - point.getX()) <= LocaleConstant.DELTA_LNG_10 && Math.abs(dataBean.getLatitude() - point.getY()) <= LocaleConstant.DELTA_LAT_10) {
+ Message message = weakReferenceHandler.obtainMessage();
+ message.what = 2021062401;
+ message.obj = dataBean.getLampId();
+ weakReferenceHandler.sendMessage(message);
+ }
+ }
+ } else {
+ weakReferenceHandler.sendEmptyMessage(2021062402);
+ }
+ } catch (InterruptedException | ExecutionException e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ return super.onSingleTapConfirmed(e);
+ }
+ });
+ }
+
+ @Override
+ public boolean handleMessage(@NonNull Message msg) {
+ switch (msg.what) {
+ case 2021062401:
+ String lampId = (String) msg.obj;
+ if (TextUtils.isEmpty(lampId)) {
+ StringKit.show(context, "错误,路灯编号为空");
+ return true;
+ }
+
+ isGetLightDetail = true;
+ lightViewModel.getLightDetail(context, lampId);
+ break;
+ case 2021062402:
+ StringKit.show(context, "此附近无路灯,请重新选点");
+ break;
+ default:
+ break;
+ }
+ return true;
+ }
+
+ private void addPictureMarker(List points) {
+ for (Point point : points) {
+ Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify);
+ BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap);
+ PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable);
+ pictureMarker.setWidth(24);
+ pictureMarker.setHeight(24);
+ pictureMarker.loadAsync();
+
+ GraphicsOverlay graphicsOverlay = new GraphicsOverlay();
+ graphics = graphicsOverlay.getGraphics();
+ graphics.add(new Graphic(point, pictureMarker));
+ graphicsOverlays.add(graphicsOverlay);
+ }
+ }
+
+ private void clearPictureMarker() {
+ if (graphics != null && graphicsOverlays != null) {
+ graphics.clear();
+ graphicsOverlays.clear();
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/streetlight/StreetlightManagerActivity.java b/app/src/main/java/com/casic/dcms/view/streetlight/StreetlightManagerActivity.java
new file mode 100644
index 0000000..15b3de9
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/streetlight/StreetlightManagerActivity.java
@@ -0,0 +1,230 @@
+package com.casic.dcms.view.streetlight;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.text.TextUtils;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.cardview.widget.CardView;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.casic.dcms.R;
+import com.casic.dcms.adapter.NormalRecyclerAdapter;
+import com.casic.dcms.databinding.ActivityStreetLightBinding;
+import com.casic.dcms.model.ActionResultBean;
+import com.casic.dcms.model.LightDetailBean;
+import com.casic.dcms.model.LightListBean;
+import com.casic.dcms.utils.ViewGroupHub;
+import com.casic.dcms.vm.LightViewModel;
+import com.casic.dcms.widgets.LightDetailDialog;
+import com.pengxh.androidx.lite.adapter.ViewHolder;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.divider.RecyclerViewItemDivider;
+import com.pengxh.androidx.lite.kit.ContextKit;
+import com.pengxh.androidx.lite.kit.IntKit;
+import com.pengxh.androidx.lite.kit.StringKit;
+import com.pengxh.androidx.lite.utils.LoadState;
+import com.pengxh.androidx.lite.utils.LoadingDialog;
+import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
+import com.pengxh.androidx.lite.widget.TitleBarView;
+import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
+import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class StreetlightManagerActivity extends AndroidxBaseActivity implements Handler.Callback {
+
+ private final Context context = this;
+ private final WeakReferenceHandler weakReferenceHandler = new WeakReferenceHandler(this);
+ private LightViewModel lightViewModel;
+ private NormalRecyclerAdapter adapter;
+ private List dataBeans = new ArrayList<>();
+ private int pageIndex = 1;
+ private boolean isRefresh, isLoadMore = false;
+ private boolean isControlLight = false;
+
+ @Override
+ protected void setupTopBarLayout() {
+ ViewGroupHub.initImmersionBar(binding.rootView, this, true, R.color.white);
+ binding.titleView.setOnClickListener(new TitleBarView.OnClickListener() {
+ @Override
+ public void onLeftClick() {
+ finish();
+ }
+
+ @Override
+ public void onRightClick() {
+ ContextKit.navigatePageTo(context, LightOnMapActivity.class);
+ }
+ });
+ }
+
+ @Override
+ protected void observeRequestState() {
+ lightViewModel.loadState.observe(this, new Observer() {
+ @Override
+ public void onChanged(LoadState loadState) {
+ if (isControlLight) {
+ if (loadState == LoadState.Loading) {
+ LoadingDialog.show(StreetlightManagerActivity.this, "处理中,请稍后...");
+ } else {
+ LoadingDialog.dismiss();
+ }
+ } else {
+ if (loadState == LoadState.Loading) {
+ LoadingDialog.show(StreetlightManagerActivity.this, "数据加载中,请稍后...");
+ } else {
+ LoadingDialog.dismiss();
+ }
+ }
+ }
+ });
+ }
+
+ @Override
+ protected void initOnCreate(@Nullable Bundle savedInstanceState) {
+ lightViewModel = new ViewModelProvider(this).get(LightViewModel.class);
+ lightViewModel.getLightList(this, pageIndex);
+ }
+
+ @Override
+ protected void initEvent() {
+ binding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
+ @Override
+ public void onRefresh(@NonNull final RefreshLayout refreshLayout) {
+ isRefresh = true;
+ //刷新之后页码重置
+ pageIndex = 1;
+ lightViewModel.getLightList(context, pageIndex);
+ }
+ });
+ binding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
+ @Override
+ public void onLoadMore(@NonNull final RefreshLayout refreshLayout) {
+ isLoadMore = true;
+ pageIndex++;
+ lightViewModel.getLightList(context, pageIndex);
+ }
+ });
+
+ lightViewModel.lightListModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(LightListBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ List dataRows = resultBean.getData().getRows();
+ if (isRefresh) {
+ adapter.refresh(dataRows);
+ binding.refreshLayout.finishRefresh();
+ isRefresh = false;
+ } else if (isLoadMore) {
+ if (dataRows.size() == 0) {
+ StringKit.show(context, "到底了,别拉了");
+ }
+ adapter.loadMore(dataRows);
+ binding.refreshLayout.finishLoadMore();
+ isLoadMore = false;
+ } else {
+ dataBeans = dataRows;
+ weakReferenceHandler.sendEmptyMessage(20210623);
+ }
+ }
+ }
+ });
+
+ lightViewModel.lightControlModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(ActionResultBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ isControlLight = false;
+ //开灯指令发下去之后,虽然返回成功,但仅仅表示app发送指令到后台成功,但是开没开灯无法确定,所以,只能延迟几秒再刷新列表
+ StringKit.show(context, "指令发送成功");
+ weakReferenceHandler.sendEmptyMessageDelayed(20210624, 3000);
+ }
+ }
+ });
+
+ lightViewModel.lightDetailModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(LightDetailBean resultBean) {
+ new LightDetailDialog.Builder().setContext(context).setLightDetailBean(resultBean).build().show();
+ }
+ });
+ }
+
+ @Override
+ public boolean handleMessage(@NonNull Message msg) {
+ if (msg.what == 20210623) {
+ //首次加载数据
+ if (dataBeans.size() == 0) {
+ binding.emptyView.show("没有路灯数据", null);
+ } else {
+ binding.emptyView.hide();
+ adapter = new NormalRecyclerAdapter(R.layout.item_light_recycleview, dataBeans) {
+ @Override
+ public void convertView(ViewHolder viewHolder, int position, LightListBean.DataBean.RowsBean item) {
+ String statusName = item.getStatusName();
+ viewHolder.setText(R.id.lightNameView, item.getLampName())
+ .setText(R.id.lightStatusView, "已" + statusName);
+
+ CardView statueTagView = viewHolder.getView(R.id.statueTagView);
+ if (statusName.equals("灭灯")) {
+ viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_off);
+ statueTagView.setCardBackgroundColor(IntKit.convertColor(context, R.color.darkGray));
+ } else if (statusName.equals("报警")) {
+ viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_warning);
+ statueTagView.setCardBackgroundColor(IntKit.convertColor(context, R.color.warnColor));
+ } else {
+ viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_on);
+ statueTagView.setCardBackgroundColor(IntKit.convertColor(context, R.color.onLineColor));
+ }
+
+ viewHolder.setOnClickListener(R.id.lightSwitch, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ isControlLight = true;
+ List lampIds = new ArrayList<>();
+ lampIds.add(Long.parseLong(item.getLampId()));
+
+ String statusName = item.getStatusName();
+ String controlType;
+ if (statusName.equals("灭灯")) {
+ controlType = "1";
+ } else {
+ controlType = "0";
+ }
+ lightViewModel.controlLight(context, lampIds, controlType);
+ }
+ });
+ }
+ };
+ binding.recyclerView.addItemDecoration(new RecyclerViewItemDivider(1, Color.LTGRAY));
+ binding.recyclerView.setAdapter(adapter);
+ adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() {
+ @Override
+ public void onItemClicked(int position, LightListBean.DataBean.RowsBean rowsBean) {
+ String lampId = rowsBean.getLampId();
+ if (TextUtils.isEmpty(lampId)) {
+ StringKit.show(context, "错误,路灯编号为空");
+ return;
+ }
+
+ lightViewModel.getLightDetail(context, lampId);
+ }
+ });
+ }
+ } else if (msg.what == 20210624) {
+ isRefresh = true;
+ pageIndex = 1;
+ lightViewModel.getLightList(this, pageIndex);
+ }
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fd91f6c..d329792 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -123,7 +123,8 @@
-
+
+
diff --git a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
index bd5e484..97254a7 100644
--- a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
@@ -19,7 +19,6 @@
import com.casic.dcms.view.OvertimeCaseActivity;
import com.casic.dcms.view.PersonActivity;
import com.casic.dcms.view.SearchCaseActivity;
-import com.casic.dcms.view.StreetlightManagerActivity;
import com.casic.dcms.view.UrgentCaseActivity;
import com.casic.dcms.view.bridge.BridgeMaintainActivity;
import com.casic.dcms.view.business.ChangeShopInfoActivity;
@@ -30,6 +29,7 @@
import com.casic.dcms.view.map.CaseOnMapActivity;
import com.casic.dcms.view.pipeline.PipelineManagerActivity;
import com.casic.dcms.view.statistics.DataAnalysisActivity;
+import com.casic.dcms.view.streetlight.StreetlightManagerActivity;
import com.casic.dcms.view.toilet.PublicToiletActivity;
import com.casic.dcms.view.upload.BriefCaseActivity;
import com.casic.dcms.view.upload.BusinessCaseActivity;
diff --git a/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java b/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java
deleted file mode 100644
index a9cc331..0000000
--- a/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package com.casic.dcms.fragment;
-
-import android.graphics.Color;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.text.TextUtils;
-import android.view.View;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.cardview.widget.CardView;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.casic.dcms.R;
-import com.casic.dcms.adapter.NormalRecyclerAdapter;
-import com.casic.dcms.databinding.FragmentLightListBinding;
-import com.casic.dcms.model.ActionResultBean;
-import com.casic.dcms.model.LightDetailBean;
-import com.casic.dcms.model.LightListBean;
-import com.casic.dcms.vm.LightViewModel;
-import com.casic.dcms.widgets.LightDetailDialog;
-import com.pengxh.androidx.lite.adapter.ViewHolder;
-import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
-import com.pengxh.androidx.lite.divider.RecyclerViewItemDivider;
-import com.pengxh.androidx.lite.kit.IntKit;
-import com.pengxh.androidx.lite.kit.StringKit;
-import com.pengxh.androidx.lite.utils.LoadState;
-import com.pengxh.androidx.lite.utils.LoadingDialog;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
-import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class LightOnListFragment extends AndroidxBaseFragment implements Handler.Callback {
-
- private static final String TAG = "LightOnListFragment";
- private final WeakReferenceHandler weakReferenceHandler = new WeakReferenceHandler(this);
- private LightViewModel lightViewModel;
- private NormalRecyclerAdapter adapter;
- private List dataBeans = new ArrayList<>();
- private int pageIndex = 1;
- private boolean isRefresh, isLoadMore = false;
-
- @Override
- protected void setupTopBarLayout() {
-
- }
-
- @Override
- protected void initOnCreate(@Nullable Bundle savedInstanceState) {
- lightViewModel = new ViewModelProvider(this).get(LightViewModel.class);
- lightViewModel.getLightList(pageIndex);
- }
-
- @Override
- protected void observeRequestState() {
- lightViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- LoadingDialog.show(requireActivity(), "处理中,请稍后...");
- } else {
- LoadingDialog.dismiss();
- }
- }
- });
- }
-
- @Override
- protected void initEvent() {
- getBinding().refreshLayout.setOnRefreshListener(new OnRefreshListener() {
- @Override
- public void onRefresh(@NonNull final RefreshLayout refreshLayout) {
- isRefresh = true;
- //刷新之后页码重置
- pageIndex = 1;
- lightViewModel.getLightList(pageIndex);
- }
- });
- getBinding().refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
- @Override
- public void onLoadMore(@NonNull final RefreshLayout refreshLayout) {
- isLoadMore = true;
- pageIndex++;
- lightViewModel.getLightList(pageIndex);
- }
- });
-
- lightViewModel.lightListModel.observe(this, new Observer() {
- @Override
- public void onChanged(LightListBean resultBean) {
- if (resultBean.getCode() == 200) {
- List dataRows = resultBean.getData().getRows();
- if (isRefresh) {
- adapter.refresh(dataRows);
- getBinding().refreshLayout.finishRefresh();
- isRefresh = false;
- } else if (isLoadMore) {
- if (dataRows.size() == 0) {
- StringKit.show(requireContext(), "到底了,别拉了");
- }
- adapter.loadMore(dataRows);
- getBinding().refreshLayout.finishLoadMore();
- isLoadMore = false;
- } else {
- dataBeans = dataRows;
- weakReferenceHandler.sendEmptyMessage(20210623);
- }
- }
- }
- });
-
- lightViewModel.lightControlModel.observe(this, new Observer() {
- @Override
- public void onChanged(ActionResultBean resultBean) {
- if (resultBean.getCode() == 200) {
- //开灯指令发下去之后,虽然返回成功,但仅仅表示app发送指令到后台成功,但是开没开灯无法确定,所以,只能延迟几秒再刷新列表
- StringKit.show(requireContext(), "指令发送成功");
- weakReferenceHandler.sendEmptyMessageDelayed(20210624, 3000);
- }
- }
- });
-
- lightViewModel.lightDetailModel.observe(this, new Observer() {
- @Override
- public void onChanged(LightDetailBean resultBean) {
- new LightDetailDialog.Builder().setContext(requireContext()).setLightDetailBean(resultBean).build().show();
- }
- });
- }
-
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- if (msg.what == 20210623) {
- //首次加载数据
- if (dataBeans.size() == 0) {
- getBinding().emptyView.show("没有路灯数据", null);
- } else {
- getBinding().emptyView.hide();
- adapter = new NormalRecyclerAdapter(R.layout.item_light_recycleview, dataBeans) {
- @Override
- public void convertView(ViewHolder viewHolder, int position, LightListBean.DataBean.RowsBean item) {
- String statusName = item.getStatusName();
- viewHolder.setText(R.id.lightNameView, item.getLampName())
- .setText(R.id.lightStatusView, "已" + statusName);
-
- CardView statueTagView = viewHolder.getView(R.id.statueTagView);
- if (statusName.equals("灭灯")) {
- viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_off);
- statueTagView.setCardBackgroundColor(IntKit.convertColor(requireContext(), R.color.darkGray));
- } else if (statusName.equals("报警")) {
- viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_warning);
- statueTagView.setCardBackgroundColor(IntKit.convertColor(requireContext(), R.color.warnColor));
- } else {
- viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_on);
- statueTagView.setCardBackgroundColor(IntKit.convertColor(requireContext(), R.color.onLineColor));
- }
-
- viewHolder.setOnClickListener(R.id.lightSwitch, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- List lampIds = new ArrayList<>();
- lampIds.add(Long.parseLong(item.getLampId()));
-
- String statusName = item.getStatusName();
- String controlType;
- if (statusName.equals("灭灯")) {
- controlType = "1";
- } else {
- controlType = "0";
- }
- lightViewModel.controlLight(requireContext(), lampIds, controlType);
- }
- });
- }
- };
- getBinding().recyclerView.addItemDecoration(new RecyclerViewItemDivider(1, Color.LTGRAY));
- getBinding().recyclerView.setAdapter(adapter);
- adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() {
- @Override
- public void onItemClicked(int position, LightListBean.DataBean.RowsBean rowsBean) {
- String lampId = rowsBean.getLampId();
- if (TextUtils.isEmpty(lampId)) {
- StringKit.show(requireContext(), "错误,路灯编号为空");
- return;
- }
-
- lightViewModel.getLightDetail(requireContext(), lampId);
- }
- });
- }
- } else if (msg.what == 20210624) {
- isRefresh = true;
- pageIndex = 1;
- lightViewModel.getLightList(pageIndex);
- }
- return true;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/fragment/LightOnMapFragment.java b/app/src/main/java/com/casic/dcms/fragment/LightOnMapFragment.java
deleted file mode 100644
index db55ff0..0000000
--- a/app/src/main/java/com/casic/dcms/fragment/LightOnMapFragment.java
+++ /dev/null
@@ -1,441 +0,0 @@
-package com.casic.dcms.fragment;
-
-import android.annotation.SuppressLint;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.drawable.BitmapDrawable;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.amap.api.location.AMapLocation;
-import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
-import com.casic.dcms.bean.LightLocalBean;
-import com.casic.dcms.databinding.FragmentLightMapBinding;
-import com.casic.dcms.greendao.LightLocalBeanDao;
-import com.casic.dcms.model.ActionResultBean;
-import com.casic.dcms.model.LightMapBean;
-import com.casic.dcms.utils.ArcGisMapCreator;
-import com.casic.dcms.utils.AuthenticationHelper;
-import com.casic.dcms.utils.HttpRequestManager;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.LocationHelper;
-import com.casic.dcms.utils.callback.ILocationListener;
-import com.casic.dcms.vm.LightViewModel;
-import com.esri.arcgisruntime.concurrent.ListenableFuture;
-import com.esri.arcgisruntime.geometry.Point;
-import com.esri.arcgisruntime.geometry.SpatialReferences;
-import com.esri.arcgisruntime.mapping.ArcGISMap;
-import com.esri.arcgisruntime.mapping.Basemap;
-import com.esri.arcgisruntime.mapping.BasemapStyle;
-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.symbology.PictureMarkerSymbol;
-import com.esri.arcgisruntime.util.ListenableList;
-import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
-import com.pengxh.androidx.lite.kit.StringKit;
-import com.pengxh.androidx.lite.utils.LoadState;
-import com.pengxh.androidx.lite.utils.LoadingDialog;
-import com.pengxh.androidx.lite.utils.SaveKeyValues;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
-import com.qmuiteam.qmui.widget.popup.QMUIPopup;
-import com.qmuiteam.qmui.widget.popup.QMUIPopups;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-
-public class LightOnMapFragment extends AndroidxBaseFragment implements Handler.Callback {
-
- private static final String TAG = "LightOnMapFragment";
- private final WeakReferenceHandler weakReferenceHandler = new WeakReferenceHandler(this);
- private LightViewModel lightViewModel;
- private ListenableList graphicsOverlays;
- private ListenableList graphics;
- private double DELTA_L = LocaleConstant.DELTA_LNG_75;
- private LightLocalBeanDao lightLocalBeanDao;
-
- @Override
- protected void setupTopBarLayout() {
-
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initOnCreate(@Nullable Bundle savedInstanceState) {
- lightLocalBeanDao = BaseApplication.getDaoSession().getLightLocalBeanDao();
-
- lightViewModel = new ViewModelProvider(this).get(LightViewModel.class);
- lightViewModel.getLightOnMap(requireContext());
- lightViewModel.lightMapModel.observe(this, new Observer() {
- @Override
- public void onChanged(LightMapBean resultBean) {
- if (resultBean.getCode() == 200) {
- for (LightMapBean.DataBean dataBean : resultBean.getData()) {
- LightLocalBean bean = new LightLocalBean();
- bean.setControllerCode(dataBean.getControllerCode());
- bean.setLampCode(dataBean.getLampCode());
- String lampId = dataBean.getLampId();
- bean.setLampId(lampId);
- bean.setLatitude(dataBean.getLatitude());
- bean.setDeptId(dataBean.getDeptId());
- bean.setStatusName(dataBean.getStatusName());
- bean.setLampName(dataBean.getLampName());
- bean.setLatestTime(dataBean.getLatestTime());
- bean.setLongitude(dataBean.getLongitude());
- bean.setStatus(dataBean.getStatus());
-
- LightLocalBean uniqueBean = lightLocalBeanDao.queryBuilder().where(LightLocalBeanDao.Properties.LampId.eq(lampId)).unique();
- if (uniqueBean == null) {
- lightLocalBeanDao.insert(bean);
- } else {
- lightLocalBeanDao.update(bean);
- }
- }
- }
- }
- });
-
- lightViewModel.lightControlModel.observe(this, new Observer() {
- @Override
- public void onChanged(ActionResultBean resultBean) {
- if (resultBean.getCode() == 200) {
- //开灯指令发下去之后,虽然返回成功,但仅仅表示app发送指令到后台成功,但是开没开灯无法确定,所以,只能延迟几秒再刷新列表
- StringKit.show(requireContext(), "指令发送成功");
- weakReferenceHandler.sendEmptyMessageDelayed(20210624, 3000);
- }
- }
- });
- lightViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- LoadingDialog.show(requireActivity(), "处理中,请稍后...");
- } else {
- LoadingDialog.dismiss();
- }
- }
- });
-
- getBinding().mapView.setAttributionTextVisible(false);//去掉左下角属性标识
- ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS);
- //创建底图、并设置底图图层
- Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer());
- arcGISMap.setBasemap(basemap);
- Point point = new Point(LocaleConstant.DEFAULT_LNG, LocaleConstant.DEFAULT_LAT, SpatialReferences.getWgs84());
- getBinding().mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示
- getBinding().mapView.setMap(arcGISMap);
-
- //Marker相关Layer
- graphicsOverlays = getBinding().mapView.getGraphicsOverlays();
- //显示定位点附近路灯
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- getBinding().mapView.setViewpointCenterAsync(point, 2800);
-
- List streetLightBeans = lightLocalBeanDao.loadAll();
- List pointList = new ArrayList<>();
- for (LightLocalBean bean : streetLightBeans) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= LocaleConstant.DELTA_LNG_75 && Math.abs(latitude - gcjToWgs[1]) <= LocaleConstant.DELTA_LAT_75) {
- pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
-// if (Math.abs(longitude - Constant.DEFAULT_LNG) <= Constant.DELTA_LNG_75 &&
-// Math.abs(latitude - Constant.DEFAULT_LAT) <= Constant.DELTA_LAT_75) {
-// pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
-// }
- }
- addPictureMarker(pointList);
- }
- }
- }, true);
- }
-
- @SuppressLint("ClickableViewAccessibility")
- @Override
- protected void initEvent() {
- getBinding().expandMapView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- getBinding().mapView.setViewpointScaleAsync(getBinding().mapView.getMapScale() * 0.5);
- clearPictureMarker();
- //计算比例尺
- DELTA_L -= 0.0001;
- if (DELTA_L < 0) {
- DELTA_L = 0;
- }
-// List minusList = new ArrayList<>();
-// for (StreetLightLocalBean bean : lightBeans) {
-// double longitude = bean.getLongitude();
-// double latitude = bean.getLatitude();
-// if (Math.abs(longitude - Constant.DEFAULT_LNG) > DELTA_L ||
-// Math.abs(latitude - Constant.DEFAULT_LAT) > DELTA_L) {
-// continue;
-// }
-// minusList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
-// }
-// addPictureMarker(minusList);
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- List minusList = new ArrayList<>();
- for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= DELTA_L && Math.abs(latitude - gcjToWgs[1]) <= DELTA_L) {
- minusList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
- }
- addPictureMarker(minusList);
- }
- }
- }, true);
- }
- });
-
- getBinding().minusMapView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- getBinding().mapView.setViewpointScaleAsync(getBinding().mapView.getMapScale() * 2);
- clearPictureMarker();
- //计算比例尺
- DELTA_L += 0.0001;
- if (DELTA_L > 0.01) {
- DELTA_L = LocaleConstant.DELTA_LNG_75;
- }
-// List expandList = new ArrayList<>();
-// for (StreetLightLocalBean bean : lightBeans) {
-// double longitude = bean.getLongitude();
-// double latitude = bean.getLatitude();
-// if (Math.abs(longitude - Constant.DEFAULT_LNG) > DELTA_L ||
-// Math.abs(latitude - Constant.DEFAULT_LAT) > DELTA_L) {
-// continue;
-// }
-// expandList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
-// }
-// addPictureMarker(expandList);
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- List expandList = new ArrayList<>();
- for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= DELTA_L && Math.abs(latitude - gcjToWgs[1]) <= DELTA_L) {
- expandList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
- }
- addPictureMarker(expandList);
- }
- }
- }, true);
- }
- });
-
- getBinding().removeToLocalView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- clearPictureMarker();
- LoadingDialog.show(requireActivity(), "定位中,请稍后");
- LocationHelper.getCurrentLocation(requireContext(), new ILocationListener() {
-
- @Override
- public void onAMapLocationGet(AMapLocation aMapLocation) {
- if (aMapLocation != null) {
- double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
- Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
- List pointList = new ArrayList<>();
- for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
- double longitude = bean.getLongitude();
- double latitude = bean.getLatitude();
- if (Math.abs(longitude - gcjToWgs[0]) <= LocaleConstant.DELTA_LNG_75 && Math.abs(latitude - gcjToWgs[1]) <= LocaleConstant.DELTA_LAT_75) {
- pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
- }
- }
- addPictureMarker(pointList);
- getBinding().mapView.setViewpointCenterAsync(point, 3000);
- LoadingDialog.dismiss();
- }
- }
- }, true);
- }
- });
-
- getBinding().mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(requireContext(), getBinding().mapView) {
- @Override
- public boolean onSingleTapConfirmed(MotionEvent e) {
- List lightBeans = lightLocalBeanDao.loadAll();
- android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY()));
- 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 (LightLocalBean dataBean : lightBeans) {
- if (Math.abs(dataBean.getLongitude() - point.getX()) <= LocaleConstant.DELTA_LNG_10 && Math.abs(dataBean.getLatitude() - point.getY()) <= LocaleConstant.DELTA_LAT_10) {
- Message message = weakReferenceHandler.obtainMessage();
- message.what = 2021062401;
- message.obj = dataBean.getLampId();
- weakReferenceHandler.sendMessage(message);
- }
- }
- } else {
- weakReferenceHandler.sendEmptyMessage(2021062402);
- }
- } catch (InterruptedException | ExecutionException e) {
- e.printStackTrace();
- }
- }
- });
- return super.onSingleTapConfirmed(e);
- }
- });
- }
-
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- switch (msg.what) {
- case 2021062401:
- String lampId = (String) msg.obj;
-
- View popupView = LayoutInflater.from(requireContext()).inflate(R.layout.popu_street_light, null);
- TextView lightStateView = popupView.findViewById(R.id.lightStateView);
- TextView lightAddressView = popupView.findViewById(R.id.lightAddressView);
- TextView lightStreetView = popupView.findViewById(R.id.lightStreetView);
- TextView lightElecView = popupView.findViewById(R.id.lightElecView);
- TextView lightVolView = popupView.findViewById(R.id.lightVolView);
- TextView lightTimeView = popupView.findViewById(R.id.lightTimeView);
- ImageView lightSwitch = popupView.findViewById(R.id.lightSwitch);
-
- LoadingDialog.show(requireActivity(), "路灯详情获取中,请稍后...");
- String ip = (String) SaveKeyValues.getValue(LocaleConstant.IP_KEY, "http://111.198.10.15:11409");
- new HttpRequestManager.Builder()
- .setAuthentication("token", AuthenticationHelper.getToken())
- .setRequestTarget(ip + LocaleConstant.LIGHT_DETAIL + lampId)
- .setOnHttpRequestListener(new HttpRequestManager.OnHttpRequestListener() {
- @Override
- public void onSuccess(String result) {
- LoadingDialog.dismiss();
- try {
- JSONObject jsonObject = new JSONObject(result);
- int code = jsonObject.getInt("code");
- if (code == 200) {
- JSONObject dataObject = jsonObject.getJSONObject("data");
-
- String statusName = dataObject.getString("statusName");
- lightStateView.setText(statusName);
- lightAddressView.setText(dataObject.getString("address"));
- lightStreetView.setText(dataObject.getString("streetName"));
- lightElecView.setText(String.valueOf(dataObject.getDouble("latestElec")));
- lightVolView.setText(String.valueOf(dataObject.getDouble("latestVol")));
- lightTimeView.setText(dataObject.getString("latestTime"));
-
- QMUIPopups.popup(requireContext(), QMUIDisplayHelper.dp2px(requireContext(), 280)).preferredDirection(QMUIPopup.DIRECTION_BOTTOM).view(popupView).edgeProtection(QMUIDisplayHelper.dp2px(requireContext(), 20)).dimAmount(0.6f).animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER).onDismiss(null).show(getBinding().mapView);
-
- lightSwitch.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- List lampIds = new ArrayList<>();
- lampIds.add(Long.parseLong(lampId));
-
- String controlType;
- if (statusName.equals("离线")) {
- controlType = "1";
- } else {
- controlType = "0";
- }
- lightViewModel.controlLight(requireContext(), lampIds, controlType);
- }
- });
- } else {
- StringKit.show(requireContext(), "服务器异常,请重新选点");
- }
- } catch (JSONException e) {
- StringKit.show(requireContext(), "解析失败,请重新选点");
- }
- }
-
- @Override
- public void onFailure(Throwable throwable) {
- LoadingDialog.dismiss();
- StringKit.show(requireContext(), "网络连接失败,请重新选点");
- }
- }).build().start();
- break;
- case 2021062402:
- StringKit.show(requireContext(), "此附近无路灯,请重新选点");
- break;
- default:
- break;
- }
- return true;
- }
-
- private void addPictureMarker(List points) {
- for (Point point : points) {
- Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify);
- BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap);
- PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable);
- pictureMarker.setWidth(24);
- pictureMarker.setHeight(24);
- pictureMarker.loadAsync();
-
- GraphicsOverlay graphicsOverlay = new GraphicsOverlay();
- graphics = graphicsOverlay.getGraphics();
- graphics.add(new Graphic(point, pictureMarker));
- graphicsOverlays.add(graphicsOverlay);
- }
- }
-
- private void clearPictureMarker() {
- if (graphics != null && graphicsOverlays != null) {
- graphics.clear();
- graphicsOverlays.clear();
- }
- }
-
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- getBinding().mapView.dispose();
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/view/StreetlightManagerActivity.java b/app/src/main/java/com/casic/dcms/view/StreetlightManagerActivity.java
deleted file mode 100644
index 6640fd3..0000000
--- a/app/src/main/java/com/casic/dcms/view/StreetlightManagerActivity.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.casic.dcms.view;
-
-import android.os.Bundle;
-import android.widget.LinearLayout;
-
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-
-import com.casic.dcms.R;
-import com.casic.dcms.adapter.SubViewPagerAdapter;
-import com.casic.dcms.databinding.ActivityStreetLightBinding;
-import com.casic.dcms.fragment.LightOnListFragment;
-import com.casic.dcms.fragment.LightOnMapFragment;
-import com.casic.dcms.utils.LinearLayoutHelper;
-import com.casic.dcms.utils.ViewGroupHub;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class StreetlightManagerActivity extends AndroidxBaseActivity {
-
- private final String[] pageTitles = new String[]{"路灯分布", "路灯列表"};
-
- @Override
- protected void setupTopBarLayout() {
- ViewGroupHub.initImmersionBar(binding.rootView, this, true, R.color.white);
-
- binding.titleBarLayout.titleView.setText("路灯管理");
- binding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initOnCreate(@Nullable Bundle savedInstanceState) {
- List fragmentList = new ArrayList<>();
- fragmentList.add(new LightOnMapFragment());
- fragmentList.add(new LightOnListFragment());
- SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList);
- binding.viewPager.setAdapter(adapter);
- //绑定TabLayout
- binding.tabLayout.setupWithViewPager(binding.viewPager);
- LinearLayout linearLayout = (LinearLayout) binding.tabLayout.getChildAt(0);
- LinearLayoutHelper.setDivider(this, linearLayout);
- }
-
- @Override
- protected void initEvent() {
-
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/view/streetlight/LightOnMapActivity.java b/app/src/main/java/com/casic/dcms/view/streetlight/LightOnMapActivity.java
new file mode 100644
index 0000000..c09dbc8
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/streetlight/LightOnMapActivity.java
@@ -0,0 +1,454 @@
+package com.casic.dcms.view.streetlight;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.BitmapDrawable;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.amap.api.location.AMapLocation;
+import com.casic.dcms.R;
+import com.casic.dcms.base.BaseApplication;
+import com.casic.dcms.bean.LightLocalBean;
+import com.casic.dcms.databinding.ActivityStreetLightMapBinding;
+import com.casic.dcms.greendao.LightLocalBeanDao;
+import com.casic.dcms.model.ActionResultBean;
+import com.casic.dcms.model.LightDetailBean;
+import com.casic.dcms.model.LightMapBean;
+import com.casic.dcms.utils.ArcGisMapCreator;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.LocationHelper;
+import com.casic.dcms.utils.ViewGroupHub;
+import com.casic.dcms.utils.callback.ILocationListener;
+import com.casic.dcms.vm.LightViewModel;
+import com.esri.arcgisruntime.concurrent.ListenableFuture;
+import com.esri.arcgisruntime.geometry.Point;
+import com.esri.arcgisruntime.geometry.SpatialReferences;
+import com.esri.arcgisruntime.mapping.ArcGISMap;
+import com.esri.arcgisruntime.mapping.Basemap;
+import com.esri.arcgisruntime.mapping.BasemapStyle;
+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.symbology.PictureMarkerSymbol;
+import com.esri.arcgisruntime.util.ListenableList;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.kit.StringKit;
+import com.pengxh.androidx.lite.utils.LoadState;
+import com.pengxh.androidx.lite.utils.LoadingDialog;
+import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
+import com.pengxh.androidx.lite.widget.TitleBarView;
+import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.qmuiteam.qmui.widget.popup.QMUIPopup;
+import com.qmuiteam.qmui.widget.popup.QMUIPopups;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+
+public class LightOnMapActivity extends AndroidxBaseActivity implements Handler.Callback {
+
+ private static final String TAG = "LightOnMapFragment";
+ private final Context context = this;
+ private final WeakReferenceHandler weakReferenceHandler = new WeakReferenceHandler(this);
+ private LightViewModel lightViewModel;
+ private ListenableList graphicsOverlays;
+ private ListenableList graphics;
+ private double DELTA_L = LocaleConstant.DELTA_LNG_75;
+ private LightLocalBeanDao lightLocalBeanDao;
+ private boolean isControlLight = false;
+ private boolean isGetLightDetail = false;
+
+ @Override
+ protected void setupTopBarLayout() {
+ ViewGroupHub.initImmersionBar(binding.rootView, this, true, R.color.white);
+ binding.titleView.setOnClickListener(new TitleBarView.OnClickListener() {
+ @Override
+ public void onLeftClick() {
+ finish();
+ }
+
+ @Override
+ public void onRightClick() {
+
+ }
+ });
+ }
+
+ @Override
+ protected void observeRequestState() {
+ lightViewModel.loadState.observe(this, new Observer() {
+ @Override
+ public void onChanged(LoadState loadState) {
+ if (isControlLight) {
+ if (loadState == LoadState.Loading) {
+ LoadingDialog.show(LightOnMapActivity.this, "处理中,请稍后...");
+ } else {
+ LoadingDialog.dismiss();
+ }
+ } else if (isGetLightDetail) {
+ if (loadState == LoadState.Loading) {
+ LoadingDialog.show(LightOnMapActivity.this, "路灯详情获取中,请稍后...");
+ } else {
+ LoadingDialog.dismiss();
+ }
+ } else {
+ if (loadState == LoadState.Loading) {
+ LoadingDialog.show(LightOnMapActivity.this, "数据加载中,请稍后...");
+ } else {
+ LoadingDialog.dismiss();
+ }
+ }
+ }
+ });
+ }
+
+ @Override
+ protected void initOnCreate(@Nullable Bundle savedInstanceState) {
+ lightLocalBeanDao = BaseApplication.getDaoSession().getLightLocalBeanDao();
+
+ lightViewModel = new ViewModelProvider(this).get(LightViewModel.class);
+ lightViewModel.getLightOnMap(this);
+ lightViewModel.lightMapModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(LightMapBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ for (LightMapBean.DataBean dataBean : resultBean.getData()) {
+ LightLocalBean bean = new LightLocalBean();
+ bean.setControllerCode(dataBean.getControllerCode());
+ bean.setLampCode(dataBean.getLampCode());
+ String lampId = dataBean.getLampId();
+ bean.setLampId(lampId);
+ bean.setLatitude(dataBean.getLatitude());
+ bean.setDeptId(dataBean.getDeptId());
+ bean.setStatusName(dataBean.getStatusName());
+ bean.setLampName(dataBean.getLampName());
+ bean.setLatestTime(dataBean.getLatestTime());
+ bean.setLongitude(dataBean.getLongitude());
+ bean.setStatus(dataBean.getStatus());
+
+ LightLocalBean uniqueBean = lightLocalBeanDao.queryBuilder().where(LightLocalBeanDao.Properties.LampId.eq(lampId)).unique();
+ if (uniqueBean == null) {
+ lightLocalBeanDao.insert(bean);
+ } else {
+ lightLocalBeanDao.update(bean);
+ }
+ }
+ }
+ }
+ });
+
+ lightViewModel.lightDetailModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(LightDetailBean resultBean) {
+ isGetLightDetail = false;
+
+ View popupView = LayoutInflater.from(context).inflate(R.layout.popu_street_light, null);
+
+ TextView lightStateView = popupView.findViewById(R.id.lightStateView);
+ TextView lightAddressView = popupView.findViewById(R.id.lightAddressView);
+ TextView lightStreetView = popupView.findViewById(R.id.lightStreetView);
+ TextView lightElecView = popupView.findViewById(R.id.lightElecView);
+ TextView lightVolView = popupView.findViewById(R.id.lightVolView);
+ TextView lightTimeView = popupView.findViewById(R.id.lightTimeView);
+ ImageView lightSwitch = popupView.findViewById(R.id.lightSwitch);
+
+ LightDetailBean.DataModel data = resultBean.getData();
+ String statusName = data.getStatusName();
+ lightStateView.setText(statusName);
+ lightAddressView.setText(data.getAddress());
+ lightStreetView.setText(data.getStreetName());
+ lightElecView.setText(String.format("%sA", data.getLatestElec()));
+ lightVolView.setText(String.format("%sA", data.getLatestVol()));
+ lightTimeView.setText(data.getLatestTime());
+
+ QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 280))
+ .preferredDirection(QMUIPopup.DIRECTION_BOTTOM).view(popupView)
+ .edgeProtection(QMUIDisplayHelper.dp2px(context, 20))
+ .dimAmount(0.6f).animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER)
+ .onDismiss(null).show(binding.mapView);
+
+ lightSwitch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ isControlLight = true;
+ List lampIds = new ArrayList<>();
+ lampIds.add(Long.parseLong(data.getLampId()));
+
+ String controlType;
+ if (statusName.equals("灭灯")) {
+ controlType = "1";
+ } else {
+ controlType = "0";
+ }
+ lightViewModel.controlLight(context, lampIds, controlType);
+ }
+ });
+ }
+ });
+
+ lightViewModel.lightControlModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(ActionResultBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ isControlLight = false;
+ //开灯指令发下去之后,虽然返回成功,但仅仅表示app发送指令到后台成功,但是开没开灯无法确定,所以,只能延迟几秒再刷新列表
+ StringKit.show(context, "指令发送成功");
+ weakReferenceHandler.sendEmptyMessageDelayed(20210624, 3000);
+ }
+ }
+ });
+
+ binding.mapView.setAttributionTextVisible(false);//去掉左下角属性标识
+ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS);
+ //创建底图、并设置底图图层
+ Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer());
+ arcGISMap.setBasemap(basemap);
+ Point point = new Point(LocaleConstant.DEFAULT_LNG, LocaleConstant.DEFAULT_LAT, SpatialReferences.getWgs84());
+ binding.mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示
+ binding.mapView.setMap(arcGISMap);
+
+ //Marker相关Layer
+ graphicsOverlays = binding.mapView.getGraphicsOverlays();
+ //显示定位点附近路灯
+ LocationHelper.getCurrentLocation(this, new ILocationListener() {
+
+ @Override
+ public void onAMapLocationGet(AMapLocation aMapLocation) {
+ if (aMapLocation != null) {
+ double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
+ Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
+ binding.mapView.setViewpointCenterAsync(point, 2800);
+
+ List streetLightBeans = lightLocalBeanDao.loadAll();
+ List pointList = new ArrayList<>();
+ for (LightLocalBean bean : streetLightBeans) {
+ double longitude = bean.getLongitude();
+ double latitude = bean.getLatitude();
+ if (Math.abs(longitude - gcjToWgs[0]) <= LocaleConstant.DELTA_LNG_75 && Math.abs(latitude - gcjToWgs[1]) <= LocaleConstant.DELTA_LAT_75) {
+ pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+ }
+// if (Math.abs(longitude - Constant.DEFAULT_LNG) <= Constant.DELTA_LNG_75 &&
+// Math.abs(latitude - Constant.DEFAULT_LAT) <= Constant.DELTA_LAT_75) {
+// pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+// }
+ }
+ addPictureMarker(pointList);
+ }
+ }
+ }, true);
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ protected void initEvent() {
+ binding.expandMapView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ binding.mapView.setViewpointScaleAsync(binding.mapView.getMapScale() * 0.5);
+ clearPictureMarker();
+ //计算比例尺
+ DELTA_L -= 0.0001;
+ if (DELTA_L < 0) {
+ DELTA_L = 0;
+ }
+// List minusList = new ArrayList<>();
+// for (StreetLightLocalBean bean : lightBeans) {
+// double longitude = bean.getLongitude();
+// double latitude = bean.getLatitude();
+// if (Math.abs(longitude - Constant.DEFAULT_LNG) > DELTA_L ||
+// Math.abs(latitude - Constant.DEFAULT_LAT) > DELTA_L) {
+// continue;
+// }
+// minusList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+// }
+// addPictureMarker(minusList);
+ LocationHelper.getCurrentLocation(context, new ILocationListener() {
+
+ @Override
+ public void onAMapLocationGet(AMapLocation aMapLocation) {
+ if (aMapLocation != null) {
+ double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
+ Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
+ List minusList = new ArrayList<>();
+ for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
+ double longitude = bean.getLongitude();
+ double latitude = bean.getLatitude();
+ if (Math.abs(longitude - gcjToWgs[0]) <= DELTA_L && Math.abs(latitude - gcjToWgs[1]) <= DELTA_L) {
+ minusList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+ }
+ }
+ addPictureMarker(minusList);
+ }
+ }
+ }, true);
+ }
+ });
+
+ binding.minusMapView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ binding.mapView.setViewpointScaleAsync(binding.mapView.getMapScale() * 2);
+ clearPictureMarker();
+ //计算比例尺
+ DELTA_L += 0.0001;
+ if (DELTA_L > 0.01) {
+ DELTA_L = LocaleConstant.DELTA_LNG_75;
+ }
+// List expandList = new ArrayList<>();
+// for (StreetLightLocalBean bean : lightBeans) {
+// double longitude = bean.getLongitude();
+// double latitude = bean.getLatitude();
+// if (Math.abs(longitude - Constant.DEFAULT_LNG) > DELTA_L ||
+// Math.abs(latitude - Constant.DEFAULT_LAT) > DELTA_L) {
+// continue;
+// }
+// expandList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+// }
+// addPictureMarker(expandList);
+ LocationHelper.getCurrentLocation(context, new ILocationListener() {
+
+ @Override
+ public void onAMapLocationGet(AMapLocation aMapLocation) {
+ if (aMapLocation != null) {
+ double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
+ Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
+ List expandList = new ArrayList<>();
+ for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
+ double longitude = bean.getLongitude();
+ double latitude = bean.getLatitude();
+ if (Math.abs(longitude - gcjToWgs[0]) <= DELTA_L && Math.abs(latitude - gcjToWgs[1]) <= DELTA_L) {
+ expandList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+ }
+ }
+ addPictureMarker(expandList);
+ }
+ }
+ }, true);
+ }
+ });
+
+ binding.removeToLocalView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ clearPictureMarker();
+ LoadingDialog.show(LightOnMapActivity.this, "定位中,请稍后");
+ LocationHelper.getCurrentLocation(context, new ILocationListener() {
+
+ @Override
+ public void onAMapLocationGet(AMapLocation aMapLocation) {
+ if (aMapLocation != null) {
+ double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude());
+ Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReferences.getWgs84());
+ List pointList = new ArrayList<>();
+ for (LightLocalBean bean : lightLocalBeanDao.loadAll()) {
+ double longitude = bean.getLongitude();
+ double latitude = bean.getLatitude();
+ if (Math.abs(longitude - gcjToWgs[0]) <= LocaleConstant.DELTA_LNG_75 && Math.abs(latitude - gcjToWgs[1]) <= LocaleConstant.DELTA_LAT_75) {
+ pointList.add(new Point(longitude, latitude, SpatialReferences.getWgs84()));
+ }
+ }
+ addPictureMarker(pointList);
+ binding.mapView.setViewpointCenterAsync(point, 3000);
+ LoadingDialog.dismiss();
+ }
+ }
+ }, true);
+ }
+ });
+
+ binding.mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(context, binding.mapView) {
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+ List lightBeans = lightLocalBeanDao.loadAll();
+ android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY()));
+ 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 (LightLocalBean dataBean : lightBeans) {
+ if (Math.abs(dataBean.getLongitude() - point.getX()) <= LocaleConstant.DELTA_LNG_10 && Math.abs(dataBean.getLatitude() - point.getY()) <= LocaleConstant.DELTA_LAT_10) {
+ Message message = weakReferenceHandler.obtainMessage();
+ message.what = 2021062401;
+ message.obj = dataBean.getLampId();
+ weakReferenceHandler.sendMessage(message);
+ }
+ }
+ } else {
+ weakReferenceHandler.sendEmptyMessage(2021062402);
+ }
+ } catch (InterruptedException | ExecutionException e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ return super.onSingleTapConfirmed(e);
+ }
+ });
+ }
+
+ @Override
+ public boolean handleMessage(@NonNull Message msg) {
+ switch (msg.what) {
+ case 2021062401:
+ String lampId = (String) msg.obj;
+ if (TextUtils.isEmpty(lampId)) {
+ StringKit.show(context, "错误,路灯编号为空");
+ return true;
+ }
+
+ isGetLightDetail = true;
+ lightViewModel.getLightDetail(context, lampId);
+ break;
+ case 2021062402:
+ StringKit.show(context, "此附近无路灯,请重新选点");
+ break;
+ default:
+ break;
+ }
+ return true;
+ }
+
+ private void addPictureMarker(List points) {
+ for (Point point : points) {
+ Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify);
+ BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap);
+ PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable);
+ pictureMarker.setWidth(24);
+ pictureMarker.setHeight(24);
+ pictureMarker.loadAsync();
+
+ GraphicsOverlay graphicsOverlay = new GraphicsOverlay();
+ graphics = graphicsOverlay.getGraphics();
+ graphics.add(new Graphic(point, pictureMarker));
+ graphicsOverlays.add(graphicsOverlay);
+ }
+ }
+
+ private void clearPictureMarker() {
+ if (graphics != null && graphicsOverlays != null) {
+ graphics.clear();
+ graphicsOverlays.clear();
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/streetlight/StreetlightManagerActivity.java b/app/src/main/java/com/casic/dcms/view/streetlight/StreetlightManagerActivity.java
new file mode 100644
index 0000000..15b3de9
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/streetlight/StreetlightManagerActivity.java
@@ -0,0 +1,230 @@
+package com.casic.dcms.view.streetlight;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.text.TextUtils;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.cardview.widget.CardView;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.casic.dcms.R;
+import com.casic.dcms.adapter.NormalRecyclerAdapter;
+import com.casic.dcms.databinding.ActivityStreetLightBinding;
+import com.casic.dcms.model.ActionResultBean;
+import com.casic.dcms.model.LightDetailBean;
+import com.casic.dcms.model.LightListBean;
+import com.casic.dcms.utils.ViewGroupHub;
+import com.casic.dcms.vm.LightViewModel;
+import com.casic.dcms.widgets.LightDetailDialog;
+import com.pengxh.androidx.lite.adapter.ViewHolder;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.divider.RecyclerViewItemDivider;
+import com.pengxh.androidx.lite.kit.ContextKit;
+import com.pengxh.androidx.lite.kit.IntKit;
+import com.pengxh.androidx.lite.kit.StringKit;
+import com.pengxh.androidx.lite.utils.LoadState;
+import com.pengxh.androidx.lite.utils.LoadingDialog;
+import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
+import com.pengxh.androidx.lite.widget.TitleBarView;
+import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
+import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class StreetlightManagerActivity extends AndroidxBaseActivity implements Handler.Callback {
+
+ private final Context context = this;
+ private final WeakReferenceHandler weakReferenceHandler = new WeakReferenceHandler(this);
+ private LightViewModel lightViewModel;
+ private NormalRecyclerAdapter adapter;
+ private List dataBeans = new ArrayList<>();
+ private int pageIndex = 1;
+ private boolean isRefresh, isLoadMore = false;
+ private boolean isControlLight = false;
+
+ @Override
+ protected void setupTopBarLayout() {
+ ViewGroupHub.initImmersionBar(binding.rootView, this, true, R.color.white);
+ binding.titleView.setOnClickListener(new TitleBarView.OnClickListener() {
+ @Override
+ public void onLeftClick() {
+ finish();
+ }
+
+ @Override
+ public void onRightClick() {
+ ContextKit.navigatePageTo(context, LightOnMapActivity.class);
+ }
+ });
+ }
+
+ @Override
+ protected void observeRequestState() {
+ lightViewModel.loadState.observe(this, new Observer() {
+ @Override
+ public void onChanged(LoadState loadState) {
+ if (isControlLight) {
+ if (loadState == LoadState.Loading) {
+ LoadingDialog.show(StreetlightManagerActivity.this, "处理中,请稍后...");
+ } else {
+ LoadingDialog.dismiss();
+ }
+ } else {
+ if (loadState == LoadState.Loading) {
+ LoadingDialog.show(StreetlightManagerActivity.this, "数据加载中,请稍后...");
+ } else {
+ LoadingDialog.dismiss();
+ }
+ }
+ }
+ });
+ }
+
+ @Override
+ protected void initOnCreate(@Nullable Bundle savedInstanceState) {
+ lightViewModel = new ViewModelProvider(this).get(LightViewModel.class);
+ lightViewModel.getLightList(this, pageIndex);
+ }
+
+ @Override
+ protected void initEvent() {
+ binding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
+ @Override
+ public void onRefresh(@NonNull final RefreshLayout refreshLayout) {
+ isRefresh = true;
+ //刷新之后页码重置
+ pageIndex = 1;
+ lightViewModel.getLightList(context, pageIndex);
+ }
+ });
+ binding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
+ @Override
+ public void onLoadMore(@NonNull final RefreshLayout refreshLayout) {
+ isLoadMore = true;
+ pageIndex++;
+ lightViewModel.getLightList(context, pageIndex);
+ }
+ });
+
+ lightViewModel.lightListModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(LightListBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ List dataRows = resultBean.getData().getRows();
+ if (isRefresh) {
+ adapter.refresh(dataRows);
+ binding.refreshLayout.finishRefresh();
+ isRefresh = false;
+ } else if (isLoadMore) {
+ if (dataRows.size() == 0) {
+ StringKit.show(context, "到底了,别拉了");
+ }
+ adapter.loadMore(dataRows);
+ binding.refreshLayout.finishLoadMore();
+ isLoadMore = false;
+ } else {
+ dataBeans = dataRows;
+ weakReferenceHandler.sendEmptyMessage(20210623);
+ }
+ }
+ }
+ });
+
+ lightViewModel.lightControlModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(ActionResultBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ isControlLight = false;
+ //开灯指令发下去之后,虽然返回成功,但仅仅表示app发送指令到后台成功,但是开没开灯无法确定,所以,只能延迟几秒再刷新列表
+ StringKit.show(context, "指令发送成功");
+ weakReferenceHandler.sendEmptyMessageDelayed(20210624, 3000);
+ }
+ }
+ });
+
+ lightViewModel.lightDetailModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(LightDetailBean resultBean) {
+ new LightDetailDialog.Builder().setContext(context).setLightDetailBean(resultBean).build().show();
+ }
+ });
+ }
+
+ @Override
+ public boolean handleMessage(@NonNull Message msg) {
+ if (msg.what == 20210623) {
+ //首次加载数据
+ if (dataBeans.size() == 0) {
+ binding.emptyView.show("没有路灯数据", null);
+ } else {
+ binding.emptyView.hide();
+ adapter = new NormalRecyclerAdapter(R.layout.item_light_recycleview, dataBeans) {
+ @Override
+ public void convertView(ViewHolder viewHolder, int position, LightListBean.DataBean.RowsBean item) {
+ String statusName = item.getStatusName();
+ viewHolder.setText(R.id.lightNameView, item.getLampName())
+ .setText(R.id.lightStatusView, "已" + statusName);
+
+ CardView statueTagView = viewHolder.getView(R.id.statueTagView);
+ if (statusName.equals("灭灯")) {
+ viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_off);
+ statueTagView.setCardBackgroundColor(IntKit.convertColor(context, R.color.darkGray));
+ } else if (statusName.equals("报警")) {
+ viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_warning);
+ statueTagView.setCardBackgroundColor(IntKit.convertColor(context, R.color.warnColor));
+ } else {
+ viewHolder.setImageResource(R.id.lightSwitch, R.drawable.ic_switch_on);
+ statueTagView.setCardBackgroundColor(IntKit.convertColor(context, R.color.onLineColor));
+ }
+
+ viewHolder.setOnClickListener(R.id.lightSwitch, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ isControlLight = true;
+ List lampIds = new ArrayList<>();
+ lampIds.add(Long.parseLong(item.getLampId()));
+
+ String statusName = item.getStatusName();
+ String controlType;
+ if (statusName.equals("灭灯")) {
+ controlType = "1";
+ } else {
+ controlType = "0";
+ }
+ lightViewModel.controlLight(context, lampIds, controlType);
+ }
+ });
+ }
+ };
+ binding.recyclerView.addItemDecoration(new RecyclerViewItemDivider(1, Color.LTGRAY));
+ binding.recyclerView.setAdapter(adapter);
+ adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() {
+ @Override
+ public void onItemClicked(int position, LightListBean.DataBean.RowsBean rowsBean) {
+ String lampId = rowsBean.getLampId();
+ if (TextUtils.isEmpty(lampId)) {
+ StringKit.show(context, "错误,路灯编号为空");
+ return;
+ }
+
+ lightViewModel.getLightDetail(context, lampId);
+ }
+ });
+ }
+ } else if (msg.what == 20210624) {
+ isRefresh = true;
+ pageIndex = 1;
+ lightViewModel.getLightList(this, pageIndex);
+ }
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/vm/LightViewModel.java b/app/src/main/java/com/casic/dcms/vm/LightViewModel.java
index 21d704c..9219a59 100644
--- a/app/src/main/java/com/casic/dcms/vm/LightViewModel.java
+++ b/app/src/main/java/com/casic/dcms/vm/LightViewModel.java
@@ -31,17 +31,18 @@
public MutableLiveData lightMapModel = new MutableLiveData<>();
public MutableLiveData lightDetailModel = new MutableLiveData<>();
- public void getLightList(int offset) {
+ public void getLightList(Context context, int offset) {
+ loadState.setValue(LoadState.Loading);
Observable observable = RetrofitServiceManager.getLightListResult(offset);
ObserverSubscriber.addSubscribe(observable, new ObserverSubscriber.OnObserverCallback() {
@Override
public void onCompleted() {
-
+ loadState.setValue(LoadState.Success);
}
@Override
public void onError(Throwable e) {
-
+ loadState.setValue(LoadState.Fail);
}
@Override
@@ -53,6 +54,10 @@
LightListBean listBean = gson.fromJson(response, new TypeToken() {
}.getType());
lightListModel.setValue(listBean);
+ loadState.setValue(LoadState.Success);
+ } else {
+ loadState.setValue(LoadState.Fail);
+ StringKit.show(context, StringHelper.getResponseMessage(response));
}
} catch (IOException e) {
e.printStackTrace();
@@ -97,16 +102,17 @@
}
public void getLightOnMap(Context context) {
+ loadState.setValue(LoadState.Loading);
Observable observable = RetrofitServiceManager.getLightListResult();
ObserverSubscriber.addSubscribe(observable, new ObserverSubscriber.OnObserverCallback() {
@Override
public void onCompleted() {
-
+ loadState.setValue(LoadState.Success);
}
@Override
public void onError(Throwable e) {
-
+ loadState.setValue(LoadState.Fail);
}
@Override
@@ -118,7 +124,9 @@
LightMapBean listBean = gson.fromJson(response, new TypeToken() {
}.getType());
lightMapModel.setValue(listBean);
+ loadState.setValue(LoadState.Success);
} else {
+ loadState.setValue(LoadState.Fail);
StringKit.show(context, StringHelper.getResponseMessage(response));
}
} catch (IOException e) {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fd91f6c..d329792 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -123,7 +123,8 @@
-
+
+
diff --git a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
index bd5e484..97254a7 100644
--- a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java
@@ -19,7 +19,6 @@
import com.casic.dcms.view.OvertimeCaseActivity;
import com.casic.dcms.view.PersonActivity;
import com.casic.dcms.view.SearchCaseActivity;
-import com.casic.dcms.view.StreetlightManagerActivity;
import com.casic.dcms.view.UrgentCaseActivity;
import com.casic.dcms.view.bridge.BridgeMaintainActivity;
import com.casic.dcms.view.business.ChangeShopInfoActivity;
@@ -30,6 +29,7 @@
import com.casic.dcms.view.map.CaseOnMapActivity;
import com.casic.dcms.view.pipeline.PipelineManagerActivity;
import com.casic.dcms.view.statistics.DataAnalysisActivity;
+import com.casic.dcms.view.streetlight.StreetlightManagerActivity;
import com.casic.dcms.view.toilet.PublicToiletActivity;
import com.casic.dcms.view.upload.BriefCaseActivity;
import com.casic.dcms.view.upload.BusinessCaseActivity;
diff --git a/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java b/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java
deleted file mode 100644
index a9cc331..0000000
--- a/app/src/main/java/com/casic/dcms/fragment/LightOnListFragment.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package com.casic.dcms.fragment;
-
-import android.graphics.Color;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.text.TextUtils;
-import android.view.View;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.cardview.widget.CardView;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.casic.dcms.R;
-import com.casic.dcms.adapter.NormalRecyclerAdapter;
-import com.casic.dcms.databinding.FragmentLightListBinding;
-import com.casic.dcms.model.ActionResultBean;
-import com.casic.dcms.model.LightDetailBean;
-import com.casic.dcms.model.LightListBean;
-import com.casic.dcms.vm.LightViewModel;
-import com.casic.dcms.widgets.LightDetailDialog;
-import com.pengxh.androidx.lite.adapter.ViewHolder;
-import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
-import com.pengxh.androidx.lite.divider.RecyclerViewItemDivider;
-import com.pengxh.androidx.lite.kit.IntKit;
-import com.pengxh.androidx.lite.kit.StringKit;
-import com.pengxh.androidx.lite.utils.LoadState;
-import com.pengxh.androidx.lite.utils.LoadingDialog;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
-import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class LightOnListFragment extends AndroidxBaseFragment implements Handler.Callback {
-
- private static final String TAG = "LightOnListFragment";
- private final WeakReferenceHandler weakReferenceHandler = new WeakReferenceHandler(this);
- private LightViewModel lightViewModel;
- private NormalRecyclerAdapter adapter;
- private List dataBeans = new ArrayList<>();
- private int pageIndex = 1;
- private boolean isRefresh, isLoadMore = false;
-
- @Override
- protected void setupTopBarLayout() {
-
- }
-
- @Override
- protected void initOnCreate(@Nullable Bundle savedInstanceState) {
- lightViewModel = new ViewModelProvider(this).get(LightViewModel.class);
- lightViewModel.getLightList(pageIndex);
- }
-
- @Override
- protected void observeRequestState() {
- lightViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- LoadingDialog.show(requireActivity(), "处理中,请稍后...");
- } else {
- LoadingDialog.dismiss();
- }
- }
- });
- }
-
- @Override
- protected void initEvent() {
- getBinding().refreshLayout.setOnRefreshListener(new OnRefreshListener() {
- @Override
- public void onRefresh(@NonNull final RefreshLayout refreshLayout) {
- isRefresh = true;
- //刷新之后页码重置
- pageIndex = 1;
- lightViewModel.getLightList(pageIndex);
- }
- });
- getBinding().refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
- @Override
- public void onLoadMore(@NonNull final RefreshLayout refreshLayout) {
- isLoadMore = true;
- pageIndex++;
- lightViewModel.getLightList(pageIndex);
- }
- });
-
- lightViewModel.lightListModel.observe(this, new Observer() {
- @Override
- public void onChanged(LightListBean resultBean) {
- if (resultBean.getCode() == 200) {
- List