diff --git a/.idea/misc.xml b/.idea/misc.xml index 9c582b0..d61ebf7 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -34,12 +34,14 @@ + + diff --git a/.idea/misc.xml b/.idea/misc.xml index 9c582b0..d61ebf7 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -34,12 +34,14 @@ + + diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java index 9369460..f4236b4 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java @@ -9,19 +9,27 @@ **/ public class EventSourceBean { - 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; } @@ -38,16 +46,7 @@ this.success = success; } - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } - - public static class DataBean { - + public static class DataDTO { private String caseCode; private String caseNum; private String caseSource; diff --git a/.idea/misc.xml b/.idea/misc.xml index 9c582b0..d61ebf7 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -34,12 +34,14 @@ + + diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java index 9369460..f4236b4 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java @@ -9,19 +9,27 @@ **/ public class EventSourceBean { - 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; } @@ -38,16 +46,7 @@ this.success = success; } - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } - - public static class DataBean { - + public static class DataDTO { private String caseCode; private String caseNum; private String caseSource; diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java index da5d85b..c181430 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java @@ -11,16 +11,40 @@ @SmartTable(name = "问题来源统计表表") public class ExcelDataBean { - @SmartColumn(id = 0, name = "序号") - private final int index; - @SmartColumn(id = 1, name = "问题来源") - private final String source; - @SmartColumn(id = 2, name = "上报数量") - private final int number; + @SmartColumn(id = 1, name = "序号") + private int index; + @SmartColumn(id = 2, name = "问题来源") + private String source; + @SmartColumn(id = 3, name = "上报数量") + private int number; public ExcelDataBean(int index, String source, int number) { this.index = index; this.source = source; this.number = number; } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public int getNumber() { + return number; + } + + public void setNumber(int number) { + this.number = number; + } } diff --git a/.idea/misc.xml b/.idea/misc.xml index 9c582b0..d61ebf7 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -34,12 +34,14 @@ + + diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java index 9369460..f4236b4 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java @@ -9,19 +9,27 @@ **/ public class EventSourceBean { - 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; } @@ -38,16 +46,7 @@ this.success = success; } - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } - - public static class DataBean { - + public static class DataDTO { private String caseCode; private String caseNum; private String caseSource; diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java index da5d85b..c181430 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java @@ -11,16 +11,40 @@ @SmartTable(name = "问题来源统计表表") public class ExcelDataBean { - @SmartColumn(id = 0, name = "序号") - private final int index; - @SmartColumn(id = 1, name = "问题来源") - private final String source; - @SmartColumn(id = 2, name = "上报数量") - private final int number; + @SmartColumn(id = 1, name = "序号") + private int index; + @SmartColumn(id = 2, name = "问题来源") + private String source; + @SmartColumn(id = 3, name = "上报数量") + private int number; public ExcelDataBean(int index, String source, int number) { this.index = index; this.source = source; this.number = number; } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public int getNumber() { + return number; + } + + public void setNumber(int number) { + this.number = number; + } } diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java index b82f6d5..c53319a 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.mvvm.vm.DataAnalysisViewModel; import com.casic.dcms.utils.ChartViewHelper; import com.casic.dcms.utils.LocaleConstant; +import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.TimeOrDateUtil; import com.github.mikephil.charting.data.PieEntry; import com.gyf.immersionbar.ImmersionBar; @@ -24,9 +25,9 @@ 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.DeviceSizeUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; +import com.pengxh.androidx.lite.vm.LoadState; import java.text.ParseException; import java.util.ArrayList; @@ -39,7 +40,7 @@ */ public class EventSourceActivity extends AndroidxBaseActivity { - private static final String TAG = EventSourceActivity.class.getSimpleName(); + private static final String TAG = "EventSourceActivity"; private final Context context = EventSourceActivity.this; private final List excelDataBeans = new ArrayList<>(); private final List pieEntries = new ArrayList<>(); @@ -68,7 +69,7 @@ //初始化表格 initTableConfig(); //初始化饼图 - ChartUtil.initPieChart(this, viewBinding.resourcePieChart); + ChartViewHelper.initPieChart(viewBinding.resourcePieChart); analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); analysisViewModel.obtainEventSource(date[0], date[1]); } @@ -121,14 +122,18 @@ @Override public void onChanged(EventSourceBean resultBean) { if (resultBean.getCode() == 200) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); + List dataBeanList = resultBean.getData(); + for (int i = 0; i < dataBeanList.size(); i++) { + EventSourceBean.DataDTO dataBean = dataBeanList.get(i); + + String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource(); + int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum()); + excelDataBeans.add(new ExcelDataBean(i, label, number)); + String caseNum = dataBean.getCaseNum(); //表格数据需要把0的加进去,饼图不需要 - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseSource(), Integer.parseInt(caseNum))); if (!caseNum.equals("0")) { - pieEntries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseSource())); + pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label)); } } viewBinding.resourceTableView.setData(excelDataBeans); @@ -136,5 +141,15 @@ } } }); + analysisViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + OtherUtils.showLoadingDialog(context, "获取数据中..."); + } else { + OtherUtils.dismissLoadingDialog(); + } + } + }); } } \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 9c582b0..d61ebf7 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -34,12 +34,14 @@ + + diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java index 9369460..f4236b4 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java @@ -9,19 +9,27 @@ **/ public class EventSourceBean { - 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; } @@ -38,16 +46,7 @@ this.success = success; } - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } - - public static class DataBean { - + public static class DataDTO { private String caseCode; private String caseNum; private String caseSource; diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java index da5d85b..c181430 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java @@ -11,16 +11,40 @@ @SmartTable(name = "问题来源统计表表") public class ExcelDataBean { - @SmartColumn(id = 0, name = "序号") - private final int index; - @SmartColumn(id = 1, name = "问题来源") - private final String source; - @SmartColumn(id = 2, name = "上报数量") - private final int number; + @SmartColumn(id = 1, name = "序号") + private int index; + @SmartColumn(id = 2, name = "问题来源") + private String source; + @SmartColumn(id = 3, name = "上报数量") + private int number; public ExcelDataBean(int index, String source, int number) { this.index = index; this.source = source; this.number = number; } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public int getNumber() { + return number; + } + + public void setNumber(int number) { + this.number = number; + } } diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java index b82f6d5..c53319a 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.mvvm.vm.DataAnalysisViewModel; import com.casic.dcms.utils.ChartViewHelper; import com.casic.dcms.utils.LocaleConstant; +import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.TimeOrDateUtil; import com.github.mikephil.charting.data.PieEntry; import com.gyf.immersionbar.ImmersionBar; @@ -24,9 +25,9 @@ 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.DeviceSizeUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; +import com.pengxh.androidx.lite.vm.LoadState; import java.text.ParseException; import java.util.ArrayList; @@ -39,7 +40,7 @@ */ public class EventSourceActivity extends AndroidxBaseActivity { - private static final String TAG = EventSourceActivity.class.getSimpleName(); + private static final String TAG = "EventSourceActivity"; private final Context context = EventSourceActivity.this; private final List excelDataBeans = new ArrayList<>(); private final List pieEntries = new ArrayList<>(); @@ -68,7 +69,7 @@ //初始化表格 initTableConfig(); //初始化饼图 - ChartUtil.initPieChart(this, viewBinding.resourcePieChart); + ChartViewHelper.initPieChart(viewBinding.resourcePieChart); analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); analysisViewModel.obtainEventSource(date[0], date[1]); } @@ -121,14 +122,18 @@ @Override public void onChanged(EventSourceBean resultBean) { if (resultBean.getCode() == 200) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); + List dataBeanList = resultBean.getData(); + for (int i = 0; i < dataBeanList.size(); i++) { + EventSourceBean.DataDTO dataBean = dataBeanList.get(i); + + String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource(); + int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum()); + excelDataBeans.add(new ExcelDataBean(i, label, number)); + String caseNum = dataBean.getCaseNum(); //表格数据需要把0的加进去,饼图不需要 - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseSource(), Integer.parseInt(caseNum))); if (!caseNum.equals("0")) { - pieEntries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseSource())); + pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label)); } } viewBinding.resourceTableView.setData(excelDataBeans); @@ -136,5 +141,15 @@ } } }); + analysisViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + OtherUtils.showLoadingDialog(context, "获取数据中..."); + } else { + OtherUtils.dismissLoadingDialog(); + } + } + }); } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java index ab9e82a..dfd8d42 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java @@ -12,6 +12,7 @@ import com.casic.dcms.mvvm.view.fragment.LightOnMapFragment; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.utils.DeviceSizeUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; import java.util.ArrayList; @@ -40,8 +41,9 @@ //绑定TabLayout viewBinding.tabLayout.setupWithViewPager(viewBinding.viewPager); LinearLayout linearLayout = (LinearLayout) viewBinding.tabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerPadding(DeviceSizeUtil.dp2px(this, 12.5f)); } @Override diff --git a/.idea/misc.xml b/.idea/misc.xml index 9c582b0..d61ebf7 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -34,12 +34,14 @@ + + diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java index 9369460..f4236b4 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java @@ -9,19 +9,27 @@ **/ public class EventSourceBean { - 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; } @@ -38,16 +46,7 @@ this.success = success; } - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } - - public static class DataBean { - + public static class DataDTO { private String caseCode; private String caseNum; private String caseSource; diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java index da5d85b..c181430 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java @@ -11,16 +11,40 @@ @SmartTable(name = "问题来源统计表表") public class ExcelDataBean { - @SmartColumn(id = 0, name = "序号") - private final int index; - @SmartColumn(id = 1, name = "问题来源") - private final String source; - @SmartColumn(id = 2, name = "上报数量") - private final int number; + @SmartColumn(id = 1, name = "序号") + private int index; + @SmartColumn(id = 2, name = "问题来源") + private String source; + @SmartColumn(id = 3, name = "上报数量") + private int number; public ExcelDataBean(int index, String source, int number) { this.index = index; this.source = source; this.number = number; } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public int getNumber() { + return number; + } + + public void setNumber(int number) { + this.number = number; + } } diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java index b82f6d5..c53319a 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.mvvm.vm.DataAnalysisViewModel; import com.casic.dcms.utils.ChartViewHelper; import com.casic.dcms.utils.LocaleConstant; +import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.TimeOrDateUtil; import com.github.mikephil.charting.data.PieEntry; import com.gyf.immersionbar.ImmersionBar; @@ -24,9 +25,9 @@ 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.DeviceSizeUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; +import com.pengxh.androidx.lite.vm.LoadState; import java.text.ParseException; import java.util.ArrayList; @@ -39,7 +40,7 @@ */ public class EventSourceActivity extends AndroidxBaseActivity { - private static final String TAG = EventSourceActivity.class.getSimpleName(); + private static final String TAG = "EventSourceActivity"; private final Context context = EventSourceActivity.this; private final List excelDataBeans = new ArrayList<>(); private final List pieEntries = new ArrayList<>(); @@ -68,7 +69,7 @@ //初始化表格 initTableConfig(); //初始化饼图 - ChartUtil.initPieChart(this, viewBinding.resourcePieChart); + ChartViewHelper.initPieChart(viewBinding.resourcePieChart); analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); analysisViewModel.obtainEventSource(date[0], date[1]); } @@ -121,14 +122,18 @@ @Override public void onChanged(EventSourceBean resultBean) { if (resultBean.getCode() == 200) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); + List dataBeanList = resultBean.getData(); + for (int i = 0; i < dataBeanList.size(); i++) { + EventSourceBean.DataDTO dataBean = dataBeanList.get(i); + + String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource(); + int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum()); + excelDataBeans.add(new ExcelDataBean(i, label, number)); + String caseNum = dataBean.getCaseNum(); //表格数据需要把0的加进去,饼图不需要 - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseSource(), Integer.parseInt(caseNum))); if (!caseNum.equals("0")) { - pieEntries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseSource())); + pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label)); } } viewBinding.resourceTableView.setData(excelDataBeans); @@ -136,5 +141,15 @@ } } }); + analysisViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + OtherUtils.showLoadingDialog(context, "获取数据中..."); + } else { + OtherUtils.dismissLoadingDialog(); + } + } + }); } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java index ab9e82a..dfd8d42 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java @@ -12,6 +12,7 @@ import com.casic.dcms.mvvm.view.fragment.LightOnMapFragment; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.utils.DeviceSizeUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; import java.util.ArrayList; @@ -40,8 +41,9 @@ //绑定TabLayout viewBinding.tabLayout.setupWithViewPager(viewBinding.viewPager); LinearLayout linearLayout = (LinearLayout) viewBinding.tabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerPadding(DeviceSizeUtil.dp2px(this, 12.5f)); } @Override 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 e8139ed..9ae249d 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 @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken; import com.pengxh.androidx.lite.callback.OnObserverCallback; import com.pengxh.androidx.lite.vm.BaseViewModel; +import com.pengxh.androidx.lite.vm.LoadState; import com.pengxh.androidx.lite.vm.ObserverSubscriber; import java.io.IOException; @@ -23,16 +24,17 @@ public MutableLiveData highEventModel = new MutableLiveData<>(); public void obtainEventSource(String begTime, String endTime) { + loadState.setValue(LoadState.Loading); Observable observable = RetrofitServiceManager.getEventSource(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 @@ -44,6 +46,8 @@ EventSourceBean resultBean = gson.fromJson(response, new TypeToken() { }.getType()); eventSourceModel.setValue(resultBean); + } else { + loadState.setValue(LoadState.Fail); } } catch (IOException e) { e.printStackTrace(); diff --git a/.idea/misc.xml b/.idea/misc.xml index 9c582b0..d61ebf7 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -34,12 +34,14 @@ + + diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java index 9369460..f4236b4 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java @@ -9,19 +9,27 @@ **/ public class EventSourceBean { - 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; } @@ -38,16 +46,7 @@ this.success = success; } - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } - - public static class DataBean { - + public static class DataDTO { private String caseCode; private String caseNum; private String caseSource; diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java index da5d85b..c181430 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java @@ -11,16 +11,40 @@ @SmartTable(name = "问题来源统计表表") public class ExcelDataBean { - @SmartColumn(id = 0, name = "序号") - private final int index; - @SmartColumn(id = 1, name = "问题来源") - private final String source; - @SmartColumn(id = 2, name = "上报数量") - private final int number; + @SmartColumn(id = 1, name = "序号") + private int index; + @SmartColumn(id = 2, name = "问题来源") + private String source; + @SmartColumn(id = 3, name = "上报数量") + private int number; public ExcelDataBean(int index, String source, int number) { this.index = index; this.source = source; this.number = number; } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public int getNumber() { + return number; + } + + public void setNumber(int number) { + this.number = number; + } } diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java index b82f6d5..c53319a 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.mvvm.vm.DataAnalysisViewModel; import com.casic.dcms.utils.ChartViewHelper; import com.casic.dcms.utils.LocaleConstant; +import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.TimeOrDateUtil; import com.github.mikephil.charting.data.PieEntry; import com.gyf.immersionbar.ImmersionBar; @@ -24,9 +25,9 @@ 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.DeviceSizeUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; +import com.pengxh.androidx.lite.vm.LoadState; import java.text.ParseException; import java.util.ArrayList; @@ -39,7 +40,7 @@ */ public class EventSourceActivity extends AndroidxBaseActivity { - private static final String TAG = EventSourceActivity.class.getSimpleName(); + private static final String TAG = "EventSourceActivity"; private final Context context = EventSourceActivity.this; private final List excelDataBeans = new ArrayList<>(); private final List pieEntries = new ArrayList<>(); @@ -68,7 +69,7 @@ //初始化表格 initTableConfig(); //初始化饼图 - ChartUtil.initPieChart(this, viewBinding.resourcePieChart); + ChartViewHelper.initPieChart(viewBinding.resourcePieChart); analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); analysisViewModel.obtainEventSource(date[0], date[1]); } @@ -121,14 +122,18 @@ @Override public void onChanged(EventSourceBean resultBean) { if (resultBean.getCode() == 200) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); + List dataBeanList = resultBean.getData(); + for (int i = 0; i < dataBeanList.size(); i++) { + EventSourceBean.DataDTO dataBean = dataBeanList.get(i); + + String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource(); + int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum()); + excelDataBeans.add(new ExcelDataBean(i, label, number)); + String caseNum = dataBean.getCaseNum(); //表格数据需要把0的加进去,饼图不需要 - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseSource(), Integer.parseInt(caseNum))); if (!caseNum.equals("0")) { - pieEntries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseSource())); + pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label)); } } viewBinding.resourceTableView.setData(excelDataBeans); @@ -136,5 +141,15 @@ } } }); + analysisViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + OtherUtils.showLoadingDialog(context, "获取数据中..."); + } else { + OtherUtils.dismissLoadingDialog(); + } + } + }); } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java index ab9e82a..dfd8d42 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java @@ -12,6 +12,7 @@ import com.casic.dcms.mvvm.view.fragment.LightOnMapFragment; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.utils.DeviceSizeUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; import java.util.ArrayList; @@ -40,8 +41,9 @@ //绑定TabLayout viewBinding.tabLayout.setupWithViewPager(viewBinding.viewPager); LinearLayout linearLayout = (LinearLayout) viewBinding.tabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerPadding(DeviceSizeUtil.dp2px(this, 12.5f)); } @Override 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 e8139ed..9ae249d 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 @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken; import com.pengxh.androidx.lite.callback.OnObserverCallback; import com.pengxh.androidx.lite.vm.BaseViewModel; +import com.pengxh.androidx.lite.vm.LoadState; import com.pengxh.androidx.lite.vm.ObserverSubscriber; import java.io.IOException; @@ -23,16 +24,17 @@ public MutableLiveData highEventModel = new MutableLiveData<>(); public void obtainEventSource(String begTime, String endTime) { + loadState.setValue(LoadState.Loading); Observable observable = RetrofitServiceManager.getEventSource(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 @@ -44,6 +46,8 @@ EventSourceBean resultBean = gson.fromJson(response, new TypeToken() { }.getType()); eventSourceModel.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 ac44a3b..6efeb42 100644 --- a/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java @@ -227,7 +227,6 @@ chart.getDescription().setEnabled(false); chart.setDragDecelerationFrictionCoef(0.95f);//图表转动阻力摩擦系数[0,1] chart.setBackgroundColor(Color.WHITE); //设置图表背景色 - chart.setRotationAngle(0f); chart.setRotationEnabled(true); chart.setHighlightPerTapEnabled(true); chart.animateY(1200, Easing.EaseInOutQuad);// 设置图表展示动画效果 @@ -237,19 +236,16 @@ chart.setEntryLabelColor(Color.BLUE);//图表文本字体颜色 chart.setEntryLabelTextSize(12f); //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 - chart.setExtraOffsets(13, 13, 13, 13); + chart.setExtraOffsets(0, 5, 0, 5); //设置图例位置 Legend legend = chart.getLegend(); - legend.setVerticalAlignment(Legend.LegendVerticalAlignment.CENTER); - legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT); - legend.setOrientation(Legend.LegendOrientation.VERTICAL); - legend.setFormSize(12f); - legend.setFormToTextSpace(8f); - legend.setTextSize(12f); + legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM); + legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER); + legend.setOrientation(Legend.LegendOrientation.HORIZONTAL); } public static void setPieChartData(PieChart chart, List entries) { - PieDataSet dataSet = new PieDataSet(entries, "案卷总览"); + PieDataSet dataSet = new PieDataSet(entries, ""); dataSet.setSliceSpace(3f);//设置饼状块之间的间隙 dataSet.setSelectionShift(5f);//设置饼状块被选中时突出的距离 //设置饼图块颜色 @@ -262,8 +258,8 @@ dataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); dataSet.setValueLineColor(Color.BLUE); - dataSet.setValueLinePart1Length(0.55f);//标签指示线前半截长度 - dataSet.setValueLinePart2Length(0.55f);//标签指示线后半截长度 + dataSet.setValueLinePart1Length(0.75f);//标签指示线前半截长度 + dataSet.setValueLinePart2Length(0.35f);//标签指示线后半截长度 PieData data = new PieData(dataSet); data.setValueFormatter(new ValueFormatter() { @Override diff --git a/.idea/misc.xml b/.idea/misc.xml index 9c582b0..d61ebf7 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -34,12 +34,14 @@ + + diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java index 9369460..f4236b4 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java @@ -9,19 +9,27 @@ **/ public class EventSourceBean { - 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; } @@ -38,16 +46,7 @@ this.success = success; } - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } - - public static class DataBean { - + public static class DataDTO { private String caseCode; private String caseNum; private String caseSource; diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java index da5d85b..c181430 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java @@ -11,16 +11,40 @@ @SmartTable(name = "问题来源统计表表") public class ExcelDataBean { - @SmartColumn(id = 0, name = "序号") - private final int index; - @SmartColumn(id = 1, name = "问题来源") - private final String source; - @SmartColumn(id = 2, name = "上报数量") - private final int number; + @SmartColumn(id = 1, name = "序号") + private int index; + @SmartColumn(id = 2, name = "问题来源") + private String source; + @SmartColumn(id = 3, name = "上报数量") + private int number; public ExcelDataBean(int index, String source, int number) { this.index = index; this.source = source; this.number = number; } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public int getNumber() { + return number; + } + + public void setNumber(int number) { + this.number = number; + } } diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java index b82f6d5..c53319a 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.mvvm.vm.DataAnalysisViewModel; import com.casic.dcms.utils.ChartViewHelper; import com.casic.dcms.utils.LocaleConstant; +import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.TimeOrDateUtil; import com.github.mikephil.charting.data.PieEntry; import com.gyf.immersionbar.ImmersionBar; @@ -24,9 +25,9 @@ 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.DeviceSizeUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; +import com.pengxh.androidx.lite.vm.LoadState; import java.text.ParseException; import java.util.ArrayList; @@ -39,7 +40,7 @@ */ public class EventSourceActivity extends AndroidxBaseActivity { - private static final String TAG = EventSourceActivity.class.getSimpleName(); + private static final String TAG = "EventSourceActivity"; private final Context context = EventSourceActivity.this; private final List excelDataBeans = new ArrayList<>(); private final List pieEntries = new ArrayList<>(); @@ -68,7 +69,7 @@ //初始化表格 initTableConfig(); //初始化饼图 - ChartUtil.initPieChart(this, viewBinding.resourcePieChart); + ChartViewHelper.initPieChart(viewBinding.resourcePieChart); analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); analysisViewModel.obtainEventSource(date[0], date[1]); } @@ -121,14 +122,18 @@ @Override public void onChanged(EventSourceBean resultBean) { if (resultBean.getCode() == 200) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); + List dataBeanList = resultBean.getData(); + for (int i = 0; i < dataBeanList.size(); i++) { + EventSourceBean.DataDTO dataBean = dataBeanList.get(i); + + String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource(); + int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum()); + excelDataBeans.add(new ExcelDataBean(i, label, number)); + String caseNum = dataBean.getCaseNum(); //表格数据需要把0的加进去,饼图不需要 - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseSource(), Integer.parseInt(caseNum))); if (!caseNum.equals("0")) { - pieEntries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseSource())); + pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label)); } } viewBinding.resourceTableView.setData(excelDataBeans); @@ -136,5 +141,15 @@ } } }); + analysisViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + OtherUtils.showLoadingDialog(context, "获取数据中..."); + } else { + OtherUtils.dismissLoadingDialog(); + } + } + }); } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java index ab9e82a..dfd8d42 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java @@ -12,6 +12,7 @@ import com.casic.dcms.mvvm.view.fragment.LightOnMapFragment; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.utils.DeviceSizeUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; import java.util.ArrayList; @@ -40,8 +41,9 @@ //绑定TabLayout viewBinding.tabLayout.setupWithViewPager(viewBinding.viewPager); LinearLayout linearLayout = (LinearLayout) viewBinding.tabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerPadding(DeviceSizeUtil.dp2px(this, 12.5f)); } @Override 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 e8139ed..9ae249d 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 @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken; import com.pengxh.androidx.lite.callback.OnObserverCallback; import com.pengxh.androidx.lite.vm.BaseViewModel; +import com.pengxh.androidx.lite.vm.LoadState; import com.pengxh.androidx.lite.vm.ObserverSubscriber; import java.io.IOException; @@ -23,16 +24,17 @@ public MutableLiveData highEventModel = new MutableLiveData<>(); public void obtainEventSource(String begTime, String endTime) { + loadState.setValue(LoadState.Loading); Observable observable = RetrofitServiceManager.getEventSource(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 @@ -44,6 +46,8 @@ EventSourceBean resultBean = gson.fromJson(response, new TypeToken() { }.getType()); eventSourceModel.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 ac44a3b..6efeb42 100644 --- a/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java @@ -227,7 +227,6 @@ chart.getDescription().setEnabled(false); chart.setDragDecelerationFrictionCoef(0.95f);//图表转动阻力摩擦系数[0,1] chart.setBackgroundColor(Color.WHITE); //设置图表背景色 - chart.setRotationAngle(0f); chart.setRotationEnabled(true); chart.setHighlightPerTapEnabled(true); chart.animateY(1200, Easing.EaseInOutQuad);// 设置图表展示动画效果 @@ -237,19 +236,16 @@ chart.setEntryLabelColor(Color.BLUE);//图表文本字体颜色 chart.setEntryLabelTextSize(12f); //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 - chart.setExtraOffsets(13, 13, 13, 13); + chart.setExtraOffsets(0, 5, 0, 5); //设置图例位置 Legend legend = chart.getLegend(); - legend.setVerticalAlignment(Legend.LegendVerticalAlignment.CENTER); - legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT); - legend.setOrientation(Legend.LegendOrientation.VERTICAL); - legend.setFormSize(12f); - legend.setFormToTextSpace(8f); - legend.setTextSize(12f); + legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM); + legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER); + legend.setOrientation(Legend.LegendOrientation.HORIZONTAL); } public static void setPieChartData(PieChart chart, List entries) { - PieDataSet dataSet = new PieDataSet(entries, "案卷总览"); + PieDataSet dataSet = new PieDataSet(entries, ""); dataSet.setSliceSpace(3f);//设置饼状块之间的间隙 dataSet.setSelectionShift(5f);//设置饼状块被选中时突出的距离 //设置饼图块颜色 @@ -262,8 +258,8 @@ dataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); dataSet.setValueLineColor(Color.BLUE); - dataSet.setValueLinePart1Length(0.55f);//标签指示线前半截长度 - dataSet.setValueLinePart2Length(0.55f);//标签指示线后半截长度 + dataSet.setValueLinePart1Length(0.75f);//标签指示线前半截长度 + dataSet.setValueLinePart2Length(0.35f);//标签指示线后半截长度 PieData data = new PieData(dataSet); data.setValueFormatter(new ValueFormatter() { @Override diff --git a/app/src/main/res/layout/activity_event_resource.xml b/app/src/main/res/layout/activity_event_resource.xml index 068e657..91cb65a 100644 --- a/app/src/main/res/layout/activity_event_resource.xml +++ b/app/src/main/res/layout/activity_event_resource.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:layout_height="@dimen/dp_200" + android:elevation="10dp" + app:cardCornerRadius="5dp" + app:cardUseCompatPadding="true"> - + android:layout_height="match_parent" /> + - - + - - - - - - + android:layout_height="wrap_content" /> + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 9c582b0..d61ebf7 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -34,12 +34,14 @@ + + diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java index 9369460..f4236b4 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/EventSourceBean.java @@ -9,19 +9,27 @@ **/ public class EventSourceBean { - 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; } @@ -38,16 +46,7 @@ this.success = success; } - public List getData() { - return data; - } - - public void setData(List data) { - this.data = data; - } - - public static class DataBean { - + public static class DataDTO { private String caseCode; private String caseNum; private String caseSource; diff --git a/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java b/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java index da5d85b..c181430 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java +++ b/app/src/main/java/com/casic/dcms/mvvm/model/ExcelDataBean.java @@ -11,16 +11,40 @@ @SmartTable(name = "问题来源统计表表") public class ExcelDataBean { - @SmartColumn(id = 0, name = "序号") - private final int index; - @SmartColumn(id = 1, name = "问题来源") - private final String source; - @SmartColumn(id = 2, name = "上报数量") - private final int number; + @SmartColumn(id = 1, name = "序号") + private int index; + @SmartColumn(id = 2, name = "问题来源") + private String source; + @SmartColumn(id = 3, name = "上报数量") + private int number; public ExcelDataBean(int index, String source, int number) { this.index = index; this.source = source; this.number = number; } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public int getNumber() { + return number; + } + + public void setNumber(int number) { + this.number = number; + } } diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java index b82f6d5..c53319a 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/EventSourceActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.mvvm.vm.DataAnalysisViewModel; import com.casic.dcms.utils.ChartViewHelper; import com.casic.dcms.utils.LocaleConstant; +import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.TimeOrDateUtil; import com.github.mikephil.charting.data.PieEntry; import com.gyf.immersionbar.ImmersionBar; @@ -24,9 +25,9 @@ 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.DeviceSizeUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; +import com.pengxh.androidx.lite.vm.LoadState; import java.text.ParseException; import java.util.ArrayList; @@ -39,7 +40,7 @@ */ public class EventSourceActivity extends AndroidxBaseActivity { - private static final String TAG = EventSourceActivity.class.getSimpleName(); + private static final String TAG = "EventSourceActivity"; private final Context context = EventSourceActivity.this; private final List excelDataBeans = new ArrayList<>(); private final List pieEntries = new ArrayList<>(); @@ -68,7 +69,7 @@ //初始化表格 initTableConfig(); //初始化饼图 - ChartUtil.initPieChart(this, viewBinding.resourcePieChart); + ChartViewHelper.initPieChart(viewBinding.resourcePieChart); analysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); analysisViewModel.obtainEventSource(date[0], date[1]); } @@ -121,14 +122,18 @@ @Override public void onChanged(EventSourceBean resultBean) { if (resultBean.getCode() == 200) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); + List dataBeanList = resultBean.getData(); + for (int i = 0; i < dataBeanList.size(); i++) { + EventSourceBean.DataDTO dataBean = dataBeanList.get(i); + + String label = dataBean.getCaseSource().equals("--") ? "未知来源" : dataBean.getCaseSource(); + int number = Integer.parseInt(dataBean.getEventNum()) + Integer.parseInt(dataBean.getComponentNum()); + excelDataBeans.add(new ExcelDataBean(i, label, number)); + String caseNum = dataBean.getCaseNum(); //表格数据需要把0的加进去,饼图不需要 - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseSource(), Integer.parseInt(caseNum))); if (!caseNum.equals("0")) { - pieEntries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseSource())); + pieEntries.add(new PieEntry(Float.parseFloat(caseNum), label)); } } viewBinding.resourceTableView.setData(excelDataBeans); @@ -136,5 +141,15 @@ } } }); + analysisViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + OtherUtils.showLoadingDialog(context, "获取数据中..."); + } else { + OtherUtils.dismissLoadingDialog(); + } + } + }); } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java index ab9e82a..dfd8d42 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/StreetlightManagerActivity.java @@ -12,6 +12,7 @@ import com.casic.dcms.mvvm.view.fragment.LightOnMapFragment; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.utils.DeviceSizeUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; import java.util.ArrayList; @@ -40,8 +41,9 @@ //绑定TabLayout viewBinding.tabLayout.setupWithViewPager(viewBinding.viewPager); LinearLayout linearLayout = (LinearLayout) viewBinding.tabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerPadding(DeviceSizeUtil.dp2px(this, 12.5f)); } @Override 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 e8139ed..9ae249d 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 @@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken; import com.pengxh.androidx.lite.callback.OnObserverCallback; import com.pengxh.androidx.lite.vm.BaseViewModel; +import com.pengxh.androidx.lite.vm.LoadState; import com.pengxh.androidx.lite.vm.ObserverSubscriber; import java.io.IOException; @@ -23,16 +24,17 @@ public MutableLiveData highEventModel = new MutableLiveData<>(); public void obtainEventSource(String begTime, String endTime) { + loadState.setValue(LoadState.Loading); Observable observable = RetrofitServiceManager.getEventSource(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 @@ -44,6 +46,8 @@ EventSourceBean resultBean = gson.fromJson(response, new TypeToken() { }.getType()); eventSourceModel.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 ac44a3b..6efeb42 100644 --- a/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java @@ -227,7 +227,6 @@ chart.getDescription().setEnabled(false); chart.setDragDecelerationFrictionCoef(0.95f);//图表转动阻力摩擦系数[0,1] chart.setBackgroundColor(Color.WHITE); //设置图表背景色 - chart.setRotationAngle(0f); chart.setRotationEnabled(true); chart.setHighlightPerTapEnabled(true); chart.animateY(1200, Easing.EaseInOutQuad);// 设置图表展示动画效果 @@ -237,19 +236,16 @@ chart.setEntryLabelColor(Color.BLUE);//图表文本字体颜色 chart.setEntryLabelTextSize(12f); //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 - chart.setExtraOffsets(13, 13, 13, 13); + chart.setExtraOffsets(0, 5, 0, 5); //设置图例位置 Legend legend = chart.getLegend(); - legend.setVerticalAlignment(Legend.LegendVerticalAlignment.CENTER); - legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT); - legend.setOrientation(Legend.LegendOrientation.VERTICAL); - legend.setFormSize(12f); - legend.setFormToTextSpace(8f); - legend.setTextSize(12f); + legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM); + legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER); + legend.setOrientation(Legend.LegendOrientation.HORIZONTAL); } public static void setPieChartData(PieChart chart, List entries) { - PieDataSet dataSet = new PieDataSet(entries, "案卷总览"); + PieDataSet dataSet = new PieDataSet(entries, ""); dataSet.setSliceSpace(3f);//设置饼状块之间的间隙 dataSet.setSelectionShift(5f);//设置饼状块被选中时突出的距离 //设置饼图块颜色 @@ -262,8 +258,8 @@ dataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); dataSet.setValueLineColor(Color.BLUE); - dataSet.setValueLinePart1Length(0.55f);//标签指示线前半截长度 - dataSet.setValueLinePart2Length(0.55f);//标签指示线后半截长度 + dataSet.setValueLinePart1Length(0.75f);//标签指示线前半截长度 + dataSet.setValueLinePart2Length(0.35f);//标签指示线后半截长度 PieData data = new PieData(dataSet); data.setValueFormatter(new ValueFormatter() { @Override diff --git a/app/src/main/res/layout/activity_event_resource.xml b/app/src/main/res/layout/activity_event_resource.xml index 068e657..91cb65a 100644 --- a/app/src/main/res/layout/activity_event_resource.xml +++ b/app/src/main/res/layout/activity_event_resource.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:layout_height="@dimen/dp_200" + android:elevation="10dp" + app:cardCornerRadius="5dp" + app:cardUseCompatPadding="true"> - + android:layout_height="match_parent" /> + - - + - - - - - - + android:layout_height="wrap_content" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_street_light.xml b/app/src/main/res/layout/activity_street_light.xml index d1102d8..ae4fea7 100644 --- a/app/src/main/res/layout/activity_street_light.xml +++ b/app/src/main/res/layout/activity_street_light.xml @@ -12,6 +12,7 @@