diff --git a/.gitignore b/.gitignore
index f0f71e2..ee6b213 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,12 @@
*.iml
.gradle
/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
+/.idea
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
.idea
+*.apk
+*.json
diff --git a/.gitignore b/.gitignore
index f0f71e2..ee6b213 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,12 @@
*.iml
.gradle
/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
+/.idea
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
.idea
+*.apk
+*.json
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fdb7255..6873489 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -109,7 +109,7 @@
-
+
diff --git a/.gitignore b/.gitignore
index f0f71e2..ee6b213 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,12 @@
*.iml
.gradle
/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
+/.idea
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
.idea
+*.apk
+*.json
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fdb7255..6873489 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -109,7 +109,7 @@
-
+
diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
index 2dcdc64..0364fc7 100644
--- a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
+++ b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
@@ -9,6 +9,7 @@
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
@@ -25,7 +26,6 @@
private final Context context;
private final List dataRows;
private final LayoutInflater layoutInflater;
- private PunishTypeAdapter adapter;
public PackageCaseListAdapter(Context context, List dataRows) {
this.context = context;
@@ -36,7 +36,7 @@
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv, parent, false));
+ return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv_l, parent, false));
}
@Override
@@ -57,16 +57,67 @@
return dataRows.size();
}
- @SuppressLint("NotifyDataSetChanged")
- public void refresh(List dataRows) {
- this.dataRows.clear();
- this.dataRows.addAll(dataRows);
- notifyDataSetChanged();
+ public void refresh(List newRows) {
+ DiffUtil.Callback diffCallback = new DiffUtil.Callback() {
+
+ @Override
+ public int getOldListSize() {
+ return dataRows.size();
+ }
+
+ @Override
+ public int getNewListSize() {
+ return newRows.size();
+ }
+
+ @Override
+ public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
+ if (dataRows == null || newRows == null) {
+ return false;
+ }
+
+ // 检查索引是否在有效范围内
+ if (oldItemPosition < 0 || oldItemPosition >= dataRows.size() ||
+ newItemPosition < 0 || newItemPosition >= newRows.size()) {
+ return false;
+ }
+
+ // 获取元素并进行比较
+ Object oldItem = dataRows.get(oldItemPosition);
+ Object newItem = newRows.get(newItemPosition);
+
+ // 处理空指针情况
+ if (oldItem == null && newItem == null) {
+ return true;
+ }
+ if (oldItem == null || newItem == null) {
+ return false;
+ }
+
+ return oldItem.equals(newItem);
+ }
+
+ @Override
+ public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
+ return dataRows.get(oldItemPosition) == newRows.get(newItemPosition);
+ }
+ };
+
+ DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);
+
+ dataRows.clear();
+ dataRows.addAll(newRows);
+
+ diffResult.dispatchUpdatesTo(this);
}
- public void loadMore(List dataRows) {
- this.dataRows.addAll(dataRows);
- notifyItemRangeInserted(this.dataRows.size(), dataRows.size());
+ public void loadMore(List newRows) {
+ if (newRows.isEmpty()) {
+ return;
+ }
+ int startPosition = this.dataRows.size();
+ this.dataRows.addAll(newRows);
+ notifyItemRangeInserted(startPosition, newRows.size());
}
class ItemViewHolder extends RecyclerView.ViewHolder {
@@ -84,7 +135,6 @@
casePunishView = itemView.findViewById(R.id.casePunishView);
}
-
void bindView(PackageCaseBean.DataBean.RowsBean rowsBean) {
//三包核实图片
String fileIdVerify = rowsBean.getFileIdVerify();
@@ -97,45 +147,6 @@
}
caseTitleView.setText(rowsBean.getDescription());
caseDateView.setText("上报时间:" + rowsBean.getReportTime());
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class);
-// if (punishTypeBean.getData().size() != 0) {
-// //获取商铺处罚次数
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class);
-//
-// adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData());
-// LinearLayoutManager layoutManager = new LinearLayoutManager(context);
-// layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
-// punishRecyclerView.setLayoutManager(layoutManager);
-// punishRecyclerView.setAdapter(adapter);
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
-// }
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
}
}
diff --git a/.gitignore b/.gitignore
index f0f71e2..ee6b213 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,12 @@
*.iml
.gradle
/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
+/.idea
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
.idea
+*.apk
+*.json
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fdb7255..6873489 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -109,7 +109,7 @@
-
+
diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
index 2dcdc64..0364fc7 100644
--- a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
+++ b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
@@ -9,6 +9,7 @@
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
@@ -25,7 +26,6 @@
private final Context context;
private final List dataRows;
private final LayoutInflater layoutInflater;
- private PunishTypeAdapter adapter;
public PackageCaseListAdapter(Context context, List dataRows) {
this.context = context;
@@ -36,7 +36,7 @@
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv, parent, false));
+ return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv_l, parent, false));
}
@Override
@@ -57,16 +57,67 @@
return dataRows.size();
}
- @SuppressLint("NotifyDataSetChanged")
- public void refresh(List dataRows) {
- this.dataRows.clear();
- this.dataRows.addAll(dataRows);
- notifyDataSetChanged();
+ public void refresh(List newRows) {
+ DiffUtil.Callback diffCallback = new DiffUtil.Callback() {
+
+ @Override
+ public int getOldListSize() {
+ return dataRows.size();
+ }
+
+ @Override
+ public int getNewListSize() {
+ return newRows.size();
+ }
+
+ @Override
+ public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
+ if (dataRows == null || newRows == null) {
+ return false;
+ }
+
+ // 检查索引是否在有效范围内
+ if (oldItemPosition < 0 || oldItemPosition >= dataRows.size() ||
+ newItemPosition < 0 || newItemPosition >= newRows.size()) {
+ return false;
+ }
+
+ // 获取元素并进行比较
+ Object oldItem = dataRows.get(oldItemPosition);
+ Object newItem = newRows.get(newItemPosition);
+
+ // 处理空指针情况
+ if (oldItem == null && newItem == null) {
+ return true;
+ }
+ if (oldItem == null || newItem == null) {
+ return false;
+ }
+
+ return oldItem.equals(newItem);
+ }
+
+ @Override
+ public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
+ return dataRows.get(oldItemPosition) == newRows.get(newItemPosition);
+ }
+ };
+
+ DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);
+
+ dataRows.clear();
+ dataRows.addAll(newRows);
+
+ diffResult.dispatchUpdatesTo(this);
}
- public void loadMore(List dataRows) {
- this.dataRows.addAll(dataRows);
- notifyItemRangeInserted(this.dataRows.size(), dataRows.size());
+ public void loadMore(List newRows) {
+ if (newRows.isEmpty()) {
+ return;
+ }
+ int startPosition = this.dataRows.size();
+ this.dataRows.addAll(newRows);
+ notifyItemRangeInserted(startPosition, newRows.size());
}
class ItemViewHolder extends RecyclerView.ViewHolder {
@@ -84,7 +135,6 @@
casePunishView = itemView.findViewById(R.id.casePunishView);
}
-
void bindView(PackageCaseBean.DataBean.RowsBean rowsBean) {
//三包核实图片
String fileIdVerify = rowsBean.getFileIdVerify();
@@ -97,45 +147,6 @@
}
caseTitleView.setText(rowsBean.getDescription());
caseDateView.setText("上报时间:" + rowsBean.getReportTime());
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class);
-// if (punishTypeBean.getData().size() != 0) {
-// //获取商铺处罚次数
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class);
-//
-// adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData());
-// LinearLayoutManager layoutManager = new LinearLayoutManager(context);
-// layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
-// punishRecyclerView.setLayoutManager(layoutManager);
-// punishRecyclerView.setAdapter(adapter);
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
-// }
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
}
}
diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
deleted file mode 100644
index 2e178e5..0000000
--- a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.casic.dcms.adapter;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.core.content.ContextCompat;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.model.PunishTimesBean;
-import com.casic.dcms.model.PunishTypeBean;
-
-import java.util.List;
-
-@SuppressLint("SetTextI18n")
-public class PunishTypeAdapter extends RecyclerView.Adapter {
-
- private final Context context;
- private final List dataRows;
- private final PunishTimesBean.DataBean dataBean;
- private final LayoutInflater layoutInflater;
-
- PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) {
- this.context = context;
- this.dataRows = dataRows;
- this.dataBean = dataBean;
- this.layoutInflater = LayoutInflater.from(context);
- }
-
- @NonNull
- @Override
- public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false));
- }
-
- @Override
- public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- String typeName = dataRows.get(position).getPunishTypeName();
- int color, times;
- switch (typeName) {
- case "劝导":
- times = dataBean.getPersuade();
- color = ContextCompat.getColor(context, R.color.persuadeColor);
- break;
- case "警告":
- times = dataBean.getWarn();
- color = ContextCompat.getColor(context, R.color.warnColor);
- break;
- case "处罚":
- times = dataBean.getPunish();
- color = ContextCompat.getColor(context, R.color.punishColor);
- break;
- default:
- times = 0;
- color = ContextCompat.getColor(context, R.color.mainThemeColor);
- break;
- }
- if (times == 0) {
- holder.punishTypeView.setVisibility(View.GONE);
- } else {
- holder.punishTypeView.setText(typeName + " x " + times);
- holder.punishTypeView.setBackgroundColor(color);
- }
- }
-
- @Override
- public int getItemCount() {
- return dataRows.size();
- }
-
- static class ItemViewHolder extends RecyclerView.ViewHolder {
-
- private final TextView punishTypeView;
-
- ItemViewHolder(@NonNull View itemView) {
- super(itemView);
- punishTypeView = itemView.findViewById(R.id.punishTypeView);
- }
- }
-}
diff --git a/.gitignore b/.gitignore
index f0f71e2..ee6b213 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,12 @@
*.iml
.gradle
/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
+/.idea
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
.idea
+*.apk
+*.json
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fdb7255..6873489 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -109,7 +109,7 @@
-
+
diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
index 2dcdc64..0364fc7 100644
--- a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
+++ b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
@@ -9,6 +9,7 @@
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
@@ -25,7 +26,6 @@
private final Context context;
private final List dataRows;
private final LayoutInflater layoutInflater;
- private PunishTypeAdapter adapter;
public PackageCaseListAdapter(Context context, List dataRows) {
this.context = context;
@@ -36,7 +36,7 @@
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv, parent, false));
+ return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv_l, parent, false));
}
@Override
@@ -57,16 +57,67 @@
return dataRows.size();
}
- @SuppressLint("NotifyDataSetChanged")
- public void refresh(List dataRows) {
- this.dataRows.clear();
- this.dataRows.addAll(dataRows);
- notifyDataSetChanged();
+ public void refresh(List newRows) {
+ DiffUtil.Callback diffCallback = new DiffUtil.Callback() {
+
+ @Override
+ public int getOldListSize() {
+ return dataRows.size();
+ }
+
+ @Override
+ public int getNewListSize() {
+ return newRows.size();
+ }
+
+ @Override
+ public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
+ if (dataRows == null || newRows == null) {
+ return false;
+ }
+
+ // 检查索引是否在有效范围内
+ if (oldItemPosition < 0 || oldItemPosition >= dataRows.size() ||
+ newItemPosition < 0 || newItemPosition >= newRows.size()) {
+ return false;
+ }
+
+ // 获取元素并进行比较
+ Object oldItem = dataRows.get(oldItemPosition);
+ Object newItem = newRows.get(newItemPosition);
+
+ // 处理空指针情况
+ if (oldItem == null && newItem == null) {
+ return true;
+ }
+ if (oldItem == null || newItem == null) {
+ return false;
+ }
+
+ return oldItem.equals(newItem);
+ }
+
+ @Override
+ public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
+ return dataRows.get(oldItemPosition) == newRows.get(newItemPosition);
+ }
+ };
+
+ DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);
+
+ dataRows.clear();
+ dataRows.addAll(newRows);
+
+ diffResult.dispatchUpdatesTo(this);
}
- public void loadMore(List dataRows) {
- this.dataRows.addAll(dataRows);
- notifyItemRangeInserted(this.dataRows.size(), dataRows.size());
+ public void loadMore(List newRows) {
+ if (newRows.isEmpty()) {
+ return;
+ }
+ int startPosition = this.dataRows.size();
+ this.dataRows.addAll(newRows);
+ notifyItemRangeInserted(startPosition, newRows.size());
}
class ItemViewHolder extends RecyclerView.ViewHolder {
@@ -84,7 +135,6 @@
casePunishView = itemView.findViewById(R.id.casePunishView);
}
-
void bindView(PackageCaseBean.DataBean.RowsBean rowsBean) {
//三包核实图片
String fileIdVerify = rowsBean.getFileIdVerify();
@@ -97,45 +147,6 @@
}
caseTitleView.setText(rowsBean.getDescription());
caseDateView.setText("上报时间:" + rowsBean.getReportTime());
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class);
-// if (punishTypeBean.getData().size() != 0) {
-// //获取商铺处罚次数
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class);
-//
-// adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData());
-// LinearLayoutManager layoutManager = new LinearLayoutManager(context);
-// layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
-// punishRecyclerView.setLayoutManager(layoutManager);
-// punishRecyclerView.setAdapter(adapter);
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
-// }
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
}
}
diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
deleted file mode 100644
index 2e178e5..0000000
--- a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.casic.dcms.adapter;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.core.content.ContextCompat;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.model.PunishTimesBean;
-import com.casic.dcms.model.PunishTypeBean;
-
-import java.util.List;
-
-@SuppressLint("SetTextI18n")
-public class PunishTypeAdapter extends RecyclerView.Adapter {
-
- private final Context context;
- private final List dataRows;
- private final PunishTimesBean.DataBean dataBean;
- private final LayoutInflater layoutInflater;
-
- PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) {
- this.context = context;
- this.dataRows = dataRows;
- this.dataBean = dataBean;
- this.layoutInflater = LayoutInflater.from(context);
- }
-
- @NonNull
- @Override
- public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false));
- }
-
- @Override
- public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- String typeName = dataRows.get(position).getPunishTypeName();
- int color, times;
- switch (typeName) {
- case "劝导":
- times = dataBean.getPersuade();
- color = ContextCompat.getColor(context, R.color.persuadeColor);
- break;
- case "警告":
- times = dataBean.getWarn();
- color = ContextCompat.getColor(context, R.color.warnColor);
- break;
- case "处罚":
- times = dataBean.getPunish();
- color = ContextCompat.getColor(context, R.color.punishColor);
- break;
- default:
- times = 0;
- color = ContextCompat.getColor(context, R.color.mainThemeColor);
- break;
- }
- if (times == 0) {
- holder.punishTypeView.setVisibility(View.GONE);
- } else {
- holder.punishTypeView.setText(typeName + " x " + times);
- holder.punishTypeView.setBackgroundColor(color);
- }
- }
-
- @Override
- public int getItemCount() {
- return dataRows.size();
- }
-
- static class ItemViewHolder extends RecyclerView.ViewHolder {
-
- private final TextView punishTypeView;
-
- ItemViewHolder(@NonNull View itemView) {
- super(itemView);
- punishTypeView = itemView.findViewById(R.id.punishTypeView);
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
deleted file mode 100644
index dc57ca3..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.casic.dcms.model;
-
-public class PunishTimesBean {
- private int code;
- private DataBean data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public DataBean getData() {
- return data;
- }
-
- public void setData(DataBean data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataBean {
- /**
- * warn : 0
- * punish : 0
- * persuade : 0
- */
-
- private int warn;
- private int punish;
- private int persuade;
-
- public int getWarn() {
- return warn;
- }
-
- public void setWarn(int warn) {
- this.warn = warn;
- }
-
- public int getPunish() {
- return punish;
- }
-
- public void setPunish(int punish) {
- this.punish = punish;
- }
-
- public int getPersuade() {
- return persuade;
- }
-
- public void setPersuade(int persuade) {
- this.persuade = persuade;
- }
- }
-}
diff --git a/.gitignore b/.gitignore
index f0f71e2..ee6b213 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,12 @@
*.iml
.gradle
/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
+/.idea
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
.idea
+*.apk
+*.json
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fdb7255..6873489 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -109,7 +109,7 @@
-
+
diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
index 2dcdc64..0364fc7 100644
--- a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
+++ b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
@@ -9,6 +9,7 @@
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
@@ -25,7 +26,6 @@
private final Context context;
private final List dataRows;
private final LayoutInflater layoutInflater;
- private PunishTypeAdapter adapter;
public PackageCaseListAdapter(Context context, List dataRows) {
this.context = context;
@@ -36,7 +36,7 @@
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv, parent, false));
+ return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv_l, parent, false));
}
@Override
@@ -57,16 +57,67 @@
return dataRows.size();
}
- @SuppressLint("NotifyDataSetChanged")
- public void refresh(List dataRows) {
- this.dataRows.clear();
- this.dataRows.addAll(dataRows);
- notifyDataSetChanged();
+ public void refresh(List newRows) {
+ DiffUtil.Callback diffCallback = new DiffUtil.Callback() {
+
+ @Override
+ public int getOldListSize() {
+ return dataRows.size();
+ }
+
+ @Override
+ public int getNewListSize() {
+ return newRows.size();
+ }
+
+ @Override
+ public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
+ if (dataRows == null || newRows == null) {
+ return false;
+ }
+
+ // 检查索引是否在有效范围内
+ if (oldItemPosition < 0 || oldItemPosition >= dataRows.size() ||
+ newItemPosition < 0 || newItemPosition >= newRows.size()) {
+ return false;
+ }
+
+ // 获取元素并进行比较
+ Object oldItem = dataRows.get(oldItemPosition);
+ Object newItem = newRows.get(newItemPosition);
+
+ // 处理空指针情况
+ if (oldItem == null && newItem == null) {
+ return true;
+ }
+ if (oldItem == null || newItem == null) {
+ return false;
+ }
+
+ return oldItem.equals(newItem);
+ }
+
+ @Override
+ public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
+ return dataRows.get(oldItemPosition) == newRows.get(newItemPosition);
+ }
+ };
+
+ DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);
+
+ dataRows.clear();
+ dataRows.addAll(newRows);
+
+ diffResult.dispatchUpdatesTo(this);
}
- public void loadMore(List dataRows) {
- this.dataRows.addAll(dataRows);
- notifyItemRangeInserted(this.dataRows.size(), dataRows.size());
+ public void loadMore(List newRows) {
+ if (newRows.isEmpty()) {
+ return;
+ }
+ int startPosition = this.dataRows.size();
+ this.dataRows.addAll(newRows);
+ notifyItemRangeInserted(startPosition, newRows.size());
}
class ItemViewHolder extends RecyclerView.ViewHolder {
@@ -84,7 +135,6 @@
casePunishView = itemView.findViewById(R.id.casePunishView);
}
-
void bindView(PackageCaseBean.DataBean.RowsBean rowsBean) {
//三包核实图片
String fileIdVerify = rowsBean.getFileIdVerify();
@@ -97,45 +147,6 @@
}
caseTitleView.setText(rowsBean.getDescription());
caseDateView.setText("上报时间:" + rowsBean.getReportTime());
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class);
-// if (punishTypeBean.getData().size() != 0) {
-// //获取商铺处罚次数
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class);
-//
-// adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData());
-// LinearLayoutManager layoutManager = new LinearLayoutManager(context);
-// layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
-// punishRecyclerView.setLayoutManager(layoutManager);
-// punishRecyclerView.setAdapter(adapter);
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
-// }
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
}
}
diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
deleted file mode 100644
index 2e178e5..0000000
--- a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.casic.dcms.adapter;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.core.content.ContextCompat;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.model.PunishTimesBean;
-import com.casic.dcms.model.PunishTypeBean;
-
-import java.util.List;
-
-@SuppressLint("SetTextI18n")
-public class PunishTypeAdapter extends RecyclerView.Adapter {
-
- private final Context context;
- private final List dataRows;
- private final PunishTimesBean.DataBean dataBean;
- private final LayoutInflater layoutInflater;
-
- PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) {
- this.context = context;
- this.dataRows = dataRows;
- this.dataBean = dataBean;
- this.layoutInflater = LayoutInflater.from(context);
- }
-
- @NonNull
- @Override
- public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false));
- }
-
- @Override
- public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- String typeName = dataRows.get(position).getPunishTypeName();
- int color, times;
- switch (typeName) {
- case "劝导":
- times = dataBean.getPersuade();
- color = ContextCompat.getColor(context, R.color.persuadeColor);
- break;
- case "警告":
- times = dataBean.getWarn();
- color = ContextCompat.getColor(context, R.color.warnColor);
- break;
- case "处罚":
- times = dataBean.getPunish();
- color = ContextCompat.getColor(context, R.color.punishColor);
- break;
- default:
- times = 0;
- color = ContextCompat.getColor(context, R.color.mainThemeColor);
- break;
- }
- if (times == 0) {
- holder.punishTypeView.setVisibility(View.GONE);
- } else {
- holder.punishTypeView.setText(typeName + " x " + times);
- holder.punishTypeView.setBackgroundColor(color);
- }
- }
-
- @Override
- public int getItemCount() {
- return dataRows.size();
- }
-
- static class ItemViewHolder extends RecyclerView.ViewHolder {
-
- private final TextView punishTypeView;
-
- ItemViewHolder(@NonNull View itemView) {
- super(itemView);
- punishTypeView = itemView.findViewById(R.id.punishTypeView);
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
deleted file mode 100644
index dc57ca3..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.casic.dcms.model;
-
-public class PunishTimesBean {
- private int code;
- private DataBean data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public DataBean getData() {
- return data;
- }
-
- public void setData(DataBean data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataBean {
- /**
- * warn : 0
- * punish : 0
- * persuade : 0
- */
-
- private int warn;
- private int punish;
- private int persuade;
-
- public int getWarn() {
- return warn;
- }
-
- public void setWarn(int warn) {
- this.warn = warn;
- }
-
- public int getPunish() {
- return punish;
- }
-
- public void setPunish(int punish) {
- this.punish = punish;
- }
-
- public int getPersuade() {
- return persuade;
- }
-
- public void setPersuade(int persuade) {
- this.persuade = persuade;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java
deleted file mode 100644
index 00b6a98..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.model;
-
-import java.util.List;
-
-public class PunishTypeBean {
- private int code;
- private String message;
- private boolean success;
- private List data;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public static class DataBean {
- /**
- * punishTime : 2021-01-12 09:08:59
- * punishTypeName : 处罚
- * punishImage : images
- * punishType : 1
- * punishRemarks : 处罚
- */
-
- private String punishTime;
- private String punishTypeName;
- private String punishImage;
- private String punishType;
- private String punishRemarks;
-
- public String getPunishTime() {
- return punishTime;
- }
-
- public void setPunishTime(String punishTime) {
- this.punishTime = punishTime;
- }
-
- public String getPunishTypeName() {
- return punishTypeName;
- }
-
- public void setPunishTypeName(String punishTypeName) {
- this.punishTypeName = punishTypeName;
- }
-
- public String getPunishImage() {
- return punishImage;
- }
-
- public void setPunishImage(String punishImage) {
- this.punishImage = punishImage;
- }
-
- public String getPunishType() {
- return punishType;
- }
-
- public void setPunishType(String punishType) {
- this.punishType = punishType;
- }
-
- public String getPunishRemarks() {
- return punishRemarks;
- }
-
- public void setPunishRemarks(String punishRemarks) {
- this.punishRemarks = punishRemarks;
- }
- }
-}
diff --git a/.gitignore b/.gitignore
index f0f71e2..ee6b213 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,12 @@
*.iml
.gradle
/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
+/.idea
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
.idea
+*.apk
+*.json
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fdb7255..6873489 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -109,7 +109,7 @@
-
+
diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
index 2dcdc64..0364fc7 100644
--- a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
+++ b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
@@ -9,6 +9,7 @@
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
@@ -25,7 +26,6 @@
private final Context context;
private final List dataRows;
private final LayoutInflater layoutInflater;
- private PunishTypeAdapter adapter;
public PackageCaseListAdapter(Context context, List dataRows) {
this.context = context;
@@ -36,7 +36,7 @@
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv, parent, false));
+ return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv_l, parent, false));
}
@Override
@@ -57,16 +57,67 @@
return dataRows.size();
}
- @SuppressLint("NotifyDataSetChanged")
- public void refresh(List dataRows) {
- this.dataRows.clear();
- this.dataRows.addAll(dataRows);
- notifyDataSetChanged();
+ public void refresh(List newRows) {
+ DiffUtil.Callback diffCallback = new DiffUtil.Callback() {
+
+ @Override
+ public int getOldListSize() {
+ return dataRows.size();
+ }
+
+ @Override
+ public int getNewListSize() {
+ return newRows.size();
+ }
+
+ @Override
+ public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
+ if (dataRows == null || newRows == null) {
+ return false;
+ }
+
+ // 检查索引是否在有效范围内
+ if (oldItemPosition < 0 || oldItemPosition >= dataRows.size() ||
+ newItemPosition < 0 || newItemPosition >= newRows.size()) {
+ return false;
+ }
+
+ // 获取元素并进行比较
+ Object oldItem = dataRows.get(oldItemPosition);
+ Object newItem = newRows.get(newItemPosition);
+
+ // 处理空指针情况
+ if (oldItem == null && newItem == null) {
+ return true;
+ }
+ if (oldItem == null || newItem == null) {
+ return false;
+ }
+
+ return oldItem.equals(newItem);
+ }
+
+ @Override
+ public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
+ return dataRows.get(oldItemPosition) == newRows.get(newItemPosition);
+ }
+ };
+
+ DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);
+
+ dataRows.clear();
+ dataRows.addAll(newRows);
+
+ diffResult.dispatchUpdatesTo(this);
}
- public void loadMore(List dataRows) {
- this.dataRows.addAll(dataRows);
- notifyItemRangeInserted(this.dataRows.size(), dataRows.size());
+ public void loadMore(List newRows) {
+ if (newRows.isEmpty()) {
+ return;
+ }
+ int startPosition = this.dataRows.size();
+ this.dataRows.addAll(newRows);
+ notifyItemRangeInserted(startPosition, newRows.size());
}
class ItemViewHolder extends RecyclerView.ViewHolder {
@@ -84,7 +135,6 @@
casePunishView = itemView.findViewById(R.id.casePunishView);
}
-
void bindView(PackageCaseBean.DataBean.RowsBean rowsBean) {
//三包核实图片
String fileIdVerify = rowsBean.getFileIdVerify();
@@ -97,45 +147,6 @@
}
caseTitleView.setText(rowsBean.getDescription());
caseDateView.setText("上报时间:" + rowsBean.getReportTime());
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class);
-// if (punishTypeBean.getData().size() != 0) {
-// //获取商铺处罚次数
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class);
-//
-// adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData());
-// LinearLayoutManager layoutManager = new LinearLayoutManager(context);
-// layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
-// punishRecyclerView.setLayoutManager(layoutManager);
-// punishRecyclerView.setAdapter(adapter);
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
-// }
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
}
}
diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
deleted file mode 100644
index 2e178e5..0000000
--- a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.casic.dcms.adapter;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.core.content.ContextCompat;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.model.PunishTimesBean;
-import com.casic.dcms.model.PunishTypeBean;
-
-import java.util.List;
-
-@SuppressLint("SetTextI18n")
-public class PunishTypeAdapter extends RecyclerView.Adapter {
-
- private final Context context;
- private final List dataRows;
- private final PunishTimesBean.DataBean dataBean;
- private final LayoutInflater layoutInflater;
-
- PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) {
- this.context = context;
- this.dataRows = dataRows;
- this.dataBean = dataBean;
- this.layoutInflater = LayoutInflater.from(context);
- }
-
- @NonNull
- @Override
- public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false));
- }
-
- @Override
- public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- String typeName = dataRows.get(position).getPunishTypeName();
- int color, times;
- switch (typeName) {
- case "劝导":
- times = dataBean.getPersuade();
- color = ContextCompat.getColor(context, R.color.persuadeColor);
- break;
- case "警告":
- times = dataBean.getWarn();
- color = ContextCompat.getColor(context, R.color.warnColor);
- break;
- case "处罚":
- times = dataBean.getPunish();
- color = ContextCompat.getColor(context, R.color.punishColor);
- break;
- default:
- times = 0;
- color = ContextCompat.getColor(context, R.color.mainThemeColor);
- break;
- }
- if (times == 0) {
- holder.punishTypeView.setVisibility(View.GONE);
- } else {
- holder.punishTypeView.setText(typeName + " x " + times);
- holder.punishTypeView.setBackgroundColor(color);
- }
- }
-
- @Override
- public int getItemCount() {
- return dataRows.size();
- }
-
- static class ItemViewHolder extends RecyclerView.ViewHolder {
-
- private final TextView punishTypeView;
-
- ItemViewHolder(@NonNull View itemView) {
- super(itemView);
- punishTypeView = itemView.findViewById(R.id.punishTypeView);
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
deleted file mode 100644
index dc57ca3..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.casic.dcms.model;
-
-public class PunishTimesBean {
- private int code;
- private DataBean data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public DataBean getData() {
- return data;
- }
-
- public void setData(DataBean data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataBean {
- /**
- * warn : 0
- * punish : 0
- * persuade : 0
- */
-
- private int warn;
- private int punish;
- private int persuade;
-
- public int getWarn() {
- return warn;
- }
-
- public void setWarn(int warn) {
- this.warn = warn;
- }
-
- public int getPunish() {
- return punish;
- }
-
- public void setPunish(int punish) {
- this.punish = punish;
- }
-
- public int getPersuade() {
- return persuade;
- }
-
- public void setPersuade(int persuade) {
- this.persuade = persuade;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java
deleted file mode 100644
index 00b6a98..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.model;
-
-import java.util.List;
-
-public class PunishTypeBean {
- private int code;
- private String message;
- private boolean success;
- private List data;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public static class DataBean {
- /**
- * punishTime : 2021-01-12 09:08:59
- * punishTypeName : 处罚
- * punishImage : images
- * punishType : 1
- * punishRemarks : 处罚
- */
-
- private String punishTime;
- private String punishTypeName;
- private String punishImage;
- private String punishType;
- private String punishRemarks;
-
- public String getPunishTime() {
- return punishTime;
- }
-
- public void setPunishTime(String punishTime) {
- this.punishTime = punishTime;
- }
-
- public String getPunishTypeName() {
- return punishTypeName;
- }
-
- public void setPunishTypeName(String punishTypeName) {
- this.punishTypeName = punishTypeName;
- }
-
- public String getPunishImage() {
- return punishImage;
- }
-
- public void setPunishImage(String punishImage) {
- this.punishImage = punishImage;
- }
-
- public String getPunishType() {
- return punishType;
- }
-
- public void setPunishType(String punishType) {
- this.punishType = punishType;
- }
-
- public String getPunishRemarks() {
- return punishRemarks;
- }
-
- public void setPunishRemarks(String punishRemarks) {
- this.punishRemarks = punishRemarks;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java b/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java
deleted file mode 100644
index a4d8337..0000000
--- a/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.casic.dcms.model;
-
-public class UnitFeatureBean {
-
- private String BGID;
- private String BGNAME;
- private int OBJECTID;
-
- public String getBGID() {
- return BGID;
- }
-
- public void setBGID(String BGID) {
- this.BGID = BGID;
- }
-
- public String getBGNAME() {
- return BGNAME;
- }
-
- public void setBGNAME(String BGNAME) {
- this.BGNAME = BGNAME;
- }
-
- public int getOBJECTID() {
- return OBJECTID;
- }
-
- public void setOBJECTID(int OBJECTID) {
- this.OBJECTID = OBJECTID;
- }
-}
diff --git a/.gitignore b/.gitignore
index f0f71e2..ee6b213 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,12 @@
*.iml
.gradle
/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
+/.idea
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
.idea
+*.apk
+*.json
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fdb7255..6873489 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -109,7 +109,7 @@
-
+
diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
index 2dcdc64..0364fc7 100644
--- a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
+++ b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
@@ -9,6 +9,7 @@
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
@@ -25,7 +26,6 @@
private final Context context;
private final List dataRows;
private final LayoutInflater layoutInflater;
- private PunishTypeAdapter adapter;
public PackageCaseListAdapter(Context context, List dataRows) {
this.context = context;
@@ -36,7 +36,7 @@
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv, parent, false));
+ return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv_l, parent, false));
}
@Override
@@ -57,16 +57,67 @@
return dataRows.size();
}
- @SuppressLint("NotifyDataSetChanged")
- public void refresh(List dataRows) {
- this.dataRows.clear();
- this.dataRows.addAll(dataRows);
- notifyDataSetChanged();
+ public void refresh(List newRows) {
+ DiffUtil.Callback diffCallback = new DiffUtil.Callback() {
+
+ @Override
+ public int getOldListSize() {
+ return dataRows.size();
+ }
+
+ @Override
+ public int getNewListSize() {
+ return newRows.size();
+ }
+
+ @Override
+ public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
+ if (dataRows == null || newRows == null) {
+ return false;
+ }
+
+ // 检查索引是否在有效范围内
+ if (oldItemPosition < 0 || oldItemPosition >= dataRows.size() ||
+ newItemPosition < 0 || newItemPosition >= newRows.size()) {
+ return false;
+ }
+
+ // 获取元素并进行比较
+ Object oldItem = dataRows.get(oldItemPosition);
+ Object newItem = newRows.get(newItemPosition);
+
+ // 处理空指针情况
+ if (oldItem == null && newItem == null) {
+ return true;
+ }
+ if (oldItem == null || newItem == null) {
+ return false;
+ }
+
+ return oldItem.equals(newItem);
+ }
+
+ @Override
+ public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
+ return dataRows.get(oldItemPosition) == newRows.get(newItemPosition);
+ }
+ };
+
+ DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);
+
+ dataRows.clear();
+ dataRows.addAll(newRows);
+
+ diffResult.dispatchUpdatesTo(this);
}
- public void loadMore(List dataRows) {
- this.dataRows.addAll(dataRows);
- notifyItemRangeInserted(this.dataRows.size(), dataRows.size());
+ public void loadMore(List newRows) {
+ if (newRows.isEmpty()) {
+ return;
+ }
+ int startPosition = this.dataRows.size();
+ this.dataRows.addAll(newRows);
+ notifyItemRangeInserted(startPosition, newRows.size());
}
class ItemViewHolder extends RecyclerView.ViewHolder {
@@ -84,7 +135,6 @@
casePunishView = itemView.findViewById(R.id.casePunishView);
}
-
void bindView(PackageCaseBean.DataBean.RowsBean rowsBean) {
//三包核实图片
String fileIdVerify = rowsBean.getFileIdVerify();
@@ -97,45 +147,6 @@
}
caseTitleView.setText(rowsBean.getDescription());
caseDateView.setText("上报时间:" + rowsBean.getReportTime());
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class);
-// if (punishTypeBean.getData().size() != 0) {
-// //获取商铺处罚次数
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class);
-//
-// adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData());
-// LinearLayoutManager layoutManager = new LinearLayoutManager(context);
-// layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
-// punishRecyclerView.setLayoutManager(layoutManager);
-// punishRecyclerView.setAdapter(adapter);
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
-// }
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
}
}
diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
deleted file mode 100644
index 2e178e5..0000000
--- a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.casic.dcms.adapter;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.core.content.ContextCompat;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.model.PunishTimesBean;
-import com.casic.dcms.model.PunishTypeBean;
-
-import java.util.List;
-
-@SuppressLint("SetTextI18n")
-public class PunishTypeAdapter extends RecyclerView.Adapter {
-
- private final Context context;
- private final List dataRows;
- private final PunishTimesBean.DataBean dataBean;
- private final LayoutInflater layoutInflater;
-
- PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) {
- this.context = context;
- this.dataRows = dataRows;
- this.dataBean = dataBean;
- this.layoutInflater = LayoutInflater.from(context);
- }
-
- @NonNull
- @Override
- public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false));
- }
-
- @Override
- public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- String typeName = dataRows.get(position).getPunishTypeName();
- int color, times;
- switch (typeName) {
- case "劝导":
- times = dataBean.getPersuade();
- color = ContextCompat.getColor(context, R.color.persuadeColor);
- break;
- case "警告":
- times = dataBean.getWarn();
- color = ContextCompat.getColor(context, R.color.warnColor);
- break;
- case "处罚":
- times = dataBean.getPunish();
- color = ContextCompat.getColor(context, R.color.punishColor);
- break;
- default:
- times = 0;
- color = ContextCompat.getColor(context, R.color.mainThemeColor);
- break;
- }
- if (times == 0) {
- holder.punishTypeView.setVisibility(View.GONE);
- } else {
- holder.punishTypeView.setText(typeName + " x " + times);
- holder.punishTypeView.setBackgroundColor(color);
- }
- }
-
- @Override
- public int getItemCount() {
- return dataRows.size();
- }
-
- static class ItemViewHolder extends RecyclerView.ViewHolder {
-
- private final TextView punishTypeView;
-
- ItemViewHolder(@NonNull View itemView) {
- super(itemView);
- punishTypeView = itemView.findViewById(R.id.punishTypeView);
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
deleted file mode 100644
index dc57ca3..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.casic.dcms.model;
-
-public class PunishTimesBean {
- private int code;
- private DataBean data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public DataBean getData() {
- return data;
- }
-
- public void setData(DataBean data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataBean {
- /**
- * warn : 0
- * punish : 0
- * persuade : 0
- */
-
- private int warn;
- private int punish;
- private int persuade;
-
- public int getWarn() {
- return warn;
- }
-
- public void setWarn(int warn) {
- this.warn = warn;
- }
-
- public int getPunish() {
- return punish;
- }
-
- public void setPunish(int punish) {
- this.punish = punish;
- }
-
- public int getPersuade() {
- return persuade;
- }
-
- public void setPersuade(int persuade) {
- this.persuade = persuade;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java
deleted file mode 100644
index 00b6a98..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.model;
-
-import java.util.List;
-
-public class PunishTypeBean {
- private int code;
- private String message;
- private boolean success;
- private List data;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public static class DataBean {
- /**
- * punishTime : 2021-01-12 09:08:59
- * punishTypeName : 处罚
- * punishImage : images
- * punishType : 1
- * punishRemarks : 处罚
- */
-
- private String punishTime;
- private String punishTypeName;
- private String punishImage;
- private String punishType;
- private String punishRemarks;
-
- public String getPunishTime() {
- return punishTime;
- }
-
- public void setPunishTime(String punishTime) {
- this.punishTime = punishTime;
- }
-
- public String getPunishTypeName() {
- return punishTypeName;
- }
-
- public void setPunishTypeName(String punishTypeName) {
- this.punishTypeName = punishTypeName;
- }
-
- public String getPunishImage() {
- return punishImage;
- }
-
- public void setPunishImage(String punishImage) {
- this.punishImage = punishImage;
- }
-
- public String getPunishType() {
- return punishType;
- }
-
- public void setPunishType(String punishType) {
- this.punishType = punishType;
- }
-
- public String getPunishRemarks() {
- return punishRemarks;
- }
-
- public void setPunishRemarks(String punishRemarks) {
- this.punishRemarks = punishRemarks;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java b/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java
deleted file mode 100644
index a4d8337..0000000
--- a/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.casic.dcms.model;
-
-public class UnitFeatureBean {
-
- private String BGID;
- private String BGNAME;
- private int OBJECTID;
-
- public String getBGID() {
- return BGID;
- }
-
- public void setBGID(String BGID) {
- this.BGID = BGID;
- }
-
- public String getBGNAME() {
- return BGNAME;
- }
-
- public void setBGNAME(String BGNAME) {
- this.BGNAME = BGNAME;
- }
-
- public int getOBJECTID() {
- return OBJECTID;
- }
-
- public void setOBJECTID(int OBJECTID) {
- this.OBJECTID = OBJECTID;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java b/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
index 0578f7b..b0c24d5 100644
--- a/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
+++ b/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
@@ -1,9 +1,16 @@
package com.casic.dcms.model;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import androidx.annotation.NonNull;
+
import java.util.List;
-public class WellAlarmListBean {
-
+/**
+ * Parcelable 是 Android 平台专门为性能优化而设计的序列化机制,通常比 Serializable 快 10 倍左右
+ */
+public class WellAlarmListBean implements Parcelable {
private int code;
private DataBean data;
private String message;
@@ -41,7 +48,43 @@
this.success = success;
}
- public static class DataBean {
+ public WellAlarmListBean() {
+
+ }
+
+ protected WellAlarmListBean(Parcel in) {
+ code = in.readInt();
+ data = in.readParcelable(DataBean.class.getClassLoader());
+ message = in.readString();
+ success = in.readByte() != 0;
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public WellAlarmListBean createFromParcel(Parcel in) {
+ return new WellAlarmListBean(in);
+ }
+
+ @Override
+ public WellAlarmListBean[] newArray(int size) {
+ return new WellAlarmListBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeInt(code);
+ dest.writeParcelable(data, flags);
+ dest.writeString(message);
+ dest.writeByte((byte) (success ? 1 : 0));
+ }
+
+ public static class DataBean implements Parcelable {
private int total;
private List rows;
@@ -62,7 +105,38 @@
this.rows = rows;
}
- public static class RowsBean {
+ public DataBean() {
+ }
+
+ protected DataBean(Parcel in) {
+ total = in.readInt();
+ rows = in.createTypedArrayList(RowsBean.CREATOR);
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public DataBean createFromParcel(Parcel in) {
+ return new DataBean(in);
+ }
+
+ @Override
+ public DataBean[] newArray(int size) {
+ return new DataBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(total);
+ dest.writeTypedList(rows);
+ }
+
+ public static class RowsBean implements Parcelable {
/**
* alarmContent : 1
* deptName : 崇仁县城管局
@@ -296,6 +370,79 @@
public void setStatus(String status) {
this.status = status;
}
+
+ public RowsBean() {
+ }
+
+ protected RowsBean(Parcel in) {
+ alarmContent = in.readInt();
+ deptName = in.readString();
+ jobStatus = in.readString();
+ alarmContentName = in.readString();
+ wellCode = in.readString();
+ alarmTime = in.readString();
+ deptid = in.readString();
+ alarmTypeName = in.readString();
+ alarmMessage = in.readString();
+ staff = in.readString();
+ deviceId = in.readString();
+ jobId = in.readString();
+ jobStatusName = in.readString();
+ alarmType = in.readString();
+ alarmValue = in.readString();
+ devcode = in.readString();
+ statusName = in.readString();
+ alarmLevel = in.readString();
+ tel = in.readString();
+ id = in.readString();
+ wellId = in.readString();
+ position = in.readString();
+ status = in.readString();
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public RowsBean createFromParcel(Parcel in) {
+ return new RowsBean(in);
+ }
+
+ @Override
+ public RowsBean[] newArray(int size) {
+ return new RowsBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(alarmContent);
+ dest.writeString(deptName);
+ dest.writeString(jobStatus);
+ dest.writeString(alarmContentName);
+ dest.writeString(wellCode);
+ dest.writeString(alarmTime);
+ dest.writeString(deptid);
+ dest.writeString(alarmTypeName);
+ dest.writeString(alarmMessage);
+ dest.writeString(staff);
+ dest.writeString(deviceId);
+ dest.writeString(jobId);
+ dest.writeString(jobStatusName);
+ dest.writeString(alarmType);
+ dest.writeString(alarmValue);
+ dest.writeString(devcode);
+ dest.writeString(statusName);
+ dest.writeString(alarmLevel);
+ dest.writeString(tel);
+ dest.writeString(id);
+ dest.writeString(wellId);
+ dest.writeString(position);
+ dest.writeString(status);
+ }
}
}
}
diff --git a/.gitignore b/.gitignore
index f0f71e2..ee6b213 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,12 @@
*.iml
.gradle
/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
+/.idea
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
.idea
+*.apk
+*.json
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fdb7255..6873489 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -109,7 +109,7 @@
-
+
diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
index 2dcdc64..0364fc7 100644
--- a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
+++ b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
@@ -9,6 +9,7 @@
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
@@ -25,7 +26,6 @@
private final Context context;
private final List dataRows;
private final LayoutInflater layoutInflater;
- private PunishTypeAdapter adapter;
public PackageCaseListAdapter(Context context, List dataRows) {
this.context = context;
@@ -36,7 +36,7 @@
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv, parent, false));
+ return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv_l, parent, false));
}
@Override
@@ -57,16 +57,67 @@
return dataRows.size();
}
- @SuppressLint("NotifyDataSetChanged")
- public void refresh(List dataRows) {
- this.dataRows.clear();
- this.dataRows.addAll(dataRows);
- notifyDataSetChanged();
+ public void refresh(List newRows) {
+ DiffUtil.Callback diffCallback = new DiffUtil.Callback() {
+
+ @Override
+ public int getOldListSize() {
+ return dataRows.size();
+ }
+
+ @Override
+ public int getNewListSize() {
+ return newRows.size();
+ }
+
+ @Override
+ public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
+ if (dataRows == null || newRows == null) {
+ return false;
+ }
+
+ // 检查索引是否在有效范围内
+ if (oldItemPosition < 0 || oldItemPosition >= dataRows.size() ||
+ newItemPosition < 0 || newItemPosition >= newRows.size()) {
+ return false;
+ }
+
+ // 获取元素并进行比较
+ Object oldItem = dataRows.get(oldItemPosition);
+ Object newItem = newRows.get(newItemPosition);
+
+ // 处理空指针情况
+ if (oldItem == null && newItem == null) {
+ return true;
+ }
+ if (oldItem == null || newItem == null) {
+ return false;
+ }
+
+ return oldItem.equals(newItem);
+ }
+
+ @Override
+ public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
+ return dataRows.get(oldItemPosition) == newRows.get(newItemPosition);
+ }
+ };
+
+ DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);
+
+ dataRows.clear();
+ dataRows.addAll(newRows);
+
+ diffResult.dispatchUpdatesTo(this);
}
- public void loadMore(List dataRows) {
- this.dataRows.addAll(dataRows);
- notifyItemRangeInserted(this.dataRows.size(), dataRows.size());
+ public void loadMore(List newRows) {
+ if (newRows.isEmpty()) {
+ return;
+ }
+ int startPosition = this.dataRows.size();
+ this.dataRows.addAll(newRows);
+ notifyItemRangeInserted(startPosition, newRows.size());
}
class ItemViewHolder extends RecyclerView.ViewHolder {
@@ -84,7 +135,6 @@
casePunishView = itemView.findViewById(R.id.casePunishView);
}
-
void bindView(PackageCaseBean.DataBean.RowsBean rowsBean) {
//三包核实图片
String fileIdVerify = rowsBean.getFileIdVerify();
@@ -97,45 +147,6 @@
}
caseTitleView.setText(rowsBean.getDescription());
caseDateView.setText("上报时间:" + rowsBean.getReportTime());
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class);
-// if (punishTypeBean.getData().size() != 0) {
-// //获取商铺处罚次数
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class);
-//
-// adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData());
-// LinearLayoutManager layoutManager = new LinearLayoutManager(context);
-// layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
-// punishRecyclerView.setLayoutManager(layoutManager);
-// punishRecyclerView.setAdapter(adapter);
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
-// }
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
}
}
diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
deleted file mode 100644
index 2e178e5..0000000
--- a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.casic.dcms.adapter;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.core.content.ContextCompat;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.model.PunishTimesBean;
-import com.casic.dcms.model.PunishTypeBean;
-
-import java.util.List;
-
-@SuppressLint("SetTextI18n")
-public class PunishTypeAdapter extends RecyclerView.Adapter {
-
- private final Context context;
- private final List dataRows;
- private final PunishTimesBean.DataBean dataBean;
- private final LayoutInflater layoutInflater;
-
- PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) {
- this.context = context;
- this.dataRows = dataRows;
- this.dataBean = dataBean;
- this.layoutInflater = LayoutInflater.from(context);
- }
-
- @NonNull
- @Override
- public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false));
- }
-
- @Override
- public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- String typeName = dataRows.get(position).getPunishTypeName();
- int color, times;
- switch (typeName) {
- case "劝导":
- times = dataBean.getPersuade();
- color = ContextCompat.getColor(context, R.color.persuadeColor);
- break;
- case "警告":
- times = dataBean.getWarn();
- color = ContextCompat.getColor(context, R.color.warnColor);
- break;
- case "处罚":
- times = dataBean.getPunish();
- color = ContextCompat.getColor(context, R.color.punishColor);
- break;
- default:
- times = 0;
- color = ContextCompat.getColor(context, R.color.mainThemeColor);
- break;
- }
- if (times == 0) {
- holder.punishTypeView.setVisibility(View.GONE);
- } else {
- holder.punishTypeView.setText(typeName + " x " + times);
- holder.punishTypeView.setBackgroundColor(color);
- }
- }
-
- @Override
- public int getItemCount() {
- return dataRows.size();
- }
-
- static class ItemViewHolder extends RecyclerView.ViewHolder {
-
- private final TextView punishTypeView;
-
- ItemViewHolder(@NonNull View itemView) {
- super(itemView);
- punishTypeView = itemView.findViewById(R.id.punishTypeView);
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
deleted file mode 100644
index dc57ca3..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.casic.dcms.model;
-
-public class PunishTimesBean {
- private int code;
- private DataBean data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public DataBean getData() {
- return data;
- }
-
- public void setData(DataBean data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataBean {
- /**
- * warn : 0
- * punish : 0
- * persuade : 0
- */
-
- private int warn;
- private int punish;
- private int persuade;
-
- public int getWarn() {
- return warn;
- }
-
- public void setWarn(int warn) {
- this.warn = warn;
- }
-
- public int getPunish() {
- return punish;
- }
-
- public void setPunish(int punish) {
- this.punish = punish;
- }
-
- public int getPersuade() {
- return persuade;
- }
-
- public void setPersuade(int persuade) {
- this.persuade = persuade;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java
deleted file mode 100644
index 00b6a98..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.model;
-
-import java.util.List;
-
-public class PunishTypeBean {
- private int code;
- private String message;
- private boolean success;
- private List data;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public static class DataBean {
- /**
- * punishTime : 2021-01-12 09:08:59
- * punishTypeName : 处罚
- * punishImage : images
- * punishType : 1
- * punishRemarks : 处罚
- */
-
- private String punishTime;
- private String punishTypeName;
- private String punishImage;
- private String punishType;
- private String punishRemarks;
-
- public String getPunishTime() {
- return punishTime;
- }
-
- public void setPunishTime(String punishTime) {
- this.punishTime = punishTime;
- }
-
- public String getPunishTypeName() {
- return punishTypeName;
- }
-
- public void setPunishTypeName(String punishTypeName) {
- this.punishTypeName = punishTypeName;
- }
-
- public String getPunishImage() {
- return punishImage;
- }
-
- public void setPunishImage(String punishImage) {
- this.punishImage = punishImage;
- }
-
- public String getPunishType() {
- return punishType;
- }
-
- public void setPunishType(String punishType) {
- this.punishType = punishType;
- }
-
- public String getPunishRemarks() {
- return punishRemarks;
- }
-
- public void setPunishRemarks(String punishRemarks) {
- this.punishRemarks = punishRemarks;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java b/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java
deleted file mode 100644
index a4d8337..0000000
--- a/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.casic.dcms.model;
-
-public class UnitFeatureBean {
-
- private String BGID;
- private String BGNAME;
- private int OBJECTID;
-
- public String getBGID() {
- return BGID;
- }
-
- public void setBGID(String BGID) {
- this.BGID = BGID;
- }
-
- public String getBGNAME() {
- return BGNAME;
- }
-
- public void setBGNAME(String BGNAME) {
- this.BGNAME = BGNAME;
- }
-
- public int getOBJECTID() {
- return OBJECTID;
- }
-
- public void setOBJECTID(int OBJECTID) {
- this.OBJECTID = OBJECTID;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java b/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
index 0578f7b..b0c24d5 100644
--- a/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
+++ b/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
@@ -1,9 +1,16 @@
package com.casic.dcms.model;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import androidx.annotation.NonNull;
+
import java.util.List;
-public class WellAlarmListBean {
-
+/**
+ * Parcelable 是 Android 平台专门为性能优化而设计的序列化机制,通常比 Serializable 快 10 倍左右
+ */
+public class WellAlarmListBean implements Parcelable {
private int code;
private DataBean data;
private String message;
@@ -41,7 +48,43 @@
this.success = success;
}
- public static class DataBean {
+ public WellAlarmListBean() {
+
+ }
+
+ protected WellAlarmListBean(Parcel in) {
+ code = in.readInt();
+ data = in.readParcelable(DataBean.class.getClassLoader());
+ message = in.readString();
+ success = in.readByte() != 0;
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public WellAlarmListBean createFromParcel(Parcel in) {
+ return new WellAlarmListBean(in);
+ }
+
+ @Override
+ public WellAlarmListBean[] newArray(int size) {
+ return new WellAlarmListBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeInt(code);
+ dest.writeParcelable(data, flags);
+ dest.writeString(message);
+ dest.writeByte((byte) (success ? 1 : 0));
+ }
+
+ public static class DataBean implements Parcelable {
private int total;
private List rows;
@@ -62,7 +105,38 @@
this.rows = rows;
}
- public static class RowsBean {
+ public DataBean() {
+ }
+
+ protected DataBean(Parcel in) {
+ total = in.readInt();
+ rows = in.createTypedArrayList(RowsBean.CREATOR);
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public DataBean createFromParcel(Parcel in) {
+ return new DataBean(in);
+ }
+
+ @Override
+ public DataBean[] newArray(int size) {
+ return new DataBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(total);
+ dest.writeTypedList(rows);
+ }
+
+ public static class RowsBean implements Parcelable {
/**
* alarmContent : 1
* deptName : 崇仁县城管局
@@ -296,6 +370,79 @@
public void setStatus(String status) {
this.status = status;
}
+
+ public RowsBean() {
+ }
+
+ protected RowsBean(Parcel in) {
+ alarmContent = in.readInt();
+ deptName = in.readString();
+ jobStatus = in.readString();
+ alarmContentName = in.readString();
+ wellCode = in.readString();
+ alarmTime = in.readString();
+ deptid = in.readString();
+ alarmTypeName = in.readString();
+ alarmMessage = in.readString();
+ staff = in.readString();
+ deviceId = in.readString();
+ jobId = in.readString();
+ jobStatusName = in.readString();
+ alarmType = in.readString();
+ alarmValue = in.readString();
+ devcode = in.readString();
+ statusName = in.readString();
+ alarmLevel = in.readString();
+ tel = in.readString();
+ id = in.readString();
+ wellId = in.readString();
+ position = in.readString();
+ status = in.readString();
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public RowsBean createFromParcel(Parcel in) {
+ return new RowsBean(in);
+ }
+
+ @Override
+ public RowsBean[] newArray(int size) {
+ return new RowsBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(alarmContent);
+ dest.writeString(deptName);
+ dest.writeString(jobStatus);
+ dest.writeString(alarmContentName);
+ dest.writeString(wellCode);
+ dest.writeString(alarmTime);
+ dest.writeString(deptid);
+ dest.writeString(alarmTypeName);
+ dest.writeString(alarmMessage);
+ dest.writeString(staff);
+ dest.writeString(deviceId);
+ dest.writeString(jobId);
+ dest.writeString(jobStatusName);
+ dest.writeString(alarmType);
+ dest.writeString(alarmValue);
+ dest.writeString(devcode);
+ dest.writeString(statusName);
+ dest.writeString(alarmLevel);
+ dest.writeString(tel);
+ dest.writeString(id);
+ dest.writeString(wellId);
+ dest.writeString(position);
+ dest.writeString(status);
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/dcms/model/WellDetailBean.java b/app/src/main/java/com/casic/dcms/model/WellDetailBean.java
index cea8774..4e6c8fd 100644
--- a/app/src/main/java/com/casic/dcms/model/WellDetailBean.java
+++ b/app/src/main/java/com/casic/dcms/model/WellDetailBean.java
@@ -60,7 +60,6 @@
}
public static class FieldAliasesBean {
-
private String objectid;
private String 编号;
private String 附属物编码;
@@ -190,7 +189,6 @@
}
public static class SpatialReferenceBean {
-
private int wkid;
private int latestWkid;
@@ -212,7 +210,6 @@
}
public static class FieldsBean {
-
private String name;
private String type;
private String alias;
@@ -252,7 +249,6 @@
}
public static class FeaturesBean {
-
private AttributesBean attributes;
private GeometryBean geometry;
diff --git a/.gitignore b/.gitignore
index f0f71e2..ee6b213 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,12 @@
*.iml
.gradle
/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
+/.idea
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
.idea
+*.apk
+*.json
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fdb7255..6873489 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -109,7 +109,7 @@
-
+
diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
index 2dcdc64..0364fc7 100644
--- a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
+++ b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
@@ -9,6 +9,7 @@
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
@@ -25,7 +26,6 @@
private final Context context;
private final List dataRows;
private final LayoutInflater layoutInflater;
- private PunishTypeAdapter adapter;
public PackageCaseListAdapter(Context context, List dataRows) {
this.context = context;
@@ -36,7 +36,7 @@
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv, parent, false));
+ return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv_l, parent, false));
}
@Override
@@ -57,16 +57,67 @@
return dataRows.size();
}
- @SuppressLint("NotifyDataSetChanged")
- public void refresh(List dataRows) {
- this.dataRows.clear();
- this.dataRows.addAll(dataRows);
- notifyDataSetChanged();
+ public void refresh(List newRows) {
+ DiffUtil.Callback diffCallback = new DiffUtil.Callback() {
+
+ @Override
+ public int getOldListSize() {
+ return dataRows.size();
+ }
+
+ @Override
+ public int getNewListSize() {
+ return newRows.size();
+ }
+
+ @Override
+ public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
+ if (dataRows == null || newRows == null) {
+ return false;
+ }
+
+ // 检查索引是否在有效范围内
+ if (oldItemPosition < 0 || oldItemPosition >= dataRows.size() ||
+ newItemPosition < 0 || newItemPosition >= newRows.size()) {
+ return false;
+ }
+
+ // 获取元素并进行比较
+ Object oldItem = dataRows.get(oldItemPosition);
+ Object newItem = newRows.get(newItemPosition);
+
+ // 处理空指针情况
+ if (oldItem == null && newItem == null) {
+ return true;
+ }
+ if (oldItem == null || newItem == null) {
+ return false;
+ }
+
+ return oldItem.equals(newItem);
+ }
+
+ @Override
+ public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
+ return dataRows.get(oldItemPosition) == newRows.get(newItemPosition);
+ }
+ };
+
+ DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);
+
+ dataRows.clear();
+ dataRows.addAll(newRows);
+
+ diffResult.dispatchUpdatesTo(this);
}
- public void loadMore(List dataRows) {
- this.dataRows.addAll(dataRows);
- notifyItemRangeInserted(this.dataRows.size(), dataRows.size());
+ public void loadMore(List newRows) {
+ if (newRows.isEmpty()) {
+ return;
+ }
+ int startPosition = this.dataRows.size();
+ this.dataRows.addAll(newRows);
+ notifyItemRangeInserted(startPosition, newRows.size());
}
class ItemViewHolder extends RecyclerView.ViewHolder {
@@ -84,7 +135,6 @@
casePunishView = itemView.findViewById(R.id.casePunishView);
}
-
void bindView(PackageCaseBean.DataBean.RowsBean rowsBean) {
//三包核实图片
String fileIdVerify = rowsBean.getFileIdVerify();
@@ -97,45 +147,6 @@
}
caseTitleView.setText(rowsBean.getDescription());
caseDateView.setText("上报时间:" + rowsBean.getReportTime());
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class);
-// if (punishTypeBean.getData().size() != 0) {
-// //获取商铺处罚次数
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class);
-//
-// adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData());
-// LinearLayoutManager layoutManager = new LinearLayoutManager(context);
-// layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
-// punishRecyclerView.setLayoutManager(layoutManager);
-// punishRecyclerView.setAdapter(adapter);
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
-// }
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
}
}
diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
deleted file mode 100644
index 2e178e5..0000000
--- a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.casic.dcms.adapter;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.core.content.ContextCompat;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.model.PunishTimesBean;
-import com.casic.dcms.model.PunishTypeBean;
-
-import java.util.List;
-
-@SuppressLint("SetTextI18n")
-public class PunishTypeAdapter extends RecyclerView.Adapter {
-
- private final Context context;
- private final List dataRows;
- private final PunishTimesBean.DataBean dataBean;
- private final LayoutInflater layoutInflater;
-
- PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) {
- this.context = context;
- this.dataRows = dataRows;
- this.dataBean = dataBean;
- this.layoutInflater = LayoutInflater.from(context);
- }
-
- @NonNull
- @Override
- public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false));
- }
-
- @Override
- public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- String typeName = dataRows.get(position).getPunishTypeName();
- int color, times;
- switch (typeName) {
- case "劝导":
- times = dataBean.getPersuade();
- color = ContextCompat.getColor(context, R.color.persuadeColor);
- break;
- case "警告":
- times = dataBean.getWarn();
- color = ContextCompat.getColor(context, R.color.warnColor);
- break;
- case "处罚":
- times = dataBean.getPunish();
- color = ContextCompat.getColor(context, R.color.punishColor);
- break;
- default:
- times = 0;
- color = ContextCompat.getColor(context, R.color.mainThemeColor);
- break;
- }
- if (times == 0) {
- holder.punishTypeView.setVisibility(View.GONE);
- } else {
- holder.punishTypeView.setText(typeName + " x " + times);
- holder.punishTypeView.setBackgroundColor(color);
- }
- }
-
- @Override
- public int getItemCount() {
- return dataRows.size();
- }
-
- static class ItemViewHolder extends RecyclerView.ViewHolder {
-
- private final TextView punishTypeView;
-
- ItemViewHolder(@NonNull View itemView) {
- super(itemView);
- punishTypeView = itemView.findViewById(R.id.punishTypeView);
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
deleted file mode 100644
index dc57ca3..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.casic.dcms.model;
-
-public class PunishTimesBean {
- private int code;
- private DataBean data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public DataBean getData() {
- return data;
- }
-
- public void setData(DataBean data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataBean {
- /**
- * warn : 0
- * punish : 0
- * persuade : 0
- */
-
- private int warn;
- private int punish;
- private int persuade;
-
- public int getWarn() {
- return warn;
- }
-
- public void setWarn(int warn) {
- this.warn = warn;
- }
-
- public int getPunish() {
- return punish;
- }
-
- public void setPunish(int punish) {
- this.punish = punish;
- }
-
- public int getPersuade() {
- return persuade;
- }
-
- public void setPersuade(int persuade) {
- this.persuade = persuade;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java
deleted file mode 100644
index 00b6a98..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.model;
-
-import java.util.List;
-
-public class PunishTypeBean {
- private int code;
- private String message;
- private boolean success;
- private List data;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public static class DataBean {
- /**
- * punishTime : 2021-01-12 09:08:59
- * punishTypeName : 处罚
- * punishImage : images
- * punishType : 1
- * punishRemarks : 处罚
- */
-
- private String punishTime;
- private String punishTypeName;
- private String punishImage;
- private String punishType;
- private String punishRemarks;
-
- public String getPunishTime() {
- return punishTime;
- }
-
- public void setPunishTime(String punishTime) {
- this.punishTime = punishTime;
- }
-
- public String getPunishTypeName() {
- return punishTypeName;
- }
-
- public void setPunishTypeName(String punishTypeName) {
- this.punishTypeName = punishTypeName;
- }
-
- public String getPunishImage() {
- return punishImage;
- }
-
- public void setPunishImage(String punishImage) {
- this.punishImage = punishImage;
- }
-
- public String getPunishType() {
- return punishType;
- }
-
- public void setPunishType(String punishType) {
- this.punishType = punishType;
- }
-
- public String getPunishRemarks() {
- return punishRemarks;
- }
-
- public void setPunishRemarks(String punishRemarks) {
- this.punishRemarks = punishRemarks;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java b/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java
deleted file mode 100644
index a4d8337..0000000
--- a/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.casic.dcms.model;
-
-public class UnitFeatureBean {
-
- private String BGID;
- private String BGNAME;
- private int OBJECTID;
-
- public String getBGID() {
- return BGID;
- }
-
- public void setBGID(String BGID) {
- this.BGID = BGID;
- }
-
- public String getBGNAME() {
- return BGNAME;
- }
-
- public void setBGNAME(String BGNAME) {
- this.BGNAME = BGNAME;
- }
-
- public int getOBJECTID() {
- return OBJECTID;
- }
-
- public void setOBJECTID(int OBJECTID) {
- this.OBJECTID = OBJECTID;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java b/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
index 0578f7b..b0c24d5 100644
--- a/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
+++ b/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
@@ -1,9 +1,16 @@
package com.casic.dcms.model;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import androidx.annotation.NonNull;
+
import java.util.List;
-public class WellAlarmListBean {
-
+/**
+ * Parcelable 是 Android 平台专门为性能优化而设计的序列化机制,通常比 Serializable 快 10 倍左右
+ */
+public class WellAlarmListBean implements Parcelable {
private int code;
private DataBean data;
private String message;
@@ -41,7 +48,43 @@
this.success = success;
}
- public static class DataBean {
+ public WellAlarmListBean() {
+
+ }
+
+ protected WellAlarmListBean(Parcel in) {
+ code = in.readInt();
+ data = in.readParcelable(DataBean.class.getClassLoader());
+ message = in.readString();
+ success = in.readByte() != 0;
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public WellAlarmListBean createFromParcel(Parcel in) {
+ return new WellAlarmListBean(in);
+ }
+
+ @Override
+ public WellAlarmListBean[] newArray(int size) {
+ return new WellAlarmListBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeInt(code);
+ dest.writeParcelable(data, flags);
+ dest.writeString(message);
+ dest.writeByte((byte) (success ? 1 : 0));
+ }
+
+ public static class DataBean implements Parcelable {
private int total;
private List rows;
@@ -62,7 +105,38 @@
this.rows = rows;
}
- public static class RowsBean {
+ public DataBean() {
+ }
+
+ protected DataBean(Parcel in) {
+ total = in.readInt();
+ rows = in.createTypedArrayList(RowsBean.CREATOR);
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public DataBean createFromParcel(Parcel in) {
+ return new DataBean(in);
+ }
+
+ @Override
+ public DataBean[] newArray(int size) {
+ return new DataBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(total);
+ dest.writeTypedList(rows);
+ }
+
+ public static class RowsBean implements Parcelable {
/**
* alarmContent : 1
* deptName : 崇仁县城管局
@@ -296,6 +370,79 @@
public void setStatus(String status) {
this.status = status;
}
+
+ public RowsBean() {
+ }
+
+ protected RowsBean(Parcel in) {
+ alarmContent = in.readInt();
+ deptName = in.readString();
+ jobStatus = in.readString();
+ alarmContentName = in.readString();
+ wellCode = in.readString();
+ alarmTime = in.readString();
+ deptid = in.readString();
+ alarmTypeName = in.readString();
+ alarmMessage = in.readString();
+ staff = in.readString();
+ deviceId = in.readString();
+ jobId = in.readString();
+ jobStatusName = in.readString();
+ alarmType = in.readString();
+ alarmValue = in.readString();
+ devcode = in.readString();
+ statusName = in.readString();
+ alarmLevel = in.readString();
+ tel = in.readString();
+ id = in.readString();
+ wellId = in.readString();
+ position = in.readString();
+ status = in.readString();
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public RowsBean createFromParcel(Parcel in) {
+ return new RowsBean(in);
+ }
+
+ @Override
+ public RowsBean[] newArray(int size) {
+ return new RowsBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(alarmContent);
+ dest.writeString(deptName);
+ dest.writeString(jobStatus);
+ dest.writeString(alarmContentName);
+ dest.writeString(wellCode);
+ dest.writeString(alarmTime);
+ dest.writeString(deptid);
+ dest.writeString(alarmTypeName);
+ dest.writeString(alarmMessage);
+ dest.writeString(staff);
+ dest.writeString(deviceId);
+ dest.writeString(jobId);
+ dest.writeString(jobStatusName);
+ dest.writeString(alarmType);
+ dest.writeString(alarmValue);
+ dest.writeString(devcode);
+ dest.writeString(statusName);
+ dest.writeString(alarmLevel);
+ dest.writeString(tel);
+ dest.writeString(id);
+ dest.writeString(wellId);
+ dest.writeString(position);
+ dest.writeString(status);
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/dcms/model/WellDetailBean.java b/app/src/main/java/com/casic/dcms/model/WellDetailBean.java
index cea8774..4e6c8fd 100644
--- a/app/src/main/java/com/casic/dcms/model/WellDetailBean.java
+++ b/app/src/main/java/com/casic/dcms/model/WellDetailBean.java
@@ -60,7 +60,6 @@
}
public static class FieldAliasesBean {
-
private String objectid;
private String 编号;
private String 附属物编码;
@@ -190,7 +189,6 @@
}
public static class SpatialReferenceBean {
-
private int wkid;
private int latestWkid;
@@ -212,7 +210,6 @@
}
public static class FieldsBean {
-
private String name;
private String type;
private String alias;
@@ -252,7 +249,6 @@
}
public static class FeaturesBean {
-
private AttributesBean attributes;
private GeometryBean geometry;
diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
index 8b15d77..6f1d941 100644
--- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
+++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
@@ -621,8 +621,8 @@
/**
* 报警列表
*/
- public static Observable getAlarmList(int limit, int offset) {
- return api.getAlarmList(AuthenticationHelper.getToken(), "1", limit, offset);
+ public static Observable getAlarmList(int offset) {
+ return api.getAlarmList(AuthenticationHelper.getToken(), "1", LocaleConstant.PAGE_LIMIT, offset);
}
/**
@@ -662,18 +662,15 @@
return api.optionWellStatus(AuthenticationHelper.getToken(), bfzt);
}
+ private static final RetrofitService arcgisApi = RetrofitFactory.createRetrofit(
+ "http://111.198.10.15:13002", RetrofitService.class, true
+ );
+
/**
* 报警窨井详情
*/
public static Observable getWellDetailResult(String where) {
-// Retrofit retrofit = new Retrofit.Builder()
-// .baseUrl("http://111.198.10.15:13002")
-// .addConverterFactory(GsonConverterFactory.create())//Gson转换器
-// .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
-// .client(createOKHttpClient())//log拦截器
-// .build();
-// RetrofitService service = retrofit.create(RetrofitService.class);
- return api.getWellDetail(
+ return arcgisApi.getWellDetail(
"json", "4326", "4326", "*", true, where
);
}
diff --git a/.gitignore b/.gitignore
index f0f71e2..ee6b213 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,12 @@
*.iml
.gradle
/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
+/.idea
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
.idea
+*.apk
+*.json
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fdb7255..6873489 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -109,7 +109,7 @@
-
+
diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
index 2dcdc64..0364fc7 100644
--- a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
+++ b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
@@ -9,6 +9,7 @@
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
@@ -25,7 +26,6 @@
private final Context context;
private final List dataRows;
private final LayoutInflater layoutInflater;
- private PunishTypeAdapter adapter;
public PackageCaseListAdapter(Context context, List dataRows) {
this.context = context;
@@ -36,7 +36,7 @@
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv, parent, false));
+ return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv_l, parent, false));
}
@Override
@@ -57,16 +57,67 @@
return dataRows.size();
}
- @SuppressLint("NotifyDataSetChanged")
- public void refresh(List dataRows) {
- this.dataRows.clear();
- this.dataRows.addAll(dataRows);
- notifyDataSetChanged();
+ public void refresh(List newRows) {
+ DiffUtil.Callback diffCallback = new DiffUtil.Callback() {
+
+ @Override
+ public int getOldListSize() {
+ return dataRows.size();
+ }
+
+ @Override
+ public int getNewListSize() {
+ return newRows.size();
+ }
+
+ @Override
+ public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
+ if (dataRows == null || newRows == null) {
+ return false;
+ }
+
+ // 检查索引是否在有效范围内
+ if (oldItemPosition < 0 || oldItemPosition >= dataRows.size() ||
+ newItemPosition < 0 || newItemPosition >= newRows.size()) {
+ return false;
+ }
+
+ // 获取元素并进行比较
+ Object oldItem = dataRows.get(oldItemPosition);
+ Object newItem = newRows.get(newItemPosition);
+
+ // 处理空指针情况
+ if (oldItem == null && newItem == null) {
+ return true;
+ }
+ if (oldItem == null || newItem == null) {
+ return false;
+ }
+
+ return oldItem.equals(newItem);
+ }
+
+ @Override
+ public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
+ return dataRows.get(oldItemPosition) == newRows.get(newItemPosition);
+ }
+ };
+
+ DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);
+
+ dataRows.clear();
+ dataRows.addAll(newRows);
+
+ diffResult.dispatchUpdatesTo(this);
}
- public void loadMore(List dataRows) {
- this.dataRows.addAll(dataRows);
- notifyItemRangeInserted(this.dataRows.size(), dataRows.size());
+ public void loadMore(List newRows) {
+ if (newRows.isEmpty()) {
+ return;
+ }
+ int startPosition = this.dataRows.size();
+ this.dataRows.addAll(newRows);
+ notifyItemRangeInserted(startPosition, newRows.size());
}
class ItemViewHolder extends RecyclerView.ViewHolder {
@@ -84,7 +135,6 @@
casePunishView = itemView.findViewById(R.id.casePunishView);
}
-
void bindView(PackageCaseBean.DataBean.RowsBean rowsBean) {
//三包核实图片
String fileIdVerify = rowsBean.getFileIdVerify();
@@ -97,45 +147,6 @@
}
caseTitleView.setText(rowsBean.getDescription());
caseDateView.setText("上报时间:" + rowsBean.getReportTime());
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class);
-// if (punishTypeBean.getData().size() != 0) {
-// //获取商铺处罚次数
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class);
-//
-// adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData());
-// LinearLayoutManager layoutManager = new LinearLayoutManager(context);
-// layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
-// punishRecyclerView.setLayoutManager(layoutManager);
-// punishRecyclerView.setAdapter(adapter);
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
-// }
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
}
}
diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
deleted file mode 100644
index 2e178e5..0000000
--- a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.casic.dcms.adapter;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.core.content.ContextCompat;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.model.PunishTimesBean;
-import com.casic.dcms.model.PunishTypeBean;
-
-import java.util.List;
-
-@SuppressLint("SetTextI18n")
-public class PunishTypeAdapter extends RecyclerView.Adapter {
-
- private final Context context;
- private final List dataRows;
- private final PunishTimesBean.DataBean dataBean;
- private final LayoutInflater layoutInflater;
-
- PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) {
- this.context = context;
- this.dataRows = dataRows;
- this.dataBean = dataBean;
- this.layoutInflater = LayoutInflater.from(context);
- }
-
- @NonNull
- @Override
- public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false));
- }
-
- @Override
- public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- String typeName = dataRows.get(position).getPunishTypeName();
- int color, times;
- switch (typeName) {
- case "劝导":
- times = dataBean.getPersuade();
- color = ContextCompat.getColor(context, R.color.persuadeColor);
- break;
- case "警告":
- times = dataBean.getWarn();
- color = ContextCompat.getColor(context, R.color.warnColor);
- break;
- case "处罚":
- times = dataBean.getPunish();
- color = ContextCompat.getColor(context, R.color.punishColor);
- break;
- default:
- times = 0;
- color = ContextCompat.getColor(context, R.color.mainThemeColor);
- break;
- }
- if (times == 0) {
- holder.punishTypeView.setVisibility(View.GONE);
- } else {
- holder.punishTypeView.setText(typeName + " x " + times);
- holder.punishTypeView.setBackgroundColor(color);
- }
- }
-
- @Override
- public int getItemCount() {
- return dataRows.size();
- }
-
- static class ItemViewHolder extends RecyclerView.ViewHolder {
-
- private final TextView punishTypeView;
-
- ItemViewHolder(@NonNull View itemView) {
- super(itemView);
- punishTypeView = itemView.findViewById(R.id.punishTypeView);
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
deleted file mode 100644
index dc57ca3..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.casic.dcms.model;
-
-public class PunishTimesBean {
- private int code;
- private DataBean data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public DataBean getData() {
- return data;
- }
-
- public void setData(DataBean data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataBean {
- /**
- * warn : 0
- * punish : 0
- * persuade : 0
- */
-
- private int warn;
- private int punish;
- private int persuade;
-
- public int getWarn() {
- return warn;
- }
-
- public void setWarn(int warn) {
- this.warn = warn;
- }
-
- public int getPunish() {
- return punish;
- }
-
- public void setPunish(int punish) {
- this.punish = punish;
- }
-
- public int getPersuade() {
- return persuade;
- }
-
- public void setPersuade(int persuade) {
- this.persuade = persuade;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java
deleted file mode 100644
index 00b6a98..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.model;
-
-import java.util.List;
-
-public class PunishTypeBean {
- private int code;
- private String message;
- private boolean success;
- private List data;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public static class DataBean {
- /**
- * punishTime : 2021-01-12 09:08:59
- * punishTypeName : 处罚
- * punishImage : images
- * punishType : 1
- * punishRemarks : 处罚
- */
-
- private String punishTime;
- private String punishTypeName;
- private String punishImage;
- private String punishType;
- private String punishRemarks;
-
- public String getPunishTime() {
- return punishTime;
- }
-
- public void setPunishTime(String punishTime) {
- this.punishTime = punishTime;
- }
-
- public String getPunishTypeName() {
- return punishTypeName;
- }
-
- public void setPunishTypeName(String punishTypeName) {
- this.punishTypeName = punishTypeName;
- }
-
- public String getPunishImage() {
- return punishImage;
- }
-
- public void setPunishImage(String punishImage) {
- this.punishImage = punishImage;
- }
-
- public String getPunishType() {
- return punishType;
- }
-
- public void setPunishType(String punishType) {
- this.punishType = punishType;
- }
-
- public String getPunishRemarks() {
- return punishRemarks;
- }
-
- public void setPunishRemarks(String punishRemarks) {
- this.punishRemarks = punishRemarks;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java b/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java
deleted file mode 100644
index a4d8337..0000000
--- a/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.casic.dcms.model;
-
-public class UnitFeatureBean {
-
- private String BGID;
- private String BGNAME;
- private int OBJECTID;
-
- public String getBGID() {
- return BGID;
- }
-
- public void setBGID(String BGID) {
- this.BGID = BGID;
- }
-
- public String getBGNAME() {
- return BGNAME;
- }
-
- public void setBGNAME(String BGNAME) {
- this.BGNAME = BGNAME;
- }
-
- public int getOBJECTID() {
- return OBJECTID;
- }
-
- public void setOBJECTID(int OBJECTID) {
- this.OBJECTID = OBJECTID;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java b/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
index 0578f7b..b0c24d5 100644
--- a/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
+++ b/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
@@ -1,9 +1,16 @@
package com.casic.dcms.model;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import androidx.annotation.NonNull;
+
import java.util.List;
-public class WellAlarmListBean {
-
+/**
+ * Parcelable 是 Android 平台专门为性能优化而设计的序列化机制,通常比 Serializable 快 10 倍左右
+ */
+public class WellAlarmListBean implements Parcelable {
private int code;
private DataBean data;
private String message;
@@ -41,7 +48,43 @@
this.success = success;
}
- public static class DataBean {
+ public WellAlarmListBean() {
+
+ }
+
+ protected WellAlarmListBean(Parcel in) {
+ code = in.readInt();
+ data = in.readParcelable(DataBean.class.getClassLoader());
+ message = in.readString();
+ success = in.readByte() != 0;
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public WellAlarmListBean createFromParcel(Parcel in) {
+ return new WellAlarmListBean(in);
+ }
+
+ @Override
+ public WellAlarmListBean[] newArray(int size) {
+ return new WellAlarmListBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeInt(code);
+ dest.writeParcelable(data, flags);
+ dest.writeString(message);
+ dest.writeByte((byte) (success ? 1 : 0));
+ }
+
+ public static class DataBean implements Parcelable {
private int total;
private List rows;
@@ -62,7 +105,38 @@
this.rows = rows;
}
- public static class RowsBean {
+ public DataBean() {
+ }
+
+ protected DataBean(Parcel in) {
+ total = in.readInt();
+ rows = in.createTypedArrayList(RowsBean.CREATOR);
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public DataBean createFromParcel(Parcel in) {
+ return new DataBean(in);
+ }
+
+ @Override
+ public DataBean[] newArray(int size) {
+ return new DataBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(total);
+ dest.writeTypedList(rows);
+ }
+
+ public static class RowsBean implements Parcelable {
/**
* alarmContent : 1
* deptName : 崇仁县城管局
@@ -296,6 +370,79 @@
public void setStatus(String status) {
this.status = status;
}
+
+ public RowsBean() {
+ }
+
+ protected RowsBean(Parcel in) {
+ alarmContent = in.readInt();
+ deptName = in.readString();
+ jobStatus = in.readString();
+ alarmContentName = in.readString();
+ wellCode = in.readString();
+ alarmTime = in.readString();
+ deptid = in.readString();
+ alarmTypeName = in.readString();
+ alarmMessage = in.readString();
+ staff = in.readString();
+ deviceId = in.readString();
+ jobId = in.readString();
+ jobStatusName = in.readString();
+ alarmType = in.readString();
+ alarmValue = in.readString();
+ devcode = in.readString();
+ statusName = in.readString();
+ alarmLevel = in.readString();
+ tel = in.readString();
+ id = in.readString();
+ wellId = in.readString();
+ position = in.readString();
+ status = in.readString();
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public RowsBean createFromParcel(Parcel in) {
+ return new RowsBean(in);
+ }
+
+ @Override
+ public RowsBean[] newArray(int size) {
+ return new RowsBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(alarmContent);
+ dest.writeString(deptName);
+ dest.writeString(jobStatus);
+ dest.writeString(alarmContentName);
+ dest.writeString(wellCode);
+ dest.writeString(alarmTime);
+ dest.writeString(deptid);
+ dest.writeString(alarmTypeName);
+ dest.writeString(alarmMessage);
+ dest.writeString(staff);
+ dest.writeString(deviceId);
+ dest.writeString(jobId);
+ dest.writeString(jobStatusName);
+ dest.writeString(alarmType);
+ dest.writeString(alarmValue);
+ dest.writeString(devcode);
+ dest.writeString(statusName);
+ dest.writeString(alarmLevel);
+ dest.writeString(tel);
+ dest.writeString(id);
+ dest.writeString(wellId);
+ dest.writeString(position);
+ dest.writeString(status);
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/dcms/model/WellDetailBean.java b/app/src/main/java/com/casic/dcms/model/WellDetailBean.java
index cea8774..4e6c8fd 100644
--- a/app/src/main/java/com/casic/dcms/model/WellDetailBean.java
+++ b/app/src/main/java/com/casic/dcms/model/WellDetailBean.java
@@ -60,7 +60,6 @@
}
public static class FieldAliasesBean {
-
private String objectid;
private String 编号;
private String 附属物编码;
@@ -190,7 +189,6 @@
}
public static class SpatialReferenceBean {
-
private int wkid;
private int latestWkid;
@@ -212,7 +210,6 @@
}
public static class FieldsBean {
-
private String name;
private String type;
private String alias;
@@ -252,7 +249,6 @@
}
public static class FeaturesBean {
-
private AttributesBean attributes;
private GeometryBean geometry;
diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
index 8b15d77..6f1d941 100644
--- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
+++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
@@ -621,8 +621,8 @@
/**
* 报警列表
*/
- public static Observable getAlarmList(int limit, int offset) {
- return api.getAlarmList(AuthenticationHelper.getToken(), "1", limit, offset);
+ public static Observable getAlarmList(int offset) {
+ return api.getAlarmList(AuthenticationHelper.getToken(), "1", LocaleConstant.PAGE_LIMIT, offset);
}
/**
@@ -662,18 +662,15 @@
return api.optionWellStatus(AuthenticationHelper.getToken(), bfzt);
}
+ private static final RetrofitService arcgisApi = RetrofitFactory.createRetrofit(
+ "http://111.198.10.15:13002", RetrofitService.class, true
+ );
+
/**
* 报警窨井详情
*/
public static Observable getWellDetailResult(String where) {
-// Retrofit retrofit = new Retrofit.Builder()
-// .baseUrl("http://111.198.10.15:13002")
-// .addConverterFactory(GsonConverterFactory.create())//Gson转换器
-// .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
-// .client(createOKHttpClient())//log拦截器
-// .build();
-// RetrofitService service = retrofit.create(RetrofitService.class);
- return api.getWellDetail(
+ return arcgisApi.getWellDetail(
"json", "4326", "4326", "*", true, where
);
}
diff --git a/app/src/main/java/com/casic/dcms/view/pipeline/AlarmOnMapActivity.java b/app/src/main/java/com/casic/dcms/view/pipeline/AlarmOnMapActivity.java
new file mode 100644
index 0000000..e3dc01d
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/pipeline/AlarmOnMapActivity.java
@@ -0,0 +1,212 @@
+package com.casic.dcms.view.pipeline;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityMapAlarmBinding;
+import com.casic.dcms.model.WellAlarmListBean;
+import com.casic.dcms.model.WellDetailBean;
+import com.casic.dcms.utils.ArcGisMapCreator;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.ViewGroupKit;
+import com.casic.dcms.vm.WellViewModel;
+import com.esri.arcgisruntime.geometry.Point;
+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.symbology.SimpleMarkerSymbol;
+import com.esri.arcgisruntime.util.ListenableList;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.LoadState;
+import com.pengxh.androidx.lite.utils.LoadingDialog;
+import com.pengxh.androidx.lite.widget.TitleBarView;
+import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
+import com.qmuiteam.qmui.widget.popup.QMUIPopup;
+import com.qmuiteam.qmui.widget.popup.QMUIPopups;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AlarmOnMapActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "AlarmOnMapActivity";
+ private final Context context = this;
+ private final List geometryList = new ArrayList<>();
+ private WellViewModel wellViewModel;
+
+ @Override
+ protected void setupTopBarLayout() {
+ ViewGroupKit.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() {
+ wellViewModel.loadState.observe(this, new Observer() {
+ @Override
+ public void onChanged(LoadState loadState) {
+ if (loadState == LoadState.Loading) {
+ LoadingDialog.show(AlarmOnMapActivity.this, "数据加载中,请稍后");
+ } else {
+ LoadingDialog.dismiss();
+ }
+ }
+ });
+ }
+
+ @Override
+ public void initOnCreate(@Nullable Bundle savedInstanceState) {
+ binding.mapView.setAttributionTextVisible(false);//去掉左下角属性标识
+ binding.mapView.setViewpointScaleAsync(64000);
+ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS);
+ //创建底图、并设置底图图层
+ Basemap basemap = new Basemap(ArcGisMapCreator.createNoGridLayer());
+ arcGISMap.setBasemap(basemap);
+ binding.mapView.setMap(arcGISMap);
+
+ wellViewModel = new ViewModelProvider(this).get(WellViewModel.class);
+ wellViewModel.resultModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(WellDetailBean wellDetailBean) {
+ List features = wellDetailBean.getFeatures();
+ if (features.size() > 0) {
+ WellDetailBean.FeaturesBean featuresBean = features.get(0);
+ //将获取到的井数据缓存起来
+ geometryList.add(featuresBean);
+ WellDetailBean.FeaturesBean.GeometryBean geometryBean = featuresBean.getGeometry();
+ //每获取一个点就绘制出
+ addMarker(new Point(geometryBean.getX(), geometryBean.getY()));
+ }
+ }
+ });
+
+ Bundle extras = getIntent().getExtras();
+ if (extras != null) {
+ List dataBeans = extras.getParcelableArrayList("rows_list");
+ if (dataBeans == null) {
+ return;
+ }
+ for (WellAlarmListBean.DataBean.RowsBean dataBean : dataBeans) {
+ String queryParam = "编号='" + dataBean.getWellCode() + "'";
+ Log.d(TAG, "queryParam: " + queryParam);
+ wellViewModel.getWellDetail(context, queryParam);
+ }
+ }
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public void initEvent() {
+ binding.expandMapView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ binding.mapView.setViewpointScaleAsync(binding.mapView.getMapScale() * 0.5);
+ }
+ });
+ binding.minusMapView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ binding.mapView.setViewpointScaleAsync(binding.mapView.getMapScale() * 2);
+ }
+ });
+
+ binding.mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, binding.mapView) {
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+ android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY()));
+ Point clickPoint = binding.mapView.screenToLocation(screenPoint);
+ if (geometryList.size() > 0) {
+ List tempList = new ArrayList<>();
+ for (WellDetailBean.FeaturesBean featuresBean : geometryList) {
+ WellDetailBean.FeaturesBean.GeometryBean dataBean = featuresBean.getGeometry();
+ if (Math.abs(dataBean.getX() - clickPoint.getX()) <= 10 * LocaleConstant.DELTA_LNG_10 &&
+ Math.abs(dataBean.getY() - clickPoint.getY()) <= 10 * LocaleConstant.DELTA_LNG_10) {
+ tempList.add(featuresBean);
+ }
+ }
+ if (tempList.size() > 0) {
+ QMUIDialog.MenuDialogBuilder menuDialogBuilder = new QMUIDialog.MenuDialogBuilder(context);
+ menuDialogBuilder.setTitle("请选择您要查看的窨井");
+ for (WellDetailBean.FeaturesBean dataBean : tempList) {
+ menuDialogBuilder.addItem(dataBean.getAttributes().get编号(), new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+
+ View popupView = LayoutInflater.from(context).inflate(R.layout.popu_well, null);
+ TextView wellCodeView = popupView.findViewById(R.id.wellCodeView);
+ TextView wellTypeView = popupView.findViewById(R.id.wellTypeView);
+ TextView wellPositionView = popupView.findViewById(R.id.wellPositionView);
+
+ WellDetailBean.FeaturesBean.AttributesBean attributes = dataBean.getAttributes();
+ wellCodeView.setText(attributes.get编号());
+ wellTypeView.setText(attributes.get附属物名称());
+ wellPositionView.setText(attributes.get所属道路());
+
+ QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 290))
+ .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);
+ }
+ });
+ }
+ menuDialogBuilder.create().show();
+ }
+ }
+ return super.onSingleTapConfirmed(e);
+ }
+ });
+ }
+
+ protected void onResume() {
+ super.onResume();
+ binding.mapView.resume();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ binding.mapView.pause();
+ }
+
+ private void addMarker(Point point) {
+ SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10);
+ Graphic graphic = new Graphic(point, simpleMarkerSymbol);
+ GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay();
+ ListenableList overlayGraphics = mGraphicsOverlay.getGraphics();
+ ListenableList graphicsOverlays = binding.mapView.getGraphicsOverlays();
+ overlayGraphics.add(graphic);
+ graphicsOverlays.add(mGraphicsOverlay);
+ }
+}
diff --git a/.gitignore b/.gitignore
index f0f71e2..ee6b213 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,12 @@
*.iml
.gradle
/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
+/.idea
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
.idea
+*.apk
+*.json
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fdb7255..6873489 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -109,7 +109,7 @@
-
+
diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
index 2dcdc64..0364fc7 100644
--- a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
+++ b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
@@ -9,6 +9,7 @@
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
@@ -25,7 +26,6 @@
private final Context context;
private final List dataRows;
private final LayoutInflater layoutInflater;
- private PunishTypeAdapter adapter;
public PackageCaseListAdapter(Context context, List dataRows) {
this.context = context;
@@ -36,7 +36,7 @@
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv, parent, false));
+ return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv_l, parent, false));
}
@Override
@@ -57,16 +57,67 @@
return dataRows.size();
}
- @SuppressLint("NotifyDataSetChanged")
- public void refresh(List dataRows) {
- this.dataRows.clear();
- this.dataRows.addAll(dataRows);
- notifyDataSetChanged();
+ public void refresh(List newRows) {
+ DiffUtil.Callback diffCallback = new DiffUtil.Callback() {
+
+ @Override
+ public int getOldListSize() {
+ return dataRows.size();
+ }
+
+ @Override
+ public int getNewListSize() {
+ return newRows.size();
+ }
+
+ @Override
+ public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
+ if (dataRows == null || newRows == null) {
+ return false;
+ }
+
+ // 检查索引是否在有效范围内
+ if (oldItemPosition < 0 || oldItemPosition >= dataRows.size() ||
+ newItemPosition < 0 || newItemPosition >= newRows.size()) {
+ return false;
+ }
+
+ // 获取元素并进行比较
+ Object oldItem = dataRows.get(oldItemPosition);
+ Object newItem = newRows.get(newItemPosition);
+
+ // 处理空指针情况
+ if (oldItem == null && newItem == null) {
+ return true;
+ }
+ if (oldItem == null || newItem == null) {
+ return false;
+ }
+
+ return oldItem.equals(newItem);
+ }
+
+ @Override
+ public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
+ return dataRows.get(oldItemPosition) == newRows.get(newItemPosition);
+ }
+ };
+
+ DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);
+
+ dataRows.clear();
+ dataRows.addAll(newRows);
+
+ diffResult.dispatchUpdatesTo(this);
}
- public void loadMore(List dataRows) {
- this.dataRows.addAll(dataRows);
- notifyItemRangeInserted(this.dataRows.size(), dataRows.size());
+ public void loadMore(List newRows) {
+ if (newRows.isEmpty()) {
+ return;
+ }
+ int startPosition = this.dataRows.size();
+ this.dataRows.addAll(newRows);
+ notifyItemRangeInserted(startPosition, newRows.size());
}
class ItemViewHolder extends RecyclerView.ViewHolder {
@@ -84,7 +135,6 @@
casePunishView = itemView.findViewById(R.id.casePunishView);
}
-
void bindView(PackageCaseBean.DataBean.RowsBean rowsBean) {
//三包核实图片
String fileIdVerify = rowsBean.getFileIdVerify();
@@ -97,45 +147,6 @@
}
caseTitleView.setText(rowsBean.getDescription());
caseDateView.setText("上报时间:" + rowsBean.getReportTime());
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class);
-// if (punishTypeBean.getData().size() != 0) {
-// //获取商铺处罚次数
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class);
-//
-// adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData());
-// LinearLayoutManager layoutManager = new LinearLayoutManager(context);
-// layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
-// punishRecyclerView.setLayoutManager(layoutManager);
-// punishRecyclerView.setAdapter(adapter);
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
-// }
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
}
}
diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
deleted file mode 100644
index 2e178e5..0000000
--- a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.casic.dcms.adapter;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.core.content.ContextCompat;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.model.PunishTimesBean;
-import com.casic.dcms.model.PunishTypeBean;
-
-import java.util.List;
-
-@SuppressLint("SetTextI18n")
-public class PunishTypeAdapter extends RecyclerView.Adapter {
-
- private final Context context;
- private final List dataRows;
- private final PunishTimesBean.DataBean dataBean;
- private final LayoutInflater layoutInflater;
-
- PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) {
- this.context = context;
- this.dataRows = dataRows;
- this.dataBean = dataBean;
- this.layoutInflater = LayoutInflater.from(context);
- }
-
- @NonNull
- @Override
- public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false));
- }
-
- @Override
- public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- String typeName = dataRows.get(position).getPunishTypeName();
- int color, times;
- switch (typeName) {
- case "劝导":
- times = dataBean.getPersuade();
- color = ContextCompat.getColor(context, R.color.persuadeColor);
- break;
- case "警告":
- times = dataBean.getWarn();
- color = ContextCompat.getColor(context, R.color.warnColor);
- break;
- case "处罚":
- times = dataBean.getPunish();
- color = ContextCompat.getColor(context, R.color.punishColor);
- break;
- default:
- times = 0;
- color = ContextCompat.getColor(context, R.color.mainThemeColor);
- break;
- }
- if (times == 0) {
- holder.punishTypeView.setVisibility(View.GONE);
- } else {
- holder.punishTypeView.setText(typeName + " x " + times);
- holder.punishTypeView.setBackgroundColor(color);
- }
- }
-
- @Override
- public int getItemCount() {
- return dataRows.size();
- }
-
- static class ItemViewHolder extends RecyclerView.ViewHolder {
-
- private final TextView punishTypeView;
-
- ItemViewHolder(@NonNull View itemView) {
- super(itemView);
- punishTypeView = itemView.findViewById(R.id.punishTypeView);
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
deleted file mode 100644
index dc57ca3..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.casic.dcms.model;
-
-public class PunishTimesBean {
- private int code;
- private DataBean data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public DataBean getData() {
- return data;
- }
-
- public void setData(DataBean data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataBean {
- /**
- * warn : 0
- * punish : 0
- * persuade : 0
- */
-
- private int warn;
- private int punish;
- private int persuade;
-
- public int getWarn() {
- return warn;
- }
-
- public void setWarn(int warn) {
- this.warn = warn;
- }
-
- public int getPunish() {
- return punish;
- }
-
- public void setPunish(int punish) {
- this.punish = punish;
- }
-
- public int getPersuade() {
- return persuade;
- }
-
- public void setPersuade(int persuade) {
- this.persuade = persuade;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java
deleted file mode 100644
index 00b6a98..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.model;
-
-import java.util.List;
-
-public class PunishTypeBean {
- private int code;
- private String message;
- private boolean success;
- private List data;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public static class DataBean {
- /**
- * punishTime : 2021-01-12 09:08:59
- * punishTypeName : 处罚
- * punishImage : images
- * punishType : 1
- * punishRemarks : 处罚
- */
-
- private String punishTime;
- private String punishTypeName;
- private String punishImage;
- private String punishType;
- private String punishRemarks;
-
- public String getPunishTime() {
- return punishTime;
- }
-
- public void setPunishTime(String punishTime) {
- this.punishTime = punishTime;
- }
-
- public String getPunishTypeName() {
- return punishTypeName;
- }
-
- public void setPunishTypeName(String punishTypeName) {
- this.punishTypeName = punishTypeName;
- }
-
- public String getPunishImage() {
- return punishImage;
- }
-
- public void setPunishImage(String punishImage) {
- this.punishImage = punishImage;
- }
-
- public String getPunishType() {
- return punishType;
- }
-
- public void setPunishType(String punishType) {
- this.punishType = punishType;
- }
-
- public String getPunishRemarks() {
- return punishRemarks;
- }
-
- public void setPunishRemarks(String punishRemarks) {
- this.punishRemarks = punishRemarks;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java b/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java
deleted file mode 100644
index a4d8337..0000000
--- a/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.casic.dcms.model;
-
-public class UnitFeatureBean {
-
- private String BGID;
- private String BGNAME;
- private int OBJECTID;
-
- public String getBGID() {
- return BGID;
- }
-
- public void setBGID(String BGID) {
- this.BGID = BGID;
- }
-
- public String getBGNAME() {
- return BGNAME;
- }
-
- public void setBGNAME(String BGNAME) {
- this.BGNAME = BGNAME;
- }
-
- public int getOBJECTID() {
- return OBJECTID;
- }
-
- public void setOBJECTID(int OBJECTID) {
- this.OBJECTID = OBJECTID;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java b/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
index 0578f7b..b0c24d5 100644
--- a/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
+++ b/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
@@ -1,9 +1,16 @@
package com.casic.dcms.model;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import androidx.annotation.NonNull;
+
import java.util.List;
-public class WellAlarmListBean {
-
+/**
+ * Parcelable 是 Android 平台专门为性能优化而设计的序列化机制,通常比 Serializable 快 10 倍左右
+ */
+public class WellAlarmListBean implements Parcelable {
private int code;
private DataBean data;
private String message;
@@ -41,7 +48,43 @@
this.success = success;
}
- public static class DataBean {
+ public WellAlarmListBean() {
+
+ }
+
+ protected WellAlarmListBean(Parcel in) {
+ code = in.readInt();
+ data = in.readParcelable(DataBean.class.getClassLoader());
+ message = in.readString();
+ success = in.readByte() != 0;
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public WellAlarmListBean createFromParcel(Parcel in) {
+ return new WellAlarmListBean(in);
+ }
+
+ @Override
+ public WellAlarmListBean[] newArray(int size) {
+ return new WellAlarmListBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeInt(code);
+ dest.writeParcelable(data, flags);
+ dest.writeString(message);
+ dest.writeByte((byte) (success ? 1 : 0));
+ }
+
+ public static class DataBean implements Parcelable {
private int total;
private List rows;
@@ -62,7 +105,38 @@
this.rows = rows;
}
- public static class RowsBean {
+ public DataBean() {
+ }
+
+ protected DataBean(Parcel in) {
+ total = in.readInt();
+ rows = in.createTypedArrayList(RowsBean.CREATOR);
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public DataBean createFromParcel(Parcel in) {
+ return new DataBean(in);
+ }
+
+ @Override
+ public DataBean[] newArray(int size) {
+ return new DataBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(total);
+ dest.writeTypedList(rows);
+ }
+
+ public static class RowsBean implements Parcelable {
/**
* alarmContent : 1
* deptName : 崇仁县城管局
@@ -296,6 +370,79 @@
public void setStatus(String status) {
this.status = status;
}
+
+ public RowsBean() {
+ }
+
+ protected RowsBean(Parcel in) {
+ alarmContent = in.readInt();
+ deptName = in.readString();
+ jobStatus = in.readString();
+ alarmContentName = in.readString();
+ wellCode = in.readString();
+ alarmTime = in.readString();
+ deptid = in.readString();
+ alarmTypeName = in.readString();
+ alarmMessage = in.readString();
+ staff = in.readString();
+ deviceId = in.readString();
+ jobId = in.readString();
+ jobStatusName = in.readString();
+ alarmType = in.readString();
+ alarmValue = in.readString();
+ devcode = in.readString();
+ statusName = in.readString();
+ alarmLevel = in.readString();
+ tel = in.readString();
+ id = in.readString();
+ wellId = in.readString();
+ position = in.readString();
+ status = in.readString();
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public RowsBean createFromParcel(Parcel in) {
+ return new RowsBean(in);
+ }
+
+ @Override
+ public RowsBean[] newArray(int size) {
+ return new RowsBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(alarmContent);
+ dest.writeString(deptName);
+ dest.writeString(jobStatus);
+ dest.writeString(alarmContentName);
+ dest.writeString(wellCode);
+ dest.writeString(alarmTime);
+ dest.writeString(deptid);
+ dest.writeString(alarmTypeName);
+ dest.writeString(alarmMessage);
+ dest.writeString(staff);
+ dest.writeString(deviceId);
+ dest.writeString(jobId);
+ dest.writeString(jobStatusName);
+ dest.writeString(alarmType);
+ dest.writeString(alarmValue);
+ dest.writeString(devcode);
+ dest.writeString(statusName);
+ dest.writeString(alarmLevel);
+ dest.writeString(tel);
+ dest.writeString(id);
+ dest.writeString(wellId);
+ dest.writeString(position);
+ dest.writeString(status);
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/dcms/model/WellDetailBean.java b/app/src/main/java/com/casic/dcms/model/WellDetailBean.java
index cea8774..4e6c8fd 100644
--- a/app/src/main/java/com/casic/dcms/model/WellDetailBean.java
+++ b/app/src/main/java/com/casic/dcms/model/WellDetailBean.java
@@ -60,7 +60,6 @@
}
public static class FieldAliasesBean {
-
private String objectid;
private String 编号;
private String 附属物编码;
@@ -190,7 +189,6 @@
}
public static class SpatialReferenceBean {
-
private int wkid;
private int latestWkid;
@@ -212,7 +210,6 @@
}
public static class FieldsBean {
-
private String name;
private String type;
private String alias;
@@ -252,7 +249,6 @@
}
public static class FeaturesBean {
-
private AttributesBean attributes;
private GeometryBean geometry;
diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
index 8b15d77..6f1d941 100644
--- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
+++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
@@ -621,8 +621,8 @@
/**
* 报警列表
*/
- public static Observable getAlarmList(int limit, int offset) {
- return api.getAlarmList(AuthenticationHelper.getToken(), "1", limit, offset);
+ public static Observable getAlarmList(int offset) {
+ return api.getAlarmList(AuthenticationHelper.getToken(), "1", LocaleConstant.PAGE_LIMIT, offset);
}
/**
@@ -662,18 +662,15 @@
return api.optionWellStatus(AuthenticationHelper.getToken(), bfzt);
}
+ private static final RetrofitService arcgisApi = RetrofitFactory.createRetrofit(
+ "http://111.198.10.15:13002", RetrofitService.class, true
+ );
+
/**
* 报警窨井详情
*/
public static Observable getWellDetailResult(String where) {
-// Retrofit retrofit = new Retrofit.Builder()
-// .baseUrl("http://111.198.10.15:13002")
-// .addConverterFactory(GsonConverterFactory.create())//Gson转换器
-// .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
-// .client(createOKHttpClient())//log拦截器
-// .build();
-// RetrofitService service = retrofit.create(RetrofitService.class);
- return api.getWellDetail(
+ return arcgisApi.getWellDetail(
"json", "4326", "4326", "*", true, where
);
}
diff --git a/app/src/main/java/com/casic/dcms/view/pipeline/AlarmOnMapActivity.java b/app/src/main/java/com/casic/dcms/view/pipeline/AlarmOnMapActivity.java
new file mode 100644
index 0000000..e3dc01d
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/pipeline/AlarmOnMapActivity.java
@@ -0,0 +1,212 @@
+package com.casic.dcms.view.pipeline;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityMapAlarmBinding;
+import com.casic.dcms.model.WellAlarmListBean;
+import com.casic.dcms.model.WellDetailBean;
+import com.casic.dcms.utils.ArcGisMapCreator;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.ViewGroupKit;
+import com.casic.dcms.vm.WellViewModel;
+import com.esri.arcgisruntime.geometry.Point;
+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.symbology.SimpleMarkerSymbol;
+import com.esri.arcgisruntime.util.ListenableList;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.LoadState;
+import com.pengxh.androidx.lite.utils.LoadingDialog;
+import com.pengxh.androidx.lite.widget.TitleBarView;
+import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
+import com.qmuiteam.qmui.widget.popup.QMUIPopup;
+import com.qmuiteam.qmui.widget.popup.QMUIPopups;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AlarmOnMapActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "AlarmOnMapActivity";
+ private final Context context = this;
+ private final List geometryList = new ArrayList<>();
+ private WellViewModel wellViewModel;
+
+ @Override
+ protected void setupTopBarLayout() {
+ ViewGroupKit.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() {
+ wellViewModel.loadState.observe(this, new Observer() {
+ @Override
+ public void onChanged(LoadState loadState) {
+ if (loadState == LoadState.Loading) {
+ LoadingDialog.show(AlarmOnMapActivity.this, "数据加载中,请稍后");
+ } else {
+ LoadingDialog.dismiss();
+ }
+ }
+ });
+ }
+
+ @Override
+ public void initOnCreate(@Nullable Bundle savedInstanceState) {
+ binding.mapView.setAttributionTextVisible(false);//去掉左下角属性标识
+ binding.mapView.setViewpointScaleAsync(64000);
+ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS);
+ //创建底图、并设置底图图层
+ Basemap basemap = new Basemap(ArcGisMapCreator.createNoGridLayer());
+ arcGISMap.setBasemap(basemap);
+ binding.mapView.setMap(arcGISMap);
+
+ wellViewModel = new ViewModelProvider(this).get(WellViewModel.class);
+ wellViewModel.resultModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(WellDetailBean wellDetailBean) {
+ List features = wellDetailBean.getFeatures();
+ if (features.size() > 0) {
+ WellDetailBean.FeaturesBean featuresBean = features.get(0);
+ //将获取到的井数据缓存起来
+ geometryList.add(featuresBean);
+ WellDetailBean.FeaturesBean.GeometryBean geometryBean = featuresBean.getGeometry();
+ //每获取一个点就绘制出
+ addMarker(new Point(geometryBean.getX(), geometryBean.getY()));
+ }
+ }
+ });
+
+ Bundle extras = getIntent().getExtras();
+ if (extras != null) {
+ List dataBeans = extras.getParcelableArrayList("rows_list");
+ if (dataBeans == null) {
+ return;
+ }
+ for (WellAlarmListBean.DataBean.RowsBean dataBean : dataBeans) {
+ String queryParam = "编号='" + dataBean.getWellCode() + "'";
+ Log.d(TAG, "queryParam: " + queryParam);
+ wellViewModel.getWellDetail(context, queryParam);
+ }
+ }
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public void initEvent() {
+ binding.expandMapView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ binding.mapView.setViewpointScaleAsync(binding.mapView.getMapScale() * 0.5);
+ }
+ });
+ binding.minusMapView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ binding.mapView.setViewpointScaleAsync(binding.mapView.getMapScale() * 2);
+ }
+ });
+
+ binding.mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, binding.mapView) {
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+ android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY()));
+ Point clickPoint = binding.mapView.screenToLocation(screenPoint);
+ if (geometryList.size() > 0) {
+ List tempList = new ArrayList<>();
+ for (WellDetailBean.FeaturesBean featuresBean : geometryList) {
+ WellDetailBean.FeaturesBean.GeometryBean dataBean = featuresBean.getGeometry();
+ if (Math.abs(dataBean.getX() - clickPoint.getX()) <= 10 * LocaleConstant.DELTA_LNG_10 &&
+ Math.abs(dataBean.getY() - clickPoint.getY()) <= 10 * LocaleConstant.DELTA_LNG_10) {
+ tempList.add(featuresBean);
+ }
+ }
+ if (tempList.size() > 0) {
+ QMUIDialog.MenuDialogBuilder menuDialogBuilder = new QMUIDialog.MenuDialogBuilder(context);
+ menuDialogBuilder.setTitle("请选择您要查看的窨井");
+ for (WellDetailBean.FeaturesBean dataBean : tempList) {
+ menuDialogBuilder.addItem(dataBean.getAttributes().get编号(), new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+
+ View popupView = LayoutInflater.from(context).inflate(R.layout.popu_well, null);
+ TextView wellCodeView = popupView.findViewById(R.id.wellCodeView);
+ TextView wellTypeView = popupView.findViewById(R.id.wellTypeView);
+ TextView wellPositionView = popupView.findViewById(R.id.wellPositionView);
+
+ WellDetailBean.FeaturesBean.AttributesBean attributes = dataBean.getAttributes();
+ wellCodeView.setText(attributes.get编号());
+ wellTypeView.setText(attributes.get附属物名称());
+ wellPositionView.setText(attributes.get所属道路());
+
+ QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 290))
+ .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);
+ }
+ });
+ }
+ menuDialogBuilder.create().show();
+ }
+ }
+ return super.onSingleTapConfirmed(e);
+ }
+ });
+ }
+
+ protected void onResume() {
+ super.onResume();
+ binding.mapView.resume();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ binding.mapView.pause();
+ }
+
+ private void addMarker(Point point) {
+ SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10);
+ Graphic graphic = new Graphic(point, simpleMarkerSymbol);
+ GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay();
+ ListenableList overlayGraphics = mGraphicsOverlay.getGraphics();
+ ListenableList graphicsOverlays = binding.mapView.getGraphicsOverlays();
+ overlayGraphics.add(graphic);
+ graphicsOverlays.add(mGraphicsOverlay);
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/pipeline/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/view/pipeline/PipelineManagerActivity.java
index e2e6656..eac37ed 100644
--- a/app/src/main/java/com/casic/dcms/view/pipeline/PipelineManagerActivity.java
+++ b/app/src/main/java/com/casic/dcms/view/pipeline/PipelineManagerActivity.java
@@ -1,6 +1,7 @@
package com.casic.dcms.view.pipeline;
import android.content.Context;
+import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
@@ -75,7 +76,13 @@
showBatchCancelDialog();
break;
case 1:
- ContextKit.navigatePageTo(context, WarningOnMapActivity.class);
+ if (dataBeans.isEmpty()) {
+ StringKit.show(context, "无报警数据");
+ return;
+ }
+ Intent intent = new Intent(context, AlarmOnMapActivity.class);
+ intent.putParcelableArrayListExtra("rows_list", new ArrayList<>(dataBeans));
+ context.startActivity(intent);
break;
case 2:
ContextKit.navigatePageTo(context, WellListActivity.class);
@@ -153,7 +160,7 @@
}
private void getAlarmList() {
- alarmViewModel.getAlarmList(this, LocaleConstant.PAGE_LIMIT, page);
+ alarmViewModel.getAlarmList(this, page);
}
@Override
diff --git a/.gitignore b/.gitignore
index f0f71e2..ee6b213 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,12 @@
*.iml
.gradle
/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
+/.idea
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
.idea
+*.apk
+*.json
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fdb7255..6873489 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -109,7 +109,7 @@
-
+
diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
index 2dcdc64..0364fc7 100644
--- a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
+++ b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
@@ -9,6 +9,7 @@
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
@@ -25,7 +26,6 @@
private final Context context;
private final List dataRows;
private final LayoutInflater layoutInflater;
- private PunishTypeAdapter adapter;
public PackageCaseListAdapter(Context context, List dataRows) {
this.context = context;
@@ -36,7 +36,7 @@
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv, parent, false));
+ return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv_l, parent, false));
}
@Override
@@ -57,16 +57,67 @@
return dataRows.size();
}
- @SuppressLint("NotifyDataSetChanged")
- public void refresh(List dataRows) {
- this.dataRows.clear();
- this.dataRows.addAll(dataRows);
- notifyDataSetChanged();
+ public void refresh(List newRows) {
+ DiffUtil.Callback diffCallback = new DiffUtil.Callback() {
+
+ @Override
+ public int getOldListSize() {
+ return dataRows.size();
+ }
+
+ @Override
+ public int getNewListSize() {
+ return newRows.size();
+ }
+
+ @Override
+ public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
+ if (dataRows == null || newRows == null) {
+ return false;
+ }
+
+ // 检查索引是否在有效范围内
+ if (oldItemPosition < 0 || oldItemPosition >= dataRows.size() ||
+ newItemPosition < 0 || newItemPosition >= newRows.size()) {
+ return false;
+ }
+
+ // 获取元素并进行比较
+ Object oldItem = dataRows.get(oldItemPosition);
+ Object newItem = newRows.get(newItemPosition);
+
+ // 处理空指针情况
+ if (oldItem == null && newItem == null) {
+ return true;
+ }
+ if (oldItem == null || newItem == null) {
+ return false;
+ }
+
+ return oldItem.equals(newItem);
+ }
+
+ @Override
+ public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
+ return dataRows.get(oldItemPosition) == newRows.get(newItemPosition);
+ }
+ };
+
+ DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);
+
+ dataRows.clear();
+ dataRows.addAll(newRows);
+
+ diffResult.dispatchUpdatesTo(this);
}
- public void loadMore(List dataRows) {
- this.dataRows.addAll(dataRows);
- notifyItemRangeInserted(this.dataRows.size(), dataRows.size());
+ public void loadMore(List newRows) {
+ if (newRows.isEmpty()) {
+ return;
+ }
+ int startPosition = this.dataRows.size();
+ this.dataRows.addAll(newRows);
+ notifyItemRangeInserted(startPosition, newRows.size());
}
class ItemViewHolder extends RecyclerView.ViewHolder {
@@ -84,7 +135,6 @@
casePunishView = itemView.findViewById(R.id.casePunishView);
}
-
void bindView(PackageCaseBean.DataBean.RowsBean rowsBean) {
//三包核实图片
String fileIdVerify = rowsBean.getFileIdVerify();
@@ -97,45 +147,6 @@
}
caseTitleView.setText(rowsBean.getDescription());
caseDateView.setText("上报时间:" + rowsBean.getReportTime());
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class);
-// if (punishTypeBean.getData().size() != 0) {
-// //获取商铺处罚次数
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class);
-//
-// adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData());
-// LinearLayoutManager layoutManager = new LinearLayoutManager(context);
-// layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
-// punishRecyclerView.setLayoutManager(layoutManager);
-// punishRecyclerView.setAdapter(adapter);
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
-// }
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
}
}
diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
deleted file mode 100644
index 2e178e5..0000000
--- a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.casic.dcms.adapter;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.core.content.ContextCompat;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.model.PunishTimesBean;
-import com.casic.dcms.model.PunishTypeBean;
-
-import java.util.List;
-
-@SuppressLint("SetTextI18n")
-public class PunishTypeAdapter extends RecyclerView.Adapter {
-
- private final Context context;
- private final List dataRows;
- private final PunishTimesBean.DataBean dataBean;
- private final LayoutInflater layoutInflater;
-
- PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) {
- this.context = context;
- this.dataRows = dataRows;
- this.dataBean = dataBean;
- this.layoutInflater = LayoutInflater.from(context);
- }
-
- @NonNull
- @Override
- public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false));
- }
-
- @Override
- public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- String typeName = dataRows.get(position).getPunishTypeName();
- int color, times;
- switch (typeName) {
- case "劝导":
- times = dataBean.getPersuade();
- color = ContextCompat.getColor(context, R.color.persuadeColor);
- break;
- case "警告":
- times = dataBean.getWarn();
- color = ContextCompat.getColor(context, R.color.warnColor);
- break;
- case "处罚":
- times = dataBean.getPunish();
- color = ContextCompat.getColor(context, R.color.punishColor);
- break;
- default:
- times = 0;
- color = ContextCompat.getColor(context, R.color.mainThemeColor);
- break;
- }
- if (times == 0) {
- holder.punishTypeView.setVisibility(View.GONE);
- } else {
- holder.punishTypeView.setText(typeName + " x " + times);
- holder.punishTypeView.setBackgroundColor(color);
- }
- }
-
- @Override
- public int getItemCount() {
- return dataRows.size();
- }
-
- static class ItemViewHolder extends RecyclerView.ViewHolder {
-
- private final TextView punishTypeView;
-
- ItemViewHolder(@NonNull View itemView) {
- super(itemView);
- punishTypeView = itemView.findViewById(R.id.punishTypeView);
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
deleted file mode 100644
index dc57ca3..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.casic.dcms.model;
-
-public class PunishTimesBean {
- private int code;
- private DataBean data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public DataBean getData() {
- return data;
- }
-
- public void setData(DataBean data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataBean {
- /**
- * warn : 0
- * punish : 0
- * persuade : 0
- */
-
- private int warn;
- private int punish;
- private int persuade;
-
- public int getWarn() {
- return warn;
- }
-
- public void setWarn(int warn) {
- this.warn = warn;
- }
-
- public int getPunish() {
- return punish;
- }
-
- public void setPunish(int punish) {
- this.punish = punish;
- }
-
- public int getPersuade() {
- return persuade;
- }
-
- public void setPersuade(int persuade) {
- this.persuade = persuade;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java
deleted file mode 100644
index 00b6a98..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.model;
-
-import java.util.List;
-
-public class PunishTypeBean {
- private int code;
- private String message;
- private boolean success;
- private List data;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public static class DataBean {
- /**
- * punishTime : 2021-01-12 09:08:59
- * punishTypeName : 处罚
- * punishImage : images
- * punishType : 1
- * punishRemarks : 处罚
- */
-
- private String punishTime;
- private String punishTypeName;
- private String punishImage;
- private String punishType;
- private String punishRemarks;
-
- public String getPunishTime() {
- return punishTime;
- }
-
- public void setPunishTime(String punishTime) {
- this.punishTime = punishTime;
- }
-
- public String getPunishTypeName() {
- return punishTypeName;
- }
-
- public void setPunishTypeName(String punishTypeName) {
- this.punishTypeName = punishTypeName;
- }
-
- public String getPunishImage() {
- return punishImage;
- }
-
- public void setPunishImage(String punishImage) {
- this.punishImage = punishImage;
- }
-
- public String getPunishType() {
- return punishType;
- }
-
- public void setPunishType(String punishType) {
- this.punishType = punishType;
- }
-
- public String getPunishRemarks() {
- return punishRemarks;
- }
-
- public void setPunishRemarks(String punishRemarks) {
- this.punishRemarks = punishRemarks;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java b/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java
deleted file mode 100644
index a4d8337..0000000
--- a/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.casic.dcms.model;
-
-public class UnitFeatureBean {
-
- private String BGID;
- private String BGNAME;
- private int OBJECTID;
-
- public String getBGID() {
- return BGID;
- }
-
- public void setBGID(String BGID) {
- this.BGID = BGID;
- }
-
- public String getBGNAME() {
- return BGNAME;
- }
-
- public void setBGNAME(String BGNAME) {
- this.BGNAME = BGNAME;
- }
-
- public int getOBJECTID() {
- return OBJECTID;
- }
-
- public void setOBJECTID(int OBJECTID) {
- this.OBJECTID = OBJECTID;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java b/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
index 0578f7b..b0c24d5 100644
--- a/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
+++ b/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
@@ -1,9 +1,16 @@
package com.casic.dcms.model;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import androidx.annotation.NonNull;
+
import java.util.List;
-public class WellAlarmListBean {
-
+/**
+ * Parcelable 是 Android 平台专门为性能优化而设计的序列化机制,通常比 Serializable 快 10 倍左右
+ */
+public class WellAlarmListBean implements Parcelable {
private int code;
private DataBean data;
private String message;
@@ -41,7 +48,43 @@
this.success = success;
}
- public static class DataBean {
+ public WellAlarmListBean() {
+
+ }
+
+ protected WellAlarmListBean(Parcel in) {
+ code = in.readInt();
+ data = in.readParcelable(DataBean.class.getClassLoader());
+ message = in.readString();
+ success = in.readByte() != 0;
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public WellAlarmListBean createFromParcel(Parcel in) {
+ return new WellAlarmListBean(in);
+ }
+
+ @Override
+ public WellAlarmListBean[] newArray(int size) {
+ return new WellAlarmListBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeInt(code);
+ dest.writeParcelable(data, flags);
+ dest.writeString(message);
+ dest.writeByte((byte) (success ? 1 : 0));
+ }
+
+ public static class DataBean implements Parcelable {
private int total;
private List rows;
@@ -62,7 +105,38 @@
this.rows = rows;
}
- public static class RowsBean {
+ public DataBean() {
+ }
+
+ protected DataBean(Parcel in) {
+ total = in.readInt();
+ rows = in.createTypedArrayList(RowsBean.CREATOR);
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public DataBean createFromParcel(Parcel in) {
+ return new DataBean(in);
+ }
+
+ @Override
+ public DataBean[] newArray(int size) {
+ return new DataBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(total);
+ dest.writeTypedList(rows);
+ }
+
+ public static class RowsBean implements Parcelable {
/**
* alarmContent : 1
* deptName : 崇仁县城管局
@@ -296,6 +370,79 @@
public void setStatus(String status) {
this.status = status;
}
+
+ public RowsBean() {
+ }
+
+ protected RowsBean(Parcel in) {
+ alarmContent = in.readInt();
+ deptName = in.readString();
+ jobStatus = in.readString();
+ alarmContentName = in.readString();
+ wellCode = in.readString();
+ alarmTime = in.readString();
+ deptid = in.readString();
+ alarmTypeName = in.readString();
+ alarmMessage = in.readString();
+ staff = in.readString();
+ deviceId = in.readString();
+ jobId = in.readString();
+ jobStatusName = in.readString();
+ alarmType = in.readString();
+ alarmValue = in.readString();
+ devcode = in.readString();
+ statusName = in.readString();
+ alarmLevel = in.readString();
+ tel = in.readString();
+ id = in.readString();
+ wellId = in.readString();
+ position = in.readString();
+ status = in.readString();
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public RowsBean createFromParcel(Parcel in) {
+ return new RowsBean(in);
+ }
+
+ @Override
+ public RowsBean[] newArray(int size) {
+ return new RowsBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(alarmContent);
+ dest.writeString(deptName);
+ dest.writeString(jobStatus);
+ dest.writeString(alarmContentName);
+ dest.writeString(wellCode);
+ dest.writeString(alarmTime);
+ dest.writeString(deptid);
+ dest.writeString(alarmTypeName);
+ dest.writeString(alarmMessage);
+ dest.writeString(staff);
+ dest.writeString(deviceId);
+ dest.writeString(jobId);
+ dest.writeString(jobStatusName);
+ dest.writeString(alarmType);
+ dest.writeString(alarmValue);
+ dest.writeString(devcode);
+ dest.writeString(statusName);
+ dest.writeString(alarmLevel);
+ dest.writeString(tel);
+ dest.writeString(id);
+ dest.writeString(wellId);
+ dest.writeString(position);
+ dest.writeString(status);
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/dcms/model/WellDetailBean.java b/app/src/main/java/com/casic/dcms/model/WellDetailBean.java
index cea8774..4e6c8fd 100644
--- a/app/src/main/java/com/casic/dcms/model/WellDetailBean.java
+++ b/app/src/main/java/com/casic/dcms/model/WellDetailBean.java
@@ -60,7 +60,6 @@
}
public static class FieldAliasesBean {
-
private String objectid;
private String 编号;
private String 附属物编码;
@@ -190,7 +189,6 @@
}
public static class SpatialReferenceBean {
-
private int wkid;
private int latestWkid;
@@ -212,7 +210,6 @@
}
public static class FieldsBean {
-
private String name;
private String type;
private String alias;
@@ -252,7 +249,6 @@
}
public static class FeaturesBean {
-
private AttributesBean attributes;
private GeometryBean geometry;
diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
index 8b15d77..6f1d941 100644
--- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
+++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
@@ -621,8 +621,8 @@
/**
* 报警列表
*/
- public static Observable getAlarmList(int limit, int offset) {
- return api.getAlarmList(AuthenticationHelper.getToken(), "1", limit, offset);
+ public static Observable getAlarmList(int offset) {
+ return api.getAlarmList(AuthenticationHelper.getToken(), "1", LocaleConstant.PAGE_LIMIT, offset);
}
/**
@@ -662,18 +662,15 @@
return api.optionWellStatus(AuthenticationHelper.getToken(), bfzt);
}
+ private static final RetrofitService arcgisApi = RetrofitFactory.createRetrofit(
+ "http://111.198.10.15:13002", RetrofitService.class, true
+ );
+
/**
* 报警窨井详情
*/
public static Observable getWellDetailResult(String where) {
-// Retrofit retrofit = new Retrofit.Builder()
-// .baseUrl("http://111.198.10.15:13002")
-// .addConverterFactory(GsonConverterFactory.create())//Gson转换器
-// .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
-// .client(createOKHttpClient())//log拦截器
-// .build();
-// RetrofitService service = retrofit.create(RetrofitService.class);
- return api.getWellDetail(
+ return arcgisApi.getWellDetail(
"json", "4326", "4326", "*", true, where
);
}
diff --git a/app/src/main/java/com/casic/dcms/view/pipeline/AlarmOnMapActivity.java b/app/src/main/java/com/casic/dcms/view/pipeline/AlarmOnMapActivity.java
new file mode 100644
index 0000000..e3dc01d
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/pipeline/AlarmOnMapActivity.java
@@ -0,0 +1,212 @@
+package com.casic.dcms.view.pipeline;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityMapAlarmBinding;
+import com.casic.dcms.model.WellAlarmListBean;
+import com.casic.dcms.model.WellDetailBean;
+import com.casic.dcms.utils.ArcGisMapCreator;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.ViewGroupKit;
+import com.casic.dcms.vm.WellViewModel;
+import com.esri.arcgisruntime.geometry.Point;
+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.symbology.SimpleMarkerSymbol;
+import com.esri.arcgisruntime.util.ListenableList;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.LoadState;
+import com.pengxh.androidx.lite.utils.LoadingDialog;
+import com.pengxh.androidx.lite.widget.TitleBarView;
+import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
+import com.qmuiteam.qmui.widget.popup.QMUIPopup;
+import com.qmuiteam.qmui.widget.popup.QMUIPopups;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AlarmOnMapActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "AlarmOnMapActivity";
+ private final Context context = this;
+ private final List geometryList = new ArrayList<>();
+ private WellViewModel wellViewModel;
+
+ @Override
+ protected void setupTopBarLayout() {
+ ViewGroupKit.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() {
+ wellViewModel.loadState.observe(this, new Observer() {
+ @Override
+ public void onChanged(LoadState loadState) {
+ if (loadState == LoadState.Loading) {
+ LoadingDialog.show(AlarmOnMapActivity.this, "数据加载中,请稍后");
+ } else {
+ LoadingDialog.dismiss();
+ }
+ }
+ });
+ }
+
+ @Override
+ public void initOnCreate(@Nullable Bundle savedInstanceState) {
+ binding.mapView.setAttributionTextVisible(false);//去掉左下角属性标识
+ binding.mapView.setViewpointScaleAsync(64000);
+ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS);
+ //创建底图、并设置底图图层
+ Basemap basemap = new Basemap(ArcGisMapCreator.createNoGridLayer());
+ arcGISMap.setBasemap(basemap);
+ binding.mapView.setMap(arcGISMap);
+
+ wellViewModel = new ViewModelProvider(this).get(WellViewModel.class);
+ wellViewModel.resultModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(WellDetailBean wellDetailBean) {
+ List features = wellDetailBean.getFeatures();
+ if (features.size() > 0) {
+ WellDetailBean.FeaturesBean featuresBean = features.get(0);
+ //将获取到的井数据缓存起来
+ geometryList.add(featuresBean);
+ WellDetailBean.FeaturesBean.GeometryBean geometryBean = featuresBean.getGeometry();
+ //每获取一个点就绘制出
+ addMarker(new Point(geometryBean.getX(), geometryBean.getY()));
+ }
+ }
+ });
+
+ Bundle extras = getIntent().getExtras();
+ if (extras != null) {
+ List dataBeans = extras.getParcelableArrayList("rows_list");
+ if (dataBeans == null) {
+ return;
+ }
+ for (WellAlarmListBean.DataBean.RowsBean dataBean : dataBeans) {
+ String queryParam = "编号='" + dataBean.getWellCode() + "'";
+ Log.d(TAG, "queryParam: " + queryParam);
+ wellViewModel.getWellDetail(context, queryParam);
+ }
+ }
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public void initEvent() {
+ binding.expandMapView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ binding.mapView.setViewpointScaleAsync(binding.mapView.getMapScale() * 0.5);
+ }
+ });
+ binding.minusMapView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ binding.mapView.setViewpointScaleAsync(binding.mapView.getMapScale() * 2);
+ }
+ });
+
+ binding.mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, binding.mapView) {
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+ android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY()));
+ Point clickPoint = binding.mapView.screenToLocation(screenPoint);
+ if (geometryList.size() > 0) {
+ List tempList = new ArrayList<>();
+ for (WellDetailBean.FeaturesBean featuresBean : geometryList) {
+ WellDetailBean.FeaturesBean.GeometryBean dataBean = featuresBean.getGeometry();
+ if (Math.abs(dataBean.getX() - clickPoint.getX()) <= 10 * LocaleConstant.DELTA_LNG_10 &&
+ Math.abs(dataBean.getY() - clickPoint.getY()) <= 10 * LocaleConstant.DELTA_LNG_10) {
+ tempList.add(featuresBean);
+ }
+ }
+ if (tempList.size() > 0) {
+ QMUIDialog.MenuDialogBuilder menuDialogBuilder = new QMUIDialog.MenuDialogBuilder(context);
+ menuDialogBuilder.setTitle("请选择您要查看的窨井");
+ for (WellDetailBean.FeaturesBean dataBean : tempList) {
+ menuDialogBuilder.addItem(dataBean.getAttributes().get编号(), new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+
+ View popupView = LayoutInflater.from(context).inflate(R.layout.popu_well, null);
+ TextView wellCodeView = popupView.findViewById(R.id.wellCodeView);
+ TextView wellTypeView = popupView.findViewById(R.id.wellTypeView);
+ TextView wellPositionView = popupView.findViewById(R.id.wellPositionView);
+
+ WellDetailBean.FeaturesBean.AttributesBean attributes = dataBean.getAttributes();
+ wellCodeView.setText(attributes.get编号());
+ wellTypeView.setText(attributes.get附属物名称());
+ wellPositionView.setText(attributes.get所属道路());
+
+ QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 290))
+ .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);
+ }
+ });
+ }
+ menuDialogBuilder.create().show();
+ }
+ }
+ return super.onSingleTapConfirmed(e);
+ }
+ });
+ }
+
+ protected void onResume() {
+ super.onResume();
+ binding.mapView.resume();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ binding.mapView.pause();
+ }
+
+ private void addMarker(Point point) {
+ SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10);
+ Graphic graphic = new Graphic(point, simpleMarkerSymbol);
+ GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay();
+ ListenableList overlayGraphics = mGraphicsOverlay.getGraphics();
+ ListenableList graphicsOverlays = binding.mapView.getGraphicsOverlays();
+ overlayGraphics.add(graphic);
+ graphicsOverlays.add(mGraphicsOverlay);
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/pipeline/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/view/pipeline/PipelineManagerActivity.java
index e2e6656..eac37ed 100644
--- a/app/src/main/java/com/casic/dcms/view/pipeline/PipelineManagerActivity.java
+++ b/app/src/main/java/com/casic/dcms/view/pipeline/PipelineManagerActivity.java
@@ -1,6 +1,7 @@
package com.casic.dcms.view.pipeline;
import android.content.Context;
+import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
@@ -75,7 +76,13 @@
showBatchCancelDialog();
break;
case 1:
- ContextKit.navigatePageTo(context, WarningOnMapActivity.class);
+ if (dataBeans.isEmpty()) {
+ StringKit.show(context, "无报警数据");
+ return;
+ }
+ Intent intent = new Intent(context, AlarmOnMapActivity.class);
+ intent.putParcelableArrayListExtra("rows_list", new ArrayList<>(dataBeans));
+ context.startActivity(intent);
break;
case 2:
ContextKit.navigatePageTo(context, WellListActivity.class);
@@ -153,7 +160,7 @@
}
private void getAlarmList() {
- alarmViewModel.getAlarmList(this, LocaleConstant.PAGE_LIMIT, page);
+ alarmViewModel.getAlarmList(this, page);
}
@Override
diff --git a/app/src/main/java/com/casic/dcms/view/pipeline/WarningOnMapActivity.java b/app/src/main/java/com/casic/dcms/view/pipeline/WarningOnMapActivity.java
deleted file mode 100644
index 66a38d0..0000000
--- a/app/src/main/java/com/casic/dcms/view/pipeline/WarningOnMapActivity.java
+++ /dev/null
@@ -1,230 +0,0 @@
-package com.casic.dcms.view.pipeline;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.graphics.Color;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.casic.dcms.R;
-import com.casic.dcms.databinding.ActivityMapWarningBinding;
-import com.casic.dcms.model.WellAlarmListBean;
-import com.casic.dcms.model.WellDetailBean;
-import com.casic.dcms.utils.ArcGisMapCreator;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.ViewGroupKit;
-import com.casic.dcms.vm.AlarmViewModel;
-import com.casic.dcms.vm.WellViewModel;
-import com.esri.arcgisruntime.geometry.Point;
-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.symbology.SimpleMarkerSymbol;
-import com.esri.arcgisruntime.util.ListenableList;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-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.widget.TitleBarView;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
-import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
-import com.qmuiteam.qmui.widget.popup.QMUIPopup;
-import com.qmuiteam.qmui.widget.popup.QMUIPopups;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class WarningOnMapActivity extends AndroidxBaseActivity {
-
- private static final String TAG = "WarningOnMapActivity";
- private final Context context = this;
- private final List geometryList = new ArrayList<>();
- private AlarmViewModel alarmViewModel;
- private WellViewModel wellViewModel;
-
- @Override
- protected void setupTopBarLayout() {
- ViewGroupKit.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() {
- alarmViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- LoadingDialog.show(WarningOnMapActivity.this, "数据加载中,请稍后");
- } else {
- LoadingDialog.dismiss();
- }
- }
- });
-
- wellViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
-
- }
- });
- }
-
- @Override
- public void initOnCreate(@Nullable Bundle savedInstanceState) {
- binding.mapView.setAttributionTextVisible(false);//去掉左下角属性标识
- binding.mapView.setViewpointScaleAsync(64000);
- ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS);
- //创建底图、并设置底图图层
- Basemap basemap = new Basemap(ArcGisMapCreator.createNoGridLayer());
- arcGISMap.setBasemap(basemap);
- binding.mapView.setMap(arcGISMap);
-
- int alarmTotal = (int) SaveKeyValues.getValue("alarmTotal", LocaleConstant.PAGE_LIMIT);
- alarmViewModel = new ViewModelProvider(this).get(AlarmViewModel.class);
- alarmViewModel.wellAlarmListResult.observe(this, new Observer() {
- @Override
- public void onChanged(WellAlarmListBean alarmDataBean) {
- if (alarmDataBean.getCode() == 200) {
- List dataRows = alarmDataBean.getData().getRows();
- for (WellAlarmListBean.DataBean.RowsBean rowsBean : dataRows) {
- String queryParam = "编号='" + rowsBean.getWellCode() + "'";
- wellViewModel.getWellDetail(context, queryParam);
- }
- }
- }
- });
- alarmViewModel.getAlarmList(this, alarmTotal, 1);
-
- wellViewModel = new ViewModelProvider(this).get(WellViewModel.class);
- wellViewModel.resultModel.observe(this, new Observer() {
- @Override
- public void onChanged(WellDetailBean wellDetailBean) {
- List features = wellDetailBean.getFeatures();
- if (features.size() > 0) {
- WellDetailBean.FeaturesBean featuresBean = features.get(0);
- //将获取到的井数据缓存起来
- geometryList.add(featuresBean);
- WellDetailBean.FeaturesBean.GeometryBean geometryBean = featuresBean.getGeometry();
- //每获取一个点就绘制出
- addMarker(new Point(geometryBean.getX(), geometryBean.getY()));
- }
- }
- });
- }
-
- @SuppressLint("ClickableViewAccessibility")
- @Override
- public void initEvent() {
- binding.expandMapView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- binding.mapView.setViewpointScaleAsync(binding.mapView.getMapScale() * 0.5);
- }
- });
- binding.minusMapView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- binding.mapView.setViewpointScaleAsync(binding.mapView.getMapScale() * 2);
- }
- });
-
- binding.mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, binding.mapView) {
- @Override
- public boolean onSingleTapConfirmed(MotionEvent e) {
- android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY()));
- Point clickPoint = binding.mapView.screenToLocation(screenPoint);
- if (geometryList.size() > 0) {
- List tempList = new ArrayList<>();
- for (WellDetailBean.FeaturesBean featuresBean : geometryList) {
- WellDetailBean.FeaturesBean.GeometryBean dataBean = featuresBean.getGeometry();
- if (Math.abs(dataBean.getX() - clickPoint.getX()) <= 10 * LocaleConstant.DELTA_LNG_10 &&
- Math.abs(dataBean.getY() - clickPoint.getY()) <= 10 * LocaleConstant.DELTA_LNG_10) {
- tempList.add(featuresBean);
- }
- }
- if (tempList.size() > 0) {
- QMUIDialog.MenuDialogBuilder menuDialogBuilder = new QMUIDialog.MenuDialogBuilder(context);
- menuDialogBuilder.setTitle("请选择您要查看的窨井");
- for (WellDetailBean.FeaturesBean dataBean : tempList) {
- menuDialogBuilder.addItem(dataBean.getAttributes().get编号(), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
-
- View popupView = LayoutInflater.from(context).inflate(R.layout.popu_well, null);
- TextView wellCodeView = popupView.findViewById(R.id.wellCodeView);
- TextView wellTypeView = popupView.findViewById(R.id.wellTypeView);
- TextView wellPositionView = popupView.findViewById(R.id.wellPositionView);
-
- WellDetailBean.FeaturesBean.AttributesBean attributes = dataBean.getAttributes();
- wellCodeView.setText(attributes.get编号());
- wellTypeView.setText(attributes.get附属物名称());
- wellPositionView.setText(attributes.get所属道路());
-
- QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 290))
- .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);
- }
- });
- }
- menuDialogBuilder.create().show();
- }
- }
- return super.onSingleTapConfirmed(e);
- }
- });
- }
-
- protected void onResume() {
- super.onResume();
- binding.mapView.resume();
- }
-
- @Override
- protected void onPause() {
- super.onPause();
- binding.mapView.pause();
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- binding.mapView.dispose();
- }
-
- private void addMarker(Point point) {
- SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10);
- Graphic graphic = new Graphic(point, simpleMarkerSymbol);
- GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay();
- ListenableList overlayGraphics = mGraphicsOverlay.getGraphics();
- ListenableList graphicsOverlays = binding.mapView.getGraphicsOverlays();
- overlayGraphics.add(graphic);
- graphicsOverlays.add(mGraphicsOverlay);
- }
-}
diff --git a/.gitignore b/.gitignore
index f0f71e2..ee6b213 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,12 @@
*.iml
.gradle
/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
+/.idea
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
.idea
+*.apk
+*.json
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fdb7255..6873489 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -109,7 +109,7 @@
-
+
diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
index 2dcdc64..0364fc7 100644
--- a/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
+++ b/app/src/main/java/com/casic/dcms/adapter/PackageCaseListAdapter.java
@@ -9,6 +9,7 @@
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
@@ -25,7 +26,6 @@
private final Context context;
private final List dataRows;
private final LayoutInflater layoutInflater;
- private PunishTypeAdapter adapter;
public PackageCaseListAdapter(Context context, List dataRows) {
this.context = context;
@@ -36,7 +36,7 @@
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv, parent, false));
+ return new ItemViewHolder(layoutInflater.inflate(R.layout.item_package_rv_l, parent, false));
}
@Override
@@ -57,16 +57,67 @@
return dataRows.size();
}
- @SuppressLint("NotifyDataSetChanged")
- public void refresh(List dataRows) {
- this.dataRows.clear();
- this.dataRows.addAll(dataRows);
- notifyDataSetChanged();
+ public void refresh(List newRows) {
+ DiffUtil.Callback diffCallback = new DiffUtil.Callback() {
+
+ @Override
+ public int getOldListSize() {
+ return dataRows.size();
+ }
+
+ @Override
+ public int getNewListSize() {
+ return newRows.size();
+ }
+
+ @Override
+ public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
+ if (dataRows == null || newRows == null) {
+ return false;
+ }
+
+ // 检查索引是否在有效范围内
+ if (oldItemPosition < 0 || oldItemPosition >= dataRows.size() ||
+ newItemPosition < 0 || newItemPosition >= newRows.size()) {
+ return false;
+ }
+
+ // 获取元素并进行比较
+ Object oldItem = dataRows.get(oldItemPosition);
+ Object newItem = newRows.get(newItemPosition);
+
+ // 处理空指针情况
+ if (oldItem == null && newItem == null) {
+ return true;
+ }
+ if (oldItem == null || newItem == null) {
+ return false;
+ }
+
+ return oldItem.equals(newItem);
+ }
+
+ @Override
+ public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
+ return dataRows.get(oldItemPosition) == newRows.get(newItemPosition);
+ }
+ };
+
+ DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);
+
+ dataRows.clear();
+ dataRows.addAll(newRows);
+
+ diffResult.dispatchUpdatesTo(this);
}
- public void loadMore(List dataRows) {
- this.dataRows.addAll(dataRows);
- notifyItemRangeInserted(this.dataRows.size(), dataRows.size());
+ public void loadMore(List newRows) {
+ if (newRows.isEmpty()) {
+ return;
+ }
+ int startPosition = this.dataRows.size();
+ this.dataRows.addAll(newRows);
+ notifyItemRangeInserted(startPosition, newRows.size());
}
class ItemViewHolder extends RecyclerView.ViewHolder {
@@ -84,7 +135,6 @@
casePunishView = itemView.findViewById(R.id.casePunishView);
}
-
void bindView(PackageCaseBean.DataBean.RowsBean rowsBean) {
//三包核实图片
String fileIdVerify = rowsBean.getFileIdVerify();
@@ -97,45 +147,6 @@
}
caseTitleView.setText(rowsBean.getDescription());
caseDateView.setText("上报时间:" + rowsBean.getReportTime());
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class);
-// if (punishTypeBean.getData().size() != 0) {
-// //获取商铺处罚次数
-// HttpRequestHelper.doRequest(LocaleConstant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() {
-// @Override
-// public void onSuccess(ResponseBody resultBean) {
-// try {
-// PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class);
-//
-// adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData());
-// LinearLayoutManager layoutManager = new LinearLayoutManager(context);
-// layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
-// punishRecyclerView.setLayoutManager(layoutManager);
-// punishRecyclerView.setAdapter(adapter);
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
-// }
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onFailure(Throwable throwable) {
-//
-// }
-// });
}
}
diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
deleted file mode 100644
index 2e178e5..0000000
--- a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.casic.dcms.adapter;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.core.content.ContextCompat;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.model.PunishTimesBean;
-import com.casic.dcms.model.PunishTypeBean;
-
-import java.util.List;
-
-@SuppressLint("SetTextI18n")
-public class PunishTypeAdapter extends RecyclerView.Adapter {
-
- private final Context context;
- private final List dataRows;
- private final PunishTimesBean.DataBean dataBean;
- private final LayoutInflater layoutInflater;
-
- PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) {
- this.context = context;
- this.dataRows = dataRows;
- this.dataBean = dataBean;
- this.layoutInflater = LayoutInflater.from(context);
- }
-
- @NonNull
- @Override
- public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new ItemViewHolder(layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false));
- }
-
- @Override
- public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
- String typeName = dataRows.get(position).getPunishTypeName();
- int color, times;
- switch (typeName) {
- case "劝导":
- times = dataBean.getPersuade();
- color = ContextCompat.getColor(context, R.color.persuadeColor);
- break;
- case "警告":
- times = dataBean.getWarn();
- color = ContextCompat.getColor(context, R.color.warnColor);
- break;
- case "处罚":
- times = dataBean.getPunish();
- color = ContextCompat.getColor(context, R.color.punishColor);
- break;
- default:
- times = 0;
- color = ContextCompat.getColor(context, R.color.mainThemeColor);
- break;
- }
- if (times == 0) {
- holder.punishTypeView.setVisibility(View.GONE);
- } else {
- holder.punishTypeView.setText(typeName + " x " + times);
- holder.punishTypeView.setBackgroundColor(color);
- }
- }
-
- @Override
- public int getItemCount() {
- return dataRows.size();
- }
-
- static class ItemViewHolder extends RecyclerView.ViewHolder {
-
- private final TextView punishTypeView;
-
- ItemViewHolder(@NonNull View itemView) {
- super(itemView);
- punishTypeView = itemView.findViewById(R.id.punishTypeView);
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
deleted file mode 100644
index dc57ca3..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTimesBean.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.casic.dcms.model;
-
-public class PunishTimesBean {
- private int code;
- private DataBean data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public DataBean getData() {
- return data;
- }
-
- public void setData(DataBean data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataBean {
- /**
- * warn : 0
- * punish : 0
- * persuade : 0
- */
-
- private int warn;
- private int punish;
- private int persuade;
-
- public int getWarn() {
- return warn;
- }
-
- public void setWarn(int warn) {
- this.warn = warn;
- }
-
- public int getPunish() {
- return punish;
- }
-
- public void setPunish(int punish) {
- this.punish = punish;
- }
-
- public int getPersuade() {
- return persuade;
- }
-
- public void setPersuade(int persuade) {
- this.persuade = persuade;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java
deleted file mode 100644
index 00b6a98..0000000
--- a/app/src/main/java/com/casic/dcms/model/PunishTypeBean.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.model;
-
-import java.util.List;
-
-public class PunishTypeBean {
- private int code;
- private String message;
- private boolean success;
- private List data;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public static class DataBean {
- /**
- * punishTime : 2021-01-12 09:08:59
- * punishTypeName : 处罚
- * punishImage : images
- * punishType : 1
- * punishRemarks : 处罚
- */
-
- private String punishTime;
- private String punishTypeName;
- private String punishImage;
- private String punishType;
- private String punishRemarks;
-
- public String getPunishTime() {
- return punishTime;
- }
-
- public void setPunishTime(String punishTime) {
- this.punishTime = punishTime;
- }
-
- public String getPunishTypeName() {
- return punishTypeName;
- }
-
- public void setPunishTypeName(String punishTypeName) {
- this.punishTypeName = punishTypeName;
- }
-
- public String getPunishImage() {
- return punishImage;
- }
-
- public void setPunishImage(String punishImage) {
- this.punishImage = punishImage;
- }
-
- public String getPunishType() {
- return punishType;
- }
-
- public void setPunishType(String punishType) {
- this.punishType = punishType;
- }
-
- public String getPunishRemarks() {
- return punishRemarks;
- }
-
- public void setPunishRemarks(String punishRemarks) {
- this.punishRemarks = punishRemarks;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java b/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java
deleted file mode 100644
index a4d8337..0000000
--- a/app/src/main/java/com/casic/dcms/model/UnitFeatureBean.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.casic.dcms.model;
-
-public class UnitFeatureBean {
-
- private String BGID;
- private String BGNAME;
- private int OBJECTID;
-
- public String getBGID() {
- return BGID;
- }
-
- public void setBGID(String BGID) {
- this.BGID = BGID;
- }
-
- public String getBGNAME() {
- return BGNAME;
- }
-
- public void setBGNAME(String BGNAME) {
- this.BGNAME = BGNAME;
- }
-
- public int getOBJECTID() {
- return OBJECTID;
- }
-
- public void setOBJECTID(int OBJECTID) {
- this.OBJECTID = OBJECTID;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java b/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
index 0578f7b..b0c24d5 100644
--- a/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
+++ b/app/src/main/java/com/casic/dcms/model/WellAlarmListBean.java
@@ -1,9 +1,16 @@
package com.casic.dcms.model;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import androidx.annotation.NonNull;
+
import java.util.List;
-public class WellAlarmListBean {
-
+/**
+ * Parcelable 是 Android 平台专门为性能优化而设计的序列化机制,通常比 Serializable 快 10 倍左右
+ */
+public class WellAlarmListBean implements Parcelable {
private int code;
private DataBean data;
private String message;
@@ -41,7 +48,43 @@
this.success = success;
}
- public static class DataBean {
+ public WellAlarmListBean() {
+
+ }
+
+ protected WellAlarmListBean(Parcel in) {
+ code = in.readInt();
+ data = in.readParcelable(DataBean.class.getClassLoader());
+ message = in.readString();
+ success = in.readByte() != 0;
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public WellAlarmListBean createFromParcel(Parcel in) {
+ return new WellAlarmListBean(in);
+ }
+
+ @Override
+ public WellAlarmListBean[] newArray(int size) {
+ return new WellAlarmListBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeInt(code);
+ dest.writeParcelable(data, flags);
+ dest.writeString(message);
+ dest.writeByte((byte) (success ? 1 : 0));
+ }
+
+ public static class DataBean implements Parcelable {
private int total;
private List rows;
@@ -62,7 +105,38 @@
this.rows = rows;
}
- public static class RowsBean {
+ public DataBean() {
+ }
+
+ protected DataBean(Parcel in) {
+ total = in.readInt();
+ rows = in.createTypedArrayList(RowsBean.CREATOR);
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public DataBean createFromParcel(Parcel in) {
+ return new DataBean(in);
+ }
+
+ @Override
+ public DataBean[] newArray(int size) {
+ return new DataBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(total);
+ dest.writeTypedList(rows);
+ }
+
+ public static class RowsBean implements Parcelable {
/**
* alarmContent : 1
* deptName : 崇仁县城管局
@@ -296,6 +370,79 @@
public void setStatus(String status) {
this.status = status;
}
+
+ public RowsBean() {
+ }
+
+ protected RowsBean(Parcel in) {
+ alarmContent = in.readInt();
+ deptName = in.readString();
+ jobStatus = in.readString();
+ alarmContentName = in.readString();
+ wellCode = in.readString();
+ alarmTime = in.readString();
+ deptid = in.readString();
+ alarmTypeName = in.readString();
+ alarmMessage = in.readString();
+ staff = in.readString();
+ deviceId = in.readString();
+ jobId = in.readString();
+ jobStatusName = in.readString();
+ alarmType = in.readString();
+ alarmValue = in.readString();
+ devcode = in.readString();
+ statusName = in.readString();
+ alarmLevel = in.readString();
+ tel = in.readString();
+ id = in.readString();
+ wellId = in.readString();
+ position = in.readString();
+ status = in.readString();
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public RowsBean createFromParcel(Parcel in) {
+ return new RowsBean(in);
+ }
+
+ @Override
+ public RowsBean[] newArray(int size) {
+ return new RowsBean[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(alarmContent);
+ dest.writeString(deptName);
+ dest.writeString(jobStatus);
+ dest.writeString(alarmContentName);
+ dest.writeString(wellCode);
+ dest.writeString(alarmTime);
+ dest.writeString(deptid);
+ dest.writeString(alarmTypeName);
+ dest.writeString(alarmMessage);
+ dest.writeString(staff);
+ dest.writeString(deviceId);
+ dest.writeString(jobId);
+ dest.writeString(jobStatusName);
+ dest.writeString(alarmType);
+ dest.writeString(alarmValue);
+ dest.writeString(devcode);
+ dest.writeString(statusName);
+ dest.writeString(alarmLevel);
+ dest.writeString(tel);
+ dest.writeString(id);
+ dest.writeString(wellId);
+ dest.writeString(position);
+ dest.writeString(status);
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/dcms/model/WellDetailBean.java b/app/src/main/java/com/casic/dcms/model/WellDetailBean.java
index cea8774..4e6c8fd 100644
--- a/app/src/main/java/com/casic/dcms/model/WellDetailBean.java
+++ b/app/src/main/java/com/casic/dcms/model/WellDetailBean.java
@@ -60,7 +60,6 @@
}
public static class FieldAliasesBean {
-
private String objectid;
private String 编号;
private String 附属物编码;
@@ -190,7 +189,6 @@
}
public static class SpatialReferenceBean {
-
private int wkid;
private int latestWkid;
@@ -212,7 +210,6 @@
}
public static class FieldsBean {
-
private String name;
private String type;
private String alias;
@@ -252,7 +249,6 @@
}
public static class FeaturesBean {
-
private AttributesBean attributes;
private GeometryBean geometry;
diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
index 8b15d77..6f1d941 100644
--- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
+++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
@@ -621,8 +621,8 @@
/**
* 报警列表
*/
- public static Observable getAlarmList(int limit, int offset) {
- return api.getAlarmList(AuthenticationHelper.getToken(), "1", limit, offset);
+ public static Observable getAlarmList(int offset) {
+ return api.getAlarmList(AuthenticationHelper.getToken(), "1", LocaleConstant.PAGE_LIMIT, offset);
}
/**
@@ -662,18 +662,15 @@
return api.optionWellStatus(AuthenticationHelper.getToken(), bfzt);
}
+ private static final RetrofitService arcgisApi = RetrofitFactory.createRetrofit(
+ "http://111.198.10.15:13002", RetrofitService.class, true
+ );
+
/**
* 报警窨井详情
*/
public static Observable getWellDetailResult(String where) {
-// Retrofit retrofit = new Retrofit.Builder()
-// .baseUrl("http://111.198.10.15:13002")
-// .addConverterFactory(GsonConverterFactory.create())//Gson转换器
-// .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
-// .client(createOKHttpClient())//log拦截器
-// .build();
-// RetrofitService service = retrofit.create(RetrofitService.class);
- return api.getWellDetail(
+ return arcgisApi.getWellDetail(
"json", "4326", "4326", "*", true, where
);
}
diff --git a/app/src/main/java/com/casic/dcms/view/pipeline/AlarmOnMapActivity.java b/app/src/main/java/com/casic/dcms/view/pipeline/AlarmOnMapActivity.java
new file mode 100644
index 0000000..e3dc01d
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/pipeline/AlarmOnMapActivity.java
@@ -0,0 +1,212 @@
+package com.casic.dcms.view.pipeline;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityMapAlarmBinding;
+import com.casic.dcms.model.WellAlarmListBean;
+import com.casic.dcms.model.WellDetailBean;
+import com.casic.dcms.utils.ArcGisMapCreator;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.ViewGroupKit;
+import com.casic.dcms.vm.WellViewModel;
+import com.esri.arcgisruntime.geometry.Point;
+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.symbology.SimpleMarkerSymbol;
+import com.esri.arcgisruntime.util.ListenableList;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.LoadState;
+import com.pengxh.androidx.lite.utils.LoadingDialog;
+import com.pengxh.androidx.lite.widget.TitleBarView;
+import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
+import com.qmuiteam.qmui.widget.popup.QMUIPopup;
+import com.qmuiteam.qmui.widget.popup.QMUIPopups;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AlarmOnMapActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "AlarmOnMapActivity";
+ private final Context context = this;
+ private final List geometryList = new ArrayList<>();
+ private WellViewModel wellViewModel;
+
+ @Override
+ protected void setupTopBarLayout() {
+ ViewGroupKit.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() {
+ wellViewModel.loadState.observe(this, new Observer() {
+ @Override
+ public void onChanged(LoadState loadState) {
+ if (loadState == LoadState.Loading) {
+ LoadingDialog.show(AlarmOnMapActivity.this, "数据加载中,请稍后");
+ } else {
+ LoadingDialog.dismiss();
+ }
+ }
+ });
+ }
+
+ @Override
+ public void initOnCreate(@Nullable Bundle savedInstanceState) {
+ binding.mapView.setAttributionTextVisible(false);//去掉左下角属性标识
+ binding.mapView.setViewpointScaleAsync(64000);
+ ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS);
+ //创建底图、并设置底图图层
+ Basemap basemap = new Basemap(ArcGisMapCreator.createNoGridLayer());
+ arcGISMap.setBasemap(basemap);
+ binding.mapView.setMap(arcGISMap);
+
+ wellViewModel = new ViewModelProvider(this).get(WellViewModel.class);
+ wellViewModel.resultModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(WellDetailBean wellDetailBean) {
+ List features = wellDetailBean.getFeatures();
+ if (features.size() > 0) {
+ WellDetailBean.FeaturesBean featuresBean = features.get(0);
+ //将获取到的井数据缓存起来
+ geometryList.add(featuresBean);
+ WellDetailBean.FeaturesBean.GeometryBean geometryBean = featuresBean.getGeometry();
+ //每获取一个点就绘制出
+ addMarker(new Point(geometryBean.getX(), geometryBean.getY()));
+ }
+ }
+ });
+
+ Bundle extras = getIntent().getExtras();
+ if (extras != null) {
+ List dataBeans = extras.getParcelableArrayList("rows_list");
+ if (dataBeans == null) {
+ return;
+ }
+ for (WellAlarmListBean.DataBean.RowsBean dataBean : dataBeans) {
+ String queryParam = "编号='" + dataBean.getWellCode() + "'";
+ Log.d(TAG, "queryParam: " + queryParam);
+ wellViewModel.getWellDetail(context, queryParam);
+ }
+ }
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public void initEvent() {
+ binding.expandMapView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ binding.mapView.setViewpointScaleAsync(binding.mapView.getMapScale() * 0.5);
+ }
+ });
+ binding.minusMapView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ binding.mapView.setViewpointScaleAsync(binding.mapView.getMapScale() * 2);
+ }
+ });
+
+ binding.mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, binding.mapView) {
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+ android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY()));
+ Point clickPoint = binding.mapView.screenToLocation(screenPoint);
+ if (geometryList.size() > 0) {
+ List tempList = new ArrayList<>();
+ for (WellDetailBean.FeaturesBean featuresBean : geometryList) {
+ WellDetailBean.FeaturesBean.GeometryBean dataBean = featuresBean.getGeometry();
+ if (Math.abs(dataBean.getX() - clickPoint.getX()) <= 10 * LocaleConstant.DELTA_LNG_10 &&
+ Math.abs(dataBean.getY() - clickPoint.getY()) <= 10 * LocaleConstant.DELTA_LNG_10) {
+ tempList.add(featuresBean);
+ }
+ }
+ if (tempList.size() > 0) {
+ QMUIDialog.MenuDialogBuilder menuDialogBuilder = new QMUIDialog.MenuDialogBuilder(context);
+ menuDialogBuilder.setTitle("请选择您要查看的窨井");
+ for (WellDetailBean.FeaturesBean dataBean : tempList) {
+ menuDialogBuilder.addItem(dataBean.getAttributes().get编号(), new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+
+ View popupView = LayoutInflater.from(context).inflate(R.layout.popu_well, null);
+ TextView wellCodeView = popupView.findViewById(R.id.wellCodeView);
+ TextView wellTypeView = popupView.findViewById(R.id.wellTypeView);
+ TextView wellPositionView = popupView.findViewById(R.id.wellPositionView);
+
+ WellDetailBean.FeaturesBean.AttributesBean attributes = dataBean.getAttributes();
+ wellCodeView.setText(attributes.get编号());
+ wellTypeView.setText(attributes.get附属物名称());
+ wellPositionView.setText(attributes.get所属道路());
+
+ QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 290))
+ .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);
+ }
+ });
+ }
+ menuDialogBuilder.create().show();
+ }
+ }
+ return super.onSingleTapConfirmed(e);
+ }
+ });
+ }
+
+ protected void onResume() {
+ super.onResume();
+ binding.mapView.resume();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ binding.mapView.pause();
+ }
+
+ private void addMarker(Point point) {
+ SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10);
+ Graphic graphic = new Graphic(point, simpleMarkerSymbol);
+ GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay();
+ ListenableList overlayGraphics = mGraphicsOverlay.getGraphics();
+ ListenableList graphicsOverlays = binding.mapView.getGraphicsOverlays();
+ overlayGraphics.add(graphic);
+ graphicsOverlays.add(mGraphicsOverlay);
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/pipeline/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/view/pipeline/PipelineManagerActivity.java
index e2e6656..eac37ed 100644
--- a/app/src/main/java/com/casic/dcms/view/pipeline/PipelineManagerActivity.java
+++ b/app/src/main/java/com/casic/dcms/view/pipeline/PipelineManagerActivity.java
@@ -1,6 +1,7 @@
package com.casic.dcms.view.pipeline;
import android.content.Context;
+import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
@@ -75,7 +76,13 @@
showBatchCancelDialog();
break;
case 1:
- ContextKit.navigatePageTo(context, WarningOnMapActivity.class);
+ if (dataBeans.isEmpty()) {
+ StringKit.show(context, "无报警数据");
+ return;
+ }
+ Intent intent = new Intent(context, AlarmOnMapActivity.class);
+ intent.putParcelableArrayListExtra("rows_list", new ArrayList<>(dataBeans));
+ context.startActivity(intent);
break;
case 2:
ContextKit.navigatePageTo(context, WellListActivity.class);
@@ -153,7 +160,7 @@
}
private void getAlarmList() {
- alarmViewModel.getAlarmList(this, LocaleConstant.PAGE_LIMIT, page);
+ alarmViewModel.getAlarmList(this, page);
}
@Override
diff --git a/app/src/main/java/com/casic/dcms/view/pipeline/WarningOnMapActivity.java b/app/src/main/java/com/casic/dcms/view/pipeline/WarningOnMapActivity.java
deleted file mode 100644
index 66a38d0..0000000
--- a/app/src/main/java/com/casic/dcms/view/pipeline/WarningOnMapActivity.java
+++ /dev/null
@@ -1,230 +0,0 @@
-package com.casic.dcms.view.pipeline;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.graphics.Color;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.casic.dcms.R;
-import com.casic.dcms.databinding.ActivityMapWarningBinding;
-import com.casic.dcms.model.WellAlarmListBean;
-import com.casic.dcms.model.WellDetailBean;
-import com.casic.dcms.utils.ArcGisMapCreator;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.ViewGroupKit;
-import com.casic.dcms.vm.AlarmViewModel;
-import com.casic.dcms.vm.WellViewModel;
-import com.esri.arcgisruntime.geometry.Point;
-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.symbology.SimpleMarkerSymbol;
-import com.esri.arcgisruntime.util.ListenableList;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-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.widget.TitleBarView;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
-import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
-import com.qmuiteam.qmui.widget.popup.QMUIPopup;
-import com.qmuiteam.qmui.widget.popup.QMUIPopups;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class WarningOnMapActivity extends AndroidxBaseActivity {
-
- private static final String TAG = "WarningOnMapActivity";
- private final Context context = this;
- private final List geometryList = new ArrayList<>();
- private AlarmViewModel alarmViewModel;
- private WellViewModel wellViewModel;
-
- @Override
- protected void setupTopBarLayout() {
- ViewGroupKit.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() {
- alarmViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- LoadingDialog.show(WarningOnMapActivity.this, "数据加载中,请稍后");
- } else {
- LoadingDialog.dismiss();
- }
- }
- });
-
- wellViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
-
- }
- });
- }
-
- @Override
- public void initOnCreate(@Nullable Bundle savedInstanceState) {
- binding.mapView.setAttributionTextVisible(false);//去掉左下角属性标识
- binding.mapView.setViewpointScaleAsync(64000);
- ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS);
- //创建底图、并设置底图图层
- Basemap basemap = new Basemap(ArcGisMapCreator.createNoGridLayer());
- arcGISMap.setBasemap(basemap);
- binding.mapView.setMap(arcGISMap);
-
- int alarmTotal = (int) SaveKeyValues.getValue("alarmTotal", LocaleConstant.PAGE_LIMIT);
- alarmViewModel = new ViewModelProvider(this).get(AlarmViewModel.class);
- alarmViewModel.wellAlarmListResult.observe(this, new Observer() {
- @Override
- public void onChanged(WellAlarmListBean alarmDataBean) {
- if (alarmDataBean.getCode() == 200) {
- List dataRows = alarmDataBean.getData().getRows();
- for (WellAlarmListBean.DataBean.RowsBean rowsBean : dataRows) {
- String queryParam = "编号='" + rowsBean.getWellCode() + "'";
- wellViewModel.getWellDetail(context, queryParam);
- }
- }
- }
- });
- alarmViewModel.getAlarmList(this, alarmTotal, 1);
-
- wellViewModel = new ViewModelProvider(this).get(WellViewModel.class);
- wellViewModel.resultModel.observe(this, new Observer() {
- @Override
- public void onChanged(WellDetailBean wellDetailBean) {
- List features = wellDetailBean.getFeatures();
- if (features.size() > 0) {
- WellDetailBean.FeaturesBean featuresBean = features.get(0);
- //将获取到的井数据缓存起来
- geometryList.add(featuresBean);
- WellDetailBean.FeaturesBean.GeometryBean geometryBean = featuresBean.getGeometry();
- //每获取一个点就绘制出
- addMarker(new Point(geometryBean.getX(), geometryBean.getY()));
- }
- }
- });
- }
-
- @SuppressLint("ClickableViewAccessibility")
- @Override
- public void initEvent() {
- binding.expandMapView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- binding.mapView.setViewpointScaleAsync(binding.mapView.getMapScale() * 0.5);
- }
- });
- binding.minusMapView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- binding.mapView.setViewpointScaleAsync(binding.mapView.getMapScale() * 2);
- }
- });
-
- binding.mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, binding.mapView) {
- @Override
- public boolean onSingleTapConfirmed(MotionEvent e) {
- android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY()));
- Point clickPoint = binding.mapView.screenToLocation(screenPoint);
- if (geometryList.size() > 0) {
- List tempList = new ArrayList<>();
- for (WellDetailBean.FeaturesBean featuresBean : geometryList) {
- WellDetailBean.FeaturesBean.GeometryBean dataBean = featuresBean.getGeometry();
- if (Math.abs(dataBean.getX() - clickPoint.getX()) <= 10 * LocaleConstant.DELTA_LNG_10 &&
- Math.abs(dataBean.getY() - clickPoint.getY()) <= 10 * LocaleConstant.DELTA_LNG_10) {
- tempList.add(featuresBean);
- }
- }
- if (tempList.size() > 0) {
- QMUIDialog.MenuDialogBuilder menuDialogBuilder = new QMUIDialog.MenuDialogBuilder(context);
- menuDialogBuilder.setTitle("请选择您要查看的窨井");
- for (WellDetailBean.FeaturesBean dataBean : tempList) {
- menuDialogBuilder.addItem(dataBean.getAttributes().get编号(), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
-
- View popupView = LayoutInflater.from(context).inflate(R.layout.popu_well, null);
- TextView wellCodeView = popupView.findViewById(R.id.wellCodeView);
- TextView wellTypeView = popupView.findViewById(R.id.wellTypeView);
- TextView wellPositionView = popupView.findViewById(R.id.wellPositionView);
-
- WellDetailBean.FeaturesBean.AttributesBean attributes = dataBean.getAttributes();
- wellCodeView.setText(attributes.get编号());
- wellTypeView.setText(attributes.get附属物名称());
- wellPositionView.setText(attributes.get所属道路());
-
- QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 290))
- .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);
- }
- });
- }
- menuDialogBuilder.create().show();
- }
- }
- return super.onSingleTapConfirmed(e);
- }
- });
- }
-
- protected void onResume() {
- super.onResume();
- binding.mapView.resume();
- }
-
- @Override
- protected void onPause() {
- super.onPause();
- binding.mapView.pause();
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- binding.mapView.dispose();
- }
-
- private void addMarker(Point point) {
- SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10);
- Graphic graphic = new Graphic(point, simpleMarkerSymbol);
- GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay();
- ListenableList overlayGraphics = mGraphicsOverlay.getGraphics();
- ListenableList graphicsOverlays = binding.mapView.getGraphicsOverlays();
- overlayGraphics.add(graphic);
- graphicsOverlays.add(mGraphicsOverlay);
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/vm/AlarmViewModel.java b/app/src/main/java/com/casic/dcms/vm/AlarmViewModel.java
index 1e5dabd..e08affa 100644
--- a/app/src/main/java/com/casic/dcms/vm/AlarmViewModel.java
+++ b/app/src/main/java/com/casic/dcms/vm/AlarmViewModel.java
@@ -25,9 +25,9 @@
public MutableLiveData