diff --git a/.idea/misc.xml b/.idea/misc.xml index d61ebf7..552f6c3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -29,12 +29,14 @@ + + diff --git a/.idea/misc.xml b/.idea/misc.xml index d61ebf7..552f6c3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -29,12 +29,14 @@ + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 41f20d8..c373600 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,7 +64,7 @@ - + diff --git a/.idea/misc.xml b/.idea/misc.xml index d61ebf7..552f6c3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -29,12 +29,14 @@ + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 41f20d8..c373600 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,7 +64,7 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java index 257864c..da4637d 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java @@ -3,19 +3,28 @@ import java.util.List; public class HighEventBean { - private double code; + + private int code; + private List data; private String message; private boolean success; - private List data; - public double getCode() { + public int getCode() { return code; } - public void setCode(double code) { + public void setCode(int code) { this.code = code; } + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + public String getMessage() { return message; } @@ -32,23 +41,7 @@ this.success = success; } - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } - - public static class DataBean { - /** - * caseMajorType : 其他事件 - * caseNum : 8 - * caseSubType : 违规高空悬吊作业 - * caseType : 其他事件/违规高空悬吊作业 - * eorc : 事件 - */ - + public static class DataDTO { private String caseMajorType; private String caseNum; private String caseSubType; diff --git a/.idea/misc.xml b/.idea/misc.xml index d61ebf7..552f6c3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -29,12 +29,14 @@ + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 41f20d8..c373600 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,7 +64,7 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java index 257864c..da4637d 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java @@ -3,19 +3,28 @@ import java.util.List; public class HighEventBean { - private double code; + + private int code; + private List data; private String message; private boolean success; - private List data; - public double getCode() { + public int getCode() { return code; } - public void setCode(double code) { + public void setCode(int code) { this.code = code; } + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + public String getMessage() { return message; } @@ -32,23 +41,7 @@ this.success = success; } - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } - - public static class DataBean { - /** - * caseMajorType : 其他事件 - * caseNum : 8 - * caseSubType : 违规高空悬吊作业 - * caseType : 其他事件/违规高空悬吊作业 - * eorc : 事件 - */ - + public static class DataDTO { private String caseMajorType; private String caseNum; private String caseSubType; diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java index b9244a0..9dad340 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java @@ -17,7 +17,6 @@ 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.ChartUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; import java.util.ArrayList; @@ -53,13 +52,13 @@ @Override protected void initData() { //初始化饼图 - ChartUtil.initPieChart(this, viewBinding.statusPieChart); + 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); //初始化横向柱状图 - ChartUtil.initBarChart(this, viewBinding.statusBarChart, horizontalLabelName); + ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName); //设置数据 //TODO 这是模拟数据 for (int i = 0; i < horizontalLabelName.size(); i++) { diff --git a/.idea/misc.xml b/.idea/misc.xml index d61ebf7..552f6c3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -29,12 +29,14 @@ + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 41f20d8..c373600 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,7 +64,7 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java index 257864c..da4637d 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java @@ -3,19 +3,28 @@ import java.util.List; public class HighEventBean { - private double code; + + private int code; + private List data; private String message; private boolean success; - private List data; - public double getCode() { + public int getCode() { return code; } - public void setCode(double code) { + public void setCode(int code) { this.code = code; } + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + public String getMessage() { return message; } @@ -32,23 +41,7 @@ this.success = success; } - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } - - public static class DataBean { - /** - * caseMajorType : 其他事件 - * caseNum : 8 - * caseSubType : 违规高空悬吊作业 - * caseType : 其他事件/违规高空悬吊作业 - * eorc : 事件 - */ - + public static class DataDTO { private String caseMajorType; private String caseNum; private String caseSubType; diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java index b9244a0..9dad340 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java @@ -17,7 +17,6 @@ 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.ChartUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; import java.util.ArrayList; @@ -53,13 +52,13 @@ @Override protected void initData() { //初始化饼图 - ChartUtil.initPieChart(this, viewBinding.statusPieChart); + 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); //初始化横向柱状图 - ChartUtil.initBarChart(this, viewBinding.statusBarChart, horizontalLabelName); + ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName); //设置数据 //TODO 这是模拟数据 for (int i = 0; i < horizontalLabelName.size(); i++) { diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java index 52345cd..f219308 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java @@ -49,7 +49,7 @@ startActivity(intent); break; case 2: - intent.setClass(context, HighEventListActivity.class); + intent.setClass(context, HighEventActivity.class); startActivity(intent); break; case 3: diff --git a/.idea/misc.xml b/.idea/misc.xml index d61ebf7..552f6c3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -29,12 +29,14 @@ + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 41f20d8..c373600 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,7 +64,7 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java index 257864c..da4637d 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java @@ -3,19 +3,28 @@ import java.util.List; public class HighEventBean { - private double code; + + private int code; + private List data; private String message; private boolean success; - private List data; - public double getCode() { + public int getCode() { return code; } - public void setCode(double code) { + public void setCode(int code) { this.code = code; } + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + public String getMessage() { return message; } @@ -32,23 +41,7 @@ this.success = success; } - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } - - public static class DataBean { - /** - * caseMajorType : 其他事件 - * caseNum : 8 - * caseSubType : 违规高空悬吊作业 - * caseType : 其他事件/违规高空悬吊作业 - * eorc : 事件 - */ - + public static class DataDTO { private String caseMajorType; private String caseNum; private String caseSubType; diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java index b9244a0..9dad340 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java @@ -17,7 +17,6 @@ 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.ChartUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; import java.util.ArrayList; @@ -53,13 +52,13 @@ @Override protected void initData() { //初始化饼图 - ChartUtil.initPieChart(this, viewBinding.statusPieChart); + 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); //初始化横向柱状图 - ChartUtil.initBarChart(this, viewBinding.statusBarChart, horizontalLabelName); + ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName); //设置数据 //TODO 这是模拟数据 for (int i = 0; i < horizontalLabelName.size(); i++) { diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java index 52345cd..f219308 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java @@ -49,7 +49,7 @@ startActivity(intent); break; case 2: - intent.setClass(context, HighEventListActivity.class); + intent.setClass(context, HighEventActivity.class); startActivity(intent); break; case 3: diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/HighEventActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/HighEventActivity.java new file mode 100644 index 0000000..caed716 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvvm/view/HighEventActivity.java @@ -0,0 +1,138 @@ +package com.casic.dcms.mvvm.view; + +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.ActivityHighEventBinding; +import com.casic.dcms.mvvm.model.ExcelDataBean; +import com.casic.dcms.mvvm.model.HighEventBean; +import com.casic.dcms.mvvm.vm.DataAnalysisViewModel; +import com.casic.dcms.utils.ChartViewHelper; +import com.casic.dcms.utils.LocaleConstant; +import com.casic.dcms.utils.TimeOrDateUtil; +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.DeviceSizeUtil; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +public class HighEventActivity extends AndroidxBaseActivity { + + private static final String TAG = "HighEventListActivity"; + private final Context context = HighEventActivity.this; + private final List excelDataBeans = new ArrayList<>(); + private final List pieEntries = new ArrayList<>(); + private String[] date = new String[0]; + private DataAnalysisViewModel dataAnalysisViewModel; + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarUtil.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 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.eventPieChart); + dataAnalysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); + dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); + } + + private void initTableConfig() { + TableConfig config = viewBinding.eventTableView.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(DeviceSizeUtil.obtainScreenWidth(context));//不设置的话会就不会居中显示 + } + + @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(); + } + dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); + } + }).build().show(getSupportFragmentManager(), "year_month"); + } + }); + + dataAnalysisViewModel.highEventModel.observe(this, new Observer() { + @Override + public void onChanged(HighEventBean resultBean) { + if (resultBean.getCode() == 200) { + List dataBeanList = resultBean.getData(); + for (int i = 0; i < dataBeanList.size() - 1; i++) { + HighEventBean.DataDTO dataBean = dataBeanList.get(i); + if (!dataBean.getCaseType().equals("-/-")) { + String caseNum = dataBean.getCaseNum(); + excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); + if (!caseNum.equals("0")) { + pieEntries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseType())); + } + } + } + viewBinding.eventTableView.setData(excelDataBeans); + ChartViewHelper.setPieChartData(viewBinding.eventPieChart, pieEntries); + } + } + }); + } +} \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index d61ebf7..552f6c3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -29,12 +29,14 @@ + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 41f20d8..c373600 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,7 +64,7 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java index 257864c..da4637d 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java @@ -3,19 +3,28 @@ import java.util.List; public class HighEventBean { - private double code; + + private int code; + private List data; private String message; private boolean success; - private List data; - public double getCode() { + public int getCode() { return code; } - public void setCode(double code) { + public void setCode(int code) { this.code = code; } + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + public String getMessage() { return message; } @@ -32,23 +41,7 @@ this.success = success; } - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } - - public static class DataBean { - /** - * caseMajorType : 其他事件 - * caseNum : 8 - * caseSubType : 违规高空悬吊作业 - * caseType : 其他事件/违规高空悬吊作业 - * eorc : 事件 - */ - + public static class DataDTO { private String caseMajorType; private String caseNum; private String caseSubType; diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java index b9244a0..9dad340 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java @@ -17,7 +17,6 @@ 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.ChartUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; import java.util.ArrayList; @@ -53,13 +52,13 @@ @Override protected void initData() { //初始化饼图 - ChartUtil.initPieChart(this, viewBinding.statusPieChart); + 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); //初始化横向柱状图 - ChartUtil.initBarChart(this, viewBinding.statusBarChart, horizontalLabelName); + ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName); //设置数据 //TODO 这是模拟数据 for (int i = 0; i < horizontalLabelName.size(); i++) { diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java index 52345cd..f219308 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java @@ -49,7 +49,7 @@ startActivity(intent); break; case 2: - intent.setClass(context, HighEventListActivity.class); + intent.setClass(context, HighEventActivity.class); startActivity(intent); break; case 3: diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/HighEventActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/HighEventActivity.java new file mode 100644 index 0000000..caed716 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvvm/view/HighEventActivity.java @@ -0,0 +1,138 @@ +package com.casic.dcms.mvvm.view; + +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.ActivityHighEventBinding; +import com.casic.dcms.mvvm.model.ExcelDataBean; +import com.casic.dcms.mvvm.model.HighEventBean; +import com.casic.dcms.mvvm.vm.DataAnalysisViewModel; +import com.casic.dcms.utils.ChartViewHelper; +import com.casic.dcms.utils.LocaleConstant; +import com.casic.dcms.utils.TimeOrDateUtil; +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.DeviceSizeUtil; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +public class HighEventActivity extends AndroidxBaseActivity { + + private static final String TAG = "HighEventListActivity"; + private final Context context = HighEventActivity.this; + private final List excelDataBeans = new ArrayList<>(); + private final List pieEntries = new ArrayList<>(); + private String[] date = new String[0]; + private DataAnalysisViewModel dataAnalysisViewModel; + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarUtil.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 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.eventPieChart); + dataAnalysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); + dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); + } + + private void initTableConfig() { + TableConfig config = viewBinding.eventTableView.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(DeviceSizeUtil.obtainScreenWidth(context));//不设置的话会就不会居中显示 + } + + @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(); + } + dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); + } + }).build().show(getSupportFragmentManager(), "year_month"); + } + }); + + dataAnalysisViewModel.highEventModel.observe(this, new Observer() { + @Override + public void onChanged(HighEventBean resultBean) { + if (resultBean.getCode() == 200) { + List dataBeanList = resultBean.getData(); + for (int i = 0; i < dataBeanList.size() - 1; i++) { + HighEventBean.DataDTO dataBean = dataBeanList.get(i); + if (!dataBean.getCaseType().equals("-/-")) { + String caseNum = dataBean.getCaseNum(); + excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); + if (!caseNum.equals("0")) { + pieEntries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseType())); + } + } + } + viewBinding.eventTableView.setData(excelDataBeans); + ChartViewHelper.setPieChartData(viewBinding.eventPieChart, pieEntries); + } + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/HighEventListActivity.java deleted file mode 100644 index 354950b..0000000 --- a/app/src/main/java/com/casic/dcms/mvvm/view/HighEventListActivity.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.casic.dcms.mvvm.view; - -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.ActivityHighEventBinding; -import com.casic.dcms.mvvm.model.ExcelDataBean; -import com.casic.dcms.mvvm.model.HighEventBean; -import com.casic.dcms.mvvm.vm.DataAnalysisViewModel; -import com.casic.dcms.utils.ChartViewHelper; -import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.utils.TimeOrDateUtil; -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.ChartUtil; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import java.text.ParseException; -import java.util.ArrayList; -import java.util.List; - -/** - * @author Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - */ -public class HighEventListActivity extends AndroidxBaseActivity { - - private static final String TAG = "HighEventListActivity"; - private final Context context = HighEventListActivity.this; - private final List excelDataBeans = new ArrayList<>(); - private final List pieEntries = new ArrayList<>(); - private String[] date = new String[0]; - private DataAnalysisViewModel dataAnalysisViewModel; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("高发问题"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - //默认显示当前月的数据 - long timeMillis = System.currentTimeMillis(); - viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis)); - try { - date = TimeOrDateUtil.timestampToMonth(timeMillis); - } catch (ParseException e) { - e.printStackTrace(); - } - } - - @Override - protected void initData() { - initTableConfig(); - ChartUtil.initPieChart(this, viewBinding.eventPieChart); - - dataAnalysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); - dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); - ChartViewHelper.setPieChartData(viewBinding.eventPieChart, pieEntries); - } - - private void initTableConfig() { - TableConfig config = viewBinding.eventTableView.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(QMUIDisplayHelper.getScreenWidth(context));//不设置的话会就不会居中显示 - } - - @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(); - } - dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); - } - }).build().show(getSupportFragmentManager(), "year_month"); - } - }); - - dataAnalysisViewModel.highEventModel.observe(this, new Observer() { - @Override - public void onChanged(HighEventBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); - if (!caseNum.equals("0")) { - pieEntries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseType())); - } - } - viewBinding.eventTableView.setData(excelDataBeans); - ChartViewHelper.setPieChartData(viewBinding.eventPieChart, pieEntries); - } - } - }); - } -} \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index d61ebf7..552f6c3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -29,12 +29,14 @@ + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 41f20d8..c373600 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,7 +64,7 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java index 257864c..da4637d 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java @@ -3,19 +3,28 @@ import java.util.List; public class HighEventBean { - private double code; + + private int code; + private List data; private String message; private boolean success; - private List data; - public double getCode() { + public int getCode() { return code; } - public void setCode(double code) { + public void setCode(int code) { this.code = code; } + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + public String getMessage() { return message; } @@ -32,23 +41,7 @@ this.success = success; } - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } - - public static class DataBean { - /** - * caseMajorType : 其他事件 - * caseNum : 8 - * caseSubType : 违规高空悬吊作业 - * caseType : 其他事件/违规高空悬吊作业 - * eorc : 事件 - */ - + public static class DataDTO { private String caseMajorType; private String caseNum; private String caseSubType; diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java index b9244a0..9dad340 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java @@ -17,7 +17,6 @@ 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.ChartUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; import java.util.ArrayList; @@ -53,13 +52,13 @@ @Override protected void initData() { //初始化饼图 - ChartUtil.initPieChart(this, viewBinding.statusPieChart); + 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); //初始化横向柱状图 - ChartUtil.initBarChart(this, viewBinding.statusBarChart, horizontalLabelName); + ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName); //设置数据 //TODO 这是模拟数据 for (int i = 0; i < horizontalLabelName.size(); i++) { diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java index 52345cd..f219308 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java @@ -49,7 +49,7 @@ startActivity(intent); break; case 2: - intent.setClass(context, HighEventListActivity.class); + intent.setClass(context, HighEventActivity.class); startActivity(intent); break; case 3: diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/HighEventActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/HighEventActivity.java new file mode 100644 index 0000000..caed716 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvvm/view/HighEventActivity.java @@ -0,0 +1,138 @@ +package com.casic.dcms.mvvm.view; + +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.ActivityHighEventBinding; +import com.casic.dcms.mvvm.model.ExcelDataBean; +import com.casic.dcms.mvvm.model.HighEventBean; +import com.casic.dcms.mvvm.vm.DataAnalysisViewModel; +import com.casic.dcms.utils.ChartViewHelper; +import com.casic.dcms.utils.LocaleConstant; +import com.casic.dcms.utils.TimeOrDateUtil; +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.DeviceSizeUtil; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +public class HighEventActivity extends AndroidxBaseActivity { + + private static final String TAG = "HighEventListActivity"; + private final Context context = HighEventActivity.this; + private final List excelDataBeans = new ArrayList<>(); + private final List pieEntries = new ArrayList<>(); + private String[] date = new String[0]; + private DataAnalysisViewModel dataAnalysisViewModel; + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarUtil.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 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.eventPieChart); + dataAnalysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); + dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); + } + + private void initTableConfig() { + TableConfig config = viewBinding.eventTableView.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(DeviceSizeUtil.obtainScreenWidth(context));//不设置的话会就不会居中显示 + } + + @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(); + } + dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); + } + }).build().show(getSupportFragmentManager(), "year_month"); + } + }); + + dataAnalysisViewModel.highEventModel.observe(this, new Observer() { + @Override + public void onChanged(HighEventBean resultBean) { + if (resultBean.getCode() == 200) { + List dataBeanList = resultBean.getData(); + for (int i = 0; i < dataBeanList.size() - 1; i++) { + HighEventBean.DataDTO dataBean = dataBeanList.get(i); + if (!dataBean.getCaseType().equals("-/-")) { + String caseNum = dataBean.getCaseNum(); + excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); + if (!caseNum.equals("0")) { + pieEntries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseType())); + } + } + } + viewBinding.eventTableView.setData(excelDataBeans); + ChartViewHelper.setPieChartData(viewBinding.eventPieChart, pieEntries); + } + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/HighEventListActivity.java deleted file mode 100644 index 354950b..0000000 --- a/app/src/main/java/com/casic/dcms/mvvm/view/HighEventListActivity.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.casic.dcms.mvvm.view; - -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.ActivityHighEventBinding; -import com.casic.dcms.mvvm.model.ExcelDataBean; -import com.casic.dcms.mvvm.model.HighEventBean; -import com.casic.dcms.mvvm.vm.DataAnalysisViewModel; -import com.casic.dcms.utils.ChartViewHelper; -import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.utils.TimeOrDateUtil; -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.ChartUtil; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import java.text.ParseException; -import java.util.ArrayList; -import java.util.List; - -/** - * @author Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - */ -public class HighEventListActivity extends AndroidxBaseActivity { - - private static final String TAG = "HighEventListActivity"; - private final Context context = HighEventListActivity.this; - private final List excelDataBeans = new ArrayList<>(); - private final List pieEntries = new ArrayList<>(); - private String[] date = new String[0]; - private DataAnalysisViewModel dataAnalysisViewModel; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("高发问题"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - //默认显示当前月的数据 - long timeMillis = System.currentTimeMillis(); - viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis)); - try { - date = TimeOrDateUtil.timestampToMonth(timeMillis); - } catch (ParseException e) { - e.printStackTrace(); - } - } - - @Override - protected void initData() { - initTableConfig(); - ChartUtil.initPieChart(this, viewBinding.eventPieChart); - - dataAnalysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); - dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); - ChartViewHelper.setPieChartData(viewBinding.eventPieChart, pieEntries); - } - - private void initTableConfig() { - TableConfig config = viewBinding.eventTableView.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(QMUIDisplayHelper.getScreenWidth(context));//不设置的话会就不会居中显示 - } - - @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(); - } - dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); - } - }).build().show(getSupportFragmentManager(), "year_month"); - } - }); - - dataAnalysisViewModel.highEventModel.observe(this, new Observer() { - @Override - public void onChanged(HighEventBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); - if (!caseNum.equals("0")) { - pieEntries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseType())); - } - } - viewBinding.eventTableView.setData(excelDataBeans); - ChartViewHelper.setPieChartData(viewBinding.eventPieChart, pieEntries); - } - } - }); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/vm/DataAnalysisViewModel.java b/app/src/main/java/com/casic/dcms/mvvm/vm/DataAnalysisViewModel.java index 9ae249d..bb9051d 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/vm/DataAnalysisViewModel.java +++ b/app/src/main/java/com/casic/dcms/mvvm/vm/DataAnalysisViewModel.java @@ -57,16 +57,17 @@ } public void obtainHighEvent(String begTime, String endTime) { - Observable observable = RetrofitServiceManager.getEventSource(begTime, endTime); + loadState.setValue(LoadState.Loading); + Observable observable = RetrofitServiceManager.getHighEvent(begTime, endTime); ObserverSubscriber.addSubscribe(observable, new OnObserverCallback() { @Override public void onCompleted() { - + loadState.setValue(LoadState.Success); } @Override public void onError(Throwable e) { - + loadState.setValue(LoadState.Fail); } @Override @@ -78,6 +79,8 @@ HighEventBean resultBean = gson.fromJson(response, new TypeToken() { }.getType()); highEventModel.setValue(resultBean); + } else { + loadState.setValue(LoadState.Fail); } } catch (IOException e) { e.printStackTrace(); diff --git a/.idea/misc.xml b/.idea/misc.xml index d61ebf7..552f6c3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -29,12 +29,14 @@ + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 41f20d8..c373600 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,7 +64,7 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java index 257864c..da4637d 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java @@ -3,19 +3,28 @@ import java.util.List; public class HighEventBean { - private double code; + + private int code; + private List data; private String message; private boolean success; - private List data; - public double getCode() { + public int getCode() { return code; } - public void setCode(double code) { + public void setCode(int code) { this.code = code; } + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + public String getMessage() { return message; } @@ -32,23 +41,7 @@ this.success = success; } - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } - - public static class DataBean { - /** - * caseMajorType : 其他事件 - * caseNum : 8 - * caseSubType : 违规高空悬吊作业 - * caseType : 其他事件/违规高空悬吊作业 - * eorc : 事件 - */ - + public static class DataDTO { private String caseMajorType; private String caseNum; private String caseSubType; diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java index b9244a0..9dad340 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java @@ -17,7 +17,6 @@ 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.ChartUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; import java.util.ArrayList; @@ -53,13 +52,13 @@ @Override protected void initData() { //初始化饼图 - ChartUtil.initPieChart(this, viewBinding.statusPieChart); + 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); //初始化横向柱状图 - ChartUtil.initBarChart(this, viewBinding.statusBarChart, horizontalLabelName); + ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName); //设置数据 //TODO 这是模拟数据 for (int i = 0; i < horizontalLabelName.size(); i++) { diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java index 52345cd..f219308 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java @@ -49,7 +49,7 @@ startActivity(intent); break; case 2: - intent.setClass(context, HighEventListActivity.class); + intent.setClass(context, HighEventActivity.class); startActivity(intent); break; case 3: diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/HighEventActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/HighEventActivity.java new file mode 100644 index 0000000..caed716 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvvm/view/HighEventActivity.java @@ -0,0 +1,138 @@ +package com.casic.dcms.mvvm.view; + +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.ActivityHighEventBinding; +import com.casic.dcms.mvvm.model.ExcelDataBean; +import com.casic.dcms.mvvm.model.HighEventBean; +import com.casic.dcms.mvvm.vm.DataAnalysisViewModel; +import com.casic.dcms.utils.ChartViewHelper; +import com.casic.dcms.utils.LocaleConstant; +import com.casic.dcms.utils.TimeOrDateUtil; +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.DeviceSizeUtil; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +public class HighEventActivity extends AndroidxBaseActivity { + + private static final String TAG = "HighEventListActivity"; + private final Context context = HighEventActivity.this; + private final List excelDataBeans = new ArrayList<>(); + private final List pieEntries = new ArrayList<>(); + private String[] date = new String[0]; + private DataAnalysisViewModel dataAnalysisViewModel; + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarUtil.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 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.eventPieChart); + dataAnalysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); + dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); + } + + private void initTableConfig() { + TableConfig config = viewBinding.eventTableView.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(DeviceSizeUtil.obtainScreenWidth(context));//不设置的话会就不会居中显示 + } + + @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(); + } + dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); + } + }).build().show(getSupportFragmentManager(), "year_month"); + } + }); + + dataAnalysisViewModel.highEventModel.observe(this, new Observer() { + @Override + public void onChanged(HighEventBean resultBean) { + if (resultBean.getCode() == 200) { + List dataBeanList = resultBean.getData(); + for (int i = 0; i < dataBeanList.size() - 1; i++) { + HighEventBean.DataDTO dataBean = dataBeanList.get(i); + if (!dataBean.getCaseType().equals("-/-")) { + String caseNum = dataBean.getCaseNum(); + excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); + if (!caseNum.equals("0")) { + pieEntries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseType())); + } + } + } + viewBinding.eventTableView.setData(excelDataBeans); + ChartViewHelper.setPieChartData(viewBinding.eventPieChart, pieEntries); + } + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/HighEventListActivity.java deleted file mode 100644 index 354950b..0000000 --- a/app/src/main/java/com/casic/dcms/mvvm/view/HighEventListActivity.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.casic.dcms.mvvm.view; - -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.ActivityHighEventBinding; -import com.casic.dcms.mvvm.model.ExcelDataBean; -import com.casic.dcms.mvvm.model.HighEventBean; -import com.casic.dcms.mvvm.vm.DataAnalysisViewModel; -import com.casic.dcms.utils.ChartViewHelper; -import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.utils.TimeOrDateUtil; -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.ChartUtil; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import java.text.ParseException; -import java.util.ArrayList; -import java.util.List; - -/** - * @author Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - */ -public class HighEventListActivity extends AndroidxBaseActivity { - - private static final String TAG = "HighEventListActivity"; - private final Context context = HighEventListActivity.this; - private final List excelDataBeans = new ArrayList<>(); - private final List pieEntries = new ArrayList<>(); - private String[] date = new String[0]; - private DataAnalysisViewModel dataAnalysisViewModel; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("高发问题"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - //默认显示当前月的数据 - long timeMillis = System.currentTimeMillis(); - viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis)); - try { - date = TimeOrDateUtil.timestampToMonth(timeMillis); - } catch (ParseException e) { - e.printStackTrace(); - } - } - - @Override - protected void initData() { - initTableConfig(); - ChartUtil.initPieChart(this, viewBinding.eventPieChart); - - dataAnalysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); - dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); - ChartViewHelper.setPieChartData(viewBinding.eventPieChart, pieEntries); - } - - private void initTableConfig() { - TableConfig config = viewBinding.eventTableView.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(QMUIDisplayHelper.getScreenWidth(context));//不设置的话会就不会居中显示 - } - - @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(); - } - dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); - } - }).build().show(getSupportFragmentManager(), "year_month"); - } - }); - - dataAnalysisViewModel.highEventModel.observe(this, new Observer() { - @Override - public void onChanged(HighEventBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); - if (!caseNum.equals("0")) { - pieEntries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseType())); - } - } - viewBinding.eventTableView.setData(excelDataBeans); - ChartViewHelper.setPieChartData(viewBinding.eventPieChart, pieEntries); - } - } - }); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/vm/DataAnalysisViewModel.java b/app/src/main/java/com/casic/dcms/mvvm/vm/DataAnalysisViewModel.java index 9ae249d..bb9051d 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/vm/DataAnalysisViewModel.java +++ b/app/src/main/java/com/casic/dcms/mvvm/vm/DataAnalysisViewModel.java @@ -57,16 +57,17 @@ } public void obtainHighEvent(String begTime, String endTime) { - Observable observable = RetrofitServiceManager.getEventSource(begTime, endTime); + loadState.setValue(LoadState.Loading); + Observable observable = RetrofitServiceManager.getHighEvent(begTime, endTime); ObserverSubscriber.addSubscribe(observable, new OnObserverCallback() { @Override public void onCompleted() { - + loadState.setValue(LoadState.Success); } @Override public void onError(Throwable e) { - + loadState.setValue(LoadState.Fail); } @Override @@ -78,6 +79,8 @@ HighEventBean resultBean = gson.fromJson(response, new TypeToken() { }.getType()); highEventModel.setValue(resultBean); + } else { + loadState.setValue(LoadState.Fail); } } catch (IOException e) { e.printStackTrace(); diff --git a/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java b/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java index 6efeb42..f8cd630 100644 --- a/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java @@ -174,7 +174,7 @@ chart.invalidate(); } - public static void initBarChart(HorizontalBarChart chart, String[] labelName) { + public static void initBarChart(HorizontalBarChart chart, List labelName) { chart.setDrawGridBackground(false); chart.setDrawBorders(false); chart.setScaleEnabled(false); @@ -187,11 +187,11 @@ xAxis.setTextColor(ContextCompat.getColor(BaseApplication.getInstance(), R.color.mainTextColor)); xAxis.setTextSize(12f); xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 - xAxis.setLabelCount(labelName.length); // 设置x轴上的标签个数 + xAxis.setLabelCount(labelName.size()); // 设置x轴上的标签个数 xAxis.setValueFormatter(new ValueFormatter() { @Override public String getFormattedValue(float value) { - return labelName[(int) value]; + return labelName.get((int) value); } }); xAxis.setDrawAxisLine(true);//是否绘制轴线 @@ -242,6 +242,7 @@ legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM); legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER); legend.setOrientation(Legend.LegendOrientation.HORIZONTAL); + legend.setWordWrapEnabled(true); } public static void setPieChartData(PieChart chart, List entries) { diff --git a/.idea/misc.xml b/.idea/misc.xml index d61ebf7..552f6c3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -29,12 +29,14 @@ + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 41f20d8..c373600 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,7 +64,7 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java index 257864c..da4637d 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java @@ -3,19 +3,28 @@ import java.util.List; public class HighEventBean { - private double code; + + private int code; + private List data; private String message; private boolean success; - private List data; - public double getCode() { + public int getCode() { return code; } - public void setCode(double code) { + public void setCode(int code) { this.code = code; } + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + public String getMessage() { return message; } @@ -32,23 +41,7 @@ this.success = success; } - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } - - public static class DataBean { - /** - * caseMajorType : 其他事件 - * caseNum : 8 - * caseSubType : 违规高空悬吊作业 - * caseType : 其他事件/违规高空悬吊作业 - * eorc : 事件 - */ - + public static class DataDTO { private String caseMajorType; private String caseNum; private String caseSubType; diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java index b9244a0..9dad340 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java @@ -17,7 +17,6 @@ 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.ChartUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; import java.util.ArrayList; @@ -53,13 +52,13 @@ @Override protected void initData() { //初始化饼图 - ChartUtil.initPieChart(this, viewBinding.statusPieChart); + 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); //初始化横向柱状图 - ChartUtil.initBarChart(this, viewBinding.statusBarChart, horizontalLabelName); + ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName); //设置数据 //TODO 这是模拟数据 for (int i = 0; i < horizontalLabelName.size(); i++) { diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java index 52345cd..f219308 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java @@ -49,7 +49,7 @@ startActivity(intent); break; case 2: - intent.setClass(context, HighEventListActivity.class); + intent.setClass(context, HighEventActivity.class); startActivity(intent); break; case 3: diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/HighEventActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/HighEventActivity.java new file mode 100644 index 0000000..caed716 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvvm/view/HighEventActivity.java @@ -0,0 +1,138 @@ +package com.casic.dcms.mvvm.view; + +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.ActivityHighEventBinding; +import com.casic.dcms.mvvm.model.ExcelDataBean; +import com.casic.dcms.mvvm.model.HighEventBean; +import com.casic.dcms.mvvm.vm.DataAnalysisViewModel; +import com.casic.dcms.utils.ChartViewHelper; +import com.casic.dcms.utils.LocaleConstant; +import com.casic.dcms.utils.TimeOrDateUtil; +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.DeviceSizeUtil; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +public class HighEventActivity extends AndroidxBaseActivity { + + private static final String TAG = "HighEventListActivity"; + private final Context context = HighEventActivity.this; + private final List excelDataBeans = new ArrayList<>(); + private final List pieEntries = new ArrayList<>(); + private String[] date = new String[0]; + private DataAnalysisViewModel dataAnalysisViewModel; + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarUtil.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 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.eventPieChart); + dataAnalysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); + dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); + } + + private void initTableConfig() { + TableConfig config = viewBinding.eventTableView.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(DeviceSizeUtil.obtainScreenWidth(context));//不设置的话会就不会居中显示 + } + + @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(); + } + dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); + } + }).build().show(getSupportFragmentManager(), "year_month"); + } + }); + + dataAnalysisViewModel.highEventModel.observe(this, new Observer() { + @Override + public void onChanged(HighEventBean resultBean) { + if (resultBean.getCode() == 200) { + List dataBeanList = resultBean.getData(); + for (int i = 0; i < dataBeanList.size() - 1; i++) { + HighEventBean.DataDTO dataBean = dataBeanList.get(i); + if (!dataBean.getCaseType().equals("-/-")) { + String caseNum = dataBean.getCaseNum(); + excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); + if (!caseNum.equals("0")) { + pieEntries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseType())); + } + } + } + viewBinding.eventTableView.setData(excelDataBeans); + ChartViewHelper.setPieChartData(viewBinding.eventPieChart, pieEntries); + } + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/HighEventListActivity.java deleted file mode 100644 index 354950b..0000000 --- a/app/src/main/java/com/casic/dcms/mvvm/view/HighEventListActivity.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.casic.dcms.mvvm.view; - -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.ActivityHighEventBinding; -import com.casic.dcms.mvvm.model.ExcelDataBean; -import com.casic.dcms.mvvm.model.HighEventBean; -import com.casic.dcms.mvvm.vm.DataAnalysisViewModel; -import com.casic.dcms.utils.ChartViewHelper; -import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.utils.TimeOrDateUtil; -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.ChartUtil; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import java.text.ParseException; -import java.util.ArrayList; -import java.util.List; - -/** - * @author Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - */ -public class HighEventListActivity extends AndroidxBaseActivity { - - private static final String TAG = "HighEventListActivity"; - private final Context context = HighEventListActivity.this; - private final List excelDataBeans = new ArrayList<>(); - private final List pieEntries = new ArrayList<>(); - private String[] date = new String[0]; - private DataAnalysisViewModel dataAnalysisViewModel; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("高发问题"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - //默认显示当前月的数据 - long timeMillis = System.currentTimeMillis(); - viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis)); - try { - date = TimeOrDateUtil.timestampToMonth(timeMillis); - } catch (ParseException e) { - e.printStackTrace(); - } - } - - @Override - protected void initData() { - initTableConfig(); - ChartUtil.initPieChart(this, viewBinding.eventPieChart); - - dataAnalysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); - dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); - ChartViewHelper.setPieChartData(viewBinding.eventPieChart, pieEntries); - } - - private void initTableConfig() { - TableConfig config = viewBinding.eventTableView.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(QMUIDisplayHelper.getScreenWidth(context));//不设置的话会就不会居中显示 - } - - @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(); - } - dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); - } - }).build().show(getSupportFragmentManager(), "year_month"); - } - }); - - dataAnalysisViewModel.highEventModel.observe(this, new Observer() { - @Override - public void onChanged(HighEventBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); - if (!caseNum.equals("0")) { - pieEntries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseType())); - } - } - viewBinding.eventTableView.setData(excelDataBeans); - ChartViewHelper.setPieChartData(viewBinding.eventPieChart, pieEntries); - } - } - }); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/vm/DataAnalysisViewModel.java b/app/src/main/java/com/casic/dcms/mvvm/vm/DataAnalysisViewModel.java index 9ae249d..bb9051d 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/vm/DataAnalysisViewModel.java +++ b/app/src/main/java/com/casic/dcms/mvvm/vm/DataAnalysisViewModel.java @@ -57,16 +57,17 @@ } public void obtainHighEvent(String begTime, String endTime) { - Observable observable = RetrofitServiceManager.getEventSource(begTime, endTime); + loadState.setValue(LoadState.Loading); + Observable observable = RetrofitServiceManager.getHighEvent(begTime, endTime); ObserverSubscriber.addSubscribe(observable, new OnObserverCallback() { @Override public void onCompleted() { - + loadState.setValue(LoadState.Success); } @Override public void onError(Throwable e) { - + loadState.setValue(LoadState.Fail); } @Override @@ -78,6 +79,8 @@ HighEventBean resultBean = gson.fromJson(response, new TypeToken() { }.getType()); highEventModel.setValue(resultBean); + } else { + loadState.setValue(LoadState.Fail); } } catch (IOException e) { e.printStackTrace(); diff --git a/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java b/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java index 6efeb42..f8cd630 100644 --- a/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java @@ -174,7 +174,7 @@ chart.invalidate(); } - public static void initBarChart(HorizontalBarChart chart, String[] labelName) { + public static void initBarChart(HorizontalBarChart chart, List labelName) { chart.setDrawGridBackground(false); chart.setDrawBorders(false); chart.setScaleEnabled(false); @@ -187,11 +187,11 @@ xAxis.setTextColor(ContextCompat.getColor(BaseApplication.getInstance(), R.color.mainTextColor)); xAxis.setTextSize(12f); xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 - xAxis.setLabelCount(labelName.length); // 设置x轴上的标签个数 + xAxis.setLabelCount(labelName.size()); // 设置x轴上的标签个数 xAxis.setValueFormatter(new ValueFormatter() { @Override public String getFormattedValue(float value) { - return labelName[(int) value]; + return labelName.get((int) value); } }); xAxis.setDrawAxisLine(true);//是否绘制轴线 @@ -242,6 +242,7 @@ legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM); legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER); legend.setOrientation(Legend.LegendOrientation.HORIZONTAL); + legend.setWordWrapEnabled(true); } public static void setPieChartData(PieChart chart, List entries) { diff --git a/app/src/main/res/layout/activity_case_status.xml b/app/src/main/res/layout/activity_case_status.xml index 26401dc..015123a 100644 --- a/app/src/main/res/layout/activity_case_status.xml +++ b/app/src/main/res/layout/activity_case_status.xml @@ -30,20 +30,20 @@ + android:layout_height="@dimen/dp_200" /> + android:layout_height="400dp" /> diff --git a/.idea/misc.xml b/.idea/misc.xml index d61ebf7..552f6c3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -29,12 +29,14 @@ + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 41f20d8..c373600 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,7 +64,7 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java index 257864c..da4637d 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/HighEventBean.java @@ -3,19 +3,28 @@ import java.util.List; public class HighEventBean { - private double code; + + private int code; + private List data; private String message; private boolean success; - private List data; - public double getCode() { + public int getCode() { return code; } - public void setCode(double code) { + public void setCode(int code) { this.code = code; } + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + public String getMessage() { return message; } @@ -32,23 +41,7 @@ this.success = success; } - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } - - public static class DataBean { - /** - * caseMajorType : 其他事件 - * caseNum : 8 - * caseSubType : 违规高空悬吊作业 - * caseType : 其他事件/违规高空悬吊作业 - * eorc : 事件 - */ - + public static class DataDTO { private String caseMajorType; private String caseNum; private String caseSubType; diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java index b9244a0..9dad340 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/CaseStatusActivity.java @@ -17,7 +17,6 @@ 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.ChartUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; import java.util.ArrayList; @@ -53,13 +52,13 @@ @Override protected void initData() { //初始化饼图 - ChartUtil.initPieChart(this, viewBinding.statusPieChart); + 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); //初始化横向柱状图 - ChartUtil.initBarChart(this, viewBinding.statusBarChart, horizontalLabelName); + ChartViewHelper.initBarChart(viewBinding.statusBarChart, horizontalLabelName); //设置数据 //TODO 这是模拟数据 for (int i = 0; i < horizontalLabelName.size(); i++) { diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java index 52345cd..f219308 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/DataAnalysisActivity.java @@ -49,7 +49,7 @@ startActivity(intent); break; case 2: - intent.setClass(context, HighEventListActivity.class); + intent.setClass(context, HighEventActivity.class); startActivity(intent); break; case 3: diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/HighEventActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/HighEventActivity.java new file mode 100644 index 0000000..caed716 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvvm/view/HighEventActivity.java @@ -0,0 +1,138 @@ +package com.casic.dcms.mvvm.view; + +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.ActivityHighEventBinding; +import com.casic.dcms.mvvm.model.ExcelDataBean; +import com.casic.dcms.mvvm.model.HighEventBean; +import com.casic.dcms.mvvm.vm.DataAnalysisViewModel; +import com.casic.dcms.utils.ChartViewHelper; +import com.casic.dcms.utils.LocaleConstant; +import com.casic.dcms.utils.TimeOrDateUtil; +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.DeviceSizeUtil; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +public class HighEventActivity extends AndroidxBaseActivity { + + private static final String TAG = "HighEventListActivity"; + private final Context context = HighEventActivity.this; + private final List excelDataBeans = new ArrayList<>(); + private final List pieEntries = new ArrayList<>(); + private String[] date = new String[0]; + private DataAnalysisViewModel dataAnalysisViewModel; + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarUtil.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 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.eventPieChart); + dataAnalysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); + dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); + } + + private void initTableConfig() { + TableConfig config = viewBinding.eventTableView.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(DeviceSizeUtil.obtainScreenWidth(context));//不设置的话会就不会居中显示 + } + + @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(); + } + dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); + } + }).build().show(getSupportFragmentManager(), "year_month"); + } + }); + + dataAnalysisViewModel.highEventModel.observe(this, new Observer() { + @Override + public void onChanged(HighEventBean resultBean) { + if (resultBean.getCode() == 200) { + List dataBeanList = resultBean.getData(); + for (int i = 0; i < dataBeanList.size() - 1; i++) { + HighEventBean.DataDTO dataBean = dataBeanList.get(i); + if (!dataBean.getCaseType().equals("-/-")) { + String caseNum = dataBean.getCaseNum(); + excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); + if (!caseNum.equals("0")) { + pieEntries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseType())); + } + } + } + viewBinding.eventTableView.setData(excelDataBeans); + ChartViewHelper.setPieChartData(viewBinding.eventPieChart, pieEntries); + } + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/HighEventListActivity.java deleted file mode 100644 index 354950b..0000000 --- a/app/src/main/java/com/casic/dcms/mvvm/view/HighEventListActivity.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.casic.dcms.mvvm.view; - -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.ActivityHighEventBinding; -import com.casic.dcms.mvvm.model.ExcelDataBean; -import com.casic.dcms.mvvm.model.HighEventBean; -import com.casic.dcms.mvvm.vm.DataAnalysisViewModel; -import com.casic.dcms.utils.ChartViewHelper; -import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.utils.TimeOrDateUtil; -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.ChartUtil; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import java.text.ParseException; -import java.util.ArrayList; -import java.util.List; - -/** - * @author Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - */ -public class HighEventListActivity extends AndroidxBaseActivity { - - private static final String TAG = "HighEventListActivity"; - private final Context context = HighEventListActivity.this; - private final List excelDataBeans = new ArrayList<>(); - private final List pieEntries = new ArrayList<>(); - private String[] date = new String[0]; - private DataAnalysisViewModel dataAnalysisViewModel; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("高发问题"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - //默认显示当前月的数据 - long timeMillis = System.currentTimeMillis(); - viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(timeMillis)); - try { - date = TimeOrDateUtil.timestampToMonth(timeMillis); - } catch (ParseException e) { - e.printStackTrace(); - } - } - - @Override - protected void initData() { - initTableConfig(); - ChartUtil.initPieChart(this, viewBinding.eventPieChart); - - dataAnalysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); - dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); - ChartViewHelper.setPieChartData(viewBinding.eventPieChart, pieEntries); - } - - private void initTableConfig() { - TableConfig config = viewBinding.eventTableView.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(QMUIDisplayHelper.getScreenWidth(context));//不设置的话会就不会居中显示 - } - - @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(); - } - dataAnalysisViewModel.obtainHighEvent(date[0], date[1]); - } - }).build().show(getSupportFragmentManager(), "year_month"); - } - }); - - dataAnalysisViewModel.highEventModel.observe(this, new Observer() { - @Override - public void onChanged(HighEventBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); - if (!caseNum.equals("0")) { - pieEntries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseType())); - } - } - viewBinding.eventTableView.setData(excelDataBeans); - ChartViewHelper.setPieChartData(viewBinding.eventPieChart, pieEntries); - } - } - }); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/vm/DataAnalysisViewModel.java b/app/src/main/java/com/casic/dcms/mvvm/vm/DataAnalysisViewModel.java index 9ae249d..bb9051d 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/vm/DataAnalysisViewModel.java +++ b/app/src/main/java/com/casic/dcms/mvvm/vm/DataAnalysisViewModel.java @@ -57,16 +57,17 @@ } public void obtainHighEvent(String begTime, String endTime) { - Observable observable = RetrofitServiceManager.getEventSource(begTime, endTime); + loadState.setValue(LoadState.Loading); + Observable observable = RetrofitServiceManager.getHighEvent(begTime, endTime); ObserverSubscriber.addSubscribe(observable, new OnObserverCallback() { @Override public void onCompleted() { - + loadState.setValue(LoadState.Success); } @Override public void onError(Throwable e) { - + loadState.setValue(LoadState.Fail); } @Override @@ -78,6 +79,8 @@ HighEventBean resultBean = gson.fromJson(response, new TypeToken() { }.getType()); highEventModel.setValue(resultBean); + } else { + loadState.setValue(LoadState.Fail); } } catch (IOException e) { e.printStackTrace(); diff --git a/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java b/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java index 6efeb42..f8cd630 100644 --- a/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java @@ -174,7 +174,7 @@ chart.invalidate(); } - public static void initBarChart(HorizontalBarChart chart, String[] labelName) { + public static void initBarChart(HorizontalBarChart chart, List labelName) { chart.setDrawGridBackground(false); chart.setDrawBorders(false); chart.setScaleEnabled(false); @@ -187,11 +187,11 @@ xAxis.setTextColor(ContextCompat.getColor(BaseApplication.getInstance(), R.color.mainTextColor)); xAxis.setTextSize(12f); xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 - xAxis.setLabelCount(labelName.length); // 设置x轴上的标签个数 + xAxis.setLabelCount(labelName.size()); // 设置x轴上的标签个数 xAxis.setValueFormatter(new ValueFormatter() { @Override public String getFormattedValue(float value) { - return labelName[(int) value]; + return labelName.get((int) value); } }); xAxis.setDrawAxisLine(true);//是否绘制轴线 @@ -242,6 +242,7 @@ legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM); legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER); legend.setOrientation(Legend.LegendOrientation.HORIZONTAL); + legend.setWordWrapEnabled(true); } public static void setPieChartData(PieChart chart, List entries) { diff --git a/app/src/main/res/layout/activity_case_status.xml b/app/src/main/res/layout/activity_case_status.xml index 26401dc..015123a 100644 --- a/app/src/main/res/layout/activity_case_status.xml +++ b/app/src/main/res/layout/activity_case_status.xml @@ -30,20 +30,20 @@ + android:layout_height="@dimen/dp_200" /> + android:layout_height="400dp" /> diff --git a/app/src/main/res/layout/activity_high_event.xml b/app/src/main/res/layout/activity_high_event.xml index ca88103..56d67c4 100644 --- a/app/src/main/res/layout/activity_high_event.xml +++ b/app/src/main/res/layout/activity_high_event.xml @@ -9,44 +9,36 @@ android:id="@+id/titleBarLayout" layout="@layout/include_option_plus_title" /> - + android:layout_height="match_parent" + android:orientation="vertical" + android:padding="@dimen/dp_5"> - + + + + + + android:elevation="@dimen/dp_10" + app:cardCornerRadius="@dimen/dp_5" + app:cardUseCompatPadding="true"> - - - - - - - - - - - + android:layout_height="wrap_content" /> + + \ No newline at end of file