diff --git a/.idea/misc.xml b/.idea/misc.xml
index ebd14f7..d8f1d5f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -223,6 +223,7 @@
+
@@ -237,6 +238,7 @@
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index ebd14f7..d8f1d5f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -223,6 +223,7 @@
+
@@ -237,6 +238,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ef2ece3..910a6ab 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -71,9 +71,11 @@
-
-
-
+
+
+
+
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index ebd14f7..d8f1d5f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -223,6 +223,7 @@
+
@@ -237,6 +238,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ef2ece3..910a6ab 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -71,9 +71,11 @@
-
-
-
+
+
+
+
+
diff --git a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
index 18d7ed4..f018b90 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
@@ -28,7 +28,7 @@
R.mipmap.cffx);
public static final List ANALYSIS_ITEMS = Arrays.asList(
- "城管基础数据", "案卷来源统计", "高发案卷统计",
+ "城市基础数据", "案卷来源统计", "高发案卷统计",
"单位处置情况", "网格分析", "案卷趋势分析",
"商铺处罚分析");
diff --git a/.idea/misc.xml b/.idea/misc.xml
index ebd14f7..d8f1d5f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -223,6 +223,7 @@
+
@@ -237,6 +238,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ef2ece3..910a6ab 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -71,9 +71,11 @@
-
-
-
+
+
+
+
+
diff --git a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
index 18d7ed4..f018b90 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
@@ -28,7 +28,7 @@
R.mipmap.cffx);
public static final List ANALYSIS_ITEMS = Arrays.asList(
- "城管基础数据", "案卷来源统计", "高发案卷统计",
+ "城市基础数据", "案卷来源统计", "高发案卷统计",
"单位处置情况", "网格分析", "案卷趋势分析",
"商铺处罚分析");
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
new file mode 100644
index 0000000..f29adb0
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
@@ -0,0 +1,97 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCaseResourceBinding;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author a203
+ * @package com.casic.dcms.ui
+ * @date 2022/2/16 16:55
+ * @email 290677893@qq.com
+ */
+public class CaseResourceActivity extends AndroidxBaseActivity {
+
+ private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
+ private final Context context = CaseResourceActivity.this;
+ private final List pieEntries = new ArrayList<>();
+ private final List barEntries = new ArrayList<>();
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(1));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ //默认显示当前月的分析数据
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.statusPieChart);
+ //TODO 这是模拟数据
+ pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
+ pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
+ ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
+ //初始化横向柱状图
+ ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
+ //设置数据
+ //TODO 这是模拟数据
+ for (int i = 0; i < horizontalLabelName.size(); i++) {
+ barEntries.add(new BarEntry(i, new Random().nextInt(100)));
+ }
+ ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
+ viewBinding.titleBarLayout.dateView.setText(date);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+ }
+}
diff --git a/.idea/misc.xml b/.idea/misc.xml
index ebd14f7..d8f1d5f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -223,6 +223,7 @@
+
@@ -237,6 +238,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ef2ece3..910a6ab 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -71,9 +71,11 @@
-
-
-
+
+
+
+
+
diff --git a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
index 18d7ed4..f018b90 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
@@ -28,7 +28,7 @@
R.mipmap.cffx);
public static final List ANALYSIS_ITEMS = Arrays.asList(
- "城管基础数据", "案卷来源统计", "高发案卷统计",
+ "城市基础数据", "案卷来源统计", "高发案卷统计",
"单位处置情况", "网格分析", "案卷趋势分析",
"商铺处罚分析");
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
new file mode 100644
index 0000000..f29adb0
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
@@ -0,0 +1,97 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCaseResourceBinding;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author a203
+ * @package com.casic.dcms.ui
+ * @date 2022/2/16 16:55
+ * @email 290677893@qq.com
+ */
+public class CaseResourceActivity extends AndroidxBaseActivity {
+
+ private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
+ private final Context context = CaseResourceActivity.this;
+ private final List pieEntries = new ArrayList<>();
+ private final List barEntries = new ArrayList<>();
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(1));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ //默认显示当前月的分析数据
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.statusPieChart);
+ //TODO 这是模拟数据
+ pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
+ pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
+ ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
+ //初始化横向柱状图
+ ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
+ //设置数据
+ //TODO 这是模拟数据
+ for (int i = 0; i < horizontalLabelName.size(); i++) {
+ barEntries.add(new BarEntry(i, new Random().nextInt(100)));
+ }
+ ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
+ viewBinding.titleBarLayout.dateView.setText(date);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
deleted file mode 100644
index 03638c1..0000000
--- a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.view.statistics;
-
-import android.content.Context;
-import android.view.View;
-
-import androidx.core.content.ContextCompat;
-
-import com.casic.dcms.R;
-import com.casic.dcms.databinding.ActivityCaseStatusBinding;
-import com.casic.dcms.utils.ChartViewHelper;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.TimeOrDateUtil;
-import com.github.mikephil.charting.data.BarEntry;
-import com.github.mikephil.charting.data.PieEntry;
-import com.gyf.immersionbar.ImmersionBar;
-import com.jzxiang.pickerview.TimePickerDialog;
-import com.jzxiang.pickerview.data.Type;
-import com.jzxiang.pickerview.listener.OnDateSetListener;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Random;
-
-/**
- * @author a203
- * @description 案卷状态
- * @package com.casic.dcms.ui
- * @date 2022/2/16 16:55
- * @email 290677893@qq.com
- */
-public class CaseStatusActivity extends AndroidxBaseActivity {
-
- private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
- private final Context context = CaseStatusActivity.this;
- private final List pieEntries = new ArrayList<>();
- private final List barEntries = new ArrayList<>();
-
- @Override
- protected void setupTopBarLayout() {
- ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
- ImmersionBar.with(this).statusBarDarkFont(false).init();
-
- viewBinding.titleBarLayout.titleView.setText("案卷状态");
- viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- //默认显示当前月的分析数据
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initData() {
- //初始化饼图
- ChartViewHelper.initPieChart(viewBinding.statusPieChart);
- //TODO 这是模拟数据
- pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
- pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
- ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
- //初始化横向柱状图
- ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
- //设置数据
- //TODO 这是模拟数据
- for (int i = 0; i < horizontalLabelName.size(); i++) {
- barEntries.add(new BarEntry(i, new Random().nextInt(100)));
- }
- ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
- }
-
- @Override
- protected void initEvent() {
- viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- new TimePickerDialog.Builder()
- .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
- .setTitleStringId("选择日期")
- .setWheelItemTextSize(16)
- .setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
- .setMaxMillseconds(System.currentTimeMillis())
- .setType(Type.YEAR_MONTH)
- .setCallBack(new OnDateSetListener() {
- @Override
- public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
- String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
- viewBinding.titleBarLayout.dateView.setText(date);
- }
- }).build().show(getSupportFragmentManager(), "year_month");
- }
- });
- }
-}
diff --git a/.idea/misc.xml b/.idea/misc.xml
index ebd14f7..d8f1d5f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -223,6 +223,7 @@
+
@@ -237,6 +238,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ef2ece3..910a6ab 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -71,9 +71,11 @@
-
-
-
+
+
+
+
+
diff --git a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
index 18d7ed4..f018b90 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
@@ -28,7 +28,7 @@
R.mipmap.cffx);
public static final List ANALYSIS_ITEMS = Arrays.asList(
- "城管基础数据", "案卷来源统计", "高发案卷统计",
+ "城市基础数据", "案卷来源统计", "高发案卷统计",
"单位处置情况", "网格分析", "案卷趋势分析",
"商铺处罚分析");
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
new file mode 100644
index 0000000..f29adb0
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
@@ -0,0 +1,97 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCaseResourceBinding;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author a203
+ * @package com.casic.dcms.ui
+ * @date 2022/2/16 16:55
+ * @email 290677893@qq.com
+ */
+public class CaseResourceActivity extends AndroidxBaseActivity {
+
+ private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
+ private final Context context = CaseResourceActivity.this;
+ private final List pieEntries = new ArrayList<>();
+ private final List barEntries = new ArrayList<>();
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(1));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ //默认显示当前月的分析数据
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.statusPieChart);
+ //TODO 这是模拟数据
+ pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
+ pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
+ ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
+ //初始化横向柱状图
+ ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
+ //设置数据
+ //TODO 这是模拟数据
+ for (int i = 0; i < horizontalLabelName.size(); i++) {
+ barEntries.add(new BarEntry(i, new Random().nextInt(100)));
+ }
+ ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
+ viewBinding.titleBarLayout.dateView.setText(date);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
deleted file mode 100644
index 03638c1..0000000
--- a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.view.statistics;
-
-import android.content.Context;
-import android.view.View;
-
-import androidx.core.content.ContextCompat;
-
-import com.casic.dcms.R;
-import com.casic.dcms.databinding.ActivityCaseStatusBinding;
-import com.casic.dcms.utils.ChartViewHelper;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.TimeOrDateUtil;
-import com.github.mikephil.charting.data.BarEntry;
-import com.github.mikephil.charting.data.PieEntry;
-import com.gyf.immersionbar.ImmersionBar;
-import com.jzxiang.pickerview.TimePickerDialog;
-import com.jzxiang.pickerview.data.Type;
-import com.jzxiang.pickerview.listener.OnDateSetListener;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Random;
-
-/**
- * @author a203
- * @description 案卷状态
- * @package com.casic.dcms.ui
- * @date 2022/2/16 16:55
- * @email 290677893@qq.com
- */
-public class CaseStatusActivity extends AndroidxBaseActivity {
-
- private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
- private final Context context = CaseStatusActivity.this;
- private final List pieEntries = new ArrayList<>();
- private final List barEntries = new ArrayList<>();
-
- @Override
- protected void setupTopBarLayout() {
- ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
- ImmersionBar.with(this).statusBarDarkFont(false).init();
-
- viewBinding.titleBarLayout.titleView.setText("案卷状态");
- viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- //默认显示当前月的分析数据
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initData() {
- //初始化饼图
- ChartViewHelper.initPieChart(viewBinding.statusPieChart);
- //TODO 这是模拟数据
- pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
- pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
- ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
- //初始化横向柱状图
- ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
- //设置数据
- //TODO 这是模拟数据
- for (int i = 0; i < horizontalLabelName.size(); i++) {
- barEntries.add(new BarEntry(i, new Random().nextInt(100)));
- }
- ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
- }
-
- @Override
- protected void initEvent() {
- viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- new TimePickerDialog.Builder()
- .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
- .setTitleStringId("选择日期")
- .setWheelItemTextSize(16)
- .setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
- .setMaxMillseconds(System.currentTimeMillis())
- .setType(Type.YEAR_MONTH)
- .setCallBack(new OnDateSetListener() {
- @Override
- public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
- String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
- viewBinding.titleBarLayout.dateView.setText(date);
- }
- }).build().show(getSupportFragmentManager(), "year_month");
- }
- });
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java
new file mode 100644
index 0000000..14bcf7d
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java
@@ -0,0 +1,160 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.bin.david.form.core.TableConfig;
+import com.bin.david.form.data.style.FontStyle;
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCityBaseDataBinding;
+import com.casic.dcms.model.EventSourceBean;
+import com.casic.dcms.model.ExcelDataBean;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.casic.dcms.vm.DataAnalysisViewModel;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.hub.ContextHub;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+import com.pengxh.androidx.lite.vm.LoadState;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author : Pengxh
+ * @time : 2021/4/16 9:24
+ * @email : 290677893@qq.com
+ */
+public class CityBaseDataActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "CityBaseDataActivity";
+ private final Context context = CityBaseDataActivity.this;
+ private final List excelDataBeans = new ArrayList<>();
+ private final List pieEntries = new ArrayList<>();
+ private String[] date = new String[0];
+ private DataAnalysisViewModel analysisViewModel;
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(0));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //默认显示当前月的数据
+ long timeMillis = System.currentTimeMillis();
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis));
+ try {
+ date = TimeOrDateUtil.timestampToMonth(timeMillis);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ //初始化表格
+ initTableConfig();
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.resourcePieChart);
+ analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class);
+ analysisViewModel.obtainEventSource(date[0], date[1]);
+ }
+
+ private void initTableConfig() {
+ TableConfig config = viewBinding.resourceTableView.getConfig();
+ //首行属性
+ config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));
+ config.setContentBackgroundColor(Color.LTGRAY);
+ config.setColumnTitleVerticalPadding(30);
+ //内容属性
+ config.setContentStyle(new FontStyle(50, Color.DKGRAY));
+ config.setVerticalPadding(30);
+ config.setShowTableTitle(false); //不显示标题
+ config.setShowXSequence(false); //不显示横向ABC....序列
+ config.setShowYSequence(false); //不显示纵向123....序列
+ config.setMinTableWidth(ContextHub.getScreenWidth(this));//不设置的话会就不会居中显示
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(millSeconds));
+ String[] date = new String[0];
+ try {
+ date = TimeOrDateUtil.timestampToMonth(millSeconds);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ analysisViewModel.obtainEventSource(date[0], date[1]);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+
+ analysisViewModel.eventSourceModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(EventSourceBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ List dataBeanList = resultBean.getData();
+ for (int i = 0; i < dataBeanList.size(); i++) {
+ EventSourceBean.DataDTO dataBean = dataBeanList.get(i);
+
+ String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource();
+ int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum());
+ excelDataBeans.add(new ExcelDataBean(i, label, number));
+
+ String caseNum = dataBean.getCaseNum();
+ //表格数据需要把0的加进去,饼图不需要
+ if (!caseNum.equals("0")) {
+ pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label));
+ }
+ }
+ viewBinding.resourceTableView.setData(excelDataBeans);
+ ChartViewHelper.setPieChartData(viewBinding.resourcePieChart, pieEntries);
+ }
+ }
+ });
+ analysisViewModel.loadState.observe(this, new Observer() {
+ @Override
+ public void onChanged(LoadState loadState) {
+ if (loadState == LoadState.Loading) {
+ DialogHelper.showLoadingDialog(context, "获取数据中...");
+ } else {
+ DialogHelper.dismissLoadingDialog();
+ }
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index ebd14f7..d8f1d5f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -223,6 +223,7 @@
+
@@ -237,6 +238,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ef2ece3..910a6ab 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -71,9 +71,11 @@
-
-
-
+
+
+
+
+
diff --git a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
index 18d7ed4..f018b90 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
@@ -28,7 +28,7 @@
R.mipmap.cffx);
public static final List ANALYSIS_ITEMS = Arrays.asList(
- "城管基础数据", "案卷来源统计", "高发案卷统计",
+ "城市基础数据", "案卷来源统计", "高发案卷统计",
"单位处置情况", "网格分析", "案卷趋势分析",
"商铺处罚分析");
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
new file mode 100644
index 0000000..f29adb0
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
@@ -0,0 +1,97 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCaseResourceBinding;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author a203
+ * @package com.casic.dcms.ui
+ * @date 2022/2/16 16:55
+ * @email 290677893@qq.com
+ */
+public class CaseResourceActivity extends AndroidxBaseActivity {
+
+ private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
+ private final Context context = CaseResourceActivity.this;
+ private final List pieEntries = new ArrayList<>();
+ private final List barEntries = new ArrayList<>();
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(1));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ //默认显示当前月的分析数据
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.statusPieChart);
+ //TODO 这是模拟数据
+ pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
+ pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
+ ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
+ //初始化横向柱状图
+ ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
+ //设置数据
+ //TODO 这是模拟数据
+ for (int i = 0; i < horizontalLabelName.size(); i++) {
+ barEntries.add(new BarEntry(i, new Random().nextInt(100)));
+ }
+ ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
+ viewBinding.titleBarLayout.dateView.setText(date);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
deleted file mode 100644
index 03638c1..0000000
--- a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.view.statistics;
-
-import android.content.Context;
-import android.view.View;
-
-import androidx.core.content.ContextCompat;
-
-import com.casic.dcms.R;
-import com.casic.dcms.databinding.ActivityCaseStatusBinding;
-import com.casic.dcms.utils.ChartViewHelper;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.TimeOrDateUtil;
-import com.github.mikephil.charting.data.BarEntry;
-import com.github.mikephil.charting.data.PieEntry;
-import com.gyf.immersionbar.ImmersionBar;
-import com.jzxiang.pickerview.TimePickerDialog;
-import com.jzxiang.pickerview.data.Type;
-import com.jzxiang.pickerview.listener.OnDateSetListener;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Random;
-
-/**
- * @author a203
- * @description 案卷状态
- * @package com.casic.dcms.ui
- * @date 2022/2/16 16:55
- * @email 290677893@qq.com
- */
-public class CaseStatusActivity extends AndroidxBaseActivity {
-
- private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
- private final Context context = CaseStatusActivity.this;
- private final List pieEntries = new ArrayList<>();
- private final List barEntries = new ArrayList<>();
-
- @Override
- protected void setupTopBarLayout() {
- ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
- ImmersionBar.with(this).statusBarDarkFont(false).init();
-
- viewBinding.titleBarLayout.titleView.setText("案卷状态");
- viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- //默认显示当前月的分析数据
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initData() {
- //初始化饼图
- ChartViewHelper.initPieChart(viewBinding.statusPieChart);
- //TODO 这是模拟数据
- pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
- pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
- ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
- //初始化横向柱状图
- ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
- //设置数据
- //TODO 这是模拟数据
- for (int i = 0; i < horizontalLabelName.size(); i++) {
- barEntries.add(new BarEntry(i, new Random().nextInt(100)));
- }
- ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
- }
-
- @Override
- protected void initEvent() {
- viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- new TimePickerDialog.Builder()
- .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
- .setTitleStringId("选择日期")
- .setWheelItemTextSize(16)
- .setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
- .setMaxMillseconds(System.currentTimeMillis())
- .setType(Type.YEAR_MONTH)
- .setCallBack(new OnDateSetListener() {
- @Override
- public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
- String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
- viewBinding.titleBarLayout.dateView.setText(date);
- }
- }).build().show(getSupportFragmentManager(), "year_month");
- }
- });
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java
new file mode 100644
index 0000000..14bcf7d
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java
@@ -0,0 +1,160 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.bin.david.form.core.TableConfig;
+import com.bin.david.form.data.style.FontStyle;
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCityBaseDataBinding;
+import com.casic.dcms.model.EventSourceBean;
+import com.casic.dcms.model.ExcelDataBean;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.casic.dcms.vm.DataAnalysisViewModel;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.hub.ContextHub;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+import com.pengxh.androidx.lite.vm.LoadState;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author : Pengxh
+ * @time : 2021/4/16 9:24
+ * @email : 290677893@qq.com
+ */
+public class CityBaseDataActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "CityBaseDataActivity";
+ private final Context context = CityBaseDataActivity.this;
+ private final List excelDataBeans = new ArrayList<>();
+ private final List pieEntries = new ArrayList<>();
+ private String[] date = new String[0];
+ private DataAnalysisViewModel analysisViewModel;
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(0));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //默认显示当前月的数据
+ long timeMillis = System.currentTimeMillis();
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis));
+ try {
+ date = TimeOrDateUtil.timestampToMonth(timeMillis);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ //初始化表格
+ initTableConfig();
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.resourcePieChart);
+ analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class);
+ analysisViewModel.obtainEventSource(date[0], date[1]);
+ }
+
+ private void initTableConfig() {
+ TableConfig config = viewBinding.resourceTableView.getConfig();
+ //首行属性
+ config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));
+ config.setContentBackgroundColor(Color.LTGRAY);
+ config.setColumnTitleVerticalPadding(30);
+ //内容属性
+ config.setContentStyle(new FontStyle(50, Color.DKGRAY));
+ config.setVerticalPadding(30);
+ config.setShowTableTitle(false); //不显示标题
+ config.setShowXSequence(false); //不显示横向ABC....序列
+ config.setShowYSequence(false); //不显示纵向123....序列
+ config.setMinTableWidth(ContextHub.getScreenWidth(this));//不设置的话会就不会居中显示
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(millSeconds));
+ String[] date = new String[0];
+ try {
+ date = TimeOrDateUtil.timestampToMonth(millSeconds);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ analysisViewModel.obtainEventSource(date[0], date[1]);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+
+ analysisViewModel.eventSourceModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(EventSourceBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ List dataBeanList = resultBean.getData();
+ for (int i = 0; i < dataBeanList.size(); i++) {
+ EventSourceBean.DataDTO dataBean = dataBeanList.get(i);
+
+ String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource();
+ int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum());
+ excelDataBeans.add(new ExcelDataBean(i, label, number));
+
+ String caseNum = dataBean.getCaseNum();
+ //表格数据需要把0的加进去,饼图不需要
+ if (!caseNum.equals("0")) {
+ pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label));
+ }
+ }
+ viewBinding.resourceTableView.setData(excelDataBeans);
+ ChartViewHelper.setPieChartData(viewBinding.resourcePieChart, pieEntries);
+ }
+ }
+ });
+ analysisViewModel.loadState.observe(this, new Observer() {
+ @Override
+ public void onChanged(LoadState loadState) {
+ if (loadState == LoadState.Loading) {
+ DialogHelper.showLoadingDialog(context, "获取数据中...");
+ } else {
+ DialogHelper.dismissLoadingDialog();
+ }
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
index 7cc5694..7156356 100644
--- a/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
+++ b/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
@@ -12,7 +12,6 @@
import com.pengxh.androidx.lite.adapter.ViewHolder;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.hub.IntHub;
-import com.pengxh.androidx.lite.hub.StringHub;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
import java.util.ArrayList;
@@ -64,11 +63,11 @@
Intent intent = new Intent();
switch (position) {
case 0:
- intent.setClass(context, EventSourceActivity.class);
+ intent.setClass(context, CityBaseDataActivity.class);
startActivity(intent);
break;
case 1:
- intent.setClass(context, CaseStatusActivity.class);
+ intent.setClass(context, CaseResourceActivity.class);
startActivity(intent);
break;
case 2:
@@ -76,16 +75,21 @@
startActivity(intent);
break;
case 3:
- intent.setClass(context, StreetStatisticsActivity.class);
+ intent.setClass(context, DeptHandleConditionActivity.class);
startActivity(intent);
break;
case 4:
- StringHub.show(context, "处理统计");
+ intent.setClass(context, GridAnalysisActivity.class);
+ startActivity(intent);
break;
case 5:
intent.setClass(context, TrendAnalysisActivity.class);
startActivity(intent);
break;
+ case 6:
+ intent.setClass(context, PunishAnalysisActivity.class);
+ startActivity(intent);
+ break;
}
}
});
diff --git a/.idea/misc.xml b/.idea/misc.xml
index ebd14f7..d8f1d5f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -223,6 +223,7 @@
+
@@ -237,6 +238,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ef2ece3..910a6ab 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -71,9 +71,11 @@
-
-
-
+
+
+
+
+
diff --git a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
index 18d7ed4..f018b90 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
@@ -28,7 +28,7 @@
R.mipmap.cffx);
public static final List ANALYSIS_ITEMS = Arrays.asList(
- "城管基础数据", "案卷来源统计", "高发案卷统计",
+ "城市基础数据", "案卷来源统计", "高发案卷统计",
"单位处置情况", "网格分析", "案卷趋势分析",
"商铺处罚分析");
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
new file mode 100644
index 0000000..f29adb0
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
@@ -0,0 +1,97 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCaseResourceBinding;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author a203
+ * @package com.casic.dcms.ui
+ * @date 2022/2/16 16:55
+ * @email 290677893@qq.com
+ */
+public class CaseResourceActivity extends AndroidxBaseActivity {
+
+ private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
+ private final Context context = CaseResourceActivity.this;
+ private final List pieEntries = new ArrayList<>();
+ private final List barEntries = new ArrayList<>();
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(1));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ //默认显示当前月的分析数据
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.statusPieChart);
+ //TODO 这是模拟数据
+ pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
+ pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
+ ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
+ //初始化横向柱状图
+ ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
+ //设置数据
+ //TODO 这是模拟数据
+ for (int i = 0; i < horizontalLabelName.size(); i++) {
+ barEntries.add(new BarEntry(i, new Random().nextInt(100)));
+ }
+ ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
+ viewBinding.titleBarLayout.dateView.setText(date);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
deleted file mode 100644
index 03638c1..0000000
--- a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.view.statistics;
-
-import android.content.Context;
-import android.view.View;
-
-import androidx.core.content.ContextCompat;
-
-import com.casic.dcms.R;
-import com.casic.dcms.databinding.ActivityCaseStatusBinding;
-import com.casic.dcms.utils.ChartViewHelper;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.TimeOrDateUtil;
-import com.github.mikephil.charting.data.BarEntry;
-import com.github.mikephil.charting.data.PieEntry;
-import com.gyf.immersionbar.ImmersionBar;
-import com.jzxiang.pickerview.TimePickerDialog;
-import com.jzxiang.pickerview.data.Type;
-import com.jzxiang.pickerview.listener.OnDateSetListener;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Random;
-
-/**
- * @author a203
- * @description 案卷状态
- * @package com.casic.dcms.ui
- * @date 2022/2/16 16:55
- * @email 290677893@qq.com
- */
-public class CaseStatusActivity extends AndroidxBaseActivity {
-
- private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
- private final Context context = CaseStatusActivity.this;
- private final List pieEntries = new ArrayList<>();
- private final List barEntries = new ArrayList<>();
-
- @Override
- protected void setupTopBarLayout() {
- ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
- ImmersionBar.with(this).statusBarDarkFont(false).init();
-
- viewBinding.titleBarLayout.titleView.setText("案卷状态");
- viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- //默认显示当前月的分析数据
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initData() {
- //初始化饼图
- ChartViewHelper.initPieChart(viewBinding.statusPieChart);
- //TODO 这是模拟数据
- pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
- pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
- ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
- //初始化横向柱状图
- ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
- //设置数据
- //TODO 这是模拟数据
- for (int i = 0; i < horizontalLabelName.size(); i++) {
- barEntries.add(new BarEntry(i, new Random().nextInt(100)));
- }
- ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
- }
-
- @Override
- protected void initEvent() {
- viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- new TimePickerDialog.Builder()
- .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
- .setTitleStringId("选择日期")
- .setWheelItemTextSize(16)
- .setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
- .setMaxMillseconds(System.currentTimeMillis())
- .setType(Type.YEAR_MONTH)
- .setCallBack(new OnDateSetListener() {
- @Override
- public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
- String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
- viewBinding.titleBarLayout.dateView.setText(date);
- }
- }).build().show(getSupportFragmentManager(), "year_month");
- }
- });
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java
new file mode 100644
index 0000000..14bcf7d
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java
@@ -0,0 +1,160 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.bin.david.form.core.TableConfig;
+import com.bin.david.form.data.style.FontStyle;
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCityBaseDataBinding;
+import com.casic.dcms.model.EventSourceBean;
+import com.casic.dcms.model.ExcelDataBean;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.casic.dcms.vm.DataAnalysisViewModel;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.hub.ContextHub;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+import com.pengxh.androidx.lite.vm.LoadState;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author : Pengxh
+ * @time : 2021/4/16 9:24
+ * @email : 290677893@qq.com
+ */
+public class CityBaseDataActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "CityBaseDataActivity";
+ private final Context context = CityBaseDataActivity.this;
+ private final List excelDataBeans = new ArrayList<>();
+ private final List pieEntries = new ArrayList<>();
+ private String[] date = new String[0];
+ private DataAnalysisViewModel analysisViewModel;
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(0));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //默认显示当前月的数据
+ long timeMillis = System.currentTimeMillis();
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis));
+ try {
+ date = TimeOrDateUtil.timestampToMonth(timeMillis);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ //初始化表格
+ initTableConfig();
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.resourcePieChart);
+ analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class);
+ analysisViewModel.obtainEventSource(date[0], date[1]);
+ }
+
+ private void initTableConfig() {
+ TableConfig config = viewBinding.resourceTableView.getConfig();
+ //首行属性
+ config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));
+ config.setContentBackgroundColor(Color.LTGRAY);
+ config.setColumnTitleVerticalPadding(30);
+ //内容属性
+ config.setContentStyle(new FontStyle(50, Color.DKGRAY));
+ config.setVerticalPadding(30);
+ config.setShowTableTitle(false); //不显示标题
+ config.setShowXSequence(false); //不显示横向ABC....序列
+ config.setShowYSequence(false); //不显示纵向123....序列
+ config.setMinTableWidth(ContextHub.getScreenWidth(this));//不设置的话会就不会居中显示
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(millSeconds));
+ String[] date = new String[0];
+ try {
+ date = TimeOrDateUtil.timestampToMonth(millSeconds);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ analysisViewModel.obtainEventSource(date[0], date[1]);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+
+ analysisViewModel.eventSourceModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(EventSourceBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ List dataBeanList = resultBean.getData();
+ for (int i = 0; i < dataBeanList.size(); i++) {
+ EventSourceBean.DataDTO dataBean = dataBeanList.get(i);
+
+ String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource();
+ int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum());
+ excelDataBeans.add(new ExcelDataBean(i, label, number));
+
+ String caseNum = dataBean.getCaseNum();
+ //表格数据需要把0的加进去,饼图不需要
+ if (!caseNum.equals("0")) {
+ pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label));
+ }
+ }
+ viewBinding.resourceTableView.setData(excelDataBeans);
+ ChartViewHelper.setPieChartData(viewBinding.resourcePieChart, pieEntries);
+ }
+ }
+ });
+ analysisViewModel.loadState.observe(this, new Observer() {
+ @Override
+ public void onChanged(LoadState loadState) {
+ if (loadState == LoadState.Loading) {
+ DialogHelper.showLoadingDialog(context, "获取数据中...");
+ } else {
+ DialogHelper.dismissLoadingDialog();
+ }
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
index 7cc5694..7156356 100644
--- a/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
+++ b/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
@@ -12,7 +12,6 @@
import com.pengxh.androidx.lite.adapter.ViewHolder;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.hub.IntHub;
-import com.pengxh.androidx.lite.hub.StringHub;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
import java.util.ArrayList;
@@ -64,11 +63,11 @@
Intent intent = new Intent();
switch (position) {
case 0:
- intent.setClass(context, EventSourceActivity.class);
+ intent.setClass(context, CityBaseDataActivity.class);
startActivity(intent);
break;
case 1:
- intent.setClass(context, CaseStatusActivity.class);
+ intent.setClass(context, CaseResourceActivity.class);
startActivity(intent);
break;
case 2:
@@ -76,16 +75,21 @@
startActivity(intent);
break;
case 3:
- intent.setClass(context, StreetStatisticsActivity.class);
+ intent.setClass(context, DeptHandleConditionActivity.class);
startActivity(intent);
break;
case 4:
- StringHub.show(context, "处理统计");
+ intent.setClass(context, GridAnalysisActivity.class);
+ startActivity(intent);
break;
case 5:
intent.setClass(context, TrendAnalysisActivity.class);
startActivity(intent);
break;
+ case 6:
+ intent.setClass(context, PunishAnalysisActivity.class);
+ startActivity(intent);
+ break;
}
}
});
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java
new file mode 100644
index 0000000..e2466ce
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java
@@ -0,0 +1,153 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.TextView;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityDeptHandleConditionBinding;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.Entry;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author a203
+ * @package com.casic.dcms.ui
+ * @date 2022/2/15 09:46
+ * @email 290677893@qq.com
+ */
+public class DeptHandleConditionActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "DeptHandleConditionActivity";
+ private static final List horizontalLabelName = Arrays.asList("销案", "不予立案", "结案", "待结案", "待核查", "待处理", "待核实");
+ private final Context context = DeptHandleConditionActivity.this;
+ private final List spinnerEntries = new ArrayList<>();
+ private final List commonEntries = new ArrayList<>();
+ private final List quickEntries = new ArrayList<>();
+ private final List packageEntries = new ArrayList<>();
+ private final List pieEntries = new ArrayList<>();
+ private final List barEntries = new ArrayList<>();
+ private String selectedStreet = "";
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ //TODO 这是模拟数据
+ StringBuilder str = new StringBuilder();
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < i; j++) {
+ str.append("x");
+ }
+ spinnerEntries.add(str.append("街道").toString());
+ str.delete(0, str.length());
+ }
+ ArrayAdapter arrayAdapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, spinnerEntries);
+ arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ int dimension = (int) getResources().getDimension(R.dimen.titleViewHeight);
+ viewBinding.titleBarLayout.titleSpinner.setDropDownVerticalOffset(dimension);
+ viewBinding.titleBarLayout.titleSpinner.setAdapter(arrayAdapter);
+ //默认选中第一条
+ selectedStreet = spinnerEntries.get(0);
+ viewBinding.titleBarLayout.titleSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
+ //spinner 选中后显示字体的颜色设置
+ TextView tv = (TextView) view;
+ tv.setTextColor(ContextCompat.getColor(context, R.color.white));
+ selectedStreet = spinnerEntries.get(i);
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> adapterView) {
+
+ }
+ });
+ //默认显示当前月的分析数据
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //初始化折线图
+ ChartViewHelper.initLineChart(viewBinding.streetLineChart);
+ //TODO 这是模拟数据
+ Calendar calendar = Calendar.getInstance();
+ int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+ for (int i = 0; i < maxDay; i++) {
+ commonEntries.add(new Entry(i, new Random().nextInt(15), "common"));
+ }
+ for (int i = 0; i < maxDay; i++) {
+ quickEntries.add(new Entry(i, new Random().nextInt(20), "quick"));
+ }
+ for (int i = 0; i < maxDay; i++) {
+ packageEntries.add(new Entry(i, new Random().nextInt(10), "package"));
+ }
+ ChartViewHelper.setLineChartData(viewBinding.streetLineChart, commonEntries, quickEntries, packageEntries);
+ //初始化饼图
+// ChartUtil.initPieChart(this, viewBinding.streetPieChart);
+ //设置数据
+ //TODO 这是模拟数据
+ pieEntries.add(new PieEntry(new Random().nextInt(100), "普通"));
+ pieEntries.add(new PieEntry(new Random().nextInt(150), "快速"));
+ pieEntries.add(new PieEntry(new Random().nextInt(50), "三包"));
+ ChartViewHelper.setPieChartData(viewBinding.streetPieChart, pieEntries);
+ //初始化横向柱状图
+// ChartUtil.initBarChart(this, viewBinding.streetBarChart, horizontalLabelName);
+ //设置数据
+ //TODO 这是模拟数据
+ for (int i = 0; i < horizontalLabelName.size(); i++) {
+ barEntries.add(new BarEntry(i, new Random().nextInt(100)));
+ }
+ ChartViewHelper.setBarChartData(viewBinding.streetBarChart, barEntries);
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
+ viewBinding.titleBarLayout.dateView.setText(date);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+ }
+}
diff --git a/.idea/misc.xml b/.idea/misc.xml
index ebd14f7..d8f1d5f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -223,6 +223,7 @@
+
@@ -237,6 +238,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ef2ece3..910a6ab 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -71,9 +71,11 @@
-
-
-
+
+
+
+
+
diff --git a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
index 18d7ed4..f018b90 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
@@ -28,7 +28,7 @@
R.mipmap.cffx);
public static final List ANALYSIS_ITEMS = Arrays.asList(
- "城管基础数据", "案卷来源统计", "高发案卷统计",
+ "城市基础数据", "案卷来源统计", "高发案卷统计",
"单位处置情况", "网格分析", "案卷趋势分析",
"商铺处罚分析");
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
new file mode 100644
index 0000000..f29adb0
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
@@ -0,0 +1,97 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCaseResourceBinding;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author a203
+ * @package com.casic.dcms.ui
+ * @date 2022/2/16 16:55
+ * @email 290677893@qq.com
+ */
+public class CaseResourceActivity extends AndroidxBaseActivity {
+
+ private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
+ private final Context context = CaseResourceActivity.this;
+ private final List pieEntries = new ArrayList<>();
+ private final List barEntries = new ArrayList<>();
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(1));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ //默认显示当前月的分析数据
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.statusPieChart);
+ //TODO 这是模拟数据
+ pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
+ pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
+ ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
+ //初始化横向柱状图
+ ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
+ //设置数据
+ //TODO 这是模拟数据
+ for (int i = 0; i < horizontalLabelName.size(); i++) {
+ barEntries.add(new BarEntry(i, new Random().nextInt(100)));
+ }
+ ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
+ viewBinding.titleBarLayout.dateView.setText(date);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
deleted file mode 100644
index 03638c1..0000000
--- a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.view.statistics;
-
-import android.content.Context;
-import android.view.View;
-
-import androidx.core.content.ContextCompat;
-
-import com.casic.dcms.R;
-import com.casic.dcms.databinding.ActivityCaseStatusBinding;
-import com.casic.dcms.utils.ChartViewHelper;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.TimeOrDateUtil;
-import com.github.mikephil.charting.data.BarEntry;
-import com.github.mikephil.charting.data.PieEntry;
-import com.gyf.immersionbar.ImmersionBar;
-import com.jzxiang.pickerview.TimePickerDialog;
-import com.jzxiang.pickerview.data.Type;
-import com.jzxiang.pickerview.listener.OnDateSetListener;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Random;
-
-/**
- * @author a203
- * @description 案卷状态
- * @package com.casic.dcms.ui
- * @date 2022/2/16 16:55
- * @email 290677893@qq.com
- */
-public class CaseStatusActivity extends AndroidxBaseActivity {
-
- private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
- private final Context context = CaseStatusActivity.this;
- private final List pieEntries = new ArrayList<>();
- private final List barEntries = new ArrayList<>();
-
- @Override
- protected void setupTopBarLayout() {
- ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
- ImmersionBar.with(this).statusBarDarkFont(false).init();
-
- viewBinding.titleBarLayout.titleView.setText("案卷状态");
- viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- //默认显示当前月的分析数据
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initData() {
- //初始化饼图
- ChartViewHelper.initPieChart(viewBinding.statusPieChart);
- //TODO 这是模拟数据
- pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
- pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
- ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
- //初始化横向柱状图
- ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
- //设置数据
- //TODO 这是模拟数据
- for (int i = 0; i < horizontalLabelName.size(); i++) {
- barEntries.add(new BarEntry(i, new Random().nextInt(100)));
- }
- ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
- }
-
- @Override
- protected void initEvent() {
- viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- new TimePickerDialog.Builder()
- .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
- .setTitleStringId("选择日期")
- .setWheelItemTextSize(16)
- .setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
- .setMaxMillseconds(System.currentTimeMillis())
- .setType(Type.YEAR_MONTH)
- .setCallBack(new OnDateSetListener() {
- @Override
- public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
- String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
- viewBinding.titleBarLayout.dateView.setText(date);
- }
- }).build().show(getSupportFragmentManager(), "year_month");
- }
- });
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java
new file mode 100644
index 0000000..14bcf7d
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java
@@ -0,0 +1,160 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.bin.david.form.core.TableConfig;
+import com.bin.david.form.data.style.FontStyle;
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCityBaseDataBinding;
+import com.casic.dcms.model.EventSourceBean;
+import com.casic.dcms.model.ExcelDataBean;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.casic.dcms.vm.DataAnalysisViewModel;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.hub.ContextHub;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+import com.pengxh.androidx.lite.vm.LoadState;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author : Pengxh
+ * @time : 2021/4/16 9:24
+ * @email : 290677893@qq.com
+ */
+public class CityBaseDataActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "CityBaseDataActivity";
+ private final Context context = CityBaseDataActivity.this;
+ private final List excelDataBeans = new ArrayList<>();
+ private final List pieEntries = new ArrayList<>();
+ private String[] date = new String[0];
+ private DataAnalysisViewModel analysisViewModel;
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(0));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //默认显示当前月的数据
+ long timeMillis = System.currentTimeMillis();
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis));
+ try {
+ date = TimeOrDateUtil.timestampToMonth(timeMillis);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ //初始化表格
+ initTableConfig();
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.resourcePieChart);
+ analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class);
+ analysisViewModel.obtainEventSource(date[0], date[1]);
+ }
+
+ private void initTableConfig() {
+ TableConfig config = viewBinding.resourceTableView.getConfig();
+ //首行属性
+ config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));
+ config.setContentBackgroundColor(Color.LTGRAY);
+ config.setColumnTitleVerticalPadding(30);
+ //内容属性
+ config.setContentStyle(new FontStyle(50, Color.DKGRAY));
+ config.setVerticalPadding(30);
+ config.setShowTableTitle(false); //不显示标题
+ config.setShowXSequence(false); //不显示横向ABC....序列
+ config.setShowYSequence(false); //不显示纵向123....序列
+ config.setMinTableWidth(ContextHub.getScreenWidth(this));//不设置的话会就不会居中显示
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(millSeconds));
+ String[] date = new String[0];
+ try {
+ date = TimeOrDateUtil.timestampToMonth(millSeconds);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ analysisViewModel.obtainEventSource(date[0], date[1]);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+
+ analysisViewModel.eventSourceModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(EventSourceBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ List dataBeanList = resultBean.getData();
+ for (int i = 0; i < dataBeanList.size(); i++) {
+ EventSourceBean.DataDTO dataBean = dataBeanList.get(i);
+
+ String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource();
+ int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum());
+ excelDataBeans.add(new ExcelDataBean(i, label, number));
+
+ String caseNum = dataBean.getCaseNum();
+ //表格数据需要把0的加进去,饼图不需要
+ if (!caseNum.equals("0")) {
+ pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label));
+ }
+ }
+ viewBinding.resourceTableView.setData(excelDataBeans);
+ ChartViewHelper.setPieChartData(viewBinding.resourcePieChart, pieEntries);
+ }
+ }
+ });
+ analysisViewModel.loadState.observe(this, new Observer() {
+ @Override
+ public void onChanged(LoadState loadState) {
+ if (loadState == LoadState.Loading) {
+ DialogHelper.showLoadingDialog(context, "获取数据中...");
+ } else {
+ DialogHelper.dismissLoadingDialog();
+ }
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
index 7cc5694..7156356 100644
--- a/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
+++ b/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
@@ -12,7 +12,6 @@
import com.pengxh.androidx.lite.adapter.ViewHolder;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.hub.IntHub;
-import com.pengxh.androidx.lite.hub.StringHub;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
import java.util.ArrayList;
@@ -64,11 +63,11 @@
Intent intent = new Intent();
switch (position) {
case 0:
- intent.setClass(context, EventSourceActivity.class);
+ intent.setClass(context, CityBaseDataActivity.class);
startActivity(intent);
break;
case 1:
- intent.setClass(context, CaseStatusActivity.class);
+ intent.setClass(context, CaseResourceActivity.class);
startActivity(intent);
break;
case 2:
@@ -76,16 +75,21 @@
startActivity(intent);
break;
case 3:
- intent.setClass(context, StreetStatisticsActivity.class);
+ intent.setClass(context, DeptHandleConditionActivity.class);
startActivity(intent);
break;
case 4:
- StringHub.show(context, "处理统计");
+ intent.setClass(context, GridAnalysisActivity.class);
+ startActivity(intent);
break;
case 5:
intent.setClass(context, TrendAnalysisActivity.class);
startActivity(intent);
break;
+ case 6:
+ intent.setClass(context, PunishAnalysisActivity.class);
+ startActivity(intent);
+ break;
}
}
});
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java
new file mode 100644
index 0000000..e2466ce
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java
@@ -0,0 +1,153 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.TextView;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityDeptHandleConditionBinding;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.Entry;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author a203
+ * @package com.casic.dcms.ui
+ * @date 2022/2/15 09:46
+ * @email 290677893@qq.com
+ */
+public class DeptHandleConditionActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "DeptHandleConditionActivity";
+ private static final List horizontalLabelName = Arrays.asList("销案", "不予立案", "结案", "待结案", "待核查", "待处理", "待核实");
+ private final Context context = DeptHandleConditionActivity.this;
+ private final List spinnerEntries = new ArrayList<>();
+ private final List commonEntries = new ArrayList<>();
+ private final List quickEntries = new ArrayList<>();
+ private final List packageEntries = new ArrayList<>();
+ private final List pieEntries = new ArrayList<>();
+ private final List barEntries = new ArrayList<>();
+ private String selectedStreet = "";
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ //TODO 这是模拟数据
+ StringBuilder str = new StringBuilder();
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < i; j++) {
+ str.append("x");
+ }
+ spinnerEntries.add(str.append("街道").toString());
+ str.delete(0, str.length());
+ }
+ ArrayAdapter arrayAdapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, spinnerEntries);
+ arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ int dimension = (int) getResources().getDimension(R.dimen.titleViewHeight);
+ viewBinding.titleBarLayout.titleSpinner.setDropDownVerticalOffset(dimension);
+ viewBinding.titleBarLayout.titleSpinner.setAdapter(arrayAdapter);
+ //默认选中第一条
+ selectedStreet = spinnerEntries.get(0);
+ viewBinding.titleBarLayout.titleSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
+ //spinner 选中后显示字体的颜色设置
+ TextView tv = (TextView) view;
+ tv.setTextColor(ContextCompat.getColor(context, R.color.white));
+ selectedStreet = spinnerEntries.get(i);
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> adapterView) {
+
+ }
+ });
+ //默认显示当前月的分析数据
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //初始化折线图
+ ChartViewHelper.initLineChart(viewBinding.streetLineChart);
+ //TODO 这是模拟数据
+ Calendar calendar = Calendar.getInstance();
+ int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+ for (int i = 0; i < maxDay; i++) {
+ commonEntries.add(new Entry(i, new Random().nextInt(15), "common"));
+ }
+ for (int i = 0; i < maxDay; i++) {
+ quickEntries.add(new Entry(i, new Random().nextInt(20), "quick"));
+ }
+ for (int i = 0; i < maxDay; i++) {
+ packageEntries.add(new Entry(i, new Random().nextInt(10), "package"));
+ }
+ ChartViewHelper.setLineChartData(viewBinding.streetLineChart, commonEntries, quickEntries, packageEntries);
+ //初始化饼图
+// ChartUtil.initPieChart(this, viewBinding.streetPieChart);
+ //设置数据
+ //TODO 这是模拟数据
+ pieEntries.add(new PieEntry(new Random().nextInt(100), "普通"));
+ pieEntries.add(new PieEntry(new Random().nextInt(150), "快速"));
+ pieEntries.add(new PieEntry(new Random().nextInt(50), "三包"));
+ ChartViewHelper.setPieChartData(viewBinding.streetPieChart, pieEntries);
+ //初始化横向柱状图
+// ChartUtil.initBarChart(this, viewBinding.streetBarChart, horizontalLabelName);
+ //设置数据
+ //TODO 这是模拟数据
+ for (int i = 0; i < horizontalLabelName.size(); i++) {
+ barEntries.add(new BarEntry(i, new Random().nextInt(100)));
+ }
+ ChartViewHelper.setBarChartData(viewBinding.streetBarChart, barEntries);
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
+ viewBinding.titleBarLayout.dateView.setText(date);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/EventSourceActivity.java
deleted file mode 100644
index 69c61f4..0000000
--- a/app/src/main/java/com/casic/dcms/view/statistics/EventSourceActivity.java
+++ /dev/null
@@ -1,160 +0,0 @@
-package com.casic.dcms.view.statistics;
-
-import android.content.Context;
-import android.graphics.Color;
-import android.view.View;
-
-import androidx.core.content.ContextCompat;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.bin.david.form.core.TableConfig;
-import com.bin.david.form.data.style.FontStyle;
-import com.casic.dcms.R;
-import com.casic.dcms.databinding.ActivityEventResourceBinding;
-import com.casic.dcms.model.EventSourceBean;
-import com.casic.dcms.model.ExcelDataBean;
-import com.casic.dcms.utils.ChartViewHelper;
-import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.TimeOrDateUtil;
-import com.casic.dcms.vm.DataAnalysisViewModel;
-import com.github.mikephil.charting.data.PieEntry;
-import com.gyf.immersionbar.ImmersionBar;
-import com.jzxiang.pickerview.TimePickerDialog;
-import com.jzxiang.pickerview.data.Type;
-import com.jzxiang.pickerview.listener.OnDateSetListener;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-import com.pengxh.androidx.lite.hub.ContextHub;
-import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
-import com.pengxh.androidx.lite.vm.LoadState;
-
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author : Pengxh
- * @time : 2021/4/16 9:24
- * @email : 290677893@qq.com
- */
-public class EventSourceActivity extends AndroidxBaseActivity {
-
- private static final String TAG = "EventSourceActivity";
- private final Context context = EventSourceActivity.this;
- private final List excelDataBeans = new ArrayList<>();
- private final List pieEntries = new ArrayList<>();
- private String[] date = new String[0];
- private DataAnalysisViewModel analysisViewModel;
-
- @Override
- protected void setupTopBarLayout() {
- ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
- ImmersionBar.with(this).statusBarDarkFont(false).init();
-
- viewBinding.titleBarLayout.titleView.setText("问题来源");
- viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initData() {
- //默认显示当前月的数据
- long timeMillis = System.currentTimeMillis();
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis));
- try {
- date = TimeOrDateUtil.timestampToMonth(timeMillis);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //初始化表格
- initTableConfig();
- //初始化饼图
- ChartViewHelper.initPieChart(viewBinding.resourcePieChart);
- analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class);
- analysisViewModel.obtainEventSource(date[0], date[1]);
- }
-
- private void initTableConfig() {
- TableConfig config = viewBinding.resourceTableView.getConfig();
- //首行属性
- config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));
- config.setContentBackgroundColor(Color.LTGRAY);
- config.setColumnTitleVerticalPadding(30);
- //内容属性
- config.setContentStyle(new FontStyle(50, Color.DKGRAY));
- config.setVerticalPadding(30);
- config.setShowTableTitle(false); //不显示标题
- config.setShowXSequence(false); //不显示横向ABC....序列
- config.setShowYSequence(false); //不显示纵向123....序列
- config.setMinTableWidth(ContextHub.getScreenWidth(this));//不设置的话会就不会居中显示
- }
-
- @Override
- protected void initEvent() {
- viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- new TimePickerDialog.Builder()
- .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
- .setTitleStringId("选择日期")
- .setWheelItemTextSize(16)
- .setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
- .setMaxMillseconds(System.currentTimeMillis())
- .setType(Type.YEAR_MONTH)
- .setCallBack(new OnDateSetListener() {
- @Override
- public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(millSeconds));
- String[] date = new String[0];
- try {
- date = TimeOrDateUtil.timestampToMonth(millSeconds);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- analysisViewModel.obtainEventSource(date[0], date[1]);
- }
- }).build().show(getSupportFragmentManager(), "year_month");
- }
- });
-
- analysisViewModel.eventSourceModel.observe(this, new Observer() {
- @Override
- public void onChanged(EventSourceBean resultBean) {
- if (resultBean.getCode() == 200) {
- List dataBeanList = resultBean.getData();
- for (int i = 0; i < dataBeanList.size(); i++) {
- EventSourceBean.DataDTO dataBean = dataBeanList.get(i);
-
- String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource();
- int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum());
- excelDataBeans.add(new ExcelDataBean(i, label, number));
-
- String caseNum = dataBean.getCaseNum();
- //表格数据需要把0的加进去,饼图不需要
- if (!caseNum.equals("0")) {
- pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label));
- }
- }
- viewBinding.resourceTableView.setData(excelDataBeans);
- ChartViewHelper.setPieChartData(viewBinding.resourcePieChart, pieEntries);
- }
- }
- });
- analysisViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- DialogHelper.showLoadingDialog(context, "获取数据中...");
- } else {
- DialogHelper.dismissLoadingDialog();
- }
- }
- });
- }
-}
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index ebd14f7..d8f1d5f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -223,6 +223,7 @@
+
@@ -237,6 +238,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ef2ece3..910a6ab 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -71,9 +71,11 @@
-
-
-
+
+
+
+
+
diff --git a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
index 18d7ed4..f018b90 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
@@ -28,7 +28,7 @@
R.mipmap.cffx);
public static final List ANALYSIS_ITEMS = Arrays.asList(
- "城管基础数据", "案卷来源统计", "高发案卷统计",
+ "城市基础数据", "案卷来源统计", "高发案卷统计",
"单位处置情况", "网格分析", "案卷趋势分析",
"商铺处罚分析");
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
new file mode 100644
index 0000000..f29adb0
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
@@ -0,0 +1,97 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCaseResourceBinding;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author a203
+ * @package com.casic.dcms.ui
+ * @date 2022/2/16 16:55
+ * @email 290677893@qq.com
+ */
+public class CaseResourceActivity extends AndroidxBaseActivity {
+
+ private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
+ private final Context context = CaseResourceActivity.this;
+ private final List pieEntries = new ArrayList<>();
+ private final List barEntries = new ArrayList<>();
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(1));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ //默认显示当前月的分析数据
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.statusPieChart);
+ //TODO 这是模拟数据
+ pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
+ pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
+ ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
+ //初始化横向柱状图
+ ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
+ //设置数据
+ //TODO 这是模拟数据
+ for (int i = 0; i < horizontalLabelName.size(); i++) {
+ barEntries.add(new BarEntry(i, new Random().nextInt(100)));
+ }
+ ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
+ viewBinding.titleBarLayout.dateView.setText(date);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
deleted file mode 100644
index 03638c1..0000000
--- a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.view.statistics;
-
-import android.content.Context;
-import android.view.View;
-
-import androidx.core.content.ContextCompat;
-
-import com.casic.dcms.R;
-import com.casic.dcms.databinding.ActivityCaseStatusBinding;
-import com.casic.dcms.utils.ChartViewHelper;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.TimeOrDateUtil;
-import com.github.mikephil.charting.data.BarEntry;
-import com.github.mikephil.charting.data.PieEntry;
-import com.gyf.immersionbar.ImmersionBar;
-import com.jzxiang.pickerview.TimePickerDialog;
-import com.jzxiang.pickerview.data.Type;
-import com.jzxiang.pickerview.listener.OnDateSetListener;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Random;
-
-/**
- * @author a203
- * @description 案卷状态
- * @package com.casic.dcms.ui
- * @date 2022/2/16 16:55
- * @email 290677893@qq.com
- */
-public class CaseStatusActivity extends AndroidxBaseActivity {
-
- private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
- private final Context context = CaseStatusActivity.this;
- private final List pieEntries = new ArrayList<>();
- private final List barEntries = new ArrayList<>();
-
- @Override
- protected void setupTopBarLayout() {
- ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
- ImmersionBar.with(this).statusBarDarkFont(false).init();
-
- viewBinding.titleBarLayout.titleView.setText("案卷状态");
- viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- //默认显示当前月的分析数据
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initData() {
- //初始化饼图
- ChartViewHelper.initPieChart(viewBinding.statusPieChart);
- //TODO 这是模拟数据
- pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
- pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
- ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
- //初始化横向柱状图
- ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
- //设置数据
- //TODO 这是模拟数据
- for (int i = 0; i < horizontalLabelName.size(); i++) {
- barEntries.add(new BarEntry(i, new Random().nextInt(100)));
- }
- ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
- }
-
- @Override
- protected void initEvent() {
- viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- new TimePickerDialog.Builder()
- .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
- .setTitleStringId("选择日期")
- .setWheelItemTextSize(16)
- .setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
- .setMaxMillseconds(System.currentTimeMillis())
- .setType(Type.YEAR_MONTH)
- .setCallBack(new OnDateSetListener() {
- @Override
- public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
- String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
- viewBinding.titleBarLayout.dateView.setText(date);
- }
- }).build().show(getSupportFragmentManager(), "year_month");
- }
- });
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java
new file mode 100644
index 0000000..14bcf7d
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java
@@ -0,0 +1,160 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.bin.david.form.core.TableConfig;
+import com.bin.david.form.data.style.FontStyle;
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCityBaseDataBinding;
+import com.casic.dcms.model.EventSourceBean;
+import com.casic.dcms.model.ExcelDataBean;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.casic.dcms.vm.DataAnalysisViewModel;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.hub.ContextHub;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+import com.pengxh.androidx.lite.vm.LoadState;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author : Pengxh
+ * @time : 2021/4/16 9:24
+ * @email : 290677893@qq.com
+ */
+public class CityBaseDataActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "CityBaseDataActivity";
+ private final Context context = CityBaseDataActivity.this;
+ private final List excelDataBeans = new ArrayList<>();
+ private final List pieEntries = new ArrayList<>();
+ private String[] date = new String[0];
+ private DataAnalysisViewModel analysisViewModel;
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(0));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //默认显示当前月的数据
+ long timeMillis = System.currentTimeMillis();
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis));
+ try {
+ date = TimeOrDateUtil.timestampToMonth(timeMillis);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ //初始化表格
+ initTableConfig();
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.resourcePieChart);
+ analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class);
+ analysisViewModel.obtainEventSource(date[0], date[1]);
+ }
+
+ private void initTableConfig() {
+ TableConfig config = viewBinding.resourceTableView.getConfig();
+ //首行属性
+ config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));
+ config.setContentBackgroundColor(Color.LTGRAY);
+ config.setColumnTitleVerticalPadding(30);
+ //内容属性
+ config.setContentStyle(new FontStyle(50, Color.DKGRAY));
+ config.setVerticalPadding(30);
+ config.setShowTableTitle(false); //不显示标题
+ config.setShowXSequence(false); //不显示横向ABC....序列
+ config.setShowYSequence(false); //不显示纵向123....序列
+ config.setMinTableWidth(ContextHub.getScreenWidth(this));//不设置的话会就不会居中显示
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(millSeconds));
+ String[] date = new String[0];
+ try {
+ date = TimeOrDateUtil.timestampToMonth(millSeconds);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ analysisViewModel.obtainEventSource(date[0], date[1]);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+
+ analysisViewModel.eventSourceModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(EventSourceBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ List dataBeanList = resultBean.getData();
+ for (int i = 0; i < dataBeanList.size(); i++) {
+ EventSourceBean.DataDTO dataBean = dataBeanList.get(i);
+
+ String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource();
+ int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum());
+ excelDataBeans.add(new ExcelDataBean(i, label, number));
+
+ String caseNum = dataBean.getCaseNum();
+ //表格数据需要把0的加进去,饼图不需要
+ if (!caseNum.equals("0")) {
+ pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label));
+ }
+ }
+ viewBinding.resourceTableView.setData(excelDataBeans);
+ ChartViewHelper.setPieChartData(viewBinding.resourcePieChart, pieEntries);
+ }
+ }
+ });
+ analysisViewModel.loadState.observe(this, new Observer() {
+ @Override
+ public void onChanged(LoadState loadState) {
+ if (loadState == LoadState.Loading) {
+ DialogHelper.showLoadingDialog(context, "获取数据中...");
+ } else {
+ DialogHelper.dismissLoadingDialog();
+ }
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
index 7cc5694..7156356 100644
--- a/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
+++ b/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
@@ -12,7 +12,6 @@
import com.pengxh.androidx.lite.adapter.ViewHolder;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.hub.IntHub;
-import com.pengxh.androidx.lite.hub.StringHub;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
import java.util.ArrayList;
@@ -64,11 +63,11 @@
Intent intent = new Intent();
switch (position) {
case 0:
- intent.setClass(context, EventSourceActivity.class);
+ intent.setClass(context, CityBaseDataActivity.class);
startActivity(intent);
break;
case 1:
- intent.setClass(context, CaseStatusActivity.class);
+ intent.setClass(context, CaseResourceActivity.class);
startActivity(intent);
break;
case 2:
@@ -76,16 +75,21 @@
startActivity(intent);
break;
case 3:
- intent.setClass(context, StreetStatisticsActivity.class);
+ intent.setClass(context, DeptHandleConditionActivity.class);
startActivity(intent);
break;
case 4:
- StringHub.show(context, "处理统计");
+ intent.setClass(context, GridAnalysisActivity.class);
+ startActivity(intent);
break;
case 5:
intent.setClass(context, TrendAnalysisActivity.class);
startActivity(intent);
break;
+ case 6:
+ intent.setClass(context, PunishAnalysisActivity.class);
+ startActivity(intent);
+ break;
}
}
});
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java
new file mode 100644
index 0000000..e2466ce
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java
@@ -0,0 +1,153 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.TextView;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityDeptHandleConditionBinding;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.Entry;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author a203
+ * @package com.casic.dcms.ui
+ * @date 2022/2/15 09:46
+ * @email 290677893@qq.com
+ */
+public class DeptHandleConditionActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "DeptHandleConditionActivity";
+ private static final List horizontalLabelName = Arrays.asList("销案", "不予立案", "结案", "待结案", "待核查", "待处理", "待核实");
+ private final Context context = DeptHandleConditionActivity.this;
+ private final List spinnerEntries = new ArrayList<>();
+ private final List commonEntries = new ArrayList<>();
+ private final List quickEntries = new ArrayList<>();
+ private final List packageEntries = new ArrayList<>();
+ private final List pieEntries = new ArrayList<>();
+ private final List barEntries = new ArrayList<>();
+ private String selectedStreet = "";
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ //TODO 这是模拟数据
+ StringBuilder str = new StringBuilder();
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < i; j++) {
+ str.append("x");
+ }
+ spinnerEntries.add(str.append("街道").toString());
+ str.delete(0, str.length());
+ }
+ ArrayAdapter arrayAdapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, spinnerEntries);
+ arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ int dimension = (int) getResources().getDimension(R.dimen.titleViewHeight);
+ viewBinding.titleBarLayout.titleSpinner.setDropDownVerticalOffset(dimension);
+ viewBinding.titleBarLayout.titleSpinner.setAdapter(arrayAdapter);
+ //默认选中第一条
+ selectedStreet = spinnerEntries.get(0);
+ viewBinding.titleBarLayout.titleSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
+ //spinner 选中后显示字体的颜色设置
+ TextView tv = (TextView) view;
+ tv.setTextColor(ContextCompat.getColor(context, R.color.white));
+ selectedStreet = spinnerEntries.get(i);
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> adapterView) {
+
+ }
+ });
+ //默认显示当前月的分析数据
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //初始化折线图
+ ChartViewHelper.initLineChart(viewBinding.streetLineChart);
+ //TODO 这是模拟数据
+ Calendar calendar = Calendar.getInstance();
+ int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+ for (int i = 0; i < maxDay; i++) {
+ commonEntries.add(new Entry(i, new Random().nextInt(15), "common"));
+ }
+ for (int i = 0; i < maxDay; i++) {
+ quickEntries.add(new Entry(i, new Random().nextInt(20), "quick"));
+ }
+ for (int i = 0; i < maxDay; i++) {
+ packageEntries.add(new Entry(i, new Random().nextInt(10), "package"));
+ }
+ ChartViewHelper.setLineChartData(viewBinding.streetLineChart, commonEntries, quickEntries, packageEntries);
+ //初始化饼图
+// ChartUtil.initPieChart(this, viewBinding.streetPieChart);
+ //设置数据
+ //TODO 这是模拟数据
+ pieEntries.add(new PieEntry(new Random().nextInt(100), "普通"));
+ pieEntries.add(new PieEntry(new Random().nextInt(150), "快速"));
+ pieEntries.add(new PieEntry(new Random().nextInt(50), "三包"));
+ ChartViewHelper.setPieChartData(viewBinding.streetPieChart, pieEntries);
+ //初始化横向柱状图
+// ChartUtil.initBarChart(this, viewBinding.streetBarChart, horizontalLabelName);
+ //设置数据
+ //TODO 这是模拟数据
+ for (int i = 0; i < horizontalLabelName.size(); i++) {
+ barEntries.add(new BarEntry(i, new Random().nextInt(100)));
+ }
+ ChartViewHelper.setBarChartData(viewBinding.streetBarChart, barEntries);
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
+ viewBinding.titleBarLayout.dateView.setText(date);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/EventSourceActivity.java
deleted file mode 100644
index 69c61f4..0000000
--- a/app/src/main/java/com/casic/dcms/view/statistics/EventSourceActivity.java
+++ /dev/null
@@ -1,160 +0,0 @@
-package com.casic.dcms.view.statistics;
-
-import android.content.Context;
-import android.graphics.Color;
-import android.view.View;
-
-import androidx.core.content.ContextCompat;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.bin.david.form.core.TableConfig;
-import com.bin.david.form.data.style.FontStyle;
-import com.casic.dcms.R;
-import com.casic.dcms.databinding.ActivityEventResourceBinding;
-import com.casic.dcms.model.EventSourceBean;
-import com.casic.dcms.model.ExcelDataBean;
-import com.casic.dcms.utils.ChartViewHelper;
-import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.TimeOrDateUtil;
-import com.casic.dcms.vm.DataAnalysisViewModel;
-import com.github.mikephil.charting.data.PieEntry;
-import com.gyf.immersionbar.ImmersionBar;
-import com.jzxiang.pickerview.TimePickerDialog;
-import com.jzxiang.pickerview.data.Type;
-import com.jzxiang.pickerview.listener.OnDateSetListener;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-import com.pengxh.androidx.lite.hub.ContextHub;
-import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
-import com.pengxh.androidx.lite.vm.LoadState;
-
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author : Pengxh
- * @time : 2021/4/16 9:24
- * @email : 290677893@qq.com
- */
-public class EventSourceActivity extends AndroidxBaseActivity {
-
- private static final String TAG = "EventSourceActivity";
- private final Context context = EventSourceActivity.this;
- private final List excelDataBeans = new ArrayList<>();
- private final List pieEntries = new ArrayList<>();
- private String[] date = new String[0];
- private DataAnalysisViewModel analysisViewModel;
-
- @Override
- protected void setupTopBarLayout() {
- ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
- ImmersionBar.with(this).statusBarDarkFont(false).init();
-
- viewBinding.titleBarLayout.titleView.setText("问题来源");
- viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initData() {
- //默认显示当前月的数据
- long timeMillis = System.currentTimeMillis();
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis));
- try {
- date = TimeOrDateUtil.timestampToMonth(timeMillis);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //初始化表格
- initTableConfig();
- //初始化饼图
- ChartViewHelper.initPieChart(viewBinding.resourcePieChart);
- analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class);
- analysisViewModel.obtainEventSource(date[0], date[1]);
- }
-
- private void initTableConfig() {
- TableConfig config = viewBinding.resourceTableView.getConfig();
- //首行属性
- config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));
- config.setContentBackgroundColor(Color.LTGRAY);
- config.setColumnTitleVerticalPadding(30);
- //内容属性
- config.setContentStyle(new FontStyle(50, Color.DKGRAY));
- config.setVerticalPadding(30);
- config.setShowTableTitle(false); //不显示标题
- config.setShowXSequence(false); //不显示横向ABC....序列
- config.setShowYSequence(false); //不显示纵向123....序列
- config.setMinTableWidth(ContextHub.getScreenWidth(this));//不设置的话会就不会居中显示
- }
-
- @Override
- protected void initEvent() {
- viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- new TimePickerDialog.Builder()
- .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
- .setTitleStringId("选择日期")
- .setWheelItemTextSize(16)
- .setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
- .setMaxMillseconds(System.currentTimeMillis())
- .setType(Type.YEAR_MONTH)
- .setCallBack(new OnDateSetListener() {
- @Override
- public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(millSeconds));
- String[] date = new String[0];
- try {
- date = TimeOrDateUtil.timestampToMonth(millSeconds);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- analysisViewModel.obtainEventSource(date[0], date[1]);
- }
- }).build().show(getSupportFragmentManager(), "year_month");
- }
- });
-
- analysisViewModel.eventSourceModel.observe(this, new Observer() {
- @Override
- public void onChanged(EventSourceBean resultBean) {
- if (resultBean.getCode() == 200) {
- List dataBeanList = resultBean.getData();
- for (int i = 0; i < dataBeanList.size(); i++) {
- EventSourceBean.DataDTO dataBean = dataBeanList.get(i);
-
- String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource();
- int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum());
- excelDataBeans.add(new ExcelDataBean(i, label, number));
-
- String caseNum = dataBean.getCaseNum();
- //表格数据需要把0的加进去,饼图不需要
- if (!caseNum.equals("0")) {
- pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label));
- }
- }
- viewBinding.resourceTableView.setData(excelDataBeans);
- ChartViewHelper.setPieChartData(viewBinding.resourcePieChart, pieEntries);
- }
- }
- });
- analysisViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- DialogHelper.showLoadingDialog(context, "获取数据中...");
- } else {
- DialogHelper.dismissLoadingDialog();
- }
- }
- });
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/GridAnalysisActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/GridAnalysisActivity.java
new file mode 100644
index 0000000..f4a6aed
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/GridAnalysisActivity.java
@@ -0,0 +1,27 @@
+package com.casic.dcms.view.statistics;
+
+import com.casic.dcms.databinding.ActivityGridAnalysisBinding;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+
+public class GridAnalysisActivity extends AndroidxBaseActivity {
+
+ @Override
+ protected void setupTopBarLayout() {
+
+ }
+
+ @Override
+ protected void initData() {
+
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initEvent() {
+
+ }
+}
diff --git a/.idea/misc.xml b/.idea/misc.xml
index ebd14f7..d8f1d5f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -223,6 +223,7 @@
+
@@ -237,6 +238,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ef2ece3..910a6ab 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -71,9 +71,11 @@
-
-
-
+
+
+
+
+
diff --git a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
index 18d7ed4..f018b90 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
@@ -28,7 +28,7 @@
R.mipmap.cffx);
public static final List ANALYSIS_ITEMS = Arrays.asList(
- "城管基础数据", "案卷来源统计", "高发案卷统计",
+ "城市基础数据", "案卷来源统计", "高发案卷统计",
"单位处置情况", "网格分析", "案卷趋势分析",
"商铺处罚分析");
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
new file mode 100644
index 0000000..f29adb0
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
@@ -0,0 +1,97 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCaseResourceBinding;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author a203
+ * @package com.casic.dcms.ui
+ * @date 2022/2/16 16:55
+ * @email 290677893@qq.com
+ */
+public class CaseResourceActivity extends AndroidxBaseActivity {
+
+ private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
+ private final Context context = CaseResourceActivity.this;
+ private final List pieEntries = new ArrayList<>();
+ private final List barEntries = new ArrayList<>();
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(1));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ //默认显示当前月的分析数据
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.statusPieChart);
+ //TODO 这是模拟数据
+ pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
+ pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
+ ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
+ //初始化横向柱状图
+ ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
+ //设置数据
+ //TODO 这是模拟数据
+ for (int i = 0; i < horizontalLabelName.size(); i++) {
+ barEntries.add(new BarEntry(i, new Random().nextInt(100)));
+ }
+ ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
+ viewBinding.titleBarLayout.dateView.setText(date);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
deleted file mode 100644
index 03638c1..0000000
--- a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.view.statistics;
-
-import android.content.Context;
-import android.view.View;
-
-import androidx.core.content.ContextCompat;
-
-import com.casic.dcms.R;
-import com.casic.dcms.databinding.ActivityCaseStatusBinding;
-import com.casic.dcms.utils.ChartViewHelper;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.TimeOrDateUtil;
-import com.github.mikephil.charting.data.BarEntry;
-import com.github.mikephil.charting.data.PieEntry;
-import com.gyf.immersionbar.ImmersionBar;
-import com.jzxiang.pickerview.TimePickerDialog;
-import com.jzxiang.pickerview.data.Type;
-import com.jzxiang.pickerview.listener.OnDateSetListener;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Random;
-
-/**
- * @author a203
- * @description 案卷状态
- * @package com.casic.dcms.ui
- * @date 2022/2/16 16:55
- * @email 290677893@qq.com
- */
-public class CaseStatusActivity extends AndroidxBaseActivity {
-
- private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
- private final Context context = CaseStatusActivity.this;
- private final List pieEntries = new ArrayList<>();
- private final List barEntries = new ArrayList<>();
-
- @Override
- protected void setupTopBarLayout() {
- ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
- ImmersionBar.with(this).statusBarDarkFont(false).init();
-
- viewBinding.titleBarLayout.titleView.setText("案卷状态");
- viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- //默认显示当前月的分析数据
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initData() {
- //初始化饼图
- ChartViewHelper.initPieChart(viewBinding.statusPieChart);
- //TODO 这是模拟数据
- pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
- pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
- ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
- //初始化横向柱状图
- ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
- //设置数据
- //TODO 这是模拟数据
- for (int i = 0; i < horizontalLabelName.size(); i++) {
- barEntries.add(new BarEntry(i, new Random().nextInt(100)));
- }
- ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
- }
-
- @Override
- protected void initEvent() {
- viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- new TimePickerDialog.Builder()
- .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
- .setTitleStringId("选择日期")
- .setWheelItemTextSize(16)
- .setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
- .setMaxMillseconds(System.currentTimeMillis())
- .setType(Type.YEAR_MONTH)
- .setCallBack(new OnDateSetListener() {
- @Override
- public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
- String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
- viewBinding.titleBarLayout.dateView.setText(date);
- }
- }).build().show(getSupportFragmentManager(), "year_month");
- }
- });
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java
new file mode 100644
index 0000000..14bcf7d
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java
@@ -0,0 +1,160 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.bin.david.form.core.TableConfig;
+import com.bin.david.form.data.style.FontStyle;
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCityBaseDataBinding;
+import com.casic.dcms.model.EventSourceBean;
+import com.casic.dcms.model.ExcelDataBean;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.casic.dcms.vm.DataAnalysisViewModel;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.hub.ContextHub;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+import com.pengxh.androidx.lite.vm.LoadState;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author : Pengxh
+ * @time : 2021/4/16 9:24
+ * @email : 290677893@qq.com
+ */
+public class CityBaseDataActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "CityBaseDataActivity";
+ private final Context context = CityBaseDataActivity.this;
+ private final List excelDataBeans = new ArrayList<>();
+ private final List pieEntries = new ArrayList<>();
+ private String[] date = new String[0];
+ private DataAnalysisViewModel analysisViewModel;
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(0));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //默认显示当前月的数据
+ long timeMillis = System.currentTimeMillis();
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis));
+ try {
+ date = TimeOrDateUtil.timestampToMonth(timeMillis);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ //初始化表格
+ initTableConfig();
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.resourcePieChart);
+ analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class);
+ analysisViewModel.obtainEventSource(date[0], date[1]);
+ }
+
+ private void initTableConfig() {
+ TableConfig config = viewBinding.resourceTableView.getConfig();
+ //首行属性
+ config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));
+ config.setContentBackgroundColor(Color.LTGRAY);
+ config.setColumnTitleVerticalPadding(30);
+ //内容属性
+ config.setContentStyle(new FontStyle(50, Color.DKGRAY));
+ config.setVerticalPadding(30);
+ config.setShowTableTitle(false); //不显示标题
+ config.setShowXSequence(false); //不显示横向ABC....序列
+ config.setShowYSequence(false); //不显示纵向123....序列
+ config.setMinTableWidth(ContextHub.getScreenWidth(this));//不设置的话会就不会居中显示
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(millSeconds));
+ String[] date = new String[0];
+ try {
+ date = TimeOrDateUtil.timestampToMonth(millSeconds);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ analysisViewModel.obtainEventSource(date[0], date[1]);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+
+ analysisViewModel.eventSourceModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(EventSourceBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ List dataBeanList = resultBean.getData();
+ for (int i = 0; i < dataBeanList.size(); i++) {
+ EventSourceBean.DataDTO dataBean = dataBeanList.get(i);
+
+ String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource();
+ int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum());
+ excelDataBeans.add(new ExcelDataBean(i, label, number));
+
+ String caseNum = dataBean.getCaseNum();
+ //表格数据需要把0的加进去,饼图不需要
+ if (!caseNum.equals("0")) {
+ pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label));
+ }
+ }
+ viewBinding.resourceTableView.setData(excelDataBeans);
+ ChartViewHelper.setPieChartData(viewBinding.resourcePieChart, pieEntries);
+ }
+ }
+ });
+ analysisViewModel.loadState.observe(this, new Observer() {
+ @Override
+ public void onChanged(LoadState loadState) {
+ if (loadState == LoadState.Loading) {
+ DialogHelper.showLoadingDialog(context, "获取数据中...");
+ } else {
+ DialogHelper.dismissLoadingDialog();
+ }
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
index 7cc5694..7156356 100644
--- a/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
+++ b/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
@@ -12,7 +12,6 @@
import com.pengxh.androidx.lite.adapter.ViewHolder;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.hub.IntHub;
-import com.pengxh.androidx.lite.hub.StringHub;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
import java.util.ArrayList;
@@ -64,11 +63,11 @@
Intent intent = new Intent();
switch (position) {
case 0:
- intent.setClass(context, EventSourceActivity.class);
+ intent.setClass(context, CityBaseDataActivity.class);
startActivity(intent);
break;
case 1:
- intent.setClass(context, CaseStatusActivity.class);
+ intent.setClass(context, CaseResourceActivity.class);
startActivity(intent);
break;
case 2:
@@ -76,16 +75,21 @@
startActivity(intent);
break;
case 3:
- intent.setClass(context, StreetStatisticsActivity.class);
+ intent.setClass(context, DeptHandleConditionActivity.class);
startActivity(intent);
break;
case 4:
- StringHub.show(context, "处理统计");
+ intent.setClass(context, GridAnalysisActivity.class);
+ startActivity(intent);
break;
case 5:
intent.setClass(context, TrendAnalysisActivity.class);
startActivity(intent);
break;
+ case 6:
+ intent.setClass(context, PunishAnalysisActivity.class);
+ startActivity(intent);
+ break;
}
}
});
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java
new file mode 100644
index 0000000..e2466ce
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java
@@ -0,0 +1,153 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.TextView;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityDeptHandleConditionBinding;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.Entry;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author a203
+ * @package com.casic.dcms.ui
+ * @date 2022/2/15 09:46
+ * @email 290677893@qq.com
+ */
+public class DeptHandleConditionActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "DeptHandleConditionActivity";
+ private static final List horizontalLabelName = Arrays.asList("销案", "不予立案", "结案", "待结案", "待核查", "待处理", "待核实");
+ private final Context context = DeptHandleConditionActivity.this;
+ private final List spinnerEntries = new ArrayList<>();
+ private final List commonEntries = new ArrayList<>();
+ private final List quickEntries = new ArrayList<>();
+ private final List packageEntries = new ArrayList<>();
+ private final List pieEntries = new ArrayList<>();
+ private final List barEntries = new ArrayList<>();
+ private String selectedStreet = "";
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ //TODO 这是模拟数据
+ StringBuilder str = new StringBuilder();
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < i; j++) {
+ str.append("x");
+ }
+ spinnerEntries.add(str.append("街道").toString());
+ str.delete(0, str.length());
+ }
+ ArrayAdapter arrayAdapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, spinnerEntries);
+ arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ int dimension = (int) getResources().getDimension(R.dimen.titleViewHeight);
+ viewBinding.titleBarLayout.titleSpinner.setDropDownVerticalOffset(dimension);
+ viewBinding.titleBarLayout.titleSpinner.setAdapter(arrayAdapter);
+ //默认选中第一条
+ selectedStreet = spinnerEntries.get(0);
+ viewBinding.titleBarLayout.titleSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
+ //spinner 选中后显示字体的颜色设置
+ TextView tv = (TextView) view;
+ tv.setTextColor(ContextCompat.getColor(context, R.color.white));
+ selectedStreet = spinnerEntries.get(i);
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> adapterView) {
+
+ }
+ });
+ //默认显示当前月的分析数据
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //初始化折线图
+ ChartViewHelper.initLineChart(viewBinding.streetLineChart);
+ //TODO 这是模拟数据
+ Calendar calendar = Calendar.getInstance();
+ int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+ for (int i = 0; i < maxDay; i++) {
+ commonEntries.add(new Entry(i, new Random().nextInt(15), "common"));
+ }
+ for (int i = 0; i < maxDay; i++) {
+ quickEntries.add(new Entry(i, new Random().nextInt(20), "quick"));
+ }
+ for (int i = 0; i < maxDay; i++) {
+ packageEntries.add(new Entry(i, new Random().nextInt(10), "package"));
+ }
+ ChartViewHelper.setLineChartData(viewBinding.streetLineChart, commonEntries, quickEntries, packageEntries);
+ //初始化饼图
+// ChartUtil.initPieChart(this, viewBinding.streetPieChart);
+ //设置数据
+ //TODO 这是模拟数据
+ pieEntries.add(new PieEntry(new Random().nextInt(100), "普通"));
+ pieEntries.add(new PieEntry(new Random().nextInt(150), "快速"));
+ pieEntries.add(new PieEntry(new Random().nextInt(50), "三包"));
+ ChartViewHelper.setPieChartData(viewBinding.streetPieChart, pieEntries);
+ //初始化横向柱状图
+// ChartUtil.initBarChart(this, viewBinding.streetBarChart, horizontalLabelName);
+ //设置数据
+ //TODO 这是模拟数据
+ for (int i = 0; i < horizontalLabelName.size(); i++) {
+ barEntries.add(new BarEntry(i, new Random().nextInt(100)));
+ }
+ ChartViewHelper.setBarChartData(viewBinding.streetBarChart, barEntries);
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
+ viewBinding.titleBarLayout.dateView.setText(date);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/EventSourceActivity.java
deleted file mode 100644
index 69c61f4..0000000
--- a/app/src/main/java/com/casic/dcms/view/statistics/EventSourceActivity.java
+++ /dev/null
@@ -1,160 +0,0 @@
-package com.casic.dcms.view.statistics;
-
-import android.content.Context;
-import android.graphics.Color;
-import android.view.View;
-
-import androidx.core.content.ContextCompat;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.bin.david.form.core.TableConfig;
-import com.bin.david.form.data.style.FontStyle;
-import com.casic.dcms.R;
-import com.casic.dcms.databinding.ActivityEventResourceBinding;
-import com.casic.dcms.model.EventSourceBean;
-import com.casic.dcms.model.ExcelDataBean;
-import com.casic.dcms.utils.ChartViewHelper;
-import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.TimeOrDateUtil;
-import com.casic.dcms.vm.DataAnalysisViewModel;
-import com.github.mikephil.charting.data.PieEntry;
-import com.gyf.immersionbar.ImmersionBar;
-import com.jzxiang.pickerview.TimePickerDialog;
-import com.jzxiang.pickerview.data.Type;
-import com.jzxiang.pickerview.listener.OnDateSetListener;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-import com.pengxh.androidx.lite.hub.ContextHub;
-import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
-import com.pengxh.androidx.lite.vm.LoadState;
-
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author : Pengxh
- * @time : 2021/4/16 9:24
- * @email : 290677893@qq.com
- */
-public class EventSourceActivity extends AndroidxBaseActivity {
-
- private static final String TAG = "EventSourceActivity";
- private final Context context = EventSourceActivity.this;
- private final List excelDataBeans = new ArrayList<>();
- private final List pieEntries = new ArrayList<>();
- private String[] date = new String[0];
- private DataAnalysisViewModel analysisViewModel;
-
- @Override
- protected void setupTopBarLayout() {
- ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
- ImmersionBar.with(this).statusBarDarkFont(false).init();
-
- viewBinding.titleBarLayout.titleView.setText("问题来源");
- viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initData() {
- //默认显示当前月的数据
- long timeMillis = System.currentTimeMillis();
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis));
- try {
- date = TimeOrDateUtil.timestampToMonth(timeMillis);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //初始化表格
- initTableConfig();
- //初始化饼图
- ChartViewHelper.initPieChart(viewBinding.resourcePieChart);
- analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class);
- analysisViewModel.obtainEventSource(date[0], date[1]);
- }
-
- private void initTableConfig() {
- TableConfig config = viewBinding.resourceTableView.getConfig();
- //首行属性
- config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));
- config.setContentBackgroundColor(Color.LTGRAY);
- config.setColumnTitleVerticalPadding(30);
- //内容属性
- config.setContentStyle(new FontStyle(50, Color.DKGRAY));
- config.setVerticalPadding(30);
- config.setShowTableTitle(false); //不显示标题
- config.setShowXSequence(false); //不显示横向ABC....序列
- config.setShowYSequence(false); //不显示纵向123....序列
- config.setMinTableWidth(ContextHub.getScreenWidth(this));//不设置的话会就不会居中显示
- }
-
- @Override
- protected void initEvent() {
- viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- new TimePickerDialog.Builder()
- .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
- .setTitleStringId("选择日期")
- .setWheelItemTextSize(16)
- .setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
- .setMaxMillseconds(System.currentTimeMillis())
- .setType(Type.YEAR_MONTH)
- .setCallBack(new OnDateSetListener() {
- @Override
- public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(millSeconds));
- String[] date = new String[0];
- try {
- date = TimeOrDateUtil.timestampToMonth(millSeconds);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- analysisViewModel.obtainEventSource(date[0], date[1]);
- }
- }).build().show(getSupportFragmentManager(), "year_month");
- }
- });
-
- analysisViewModel.eventSourceModel.observe(this, new Observer() {
- @Override
- public void onChanged(EventSourceBean resultBean) {
- if (resultBean.getCode() == 200) {
- List dataBeanList = resultBean.getData();
- for (int i = 0; i < dataBeanList.size(); i++) {
- EventSourceBean.DataDTO dataBean = dataBeanList.get(i);
-
- String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource();
- int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum());
- excelDataBeans.add(new ExcelDataBean(i, label, number));
-
- String caseNum = dataBean.getCaseNum();
- //表格数据需要把0的加进去,饼图不需要
- if (!caseNum.equals("0")) {
- pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label));
- }
- }
- viewBinding.resourceTableView.setData(excelDataBeans);
- ChartViewHelper.setPieChartData(viewBinding.resourcePieChart, pieEntries);
- }
- }
- });
- analysisViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- DialogHelper.showLoadingDialog(context, "获取数据中...");
- } else {
- DialogHelper.dismissLoadingDialog();
- }
- }
- });
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/GridAnalysisActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/GridAnalysisActivity.java
new file mode 100644
index 0000000..f4a6aed
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/GridAnalysisActivity.java
@@ -0,0 +1,27 @@
+package com.casic.dcms.view.statistics;
+
+import com.casic.dcms.databinding.ActivityGridAnalysisBinding;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+
+public class GridAnalysisActivity extends AndroidxBaseActivity {
+
+ @Override
+ protected void setupTopBarLayout() {
+
+ }
+
+ @Override
+ protected void initData() {
+
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initEvent() {
+
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/HighEventActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/HighEventActivity.java
index 4687759..69a4d72 100644
--- a/app/src/main/java/com/casic/dcms/view/statistics/HighEventActivity.java
+++ b/app/src/main/java/com/casic/dcms/view/statistics/HighEventActivity.java
@@ -50,7 +50,7 @@
ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
ImmersionBar.with(this).statusBarDarkFont(false).init();
- viewBinding.titleBarLayout.titleView.setText("高发问题");
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(2));
viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
}
diff --git a/.idea/misc.xml b/.idea/misc.xml
index ebd14f7..d8f1d5f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -223,6 +223,7 @@
+
@@ -237,6 +238,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ef2ece3..910a6ab 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -71,9 +71,11 @@
-
-
-
+
+
+
+
+
diff --git a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
index 18d7ed4..f018b90 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
@@ -28,7 +28,7 @@
R.mipmap.cffx);
public static final List ANALYSIS_ITEMS = Arrays.asList(
- "城管基础数据", "案卷来源统计", "高发案卷统计",
+ "城市基础数据", "案卷来源统计", "高发案卷统计",
"单位处置情况", "网格分析", "案卷趋势分析",
"商铺处罚分析");
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
new file mode 100644
index 0000000..f29adb0
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
@@ -0,0 +1,97 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCaseResourceBinding;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author a203
+ * @package com.casic.dcms.ui
+ * @date 2022/2/16 16:55
+ * @email 290677893@qq.com
+ */
+public class CaseResourceActivity extends AndroidxBaseActivity {
+
+ private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
+ private final Context context = CaseResourceActivity.this;
+ private final List pieEntries = new ArrayList<>();
+ private final List barEntries = new ArrayList<>();
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(1));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ //默认显示当前月的分析数据
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.statusPieChart);
+ //TODO 这是模拟数据
+ pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
+ pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
+ ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
+ //初始化横向柱状图
+ ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
+ //设置数据
+ //TODO 这是模拟数据
+ for (int i = 0; i < horizontalLabelName.size(); i++) {
+ barEntries.add(new BarEntry(i, new Random().nextInt(100)));
+ }
+ ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
+ viewBinding.titleBarLayout.dateView.setText(date);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
deleted file mode 100644
index 03638c1..0000000
--- a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.view.statistics;
-
-import android.content.Context;
-import android.view.View;
-
-import androidx.core.content.ContextCompat;
-
-import com.casic.dcms.R;
-import com.casic.dcms.databinding.ActivityCaseStatusBinding;
-import com.casic.dcms.utils.ChartViewHelper;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.TimeOrDateUtil;
-import com.github.mikephil.charting.data.BarEntry;
-import com.github.mikephil.charting.data.PieEntry;
-import com.gyf.immersionbar.ImmersionBar;
-import com.jzxiang.pickerview.TimePickerDialog;
-import com.jzxiang.pickerview.data.Type;
-import com.jzxiang.pickerview.listener.OnDateSetListener;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Random;
-
-/**
- * @author a203
- * @description 案卷状态
- * @package com.casic.dcms.ui
- * @date 2022/2/16 16:55
- * @email 290677893@qq.com
- */
-public class CaseStatusActivity extends AndroidxBaseActivity {
-
- private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
- private final Context context = CaseStatusActivity.this;
- private final List pieEntries = new ArrayList<>();
- private final List barEntries = new ArrayList<>();
-
- @Override
- protected void setupTopBarLayout() {
- ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
- ImmersionBar.with(this).statusBarDarkFont(false).init();
-
- viewBinding.titleBarLayout.titleView.setText("案卷状态");
- viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- //默认显示当前月的分析数据
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initData() {
- //初始化饼图
- ChartViewHelper.initPieChart(viewBinding.statusPieChart);
- //TODO 这是模拟数据
- pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
- pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
- ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
- //初始化横向柱状图
- ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
- //设置数据
- //TODO 这是模拟数据
- for (int i = 0; i < horizontalLabelName.size(); i++) {
- barEntries.add(new BarEntry(i, new Random().nextInt(100)));
- }
- ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
- }
-
- @Override
- protected void initEvent() {
- viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- new TimePickerDialog.Builder()
- .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
- .setTitleStringId("选择日期")
- .setWheelItemTextSize(16)
- .setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
- .setMaxMillseconds(System.currentTimeMillis())
- .setType(Type.YEAR_MONTH)
- .setCallBack(new OnDateSetListener() {
- @Override
- public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
- String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
- viewBinding.titleBarLayout.dateView.setText(date);
- }
- }).build().show(getSupportFragmentManager(), "year_month");
- }
- });
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java
new file mode 100644
index 0000000..14bcf7d
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java
@@ -0,0 +1,160 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.bin.david.form.core.TableConfig;
+import com.bin.david.form.data.style.FontStyle;
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCityBaseDataBinding;
+import com.casic.dcms.model.EventSourceBean;
+import com.casic.dcms.model.ExcelDataBean;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.casic.dcms.vm.DataAnalysisViewModel;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.hub.ContextHub;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+import com.pengxh.androidx.lite.vm.LoadState;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author : Pengxh
+ * @time : 2021/4/16 9:24
+ * @email : 290677893@qq.com
+ */
+public class CityBaseDataActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "CityBaseDataActivity";
+ private final Context context = CityBaseDataActivity.this;
+ private final List excelDataBeans = new ArrayList<>();
+ private final List pieEntries = new ArrayList<>();
+ private String[] date = new String[0];
+ private DataAnalysisViewModel analysisViewModel;
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(0));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //默认显示当前月的数据
+ long timeMillis = System.currentTimeMillis();
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis));
+ try {
+ date = TimeOrDateUtil.timestampToMonth(timeMillis);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ //初始化表格
+ initTableConfig();
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.resourcePieChart);
+ analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class);
+ analysisViewModel.obtainEventSource(date[0], date[1]);
+ }
+
+ private void initTableConfig() {
+ TableConfig config = viewBinding.resourceTableView.getConfig();
+ //首行属性
+ config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));
+ config.setContentBackgroundColor(Color.LTGRAY);
+ config.setColumnTitleVerticalPadding(30);
+ //内容属性
+ config.setContentStyle(new FontStyle(50, Color.DKGRAY));
+ config.setVerticalPadding(30);
+ config.setShowTableTitle(false); //不显示标题
+ config.setShowXSequence(false); //不显示横向ABC....序列
+ config.setShowYSequence(false); //不显示纵向123....序列
+ config.setMinTableWidth(ContextHub.getScreenWidth(this));//不设置的话会就不会居中显示
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(millSeconds));
+ String[] date = new String[0];
+ try {
+ date = TimeOrDateUtil.timestampToMonth(millSeconds);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ analysisViewModel.obtainEventSource(date[0], date[1]);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+
+ analysisViewModel.eventSourceModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(EventSourceBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ List dataBeanList = resultBean.getData();
+ for (int i = 0; i < dataBeanList.size(); i++) {
+ EventSourceBean.DataDTO dataBean = dataBeanList.get(i);
+
+ String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource();
+ int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum());
+ excelDataBeans.add(new ExcelDataBean(i, label, number));
+
+ String caseNum = dataBean.getCaseNum();
+ //表格数据需要把0的加进去,饼图不需要
+ if (!caseNum.equals("0")) {
+ pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label));
+ }
+ }
+ viewBinding.resourceTableView.setData(excelDataBeans);
+ ChartViewHelper.setPieChartData(viewBinding.resourcePieChart, pieEntries);
+ }
+ }
+ });
+ analysisViewModel.loadState.observe(this, new Observer() {
+ @Override
+ public void onChanged(LoadState loadState) {
+ if (loadState == LoadState.Loading) {
+ DialogHelper.showLoadingDialog(context, "获取数据中...");
+ } else {
+ DialogHelper.dismissLoadingDialog();
+ }
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
index 7cc5694..7156356 100644
--- a/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
+++ b/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
@@ -12,7 +12,6 @@
import com.pengxh.androidx.lite.adapter.ViewHolder;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.hub.IntHub;
-import com.pengxh.androidx.lite.hub.StringHub;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
import java.util.ArrayList;
@@ -64,11 +63,11 @@
Intent intent = new Intent();
switch (position) {
case 0:
- intent.setClass(context, EventSourceActivity.class);
+ intent.setClass(context, CityBaseDataActivity.class);
startActivity(intent);
break;
case 1:
- intent.setClass(context, CaseStatusActivity.class);
+ intent.setClass(context, CaseResourceActivity.class);
startActivity(intent);
break;
case 2:
@@ -76,16 +75,21 @@
startActivity(intent);
break;
case 3:
- intent.setClass(context, StreetStatisticsActivity.class);
+ intent.setClass(context, DeptHandleConditionActivity.class);
startActivity(intent);
break;
case 4:
- StringHub.show(context, "处理统计");
+ intent.setClass(context, GridAnalysisActivity.class);
+ startActivity(intent);
break;
case 5:
intent.setClass(context, TrendAnalysisActivity.class);
startActivity(intent);
break;
+ case 6:
+ intent.setClass(context, PunishAnalysisActivity.class);
+ startActivity(intent);
+ break;
}
}
});
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java
new file mode 100644
index 0000000..e2466ce
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java
@@ -0,0 +1,153 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.TextView;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityDeptHandleConditionBinding;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.Entry;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author a203
+ * @package com.casic.dcms.ui
+ * @date 2022/2/15 09:46
+ * @email 290677893@qq.com
+ */
+public class DeptHandleConditionActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "DeptHandleConditionActivity";
+ private static final List horizontalLabelName = Arrays.asList("销案", "不予立案", "结案", "待结案", "待核查", "待处理", "待核实");
+ private final Context context = DeptHandleConditionActivity.this;
+ private final List spinnerEntries = new ArrayList<>();
+ private final List commonEntries = new ArrayList<>();
+ private final List quickEntries = new ArrayList<>();
+ private final List packageEntries = new ArrayList<>();
+ private final List pieEntries = new ArrayList<>();
+ private final List barEntries = new ArrayList<>();
+ private String selectedStreet = "";
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ //TODO 这是模拟数据
+ StringBuilder str = new StringBuilder();
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < i; j++) {
+ str.append("x");
+ }
+ spinnerEntries.add(str.append("街道").toString());
+ str.delete(0, str.length());
+ }
+ ArrayAdapter arrayAdapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, spinnerEntries);
+ arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ int dimension = (int) getResources().getDimension(R.dimen.titleViewHeight);
+ viewBinding.titleBarLayout.titleSpinner.setDropDownVerticalOffset(dimension);
+ viewBinding.titleBarLayout.titleSpinner.setAdapter(arrayAdapter);
+ //默认选中第一条
+ selectedStreet = spinnerEntries.get(0);
+ viewBinding.titleBarLayout.titleSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
+ //spinner 选中后显示字体的颜色设置
+ TextView tv = (TextView) view;
+ tv.setTextColor(ContextCompat.getColor(context, R.color.white));
+ selectedStreet = spinnerEntries.get(i);
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> adapterView) {
+
+ }
+ });
+ //默认显示当前月的分析数据
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //初始化折线图
+ ChartViewHelper.initLineChart(viewBinding.streetLineChart);
+ //TODO 这是模拟数据
+ Calendar calendar = Calendar.getInstance();
+ int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+ for (int i = 0; i < maxDay; i++) {
+ commonEntries.add(new Entry(i, new Random().nextInt(15), "common"));
+ }
+ for (int i = 0; i < maxDay; i++) {
+ quickEntries.add(new Entry(i, new Random().nextInt(20), "quick"));
+ }
+ for (int i = 0; i < maxDay; i++) {
+ packageEntries.add(new Entry(i, new Random().nextInt(10), "package"));
+ }
+ ChartViewHelper.setLineChartData(viewBinding.streetLineChart, commonEntries, quickEntries, packageEntries);
+ //初始化饼图
+// ChartUtil.initPieChart(this, viewBinding.streetPieChart);
+ //设置数据
+ //TODO 这是模拟数据
+ pieEntries.add(new PieEntry(new Random().nextInt(100), "普通"));
+ pieEntries.add(new PieEntry(new Random().nextInt(150), "快速"));
+ pieEntries.add(new PieEntry(new Random().nextInt(50), "三包"));
+ ChartViewHelper.setPieChartData(viewBinding.streetPieChart, pieEntries);
+ //初始化横向柱状图
+// ChartUtil.initBarChart(this, viewBinding.streetBarChart, horizontalLabelName);
+ //设置数据
+ //TODO 这是模拟数据
+ for (int i = 0; i < horizontalLabelName.size(); i++) {
+ barEntries.add(new BarEntry(i, new Random().nextInt(100)));
+ }
+ ChartViewHelper.setBarChartData(viewBinding.streetBarChart, barEntries);
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
+ viewBinding.titleBarLayout.dateView.setText(date);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/EventSourceActivity.java
deleted file mode 100644
index 69c61f4..0000000
--- a/app/src/main/java/com/casic/dcms/view/statistics/EventSourceActivity.java
+++ /dev/null
@@ -1,160 +0,0 @@
-package com.casic.dcms.view.statistics;
-
-import android.content.Context;
-import android.graphics.Color;
-import android.view.View;
-
-import androidx.core.content.ContextCompat;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.bin.david.form.core.TableConfig;
-import com.bin.david.form.data.style.FontStyle;
-import com.casic.dcms.R;
-import com.casic.dcms.databinding.ActivityEventResourceBinding;
-import com.casic.dcms.model.EventSourceBean;
-import com.casic.dcms.model.ExcelDataBean;
-import com.casic.dcms.utils.ChartViewHelper;
-import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.TimeOrDateUtil;
-import com.casic.dcms.vm.DataAnalysisViewModel;
-import com.github.mikephil.charting.data.PieEntry;
-import com.gyf.immersionbar.ImmersionBar;
-import com.jzxiang.pickerview.TimePickerDialog;
-import com.jzxiang.pickerview.data.Type;
-import com.jzxiang.pickerview.listener.OnDateSetListener;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-import com.pengxh.androidx.lite.hub.ContextHub;
-import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
-import com.pengxh.androidx.lite.vm.LoadState;
-
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author : Pengxh
- * @time : 2021/4/16 9:24
- * @email : 290677893@qq.com
- */
-public class EventSourceActivity extends AndroidxBaseActivity {
-
- private static final String TAG = "EventSourceActivity";
- private final Context context = EventSourceActivity.this;
- private final List excelDataBeans = new ArrayList<>();
- private final List pieEntries = new ArrayList<>();
- private String[] date = new String[0];
- private DataAnalysisViewModel analysisViewModel;
-
- @Override
- protected void setupTopBarLayout() {
- ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
- ImmersionBar.with(this).statusBarDarkFont(false).init();
-
- viewBinding.titleBarLayout.titleView.setText("问题来源");
- viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initData() {
- //默认显示当前月的数据
- long timeMillis = System.currentTimeMillis();
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis));
- try {
- date = TimeOrDateUtil.timestampToMonth(timeMillis);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //初始化表格
- initTableConfig();
- //初始化饼图
- ChartViewHelper.initPieChart(viewBinding.resourcePieChart);
- analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class);
- analysisViewModel.obtainEventSource(date[0], date[1]);
- }
-
- private void initTableConfig() {
- TableConfig config = viewBinding.resourceTableView.getConfig();
- //首行属性
- config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));
- config.setContentBackgroundColor(Color.LTGRAY);
- config.setColumnTitleVerticalPadding(30);
- //内容属性
- config.setContentStyle(new FontStyle(50, Color.DKGRAY));
- config.setVerticalPadding(30);
- config.setShowTableTitle(false); //不显示标题
- config.setShowXSequence(false); //不显示横向ABC....序列
- config.setShowYSequence(false); //不显示纵向123....序列
- config.setMinTableWidth(ContextHub.getScreenWidth(this));//不设置的话会就不会居中显示
- }
-
- @Override
- protected void initEvent() {
- viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- new TimePickerDialog.Builder()
- .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
- .setTitleStringId("选择日期")
- .setWheelItemTextSize(16)
- .setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
- .setMaxMillseconds(System.currentTimeMillis())
- .setType(Type.YEAR_MONTH)
- .setCallBack(new OnDateSetListener() {
- @Override
- public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(millSeconds));
- String[] date = new String[0];
- try {
- date = TimeOrDateUtil.timestampToMonth(millSeconds);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- analysisViewModel.obtainEventSource(date[0], date[1]);
- }
- }).build().show(getSupportFragmentManager(), "year_month");
- }
- });
-
- analysisViewModel.eventSourceModel.observe(this, new Observer() {
- @Override
- public void onChanged(EventSourceBean resultBean) {
- if (resultBean.getCode() == 200) {
- List dataBeanList = resultBean.getData();
- for (int i = 0; i < dataBeanList.size(); i++) {
- EventSourceBean.DataDTO dataBean = dataBeanList.get(i);
-
- String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource();
- int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum());
- excelDataBeans.add(new ExcelDataBean(i, label, number));
-
- String caseNum = dataBean.getCaseNum();
- //表格数据需要把0的加进去,饼图不需要
- if (!caseNum.equals("0")) {
- pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label));
- }
- }
- viewBinding.resourceTableView.setData(excelDataBeans);
- ChartViewHelper.setPieChartData(viewBinding.resourcePieChart, pieEntries);
- }
- }
- });
- analysisViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- DialogHelper.showLoadingDialog(context, "获取数据中...");
- } else {
- DialogHelper.dismissLoadingDialog();
- }
- }
- });
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/GridAnalysisActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/GridAnalysisActivity.java
new file mode 100644
index 0000000..f4a6aed
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/GridAnalysisActivity.java
@@ -0,0 +1,27 @@
+package com.casic.dcms.view.statistics;
+
+import com.casic.dcms.databinding.ActivityGridAnalysisBinding;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+
+public class GridAnalysisActivity extends AndroidxBaseActivity {
+
+ @Override
+ protected void setupTopBarLayout() {
+
+ }
+
+ @Override
+ protected void initData() {
+
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initEvent() {
+
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/HighEventActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/HighEventActivity.java
index 4687759..69a4d72 100644
--- a/app/src/main/java/com/casic/dcms/view/statistics/HighEventActivity.java
+++ b/app/src/main/java/com/casic/dcms/view/statistics/HighEventActivity.java
@@ -50,7 +50,7 @@
ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
ImmersionBar.with(this).statusBarDarkFont(false).init();
- viewBinding.titleBarLayout.titleView.setText("高发问题");
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(2));
viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/PunishAnalysisActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/PunishAnalysisActivity.java
new file mode 100644
index 0000000..e6300b7
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/PunishAnalysisActivity.java
@@ -0,0 +1,27 @@
+package com.casic.dcms.view.statistics;
+
+import com.casic.dcms.databinding.ActivityPunishAnalysisBinding;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+
+public class PunishAnalysisActivity extends AndroidxBaseActivity {
+
+ @Override
+ protected void setupTopBarLayout() {
+
+ }
+
+ @Override
+ protected void initData() {
+
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initEvent() {
+
+ }
+}
diff --git a/.idea/misc.xml b/.idea/misc.xml
index ebd14f7..d8f1d5f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -223,6 +223,7 @@
+
@@ -237,6 +238,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ef2ece3..910a6ab 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -71,9 +71,11 @@
-
-
-
+
+
+
+
+
diff --git a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
index 18d7ed4..f018b90 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
@@ -28,7 +28,7 @@
R.mipmap.cffx);
public static final List ANALYSIS_ITEMS = Arrays.asList(
- "城管基础数据", "案卷来源统计", "高发案卷统计",
+ "城市基础数据", "案卷来源统计", "高发案卷统计",
"单位处置情况", "网格分析", "案卷趋势分析",
"商铺处罚分析");
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
new file mode 100644
index 0000000..f29adb0
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
@@ -0,0 +1,97 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCaseResourceBinding;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author a203
+ * @package com.casic.dcms.ui
+ * @date 2022/2/16 16:55
+ * @email 290677893@qq.com
+ */
+public class CaseResourceActivity extends AndroidxBaseActivity {
+
+ private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
+ private final Context context = CaseResourceActivity.this;
+ private final List pieEntries = new ArrayList<>();
+ private final List barEntries = new ArrayList<>();
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(1));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ //默认显示当前月的分析数据
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.statusPieChart);
+ //TODO 这是模拟数据
+ pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
+ pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
+ ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
+ //初始化横向柱状图
+ ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
+ //设置数据
+ //TODO 这是模拟数据
+ for (int i = 0; i < horizontalLabelName.size(); i++) {
+ barEntries.add(new BarEntry(i, new Random().nextInt(100)));
+ }
+ ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
+ viewBinding.titleBarLayout.dateView.setText(date);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
deleted file mode 100644
index 03638c1..0000000
--- a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.view.statistics;
-
-import android.content.Context;
-import android.view.View;
-
-import androidx.core.content.ContextCompat;
-
-import com.casic.dcms.R;
-import com.casic.dcms.databinding.ActivityCaseStatusBinding;
-import com.casic.dcms.utils.ChartViewHelper;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.TimeOrDateUtil;
-import com.github.mikephil.charting.data.BarEntry;
-import com.github.mikephil.charting.data.PieEntry;
-import com.gyf.immersionbar.ImmersionBar;
-import com.jzxiang.pickerview.TimePickerDialog;
-import com.jzxiang.pickerview.data.Type;
-import com.jzxiang.pickerview.listener.OnDateSetListener;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Random;
-
-/**
- * @author a203
- * @description 案卷状态
- * @package com.casic.dcms.ui
- * @date 2022/2/16 16:55
- * @email 290677893@qq.com
- */
-public class CaseStatusActivity extends AndroidxBaseActivity {
-
- private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
- private final Context context = CaseStatusActivity.this;
- private final List pieEntries = new ArrayList<>();
- private final List barEntries = new ArrayList<>();
-
- @Override
- protected void setupTopBarLayout() {
- ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
- ImmersionBar.with(this).statusBarDarkFont(false).init();
-
- viewBinding.titleBarLayout.titleView.setText("案卷状态");
- viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- //默认显示当前月的分析数据
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initData() {
- //初始化饼图
- ChartViewHelper.initPieChart(viewBinding.statusPieChart);
- //TODO 这是模拟数据
- pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
- pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
- ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
- //初始化横向柱状图
- ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
- //设置数据
- //TODO 这是模拟数据
- for (int i = 0; i < horizontalLabelName.size(); i++) {
- barEntries.add(new BarEntry(i, new Random().nextInt(100)));
- }
- ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
- }
-
- @Override
- protected void initEvent() {
- viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- new TimePickerDialog.Builder()
- .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
- .setTitleStringId("选择日期")
- .setWheelItemTextSize(16)
- .setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
- .setMaxMillseconds(System.currentTimeMillis())
- .setType(Type.YEAR_MONTH)
- .setCallBack(new OnDateSetListener() {
- @Override
- public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
- String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
- viewBinding.titleBarLayout.dateView.setText(date);
- }
- }).build().show(getSupportFragmentManager(), "year_month");
- }
- });
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java
new file mode 100644
index 0000000..14bcf7d
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java
@@ -0,0 +1,160 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.bin.david.form.core.TableConfig;
+import com.bin.david.form.data.style.FontStyle;
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCityBaseDataBinding;
+import com.casic.dcms.model.EventSourceBean;
+import com.casic.dcms.model.ExcelDataBean;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.casic.dcms.vm.DataAnalysisViewModel;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.hub.ContextHub;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+import com.pengxh.androidx.lite.vm.LoadState;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author : Pengxh
+ * @time : 2021/4/16 9:24
+ * @email : 290677893@qq.com
+ */
+public class CityBaseDataActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "CityBaseDataActivity";
+ private final Context context = CityBaseDataActivity.this;
+ private final List excelDataBeans = new ArrayList<>();
+ private final List pieEntries = new ArrayList<>();
+ private String[] date = new String[0];
+ private DataAnalysisViewModel analysisViewModel;
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(0));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //默认显示当前月的数据
+ long timeMillis = System.currentTimeMillis();
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis));
+ try {
+ date = TimeOrDateUtil.timestampToMonth(timeMillis);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ //初始化表格
+ initTableConfig();
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.resourcePieChart);
+ analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class);
+ analysisViewModel.obtainEventSource(date[0], date[1]);
+ }
+
+ private void initTableConfig() {
+ TableConfig config = viewBinding.resourceTableView.getConfig();
+ //首行属性
+ config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));
+ config.setContentBackgroundColor(Color.LTGRAY);
+ config.setColumnTitleVerticalPadding(30);
+ //内容属性
+ config.setContentStyle(new FontStyle(50, Color.DKGRAY));
+ config.setVerticalPadding(30);
+ config.setShowTableTitle(false); //不显示标题
+ config.setShowXSequence(false); //不显示横向ABC....序列
+ config.setShowYSequence(false); //不显示纵向123....序列
+ config.setMinTableWidth(ContextHub.getScreenWidth(this));//不设置的话会就不会居中显示
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(millSeconds));
+ String[] date = new String[0];
+ try {
+ date = TimeOrDateUtil.timestampToMonth(millSeconds);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ analysisViewModel.obtainEventSource(date[0], date[1]);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+
+ analysisViewModel.eventSourceModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(EventSourceBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ List dataBeanList = resultBean.getData();
+ for (int i = 0; i < dataBeanList.size(); i++) {
+ EventSourceBean.DataDTO dataBean = dataBeanList.get(i);
+
+ String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource();
+ int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum());
+ excelDataBeans.add(new ExcelDataBean(i, label, number));
+
+ String caseNum = dataBean.getCaseNum();
+ //表格数据需要把0的加进去,饼图不需要
+ if (!caseNum.equals("0")) {
+ pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label));
+ }
+ }
+ viewBinding.resourceTableView.setData(excelDataBeans);
+ ChartViewHelper.setPieChartData(viewBinding.resourcePieChart, pieEntries);
+ }
+ }
+ });
+ analysisViewModel.loadState.observe(this, new Observer() {
+ @Override
+ public void onChanged(LoadState loadState) {
+ if (loadState == LoadState.Loading) {
+ DialogHelper.showLoadingDialog(context, "获取数据中...");
+ } else {
+ DialogHelper.dismissLoadingDialog();
+ }
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
index 7cc5694..7156356 100644
--- a/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
+++ b/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
@@ -12,7 +12,6 @@
import com.pengxh.androidx.lite.adapter.ViewHolder;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.hub.IntHub;
-import com.pengxh.androidx.lite.hub.StringHub;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
import java.util.ArrayList;
@@ -64,11 +63,11 @@
Intent intent = new Intent();
switch (position) {
case 0:
- intent.setClass(context, EventSourceActivity.class);
+ intent.setClass(context, CityBaseDataActivity.class);
startActivity(intent);
break;
case 1:
- intent.setClass(context, CaseStatusActivity.class);
+ intent.setClass(context, CaseResourceActivity.class);
startActivity(intent);
break;
case 2:
@@ -76,16 +75,21 @@
startActivity(intent);
break;
case 3:
- intent.setClass(context, StreetStatisticsActivity.class);
+ intent.setClass(context, DeptHandleConditionActivity.class);
startActivity(intent);
break;
case 4:
- StringHub.show(context, "处理统计");
+ intent.setClass(context, GridAnalysisActivity.class);
+ startActivity(intent);
break;
case 5:
intent.setClass(context, TrendAnalysisActivity.class);
startActivity(intent);
break;
+ case 6:
+ intent.setClass(context, PunishAnalysisActivity.class);
+ startActivity(intent);
+ break;
}
}
});
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java
new file mode 100644
index 0000000..e2466ce
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java
@@ -0,0 +1,153 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.TextView;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityDeptHandleConditionBinding;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.Entry;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author a203
+ * @package com.casic.dcms.ui
+ * @date 2022/2/15 09:46
+ * @email 290677893@qq.com
+ */
+public class DeptHandleConditionActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "DeptHandleConditionActivity";
+ private static final List horizontalLabelName = Arrays.asList("销案", "不予立案", "结案", "待结案", "待核查", "待处理", "待核实");
+ private final Context context = DeptHandleConditionActivity.this;
+ private final List spinnerEntries = new ArrayList<>();
+ private final List commonEntries = new ArrayList<>();
+ private final List quickEntries = new ArrayList<>();
+ private final List packageEntries = new ArrayList<>();
+ private final List pieEntries = new ArrayList<>();
+ private final List barEntries = new ArrayList<>();
+ private String selectedStreet = "";
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ //TODO 这是模拟数据
+ StringBuilder str = new StringBuilder();
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < i; j++) {
+ str.append("x");
+ }
+ spinnerEntries.add(str.append("街道").toString());
+ str.delete(0, str.length());
+ }
+ ArrayAdapter arrayAdapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, spinnerEntries);
+ arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ int dimension = (int) getResources().getDimension(R.dimen.titleViewHeight);
+ viewBinding.titleBarLayout.titleSpinner.setDropDownVerticalOffset(dimension);
+ viewBinding.titleBarLayout.titleSpinner.setAdapter(arrayAdapter);
+ //默认选中第一条
+ selectedStreet = spinnerEntries.get(0);
+ viewBinding.titleBarLayout.titleSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
+ //spinner 选中后显示字体的颜色设置
+ TextView tv = (TextView) view;
+ tv.setTextColor(ContextCompat.getColor(context, R.color.white));
+ selectedStreet = spinnerEntries.get(i);
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> adapterView) {
+
+ }
+ });
+ //默认显示当前月的分析数据
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //初始化折线图
+ ChartViewHelper.initLineChart(viewBinding.streetLineChart);
+ //TODO 这是模拟数据
+ Calendar calendar = Calendar.getInstance();
+ int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+ for (int i = 0; i < maxDay; i++) {
+ commonEntries.add(new Entry(i, new Random().nextInt(15), "common"));
+ }
+ for (int i = 0; i < maxDay; i++) {
+ quickEntries.add(new Entry(i, new Random().nextInt(20), "quick"));
+ }
+ for (int i = 0; i < maxDay; i++) {
+ packageEntries.add(new Entry(i, new Random().nextInt(10), "package"));
+ }
+ ChartViewHelper.setLineChartData(viewBinding.streetLineChart, commonEntries, quickEntries, packageEntries);
+ //初始化饼图
+// ChartUtil.initPieChart(this, viewBinding.streetPieChart);
+ //设置数据
+ //TODO 这是模拟数据
+ pieEntries.add(new PieEntry(new Random().nextInt(100), "普通"));
+ pieEntries.add(new PieEntry(new Random().nextInt(150), "快速"));
+ pieEntries.add(new PieEntry(new Random().nextInt(50), "三包"));
+ ChartViewHelper.setPieChartData(viewBinding.streetPieChart, pieEntries);
+ //初始化横向柱状图
+// ChartUtil.initBarChart(this, viewBinding.streetBarChart, horizontalLabelName);
+ //设置数据
+ //TODO 这是模拟数据
+ for (int i = 0; i < horizontalLabelName.size(); i++) {
+ barEntries.add(new BarEntry(i, new Random().nextInt(100)));
+ }
+ ChartViewHelper.setBarChartData(viewBinding.streetBarChart, barEntries);
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
+ viewBinding.titleBarLayout.dateView.setText(date);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/EventSourceActivity.java
deleted file mode 100644
index 69c61f4..0000000
--- a/app/src/main/java/com/casic/dcms/view/statistics/EventSourceActivity.java
+++ /dev/null
@@ -1,160 +0,0 @@
-package com.casic.dcms.view.statistics;
-
-import android.content.Context;
-import android.graphics.Color;
-import android.view.View;
-
-import androidx.core.content.ContextCompat;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.bin.david.form.core.TableConfig;
-import com.bin.david.form.data.style.FontStyle;
-import com.casic.dcms.R;
-import com.casic.dcms.databinding.ActivityEventResourceBinding;
-import com.casic.dcms.model.EventSourceBean;
-import com.casic.dcms.model.ExcelDataBean;
-import com.casic.dcms.utils.ChartViewHelper;
-import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.TimeOrDateUtil;
-import com.casic.dcms.vm.DataAnalysisViewModel;
-import com.github.mikephil.charting.data.PieEntry;
-import com.gyf.immersionbar.ImmersionBar;
-import com.jzxiang.pickerview.TimePickerDialog;
-import com.jzxiang.pickerview.data.Type;
-import com.jzxiang.pickerview.listener.OnDateSetListener;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-import com.pengxh.androidx.lite.hub.ContextHub;
-import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
-import com.pengxh.androidx.lite.vm.LoadState;
-
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author : Pengxh
- * @time : 2021/4/16 9:24
- * @email : 290677893@qq.com
- */
-public class EventSourceActivity extends AndroidxBaseActivity {
-
- private static final String TAG = "EventSourceActivity";
- private final Context context = EventSourceActivity.this;
- private final List excelDataBeans = new ArrayList<>();
- private final List pieEntries = new ArrayList<>();
- private String[] date = new String[0];
- private DataAnalysisViewModel analysisViewModel;
-
- @Override
- protected void setupTopBarLayout() {
- ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
- ImmersionBar.with(this).statusBarDarkFont(false).init();
-
- viewBinding.titleBarLayout.titleView.setText("问题来源");
- viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initData() {
- //默认显示当前月的数据
- long timeMillis = System.currentTimeMillis();
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis));
- try {
- date = TimeOrDateUtil.timestampToMonth(timeMillis);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //初始化表格
- initTableConfig();
- //初始化饼图
- ChartViewHelper.initPieChart(viewBinding.resourcePieChart);
- analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class);
- analysisViewModel.obtainEventSource(date[0], date[1]);
- }
-
- private void initTableConfig() {
- TableConfig config = viewBinding.resourceTableView.getConfig();
- //首行属性
- config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));
- config.setContentBackgroundColor(Color.LTGRAY);
- config.setColumnTitleVerticalPadding(30);
- //内容属性
- config.setContentStyle(new FontStyle(50, Color.DKGRAY));
- config.setVerticalPadding(30);
- config.setShowTableTitle(false); //不显示标题
- config.setShowXSequence(false); //不显示横向ABC....序列
- config.setShowYSequence(false); //不显示纵向123....序列
- config.setMinTableWidth(ContextHub.getScreenWidth(this));//不设置的话会就不会居中显示
- }
-
- @Override
- protected void initEvent() {
- viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- new TimePickerDialog.Builder()
- .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
- .setTitleStringId("选择日期")
- .setWheelItemTextSize(16)
- .setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
- .setMaxMillseconds(System.currentTimeMillis())
- .setType(Type.YEAR_MONTH)
- .setCallBack(new OnDateSetListener() {
- @Override
- public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(millSeconds));
- String[] date = new String[0];
- try {
- date = TimeOrDateUtil.timestampToMonth(millSeconds);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- analysisViewModel.obtainEventSource(date[0], date[1]);
- }
- }).build().show(getSupportFragmentManager(), "year_month");
- }
- });
-
- analysisViewModel.eventSourceModel.observe(this, new Observer() {
- @Override
- public void onChanged(EventSourceBean resultBean) {
- if (resultBean.getCode() == 200) {
- List dataBeanList = resultBean.getData();
- for (int i = 0; i < dataBeanList.size(); i++) {
- EventSourceBean.DataDTO dataBean = dataBeanList.get(i);
-
- String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource();
- int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum());
- excelDataBeans.add(new ExcelDataBean(i, label, number));
-
- String caseNum = dataBean.getCaseNum();
- //表格数据需要把0的加进去,饼图不需要
- if (!caseNum.equals("0")) {
- pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label));
- }
- }
- viewBinding.resourceTableView.setData(excelDataBeans);
- ChartViewHelper.setPieChartData(viewBinding.resourcePieChart, pieEntries);
- }
- }
- });
- analysisViewModel.loadState.observe(this, new Observer() {
- @Override
- public void onChanged(LoadState loadState) {
- if (loadState == LoadState.Loading) {
- DialogHelper.showLoadingDialog(context, "获取数据中...");
- } else {
- DialogHelper.dismissLoadingDialog();
- }
- }
- });
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/GridAnalysisActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/GridAnalysisActivity.java
new file mode 100644
index 0000000..f4a6aed
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/GridAnalysisActivity.java
@@ -0,0 +1,27 @@
+package com.casic.dcms.view.statistics;
+
+import com.casic.dcms.databinding.ActivityGridAnalysisBinding;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+
+public class GridAnalysisActivity extends AndroidxBaseActivity {
+
+ @Override
+ protected void setupTopBarLayout() {
+
+ }
+
+ @Override
+ protected void initData() {
+
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initEvent() {
+
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/HighEventActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/HighEventActivity.java
index 4687759..69a4d72 100644
--- a/app/src/main/java/com/casic/dcms/view/statistics/HighEventActivity.java
+++ b/app/src/main/java/com/casic/dcms/view/statistics/HighEventActivity.java
@@ -50,7 +50,7 @@
ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
ImmersionBar.with(this).statusBarDarkFont(false).init();
- viewBinding.titleBarLayout.titleView.setText("高发问题");
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(2));
viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/PunishAnalysisActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/PunishAnalysisActivity.java
new file mode 100644
index 0000000..e6300b7
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/PunishAnalysisActivity.java
@@ -0,0 +1,27 @@
+package com.casic.dcms.view.statistics;
+
+import com.casic.dcms.databinding.ActivityPunishAnalysisBinding;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+
+public class PunishAnalysisActivity extends AndroidxBaseActivity {
+
+ @Override
+ protected void setupTopBarLayout() {
+
+ }
+
+ @Override
+ protected void initData() {
+
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initEvent() {
+
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/StreetStatisticsActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/StreetStatisticsActivity.java
deleted file mode 100644
index b2bca4c..0000000
--- a/app/src/main/java/com/casic/dcms/view/statistics/StreetStatisticsActivity.java
+++ /dev/null
@@ -1,154 +0,0 @@
-package com.casic.dcms.view.statistics;
-
-import android.content.Context;
-import android.view.View;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
-import android.widget.TextView;
-
-import androidx.core.content.ContextCompat;
-
-import com.casic.dcms.R;
-import com.casic.dcms.databinding.ActivityStreetStatisticsBinding;
-import com.casic.dcms.utils.ChartViewHelper;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.TimeOrDateUtil;
-import com.github.mikephil.charting.data.BarEntry;
-import com.github.mikephil.charting.data.Entry;
-import com.github.mikephil.charting.data.PieEntry;
-import com.gyf.immersionbar.ImmersionBar;
-import com.jzxiang.pickerview.TimePickerDialog;
-import com.jzxiang.pickerview.data.Type;
-import com.jzxiang.pickerview.listener.OnDateSetListener;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.List;
-import java.util.Random;
-
-/**
- * @author a203
- * @description 街道统计
- * @package com.casic.dcms.ui
- * @date 2022/2/15 09:46
- * @email 290677893@qq.com
- */
-public class StreetStatisticsActivity extends AndroidxBaseActivity {
-
- private static final String TAG = "StreetActivity";
- private static final List horizontalLabelName = Arrays.asList("销案", "不予立案", "结案", "待结案", "待核查", "待处理", "待核实");
- private final Context context = StreetStatisticsActivity.this;
- private final List spinnerEntries = new ArrayList<>();
- private final List commonEntries = new ArrayList<>();
- private final List quickEntries = new ArrayList<>();
- private final List packageEntries = new ArrayList<>();
- private final List pieEntries = new ArrayList<>();
- private final List barEntries = new ArrayList<>();
- private String selectedStreet = "";
-
- @Override
- protected void setupTopBarLayout() {
- ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
- ImmersionBar.with(this).statusBarDarkFont(false).init();
-
- //TODO 这是模拟数据
- StringBuilder str = new StringBuilder();
- for (int i = 0; i < 5; i++) {
- for (int j = 0; j < i; j++) {
- str.append("x");
- }
- spinnerEntries.add(str.append("街道").toString());
- str.delete(0, str.length());
- }
- ArrayAdapter arrayAdapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, spinnerEntries);
- arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- int dimension = (int) getResources().getDimension(R.dimen.titleViewHeight);
- viewBinding.titleBarLayout.titleSpinner.setDropDownVerticalOffset(dimension);
- viewBinding.titleBarLayout.titleSpinner.setAdapter(arrayAdapter);
- //默认选中第一条
- selectedStreet = spinnerEntries.get(0);
- viewBinding.titleBarLayout.titleSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
- //spinner 选中后显示字体的颜色设置
- TextView tv = (TextView) view;
- tv.setTextColor(ContextCompat.getColor(context, R.color.white));
- selectedStreet = spinnerEntries.get(i);
- }
-
- @Override
- public void onNothingSelected(AdapterView> adapterView) {
-
- }
- });
- //默认显示当前月的分析数据
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initData() {
- //初始化折线图
- ChartViewHelper.initLineChart(viewBinding.streetLineChart);
- //TODO 这是模拟数据
- Calendar calendar = Calendar.getInstance();
- int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
- for (int i = 0; i < maxDay; i++) {
- commonEntries.add(new Entry(i, new Random().nextInt(15), "common"));
- }
- for (int i = 0; i < maxDay; i++) {
- quickEntries.add(new Entry(i, new Random().nextInt(20), "quick"));
- }
- for (int i = 0; i < maxDay; i++) {
- packageEntries.add(new Entry(i, new Random().nextInt(10), "package"));
- }
- ChartViewHelper.setLineChartData(viewBinding.streetLineChart, commonEntries, quickEntries, packageEntries);
- //初始化饼图
-// ChartUtil.initPieChart(this, viewBinding.streetPieChart);
- //设置数据
- //TODO 这是模拟数据
- pieEntries.add(new PieEntry(new Random().nextInt(100), "普通"));
- pieEntries.add(new PieEntry(new Random().nextInt(150), "快速"));
- pieEntries.add(new PieEntry(new Random().nextInt(50), "三包"));
- ChartViewHelper.setPieChartData(viewBinding.streetPieChart, pieEntries);
- //初始化横向柱状图
-// ChartUtil.initBarChart(this, viewBinding.streetBarChart, horizontalLabelName);
- //设置数据
- //TODO 这是模拟数据
- for (int i = 0; i < horizontalLabelName.size(); i++) {
- barEntries.add(new BarEntry(i, new Random().nextInt(100)));
- }
- ChartViewHelper.setBarChartData(viewBinding.streetBarChart, barEntries);
- }
-
- @Override
- protected void initEvent() {
- viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- new TimePickerDialog.Builder()
- .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
- .setTitleStringId("选择日期")
- .setWheelItemTextSize(16)
- .setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
- .setMaxMillseconds(System.currentTimeMillis())
- .setType(Type.YEAR_MONTH)
- .setCallBack(new OnDateSetListener() {
- @Override
- public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
- String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
- viewBinding.titleBarLayout.dateView.setText(date);
- }
- }).build().show(getSupportFragmentManager(), "year_month");
- }
- });
- }
-}
diff --git a/.idea/misc.xml b/.idea/misc.xml
index ebd14f7..d8f1d5f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -223,6 +223,7 @@
+
@@ -237,6 +238,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ef2ece3..910a6ab 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -71,9 +71,11 @@
-
-
-
+
+
+
+
+
diff --git a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
index 18d7ed4..f018b90 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
@@ -28,7 +28,7 @@
R.mipmap.cffx);
public static final List ANALYSIS_ITEMS = Arrays.asList(
- "城管基础数据", "案卷来源统计", "高发案卷统计",
+ "城市基础数据", "案卷来源统计", "高发案卷统计",
"单位处置情况", "网格分析", "案卷趋势分析",
"商铺处罚分析");
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
new file mode 100644
index 0000000..f29adb0
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CaseResourceActivity.java
@@ -0,0 +1,97 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCaseResourceBinding;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author a203
+ * @package com.casic.dcms.ui
+ * @date 2022/2/16 16:55
+ * @email 290677893@qq.com
+ */
+public class CaseResourceActivity extends AndroidxBaseActivity {
+
+ private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
+ private final Context context = CaseResourceActivity.this;
+ private final List pieEntries = new ArrayList<>();
+ private final List barEntries = new ArrayList<>();
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(1));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ //默认显示当前月的分析数据
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.statusPieChart);
+ //TODO 这是模拟数据
+ pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
+ pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
+ ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
+ //初始化横向柱状图
+ ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
+ //设置数据
+ //TODO 这是模拟数据
+ for (int i = 0; i < horizontalLabelName.size(); i++) {
+ barEntries.add(new BarEntry(i, new Random().nextInt(100)));
+ }
+ ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
+ viewBinding.titleBarLayout.dateView.setText(date);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
deleted file mode 100644
index 03638c1..0000000
--- a/app/src/main/java/com/casic/dcms/view/statistics/CaseStatusActivity.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.casic.dcms.view.statistics;
-
-import android.content.Context;
-import android.view.View;
-
-import androidx.core.content.ContextCompat;
-
-import com.casic.dcms.R;
-import com.casic.dcms.databinding.ActivityCaseStatusBinding;
-import com.casic.dcms.utils.ChartViewHelper;
-import com.casic.dcms.utils.LocaleConstant;
-import com.casic.dcms.utils.TimeOrDateUtil;
-import com.github.mikephil.charting.data.BarEntry;
-import com.github.mikephil.charting.data.PieEntry;
-import com.gyf.immersionbar.ImmersionBar;
-import com.jzxiang.pickerview.TimePickerDialog;
-import com.jzxiang.pickerview.data.Type;
-import com.jzxiang.pickerview.listener.OnDateSetListener;
-import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
-import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Random;
-
-/**
- * @author a203
- * @description 案卷状态
- * @package com.casic.dcms.ui
- * @date 2022/2/16 16:55
- * @email 290677893@qq.com
- */
-public class CaseStatusActivity extends AndroidxBaseActivity {
-
- private static final List horizontalLabelName = Arrays.asList("待立案", "待核实", "待处理", "待核查", "待调整", "不予立案", "销案", "其他状态", "待结案", "结案");
- private final Context context = CaseStatusActivity.this;
- private final List pieEntries = new ArrayList<>();
- private final List barEntries = new ArrayList<>();
-
- @Override
- protected void setupTopBarLayout() {
- ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
- ImmersionBar.with(this).statusBarDarkFont(false).init();
-
- viewBinding.titleBarLayout.titleView.setText("案卷状态");
- viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
- //默认显示当前月的分析数据
- viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis()));
- }
-
- @Override
- protected void observeRequestState() {
-
- }
-
- @Override
- protected void initData() {
- //初始化饼图
- ChartViewHelper.initPieChart(viewBinding.statusPieChart);
- //TODO 这是模拟数据
- pieEntries.add(new PieEntry(new Random().nextInt(10), "未结案"));
- pieEntries.add(new PieEntry(new Random().nextInt(200), "已结案"));
- ChartViewHelper.setPieChartData(viewBinding.statusPieChart, pieEntries);
- //初始化横向柱状图
- ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName);
- //设置数据
- //TODO 这是模拟数据
- for (int i = 0; i < horizontalLabelName.size(); i++) {
- barEntries.add(new BarEntry(i, new Random().nextInt(100)));
- }
- ChartViewHelper.setBarChartData(viewBinding.statusBarChart, barEntries);
- }
-
- @Override
- protected void initEvent() {
- viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- new TimePickerDialog.Builder()
- .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
- .setTitleStringId("选择日期")
- .setWheelItemTextSize(16)
- .setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
- .setMaxMillseconds(System.currentTimeMillis())
- .setType(Type.YEAR_MONTH)
- .setCallBack(new OnDateSetListener() {
- @Override
- public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
- String date = TimeOrDateUtil.timestampToYearMonth(millSeconds);
- viewBinding.titleBarLayout.dateView.setText(date);
- }
- }).build().show(getSupportFragmentManager(), "year_month");
- }
- });
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java
new file mode 100644
index 0000000..14bcf7d
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/CityBaseDataActivity.java
@@ -0,0 +1,160 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.bin.david.form.core.TableConfig;
+import com.bin.david.form.data.style.FontStyle;
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityCityBaseDataBinding;
+import com.casic.dcms.model.EventSourceBean;
+import com.casic.dcms.model.ExcelDataBean;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.casic.dcms.vm.DataAnalysisViewModel;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.hub.ContextHub;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+import com.pengxh.androidx.lite.vm.LoadState;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author : Pengxh
+ * @time : 2021/4/16 9:24
+ * @email : 290677893@qq.com
+ */
+public class CityBaseDataActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "CityBaseDataActivity";
+ private final Context context = CityBaseDataActivity.this;
+ private final List excelDataBeans = new ArrayList<>();
+ private final List pieEntries = new ArrayList<>();
+ private String[] date = new String[0];
+ private DataAnalysisViewModel analysisViewModel;
+
+ @Override
+ protected void setupTopBarLayout() {
+ ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor));
+ ImmersionBar.with(this).statusBarDarkFont(false).init();
+
+ viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(0));
+ viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish());
+ }
+
+ @Override
+ protected void observeRequestState() {
+
+ }
+
+ @Override
+ protected void initData() {
+ //默认显示当前月的数据
+ long timeMillis = System.currentTimeMillis();
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis));
+ try {
+ date = TimeOrDateUtil.timestampToMonth(timeMillis);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ //初始化表格
+ initTableConfig();
+ //初始化饼图
+ ChartViewHelper.initPieChart(viewBinding.resourcePieChart);
+ analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class);
+ analysisViewModel.obtainEventSource(date[0], date[1]);
+ }
+
+ private void initTableConfig() {
+ TableConfig config = viewBinding.resourceTableView.getConfig();
+ //首行属性
+ config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));
+ config.setContentBackgroundColor(Color.LTGRAY);
+ config.setColumnTitleVerticalPadding(30);
+ //内容属性
+ config.setContentStyle(new FontStyle(50, Color.DKGRAY));
+ config.setVerticalPadding(30);
+ config.setShowTableTitle(false); //不显示标题
+ config.setShowXSequence(false); //不显示横向ABC....序列
+ config.setShowYSequence(false); //不显示纵向123....序列
+ config.setMinTableWidth(ContextHub.getScreenWidth(this));//不设置的话会就不会居中显示
+ }
+
+ @Override
+ protected void initEvent() {
+ viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor))
+ .setTitleStringId("选择日期")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(Type.YEAR_MONTH)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(millSeconds));
+ String[] date = new String[0];
+ try {
+ date = TimeOrDateUtil.timestampToMonth(millSeconds);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ analysisViewModel.obtainEventSource(date[0], date[1]);
+ }
+ }).build().show(getSupportFragmentManager(), "year_month");
+ }
+ });
+
+ analysisViewModel.eventSourceModel.observe(this, new Observer() {
+ @Override
+ public void onChanged(EventSourceBean resultBean) {
+ if (resultBean.getCode() == 200) {
+ List dataBeanList = resultBean.getData();
+ for (int i = 0; i < dataBeanList.size(); i++) {
+ EventSourceBean.DataDTO dataBean = dataBeanList.get(i);
+
+ String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource();
+ int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum());
+ excelDataBeans.add(new ExcelDataBean(i, label, number));
+
+ String caseNum = dataBean.getCaseNum();
+ //表格数据需要把0的加进去,饼图不需要
+ if (!caseNum.equals("0")) {
+ pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label));
+ }
+ }
+ viewBinding.resourceTableView.setData(excelDataBeans);
+ ChartViewHelper.setPieChartData(viewBinding.resourcePieChart, pieEntries);
+ }
+ }
+ });
+ analysisViewModel.loadState.observe(this, new Observer() {
+ @Override
+ public void onChanged(LoadState loadState) {
+ if (loadState == LoadState.Loading) {
+ DialogHelper.showLoadingDialog(context, "获取数据中...");
+ } else {
+ DialogHelper.dismissLoadingDialog();
+ }
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
index 7cc5694..7156356 100644
--- a/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
+++ b/app/src/main/java/com/casic/dcms/view/statistics/DataAnalysisActivity.java
@@ -12,7 +12,6 @@
import com.pengxh.androidx.lite.adapter.ViewHolder;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.hub.IntHub;
-import com.pengxh.androidx.lite.hub.StringHub;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
import java.util.ArrayList;
@@ -64,11 +63,11 @@
Intent intent = new Intent();
switch (position) {
case 0:
- intent.setClass(context, EventSourceActivity.class);
+ intent.setClass(context, CityBaseDataActivity.class);
startActivity(intent);
break;
case 1:
- intent.setClass(context, CaseStatusActivity.class);
+ intent.setClass(context, CaseResourceActivity.class);
startActivity(intent);
break;
case 2:
@@ -76,16 +75,21 @@
startActivity(intent);
break;
case 3:
- intent.setClass(context, StreetStatisticsActivity.class);
+ intent.setClass(context, DeptHandleConditionActivity.class);
startActivity(intent);
break;
case 4:
- StringHub.show(context, "处理统计");
+ intent.setClass(context, GridAnalysisActivity.class);
+ startActivity(intent);
break;
case 5:
intent.setClass(context, TrendAnalysisActivity.class);
startActivity(intent);
break;
+ case 6:
+ intent.setClass(context, PunishAnalysisActivity.class);
+ startActivity(intent);
+ break;
}
}
});
diff --git a/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java
new file mode 100644
index 0000000..e2466ce
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java
@@ -0,0 +1,153 @@
+package com.casic.dcms.view.statistics;
+
+import android.content.Context;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.TextView;
+
+import androidx.core.content.ContextCompat;
+
+import com.casic.dcms.R;
+import com.casic.dcms.databinding.ActivityDeptHandleConditionBinding;
+import com.casic.dcms.utils.ChartViewHelper;
+import com.casic.dcms.utils.LocaleConstant;
+import com.casic.dcms.utils.TimeOrDateUtil;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.Entry;
+import com.github.mikephil.charting.data.PieEntry;
+import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
+import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author a203
+ * @package com.casic.dcms.ui
+ * @date 2022/2/15 09:46
+ * @email 290677893@qq.com
+ */
+public class DeptHandleConditionActivity extends AndroidxBaseActivity {
+
+ private static final String TAG = "DeptHandleConditionActivity";
+ private static final List horizontalLabelName = Arrays.asList("销案", "不予立案", "结案", "待结案", "待核查", "待处理", "待核实");
+ private final Context context = DeptHandleConditionActivity.this;
+ private final List spinnerEntries = new ArrayList<>();
+ private final List commonEntries = new ArrayList<>();
+ private final List quickEntries = new ArrayList<>();
+ private final List