diff --git a/.idea/misc.xml b/.idea/misc.xml index 5907d9c..f681423 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -226,6 +226,7 @@ + diff --git a/.idea/misc.xml b/.idea/misc.xml index 5907d9c..f681423 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -226,6 +226,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java b/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java new file mode 100644 index 0000000..d3e0780 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java @@ -0,0 +1,226 @@ +package com.casic.dcms.model; + +import java.util.List; + +public class DeptHandleConditionBean { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return 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; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String checkedNum; + private String currentCheckNum; + private String delayCheckRate; + private String delayCheckedNum; + private String delayGrade; + private String delayTotalNum; + private String delayUnCheckRate; + private String delayUncheckGrade; + private String delayUncheckNum; + private String depId; + private String departName; + private String grade; + private String lastCheckNum; + private String redoGrade; + private String redoNum; + private String redoRate; + private String score; + private String totalCheckNum; + private String workGrade; + private String workRate; + + public String getCheckedNum() { + return checkedNum; + } + + public void setCheckedNum(String checkedNum) { + this.checkedNum = checkedNum; + } + + public String getCurrentCheckNum() { + return currentCheckNum; + } + + public void setCurrentCheckNum(String currentCheckNum) { + this.currentCheckNum = currentCheckNum; + } + + public String getDelayCheckRate() { + return delayCheckRate; + } + + public void setDelayCheckRate(String delayCheckRate) { + this.delayCheckRate = delayCheckRate; + } + + public String getDelayCheckedNum() { + return delayCheckedNum; + } + + public void setDelayCheckedNum(String delayCheckedNum) { + this.delayCheckedNum = delayCheckedNum; + } + + public String getDelayGrade() { + return delayGrade; + } + + public void setDelayGrade(String delayGrade) { + this.delayGrade = delayGrade; + } + + public String getDelayTotalNum() { + return delayTotalNum; + } + + public void setDelayTotalNum(String delayTotalNum) { + this.delayTotalNum = delayTotalNum; + } + + public String getDelayUnCheckRate() { + return delayUnCheckRate; + } + + public void setDelayUnCheckRate(String delayUnCheckRate) { + this.delayUnCheckRate = delayUnCheckRate; + } + + public String getDelayUncheckGrade() { + return delayUncheckGrade; + } + + public void setDelayUncheckGrade(String delayUncheckGrade) { + this.delayUncheckGrade = delayUncheckGrade; + } + + public String getDelayUncheckNum() { + return delayUncheckNum; + } + + public void setDelayUncheckNum(String delayUncheckNum) { + this.delayUncheckNum = delayUncheckNum; + } + + public String getDepId() { + return depId; + } + + public void setDepId(String depId) { + this.depId = depId; + } + + public String getDepartName() { + return departName; + } + + public void setDepartName(String departName) { + this.departName = departName; + } + + public String getGrade() { + return grade; + } + + public void setGrade(String grade) { + this.grade = grade; + } + + public String getLastCheckNum() { + return lastCheckNum; + } + + public void setLastCheckNum(String lastCheckNum) { + this.lastCheckNum = lastCheckNum; + } + + public String getRedoGrade() { + return redoGrade; + } + + public void setRedoGrade(String redoGrade) { + this.redoGrade = redoGrade; + } + + public String getRedoNum() { + return redoNum; + } + + public void setRedoNum(String redoNum) { + this.redoNum = redoNum; + } + + public String getRedoRate() { + return redoRate; + } + + public void setRedoRate(String redoRate) { + this.redoRate = redoRate; + } + + public String getScore() { + return score; + } + + public void setScore(String score) { + this.score = score; + } + + public String getTotalCheckNum() { + return totalCheckNum; + } + + public void setTotalCheckNum(String totalCheckNum) { + this.totalCheckNum = totalCheckNum; + } + + public String getWorkGrade() { + return workGrade; + } + + public void setWorkGrade(String workGrade) { + this.workGrade = workGrade; + } + + public String getWorkRate() { + return workRate; + } + + public void setWorkRate(String workRate) { + this.workRate = workRate; + } + } +} diff --git a/.idea/misc.xml b/.idea/misc.xml index 5907d9c..f681423 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -226,6 +226,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java b/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java new file mode 100644 index 0000000..d3e0780 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java @@ -0,0 +1,226 @@ +package com.casic.dcms.model; + +import java.util.List; + +public class DeptHandleConditionBean { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return 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; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String checkedNum; + private String currentCheckNum; + private String delayCheckRate; + private String delayCheckedNum; + private String delayGrade; + private String delayTotalNum; + private String delayUnCheckRate; + private String delayUncheckGrade; + private String delayUncheckNum; + private String depId; + private String departName; + private String grade; + private String lastCheckNum; + private String redoGrade; + private String redoNum; + private String redoRate; + private String score; + private String totalCheckNum; + private String workGrade; + private String workRate; + + public String getCheckedNum() { + return checkedNum; + } + + public void setCheckedNum(String checkedNum) { + this.checkedNum = checkedNum; + } + + public String getCurrentCheckNum() { + return currentCheckNum; + } + + public void setCurrentCheckNum(String currentCheckNum) { + this.currentCheckNum = currentCheckNum; + } + + public String getDelayCheckRate() { + return delayCheckRate; + } + + public void setDelayCheckRate(String delayCheckRate) { + this.delayCheckRate = delayCheckRate; + } + + public String getDelayCheckedNum() { + return delayCheckedNum; + } + + public void setDelayCheckedNum(String delayCheckedNum) { + this.delayCheckedNum = delayCheckedNum; + } + + public String getDelayGrade() { + return delayGrade; + } + + public void setDelayGrade(String delayGrade) { + this.delayGrade = delayGrade; + } + + public String getDelayTotalNum() { + return delayTotalNum; + } + + public void setDelayTotalNum(String delayTotalNum) { + this.delayTotalNum = delayTotalNum; + } + + public String getDelayUnCheckRate() { + return delayUnCheckRate; + } + + public void setDelayUnCheckRate(String delayUnCheckRate) { + this.delayUnCheckRate = delayUnCheckRate; + } + + public String getDelayUncheckGrade() { + return delayUncheckGrade; + } + + public void setDelayUncheckGrade(String delayUncheckGrade) { + this.delayUncheckGrade = delayUncheckGrade; + } + + public String getDelayUncheckNum() { + return delayUncheckNum; + } + + public void setDelayUncheckNum(String delayUncheckNum) { + this.delayUncheckNum = delayUncheckNum; + } + + public String getDepId() { + return depId; + } + + public void setDepId(String depId) { + this.depId = depId; + } + + public String getDepartName() { + return departName; + } + + public void setDepartName(String departName) { + this.departName = departName; + } + + public String getGrade() { + return grade; + } + + public void setGrade(String grade) { + this.grade = grade; + } + + public String getLastCheckNum() { + return lastCheckNum; + } + + public void setLastCheckNum(String lastCheckNum) { + this.lastCheckNum = lastCheckNum; + } + + public String getRedoGrade() { + return redoGrade; + } + + public void setRedoGrade(String redoGrade) { + this.redoGrade = redoGrade; + } + + public String getRedoNum() { + return redoNum; + } + + public void setRedoNum(String redoNum) { + this.redoNum = redoNum; + } + + public String getRedoRate() { + return redoRate; + } + + public void setRedoRate(String redoRate) { + this.redoRate = redoRate; + } + + public String getScore() { + return score; + } + + public void setScore(String score) { + this.score = score; + } + + public String getTotalCheckNum() { + return totalCheckNum; + } + + public void setTotalCheckNum(String totalCheckNum) { + this.totalCheckNum = totalCheckNum; + } + + public String getWorkGrade() { + return workGrade; + } + + public void setWorkGrade(String workGrade) { + this.workGrade = workGrade; + } + + public String getWorkRate() { + return workRate; + } + + public void setWorkRate(String workRate) { + this.workRate = workRate; + } + } +} 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 62f8271..4fbbff2 100644 --- a/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java @@ -3,8 +3,6 @@ import android.graphics.Color; -import androidx.core.content.ContextCompat; - import com.casic.dcms.R; import com.casic.dcms.base.BaseApplication; import com.casic.dcms.widgets.DetailsMarkerView; @@ -44,7 +42,6 @@ public class ChartViewHelper { private static final String TAG = "ChartViewHelper"; - private static final DecimalFormat decimalFormat = new DecimalFormat("##0.00"); private static final String[] labelName = {"普通", "快速", "三包"}; private static void initPieChart(PieChart chart) { @@ -83,6 +80,7 @@ dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); dataSet.setValueLineColor(Color.BLUE); PieData data = new PieData(dataSet); + DecimalFormat decimalFormat = new DecimalFormat("##0.00"); data.setValueFormatter(new ValueFormatter() { @Override public String getFormattedValue(float value) { @@ -96,6 +94,65 @@ chart.invalidate(); } + private static void initBarChart(HorizontalBarChart chart) { + chart.setDrawGridBackground(false); + chart.setDrawBorders(false); + chart.setScaleEnabled(false); + //去掉描述 + chart.getDescription().setEnabled(false); + //设置图例位置 + Legend legend = chart.getLegend(); + legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM); + legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER); + legend.setOrientation(Legend.LegendOrientation.HORIZONTAL); + legend.setWordWrapEnabled(true); + + XAxis xAxis = chart.getXAxis(); + xAxis.setTextColor(IntHub.convertColor(BaseApplication.get(), R.color.mainTextColor)); + xAxis.setTextSize(12f); + xAxis.setDrawLabels(false);//绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true);//是否绘制轴线 + xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 + xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); + //设置样式 + YAxis rightAxis = chart.getAxisRight(); + //设置图表右边的y轴禁用 + rightAxis.setEnabled(false); + YAxis leftAxis = chart.getAxisLeft(); + leftAxis.setAxisMinimum(0f); + } + + public static void setBarChartData(HorizontalBarChart chart, List totalCheckBars, List checkedBars) { + initBarChart(chart); + DecimalFormat decimalFormat = new DecimalFormat("##0"); + //绑定数据 + BarDataSet totalCheckBarDataSet = new BarDataSet(totalCheckBars, "派发数"); + totalCheckBarDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.barChartColor)); + totalCheckBarDataSet.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return decimalFormat.format(value); + } + }); + + BarDataSet checkedBarDataSet = new BarDataSet(checkedBars, "处置数"); + checkedBarDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor)); + checkedBarDataSet.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return decimalFormat.format(value); + } + }); + + BarData barData = new BarData(totalCheckBarDataSet, checkedBarDataSet); + barData.setBarWidth(0.5f); + barData.groupBars(0f, 0.5f, 0); + chart.setData(barData); + chart.invalidate(); + } + + /////////////////////////////////////////////////////////////////////////////////// + public static void initLineChart(LineChart chart) { chart.setDrawGridBackground(false); chart.setDrawBorders(false); @@ -110,7 +167,7 @@ chart.setScaleYEnabled(false);//Y轴不可缩放 //设置x轴 XAxis xAxis = chart.getXAxis(); - xAxis.setTextColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainTextColor)); + xAxis.setTextColor(IntHub.convertColor(BaseApplication.get(), R.color.mainTextColor)); xAxis.setTextSize(12f); xAxis.setAxisMinimum(1f); xAxis.setAxisMaximum(maxDay); @@ -137,13 +194,13 @@ List lineDataSets = new ArrayList<>(); //设置数据 LineDataSet totalDataSet = new LineDataSet(totalEntries, "上报案卷"); - totalDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//线条颜色 - totalDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 + totalDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//线条颜色 + totalDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 lineDataSets.add(totalDataSet); LineDataSet handleDataSet = new LineDataSet(handleEntries, "已处理案卷"); - handleDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 - handleDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 + handleDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 + handleDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 lineDataSets.add(handleDataSet); LineData lineData = new LineData(lineDataSets); @@ -156,18 +213,18 @@ List lineDataSets = new ArrayList<>(); //设置数据 LineDataSet commonDataSet = new LineDataSet(commonEntries, "普通上报"); - commonDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 - commonDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 + commonDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 + commonDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 lineDataSets.add(commonDataSet); LineDataSet quickDataSet = new LineDataSet(quickEntries, "快速上报"); - quickDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//线条颜色 - quickDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 + quickDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//线条颜色 + quickDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 lineDataSets.add(quickDataSet); LineDataSet packageDataSet = new LineDataSet(packageEntries, "三包上报"); - packageDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainThemeColor));//线条颜色 - packageDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainThemeColor));//圆点颜色 + packageDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.mainThemeColor));//线条颜色 + packageDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.mainThemeColor));//圆点颜色 lineDataSets.add(packageDataSet); LineData lineData = new LineData(lineDataSets); @@ -186,7 +243,7 @@ chart.getLegend().setEnabled(false); XAxis xAxis = chart.getXAxis(); - xAxis.setTextColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainTextColor)); + xAxis.setTextColor(IntHub.convertColor(BaseApplication.get(), R.color.mainTextColor)); xAxis.setTextSize(12f); xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 xAxis.setLabelCount(labelName.length); // 设置x轴上的标签个数 @@ -211,55 +268,8 @@ public static void setBarChartData(BarChart chart, List entries) { //绑定数据 BarDataSet barDataSet = new BarDataSet(entries, ""); - barDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.barChartColor)); - barDataSet.setValueFormatter(new ValueFormatter() { - @Override - public String getFormattedValue(float value) { - return decimalFormat.format(value); - } - }); - BarData barData = new BarData(barDataSet); - barData.setBarWidth(0.5f); - chart.setData(barData); - chart.invalidate(); - } - - public static void initBarChart(HorizontalBarChart chart, List labelName) { - chart.setDrawGridBackground(false); - chart.setDrawBorders(false); - chart.setScaleEnabled(false); - //去掉描述 - chart.getDescription().setEnabled(false); - //去掉图例 - chart.getLegend().setEnabled(false); - - XAxis xAxis = chart.getXAxis(); - xAxis.setTextColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainTextColor)); - xAxis.setTextSize(12f); - xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 - xAxis.setLabelCount(labelName.size()); // 设置x轴上的标签个数 - xAxis.setValueFormatter(new ValueFormatter() { - @Override - public String getFormattedValue(float value) { - return labelName.get((int) value); - } - }); - xAxis.setDrawAxisLine(true);//是否绘制轴线 - xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 - xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); - chart.setExtraBottomOffset(5f);//解决X轴显示不完全问题 - //设置样式 - YAxis rightAxis = chart.getAxisRight(); - //设置图表右边的y轴禁用 - rightAxis.setEnabled(false); - YAxis leftAxis = chart.getAxisLeft(); - leftAxis.setAxisMinimum(0f); - } - - public static void setBarChartData(HorizontalBarChart chart, List entries) { - //绑定数据 - BarDataSet barDataSet = new BarDataSet(entries, ""); - barDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.barChartColor)); + barDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.barChartColor)); + DecimalFormat decimalFormat = new DecimalFormat("##0"); barDataSet.setValueFormatter(new ValueFormatter() { @Override public String getFormattedValue(float value) { diff --git a/.idea/misc.xml b/.idea/misc.xml index 5907d9c..f681423 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -226,6 +226,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java b/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java new file mode 100644 index 0000000..d3e0780 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java @@ -0,0 +1,226 @@ +package com.casic.dcms.model; + +import java.util.List; + +public class DeptHandleConditionBean { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return 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; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String checkedNum; + private String currentCheckNum; + private String delayCheckRate; + private String delayCheckedNum; + private String delayGrade; + private String delayTotalNum; + private String delayUnCheckRate; + private String delayUncheckGrade; + private String delayUncheckNum; + private String depId; + private String departName; + private String grade; + private String lastCheckNum; + private String redoGrade; + private String redoNum; + private String redoRate; + private String score; + private String totalCheckNum; + private String workGrade; + private String workRate; + + public String getCheckedNum() { + return checkedNum; + } + + public void setCheckedNum(String checkedNum) { + this.checkedNum = checkedNum; + } + + public String getCurrentCheckNum() { + return currentCheckNum; + } + + public void setCurrentCheckNum(String currentCheckNum) { + this.currentCheckNum = currentCheckNum; + } + + public String getDelayCheckRate() { + return delayCheckRate; + } + + public void setDelayCheckRate(String delayCheckRate) { + this.delayCheckRate = delayCheckRate; + } + + public String getDelayCheckedNum() { + return delayCheckedNum; + } + + public void setDelayCheckedNum(String delayCheckedNum) { + this.delayCheckedNum = delayCheckedNum; + } + + public String getDelayGrade() { + return delayGrade; + } + + public void setDelayGrade(String delayGrade) { + this.delayGrade = delayGrade; + } + + public String getDelayTotalNum() { + return delayTotalNum; + } + + public void setDelayTotalNum(String delayTotalNum) { + this.delayTotalNum = delayTotalNum; + } + + public String getDelayUnCheckRate() { + return delayUnCheckRate; + } + + public void setDelayUnCheckRate(String delayUnCheckRate) { + this.delayUnCheckRate = delayUnCheckRate; + } + + public String getDelayUncheckGrade() { + return delayUncheckGrade; + } + + public void setDelayUncheckGrade(String delayUncheckGrade) { + this.delayUncheckGrade = delayUncheckGrade; + } + + public String getDelayUncheckNum() { + return delayUncheckNum; + } + + public void setDelayUncheckNum(String delayUncheckNum) { + this.delayUncheckNum = delayUncheckNum; + } + + public String getDepId() { + return depId; + } + + public void setDepId(String depId) { + this.depId = depId; + } + + public String getDepartName() { + return departName; + } + + public void setDepartName(String departName) { + this.departName = departName; + } + + public String getGrade() { + return grade; + } + + public void setGrade(String grade) { + this.grade = grade; + } + + public String getLastCheckNum() { + return lastCheckNum; + } + + public void setLastCheckNum(String lastCheckNum) { + this.lastCheckNum = lastCheckNum; + } + + public String getRedoGrade() { + return redoGrade; + } + + public void setRedoGrade(String redoGrade) { + this.redoGrade = redoGrade; + } + + public String getRedoNum() { + return redoNum; + } + + public void setRedoNum(String redoNum) { + this.redoNum = redoNum; + } + + public String getRedoRate() { + return redoRate; + } + + public void setRedoRate(String redoRate) { + this.redoRate = redoRate; + } + + public String getScore() { + return score; + } + + public void setScore(String score) { + this.score = score; + } + + public String getTotalCheckNum() { + return totalCheckNum; + } + + public void setTotalCheckNum(String totalCheckNum) { + this.totalCheckNum = totalCheckNum; + } + + public String getWorkGrade() { + return workGrade; + } + + public void setWorkGrade(String workGrade) { + this.workGrade = workGrade; + } + + public String getWorkRate() { + return workRate; + } + + public void setWorkRate(String workRate) { + this.workRate = workRate; + } + } +} 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 62f8271..4fbbff2 100644 --- a/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java @@ -3,8 +3,6 @@ import android.graphics.Color; -import androidx.core.content.ContextCompat; - import com.casic.dcms.R; import com.casic.dcms.base.BaseApplication; import com.casic.dcms.widgets.DetailsMarkerView; @@ -44,7 +42,6 @@ public class ChartViewHelper { private static final String TAG = "ChartViewHelper"; - private static final DecimalFormat decimalFormat = new DecimalFormat("##0.00"); private static final String[] labelName = {"普通", "快速", "三包"}; private static void initPieChart(PieChart chart) { @@ -83,6 +80,7 @@ dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); dataSet.setValueLineColor(Color.BLUE); PieData data = new PieData(dataSet); + DecimalFormat decimalFormat = new DecimalFormat("##0.00"); data.setValueFormatter(new ValueFormatter() { @Override public String getFormattedValue(float value) { @@ -96,6 +94,65 @@ chart.invalidate(); } + private static void initBarChart(HorizontalBarChart chart) { + chart.setDrawGridBackground(false); + chart.setDrawBorders(false); + chart.setScaleEnabled(false); + //去掉描述 + chart.getDescription().setEnabled(false); + //设置图例位置 + Legend legend = chart.getLegend(); + legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM); + legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER); + legend.setOrientation(Legend.LegendOrientation.HORIZONTAL); + legend.setWordWrapEnabled(true); + + XAxis xAxis = chart.getXAxis(); + xAxis.setTextColor(IntHub.convertColor(BaseApplication.get(), R.color.mainTextColor)); + xAxis.setTextSize(12f); + xAxis.setDrawLabels(false);//绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true);//是否绘制轴线 + xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 + xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); + //设置样式 + YAxis rightAxis = chart.getAxisRight(); + //设置图表右边的y轴禁用 + rightAxis.setEnabled(false); + YAxis leftAxis = chart.getAxisLeft(); + leftAxis.setAxisMinimum(0f); + } + + public static void setBarChartData(HorizontalBarChart chart, List totalCheckBars, List checkedBars) { + initBarChart(chart); + DecimalFormat decimalFormat = new DecimalFormat("##0"); + //绑定数据 + BarDataSet totalCheckBarDataSet = new BarDataSet(totalCheckBars, "派发数"); + totalCheckBarDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.barChartColor)); + totalCheckBarDataSet.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return decimalFormat.format(value); + } + }); + + BarDataSet checkedBarDataSet = new BarDataSet(checkedBars, "处置数"); + checkedBarDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor)); + checkedBarDataSet.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return decimalFormat.format(value); + } + }); + + BarData barData = new BarData(totalCheckBarDataSet, checkedBarDataSet); + barData.setBarWidth(0.5f); + barData.groupBars(0f, 0.5f, 0); + chart.setData(barData); + chart.invalidate(); + } + + /////////////////////////////////////////////////////////////////////////////////// + public static void initLineChart(LineChart chart) { chart.setDrawGridBackground(false); chart.setDrawBorders(false); @@ -110,7 +167,7 @@ chart.setScaleYEnabled(false);//Y轴不可缩放 //设置x轴 XAxis xAxis = chart.getXAxis(); - xAxis.setTextColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainTextColor)); + xAxis.setTextColor(IntHub.convertColor(BaseApplication.get(), R.color.mainTextColor)); xAxis.setTextSize(12f); xAxis.setAxisMinimum(1f); xAxis.setAxisMaximum(maxDay); @@ -137,13 +194,13 @@ List lineDataSets = new ArrayList<>(); //设置数据 LineDataSet totalDataSet = new LineDataSet(totalEntries, "上报案卷"); - totalDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//线条颜色 - totalDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 + totalDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//线条颜色 + totalDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 lineDataSets.add(totalDataSet); LineDataSet handleDataSet = new LineDataSet(handleEntries, "已处理案卷"); - handleDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 - handleDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 + handleDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 + handleDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 lineDataSets.add(handleDataSet); LineData lineData = new LineData(lineDataSets); @@ -156,18 +213,18 @@ List lineDataSets = new ArrayList<>(); //设置数据 LineDataSet commonDataSet = new LineDataSet(commonEntries, "普通上报"); - commonDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 - commonDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 + commonDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 + commonDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 lineDataSets.add(commonDataSet); LineDataSet quickDataSet = new LineDataSet(quickEntries, "快速上报"); - quickDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//线条颜色 - quickDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 + quickDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//线条颜色 + quickDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 lineDataSets.add(quickDataSet); LineDataSet packageDataSet = new LineDataSet(packageEntries, "三包上报"); - packageDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainThemeColor));//线条颜色 - packageDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainThemeColor));//圆点颜色 + packageDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.mainThemeColor));//线条颜色 + packageDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.mainThemeColor));//圆点颜色 lineDataSets.add(packageDataSet); LineData lineData = new LineData(lineDataSets); @@ -186,7 +243,7 @@ chart.getLegend().setEnabled(false); XAxis xAxis = chart.getXAxis(); - xAxis.setTextColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainTextColor)); + xAxis.setTextColor(IntHub.convertColor(BaseApplication.get(), R.color.mainTextColor)); xAxis.setTextSize(12f); xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 xAxis.setLabelCount(labelName.length); // 设置x轴上的标签个数 @@ -211,55 +268,8 @@ public static void setBarChartData(BarChart chart, List entries) { //绑定数据 BarDataSet barDataSet = new BarDataSet(entries, ""); - barDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.barChartColor)); - barDataSet.setValueFormatter(new ValueFormatter() { - @Override - public String getFormattedValue(float value) { - return decimalFormat.format(value); - } - }); - BarData barData = new BarData(barDataSet); - barData.setBarWidth(0.5f); - chart.setData(barData); - chart.invalidate(); - } - - public static void initBarChart(HorizontalBarChart chart, List labelName) { - chart.setDrawGridBackground(false); - chart.setDrawBorders(false); - chart.setScaleEnabled(false); - //去掉描述 - chart.getDescription().setEnabled(false); - //去掉图例 - chart.getLegend().setEnabled(false); - - XAxis xAxis = chart.getXAxis(); - xAxis.setTextColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainTextColor)); - xAxis.setTextSize(12f); - xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 - xAxis.setLabelCount(labelName.size()); // 设置x轴上的标签个数 - xAxis.setValueFormatter(new ValueFormatter() { - @Override - public String getFormattedValue(float value) { - return labelName.get((int) value); - } - }); - xAxis.setDrawAxisLine(true);//是否绘制轴线 - xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 - xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); - chart.setExtraBottomOffset(5f);//解决X轴显示不完全问题 - //设置样式 - YAxis rightAxis = chart.getAxisRight(); - //设置图表右边的y轴禁用 - rightAxis.setEnabled(false); - YAxis leftAxis = chart.getAxisLeft(); - leftAxis.setAxisMinimum(0f); - } - - public static void setBarChartData(HorizontalBarChart chart, List entries) { - //绑定数据 - BarDataSet barDataSet = new BarDataSet(entries, ""); - barDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.barChartColor)); + barDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.barChartColor)); + DecimalFormat decimalFormat = new DecimalFormat("##0"); barDataSet.setValueFormatter(new ValueFormatter() { @Override public String getFormattedValue(float value) { diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 9567429..1e7c4a8 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -170,7 +170,17 @@ ); /** - * 获取问题来源 + * 获取单位处置情况 + */ + @GET("/departmentAssess/departmentAccess") + Observable getDeptHandleCondition( + @Header("token") String token, + @Query("begTime") String begTime, + @Query("endTime") String endTime + ); + + /** + * 获取城市基础数据 */ @GET("/dcm/view/list") Observable getCityBaseData(@Header("token") String token); diff --git a/.idea/misc.xml b/.idea/misc.xml index 5907d9c..f681423 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -226,6 +226,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java b/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java new file mode 100644 index 0000000..d3e0780 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java @@ -0,0 +1,226 @@ +package com.casic.dcms.model; + +import java.util.List; + +public class DeptHandleConditionBean { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return 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; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String checkedNum; + private String currentCheckNum; + private String delayCheckRate; + private String delayCheckedNum; + private String delayGrade; + private String delayTotalNum; + private String delayUnCheckRate; + private String delayUncheckGrade; + private String delayUncheckNum; + private String depId; + private String departName; + private String grade; + private String lastCheckNum; + private String redoGrade; + private String redoNum; + private String redoRate; + private String score; + private String totalCheckNum; + private String workGrade; + private String workRate; + + public String getCheckedNum() { + return checkedNum; + } + + public void setCheckedNum(String checkedNum) { + this.checkedNum = checkedNum; + } + + public String getCurrentCheckNum() { + return currentCheckNum; + } + + public void setCurrentCheckNum(String currentCheckNum) { + this.currentCheckNum = currentCheckNum; + } + + public String getDelayCheckRate() { + return delayCheckRate; + } + + public void setDelayCheckRate(String delayCheckRate) { + this.delayCheckRate = delayCheckRate; + } + + public String getDelayCheckedNum() { + return delayCheckedNum; + } + + public void setDelayCheckedNum(String delayCheckedNum) { + this.delayCheckedNum = delayCheckedNum; + } + + public String getDelayGrade() { + return delayGrade; + } + + public void setDelayGrade(String delayGrade) { + this.delayGrade = delayGrade; + } + + public String getDelayTotalNum() { + return delayTotalNum; + } + + public void setDelayTotalNum(String delayTotalNum) { + this.delayTotalNum = delayTotalNum; + } + + public String getDelayUnCheckRate() { + return delayUnCheckRate; + } + + public void setDelayUnCheckRate(String delayUnCheckRate) { + this.delayUnCheckRate = delayUnCheckRate; + } + + public String getDelayUncheckGrade() { + return delayUncheckGrade; + } + + public void setDelayUncheckGrade(String delayUncheckGrade) { + this.delayUncheckGrade = delayUncheckGrade; + } + + public String getDelayUncheckNum() { + return delayUncheckNum; + } + + public void setDelayUncheckNum(String delayUncheckNum) { + this.delayUncheckNum = delayUncheckNum; + } + + public String getDepId() { + return depId; + } + + public void setDepId(String depId) { + this.depId = depId; + } + + public String getDepartName() { + return departName; + } + + public void setDepartName(String departName) { + this.departName = departName; + } + + public String getGrade() { + return grade; + } + + public void setGrade(String grade) { + this.grade = grade; + } + + public String getLastCheckNum() { + return lastCheckNum; + } + + public void setLastCheckNum(String lastCheckNum) { + this.lastCheckNum = lastCheckNum; + } + + public String getRedoGrade() { + return redoGrade; + } + + public void setRedoGrade(String redoGrade) { + this.redoGrade = redoGrade; + } + + public String getRedoNum() { + return redoNum; + } + + public void setRedoNum(String redoNum) { + this.redoNum = redoNum; + } + + public String getRedoRate() { + return redoRate; + } + + public void setRedoRate(String redoRate) { + this.redoRate = redoRate; + } + + public String getScore() { + return score; + } + + public void setScore(String score) { + this.score = score; + } + + public String getTotalCheckNum() { + return totalCheckNum; + } + + public void setTotalCheckNum(String totalCheckNum) { + this.totalCheckNum = totalCheckNum; + } + + public String getWorkGrade() { + return workGrade; + } + + public void setWorkGrade(String workGrade) { + this.workGrade = workGrade; + } + + public String getWorkRate() { + return workRate; + } + + public void setWorkRate(String workRate) { + this.workRate = workRate; + } + } +} 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 62f8271..4fbbff2 100644 --- a/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java @@ -3,8 +3,6 @@ import android.graphics.Color; -import androidx.core.content.ContextCompat; - import com.casic.dcms.R; import com.casic.dcms.base.BaseApplication; import com.casic.dcms.widgets.DetailsMarkerView; @@ -44,7 +42,6 @@ public class ChartViewHelper { private static final String TAG = "ChartViewHelper"; - private static final DecimalFormat decimalFormat = new DecimalFormat("##0.00"); private static final String[] labelName = {"普通", "快速", "三包"}; private static void initPieChart(PieChart chart) { @@ -83,6 +80,7 @@ dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); dataSet.setValueLineColor(Color.BLUE); PieData data = new PieData(dataSet); + DecimalFormat decimalFormat = new DecimalFormat("##0.00"); data.setValueFormatter(new ValueFormatter() { @Override public String getFormattedValue(float value) { @@ -96,6 +94,65 @@ chart.invalidate(); } + private static void initBarChart(HorizontalBarChart chart) { + chart.setDrawGridBackground(false); + chart.setDrawBorders(false); + chart.setScaleEnabled(false); + //去掉描述 + chart.getDescription().setEnabled(false); + //设置图例位置 + Legend legend = chart.getLegend(); + legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM); + legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER); + legend.setOrientation(Legend.LegendOrientation.HORIZONTAL); + legend.setWordWrapEnabled(true); + + XAxis xAxis = chart.getXAxis(); + xAxis.setTextColor(IntHub.convertColor(BaseApplication.get(), R.color.mainTextColor)); + xAxis.setTextSize(12f); + xAxis.setDrawLabels(false);//绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true);//是否绘制轴线 + xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 + xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); + //设置样式 + YAxis rightAxis = chart.getAxisRight(); + //设置图表右边的y轴禁用 + rightAxis.setEnabled(false); + YAxis leftAxis = chart.getAxisLeft(); + leftAxis.setAxisMinimum(0f); + } + + public static void setBarChartData(HorizontalBarChart chart, List totalCheckBars, List checkedBars) { + initBarChart(chart); + DecimalFormat decimalFormat = new DecimalFormat("##0"); + //绑定数据 + BarDataSet totalCheckBarDataSet = new BarDataSet(totalCheckBars, "派发数"); + totalCheckBarDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.barChartColor)); + totalCheckBarDataSet.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return decimalFormat.format(value); + } + }); + + BarDataSet checkedBarDataSet = new BarDataSet(checkedBars, "处置数"); + checkedBarDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor)); + checkedBarDataSet.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return decimalFormat.format(value); + } + }); + + BarData barData = new BarData(totalCheckBarDataSet, checkedBarDataSet); + barData.setBarWidth(0.5f); + barData.groupBars(0f, 0.5f, 0); + chart.setData(barData); + chart.invalidate(); + } + + /////////////////////////////////////////////////////////////////////////////////// + public static void initLineChart(LineChart chart) { chart.setDrawGridBackground(false); chart.setDrawBorders(false); @@ -110,7 +167,7 @@ chart.setScaleYEnabled(false);//Y轴不可缩放 //设置x轴 XAxis xAxis = chart.getXAxis(); - xAxis.setTextColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainTextColor)); + xAxis.setTextColor(IntHub.convertColor(BaseApplication.get(), R.color.mainTextColor)); xAxis.setTextSize(12f); xAxis.setAxisMinimum(1f); xAxis.setAxisMaximum(maxDay); @@ -137,13 +194,13 @@ List lineDataSets = new ArrayList<>(); //设置数据 LineDataSet totalDataSet = new LineDataSet(totalEntries, "上报案卷"); - totalDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//线条颜色 - totalDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 + totalDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//线条颜色 + totalDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 lineDataSets.add(totalDataSet); LineDataSet handleDataSet = new LineDataSet(handleEntries, "已处理案卷"); - handleDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 - handleDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 + handleDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 + handleDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 lineDataSets.add(handleDataSet); LineData lineData = new LineData(lineDataSets); @@ -156,18 +213,18 @@ List lineDataSets = new ArrayList<>(); //设置数据 LineDataSet commonDataSet = new LineDataSet(commonEntries, "普通上报"); - commonDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 - commonDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 + commonDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 + commonDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 lineDataSets.add(commonDataSet); LineDataSet quickDataSet = new LineDataSet(quickEntries, "快速上报"); - quickDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//线条颜色 - quickDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 + quickDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//线条颜色 + quickDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 lineDataSets.add(quickDataSet); LineDataSet packageDataSet = new LineDataSet(packageEntries, "三包上报"); - packageDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainThemeColor));//线条颜色 - packageDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainThemeColor));//圆点颜色 + packageDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.mainThemeColor));//线条颜色 + packageDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.mainThemeColor));//圆点颜色 lineDataSets.add(packageDataSet); LineData lineData = new LineData(lineDataSets); @@ -186,7 +243,7 @@ chart.getLegend().setEnabled(false); XAxis xAxis = chart.getXAxis(); - xAxis.setTextColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainTextColor)); + xAxis.setTextColor(IntHub.convertColor(BaseApplication.get(), R.color.mainTextColor)); xAxis.setTextSize(12f); xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 xAxis.setLabelCount(labelName.length); // 设置x轴上的标签个数 @@ -211,55 +268,8 @@ public static void setBarChartData(BarChart chart, List entries) { //绑定数据 BarDataSet barDataSet = new BarDataSet(entries, ""); - barDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.barChartColor)); - barDataSet.setValueFormatter(new ValueFormatter() { - @Override - public String getFormattedValue(float value) { - return decimalFormat.format(value); - } - }); - BarData barData = new BarData(barDataSet); - barData.setBarWidth(0.5f); - chart.setData(barData); - chart.invalidate(); - } - - public static void initBarChart(HorizontalBarChart chart, List labelName) { - chart.setDrawGridBackground(false); - chart.setDrawBorders(false); - chart.setScaleEnabled(false); - //去掉描述 - chart.getDescription().setEnabled(false); - //去掉图例 - chart.getLegend().setEnabled(false); - - XAxis xAxis = chart.getXAxis(); - xAxis.setTextColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainTextColor)); - xAxis.setTextSize(12f); - xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 - xAxis.setLabelCount(labelName.size()); // 设置x轴上的标签个数 - xAxis.setValueFormatter(new ValueFormatter() { - @Override - public String getFormattedValue(float value) { - return labelName.get((int) value); - } - }); - xAxis.setDrawAxisLine(true);//是否绘制轴线 - xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 - xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); - chart.setExtraBottomOffset(5f);//解决X轴显示不完全问题 - //设置样式 - YAxis rightAxis = chart.getAxisRight(); - //设置图表右边的y轴禁用 - rightAxis.setEnabled(false); - YAxis leftAxis = chart.getAxisLeft(); - leftAxis.setAxisMinimum(0f); - } - - public static void setBarChartData(HorizontalBarChart chart, List entries) { - //绑定数据 - BarDataSet barDataSet = new BarDataSet(entries, ""); - barDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.barChartColor)); + barDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.barChartColor)); + DecimalFormat decimalFormat = new DecimalFormat("##0"); barDataSet.setValueFormatter(new ValueFormatter() { @Override public String getFormattedValue(float value) { diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 9567429..1e7c4a8 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -170,7 +170,17 @@ ); /** - * 获取问题来源 + * 获取单位处置情况 + */ + @GET("/departmentAssess/departmentAccess") + Observable getDeptHandleCondition( + @Header("token") String token, + @Query("begTime") String begTime, + @Query("endTime") String endTime + ); + + /** + * 获取城市基础数据 */ @GET("/dcm/view/list") Observable getCityBaseData(@Header("token") String token); diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index f09aebf..5bbc8ef 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -118,6 +118,13 @@ } /** + * 获取单位处置情况 + */ + public static Observable getDeptHandleCondition(String begTime, String endTime) { + return api.getDeptHandleCondition(AuthenticationHelper.getToken(), begTime, endTime); + } + + /** * 获取城市基础数据 */ public static Observable getCityBaseData() { @@ -125,7 +132,7 @@ } /** - * 获取城市基础数据 + * 获取案卷来源 */ public static Observable getCaseResource(String begTime, String endTime) { return api.getCaseResource(AuthenticationHelper.getToken(), begTime, endTime); diff --git a/.idea/misc.xml b/.idea/misc.xml index 5907d9c..f681423 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -226,6 +226,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java b/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java new file mode 100644 index 0000000..d3e0780 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java @@ -0,0 +1,226 @@ +package com.casic.dcms.model; + +import java.util.List; + +public class DeptHandleConditionBean { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return 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; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String checkedNum; + private String currentCheckNum; + private String delayCheckRate; + private String delayCheckedNum; + private String delayGrade; + private String delayTotalNum; + private String delayUnCheckRate; + private String delayUncheckGrade; + private String delayUncheckNum; + private String depId; + private String departName; + private String grade; + private String lastCheckNum; + private String redoGrade; + private String redoNum; + private String redoRate; + private String score; + private String totalCheckNum; + private String workGrade; + private String workRate; + + public String getCheckedNum() { + return checkedNum; + } + + public void setCheckedNum(String checkedNum) { + this.checkedNum = checkedNum; + } + + public String getCurrentCheckNum() { + return currentCheckNum; + } + + public void setCurrentCheckNum(String currentCheckNum) { + this.currentCheckNum = currentCheckNum; + } + + public String getDelayCheckRate() { + return delayCheckRate; + } + + public void setDelayCheckRate(String delayCheckRate) { + this.delayCheckRate = delayCheckRate; + } + + public String getDelayCheckedNum() { + return delayCheckedNum; + } + + public void setDelayCheckedNum(String delayCheckedNum) { + this.delayCheckedNum = delayCheckedNum; + } + + public String getDelayGrade() { + return delayGrade; + } + + public void setDelayGrade(String delayGrade) { + this.delayGrade = delayGrade; + } + + public String getDelayTotalNum() { + return delayTotalNum; + } + + public void setDelayTotalNum(String delayTotalNum) { + this.delayTotalNum = delayTotalNum; + } + + public String getDelayUnCheckRate() { + return delayUnCheckRate; + } + + public void setDelayUnCheckRate(String delayUnCheckRate) { + this.delayUnCheckRate = delayUnCheckRate; + } + + public String getDelayUncheckGrade() { + return delayUncheckGrade; + } + + public void setDelayUncheckGrade(String delayUncheckGrade) { + this.delayUncheckGrade = delayUncheckGrade; + } + + public String getDelayUncheckNum() { + return delayUncheckNum; + } + + public void setDelayUncheckNum(String delayUncheckNum) { + this.delayUncheckNum = delayUncheckNum; + } + + public String getDepId() { + return depId; + } + + public void setDepId(String depId) { + this.depId = depId; + } + + public String getDepartName() { + return departName; + } + + public void setDepartName(String departName) { + this.departName = departName; + } + + public String getGrade() { + return grade; + } + + public void setGrade(String grade) { + this.grade = grade; + } + + public String getLastCheckNum() { + return lastCheckNum; + } + + public void setLastCheckNum(String lastCheckNum) { + this.lastCheckNum = lastCheckNum; + } + + public String getRedoGrade() { + return redoGrade; + } + + public void setRedoGrade(String redoGrade) { + this.redoGrade = redoGrade; + } + + public String getRedoNum() { + return redoNum; + } + + public void setRedoNum(String redoNum) { + this.redoNum = redoNum; + } + + public String getRedoRate() { + return redoRate; + } + + public void setRedoRate(String redoRate) { + this.redoRate = redoRate; + } + + public String getScore() { + return score; + } + + public void setScore(String score) { + this.score = score; + } + + public String getTotalCheckNum() { + return totalCheckNum; + } + + public void setTotalCheckNum(String totalCheckNum) { + this.totalCheckNum = totalCheckNum; + } + + public String getWorkGrade() { + return workGrade; + } + + public void setWorkGrade(String workGrade) { + this.workGrade = workGrade; + } + + public String getWorkRate() { + return workRate; + } + + public void setWorkRate(String workRate) { + this.workRate = workRate; + } + } +} 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 62f8271..4fbbff2 100644 --- a/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java @@ -3,8 +3,6 @@ import android.graphics.Color; -import androidx.core.content.ContextCompat; - import com.casic.dcms.R; import com.casic.dcms.base.BaseApplication; import com.casic.dcms.widgets.DetailsMarkerView; @@ -44,7 +42,6 @@ public class ChartViewHelper { private static final String TAG = "ChartViewHelper"; - private static final DecimalFormat decimalFormat = new DecimalFormat("##0.00"); private static final String[] labelName = {"普通", "快速", "三包"}; private static void initPieChart(PieChart chart) { @@ -83,6 +80,7 @@ dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); dataSet.setValueLineColor(Color.BLUE); PieData data = new PieData(dataSet); + DecimalFormat decimalFormat = new DecimalFormat("##0.00"); data.setValueFormatter(new ValueFormatter() { @Override public String getFormattedValue(float value) { @@ -96,6 +94,65 @@ chart.invalidate(); } + private static void initBarChart(HorizontalBarChart chart) { + chart.setDrawGridBackground(false); + chart.setDrawBorders(false); + chart.setScaleEnabled(false); + //去掉描述 + chart.getDescription().setEnabled(false); + //设置图例位置 + Legend legend = chart.getLegend(); + legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM); + legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER); + legend.setOrientation(Legend.LegendOrientation.HORIZONTAL); + legend.setWordWrapEnabled(true); + + XAxis xAxis = chart.getXAxis(); + xAxis.setTextColor(IntHub.convertColor(BaseApplication.get(), R.color.mainTextColor)); + xAxis.setTextSize(12f); + xAxis.setDrawLabels(false);//绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true);//是否绘制轴线 + xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 + xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); + //设置样式 + YAxis rightAxis = chart.getAxisRight(); + //设置图表右边的y轴禁用 + rightAxis.setEnabled(false); + YAxis leftAxis = chart.getAxisLeft(); + leftAxis.setAxisMinimum(0f); + } + + public static void setBarChartData(HorizontalBarChart chart, List totalCheckBars, List checkedBars) { + initBarChart(chart); + DecimalFormat decimalFormat = new DecimalFormat("##0"); + //绑定数据 + BarDataSet totalCheckBarDataSet = new BarDataSet(totalCheckBars, "派发数"); + totalCheckBarDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.barChartColor)); + totalCheckBarDataSet.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return decimalFormat.format(value); + } + }); + + BarDataSet checkedBarDataSet = new BarDataSet(checkedBars, "处置数"); + checkedBarDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor)); + checkedBarDataSet.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return decimalFormat.format(value); + } + }); + + BarData barData = new BarData(totalCheckBarDataSet, checkedBarDataSet); + barData.setBarWidth(0.5f); + barData.groupBars(0f, 0.5f, 0); + chart.setData(barData); + chart.invalidate(); + } + + /////////////////////////////////////////////////////////////////////////////////// + public static void initLineChart(LineChart chart) { chart.setDrawGridBackground(false); chart.setDrawBorders(false); @@ -110,7 +167,7 @@ chart.setScaleYEnabled(false);//Y轴不可缩放 //设置x轴 XAxis xAxis = chart.getXAxis(); - xAxis.setTextColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainTextColor)); + xAxis.setTextColor(IntHub.convertColor(BaseApplication.get(), R.color.mainTextColor)); xAxis.setTextSize(12f); xAxis.setAxisMinimum(1f); xAxis.setAxisMaximum(maxDay); @@ -137,13 +194,13 @@ List lineDataSets = new ArrayList<>(); //设置数据 LineDataSet totalDataSet = new LineDataSet(totalEntries, "上报案卷"); - totalDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//线条颜色 - totalDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 + totalDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//线条颜色 + totalDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 lineDataSets.add(totalDataSet); LineDataSet handleDataSet = new LineDataSet(handleEntries, "已处理案卷"); - handleDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 - handleDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 + handleDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 + handleDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 lineDataSets.add(handleDataSet); LineData lineData = new LineData(lineDataSets); @@ -156,18 +213,18 @@ List lineDataSets = new ArrayList<>(); //设置数据 LineDataSet commonDataSet = new LineDataSet(commonEntries, "普通上报"); - commonDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 - commonDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 + commonDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 + commonDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 lineDataSets.add(commonDataSet); LineDataSet quickDataSet = new LineDataSet(quickEntries, "快速上报"); - quickDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//线条颜色 - quickDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 + quickDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//线条颜色 + quickDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 lineDataSets.add(quickDataSet); LineDataSet packageDataSet = new LineDataSet(packageEntries, "三包上报"); - packageDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainThemeColor));//线条颜色 - packageDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainThemeColor));//圆点颜色 + packageDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.mainThemeColor));//线条颜色 + packageDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.mainThemeColor));//圆点颜色 lineDataSets.add(packageDataSet); LineData lineData = new LineData(lineDataSets); @@ -186,7 +243,7 @@ chart.getLegend().setEnabled(false); XAxis xAxis = chart.getXAxis(); - xAxis.setTextColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainTextColor)); + xAxis.setTextColor(IntHub.convertColor(BaseApplication.get(), R.color.mainTextColor)); xAxis.setTextSize(12f); xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 xAxis.setLabelCount(labelName.length); // 设置x轴上的标签个数 @@ -211,55 +268,8 @@ public static void setBarChartData(BarChart chart, List entries) { //绑定数据 BarDataSet barDataSet = new BarDataSet(entries, ""); - barDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.barChartColor)); - barDataSet.setValueFormatter(new ValueFormatter() { - @Override - public String getFormattedValue(float value) { - return decimalFormat.format(value); - } - }); - BarData barData = new BarData(barDataSet); - barData.setBarWidth(0.5f); - chart.setData(barData); - chart.invalidate(); - } - - public static void initBarChart(HorizontalBarChart chart, List labelName) { - chart.setDrawGridBackground(false); - chart.setDrawBorders(false); - chart.setScaleEnabled(false); - //去掉描述 - chart.getDescription().setEnabled(false); - //去掉图例 - chart.getLegend().setEnabled(false); - - XAxis xAxis = chart.getXAxis(); - xAxis.setTextColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainTextColor)); - xAxis.setTextSize(12f); - xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 - xAxis.setLabelCount(labelName.size()); // 设置x轴上的标签个数 - xAxis.setValueFormatter(new ValueFormatter() { - @Override - public String getFormattedValue(float value) { - return labelName.get((int) value); - } - }); - xAxis.setDrawAxisLine(true);//是否绘制轴线 - xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 - xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); - chart.setExtraBottomOffset(5f);//解决X轴显示不完全问题 - //设置样式 - YAxis rightAxis = chart.getAxisRight(); - //设置图表右边的y轴禁用 - rightAxis.setEnabled(false); - YAxis leftAxis = chart.getAxisLeft(); - leftAxis.setAxisMinimum(0f); - } - - public static void setBarChartData(HorizontalBarChart chart, List entries) { - //绑定数据 - BarDataSet barDataSet = new BarDataSet(entries, ""); - barDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.barChartColor)); + barDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.barChartColor)); + DecimalFormat decimalFormat = new DecimalFormat("##0"); barDataSet.setValueFormatter(new ValueFormatter() { @Override public String getFormattedValue(float value) { diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 9567429..1e7c4a8 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -170,7 +170,17 @@ ); /** - * 获取问题来源 + * 获取单位处置情况 + */ + @GET("/departmentAssess/departmentAccess") + Observable getDeptHandleCondition( + @Header("token") String token, + @Query("begTime") String begTime, + @Query("endTime") String endTime + ); + + /** + * 获取城市基础数据 */ @GET("/dcm/view/list") Observable getCityBaseData(@Header("token") String token); diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index f09aebf..5bbc8ef 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -118,6 +118,13 @@ } /** + * 获取单位处置情况 + */ + public static Observable getDeptHandleCondition(String begTime, String endTime) { + return api.getDeptHandleCondition(AuthenticationHelper.getToken(), begTime, endTime); + } + + /** * 获取城市基础数据 */ public static Observable getCityBaseData() { @@ -125,7 +132,7 @@ } /** - * 获取城市基础数据 + * 获取案卷来源 */ public static Observable getCaseResource(String begTime, String endTime) { return api.getCaseResource(AuthenticationHelper.getToken(), begTime, endTime); diff --git a/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java index e2466ce..158302f 100644 --- a/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java +++ b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java @@ -2,32 +2,35 @@ import android.content.Context; import android.view.View; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.TextView; +import android.widget.RadioGroup; import androidx.core.content.ContextCompat; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityDeptHandleConditionBinding; +import com.casic.dcms.model.DeptHandleConditionBean; import com.casic.dcms.utils.ChartViewHelper; +import com.casic.dcms.utils.ColorHub; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.utils.TimeOrDateUtil; +import com.casic.dcms.vm.DataAnalysisViewModel; +import com.casic.dcms.widgets.RangeDateActionSheet; import com.github.mikephil.charting.data.BarEntry; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.PieEntry; import com.gyf.immersionbar.ImmersionBar; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.jzxiang.pickerview.listener.OnDateSetListener; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.divider.ItemDecoration; +import com.pengxh.androidx.lite.hub.FloatHub; +import com.pengxh.androidx.lite.hub.LongHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; import java.util.List; -import java.util.Random; /** * @author a203 @@ -38,115 +41,117 @@ public class DeptHandleConditionActivity extends AndroidxBaseActivity { private static final String TAG = "DeptHandleConditionActivity"; - private static final List horizontalLabelName = Arrays.asList("销案", "不予立案", "结案", "待结案", "待核查", "待处理", "待核实"); private final Context context = DeptHandleConditionActivity.this; - private final List spinnerEntries = new ArrayList<>(); - private final List commonEntries = new ArrayList<>(); - private final List quickEntries = new ArrayList<>(); - private final List packageEntries = new ArrayList<>(); - private final List pieEntries = new ArrayList<>(); - private final List barEntries = new ArrayList<>(); - private String selectedStreet = ""; + private DataAnalysisViewModel dataAnalysisViewModel; @Override protected void setupTopBarLayout() { ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); ImmersionBar.with(this).statusBarDarkFont(false).init(); - //TODO 这是模拟数据 - StringBuilder str = new StringBuilder(); - for (int i = 0; i < 5; i++) { - for (int j = 0; j < i; j++) { - str.append("x"); - } - spinnerEntries.add(str.append("街道").toString()); - str.delete(0, str.length()); - } - ArrayAdapter arrayAdapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, spinnerEntries); - arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - int dimension = (int) getResources().getDimension(R.dimen.titleViewHeight); - viewBinding.titleBarLayout.titleSpinner.setDropDownVerticalOffset(dimension); - viewBinding.titleBarLayout.titleSpinner.setAdapter(arrayAdapter); - //默认选中第一条 - selectedStreet = spinnerEntries.get(0); - viewBinding.titleBarLayout.titleSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView adapterView, View view, int i, long l) { - //spinner 选中后显示字体的颜色设置 - TextView tv = (TextView) view; - tv.setTextColor(ContextCompat.getColor(context, R.color.white)); - selectedStreet = spinnerEntries.get(i); - } - - @Override - public void onNothingSelected(AdapterView adapterView) { - - } - }); - //默认显示当前月的分析数据 - viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis())); + viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(3)); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); } @Override protected void observeRequestState() { - + dataAnalysisViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "数据加载中,请稍后"); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override protected void initData() { - //初始化折线图 - ChartViewHelper.initLineChart(viewBinding.streetLineChart); - //TODO 这是模拟数据 - Calendar calendar = Calendar.getInstance(); - int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); - for (int i = 0; i < maxDay; i++) { - commonEntries.add(new Entry(i, new Random().nextInt(15), "common")); - } - for (int i = 0; i < maxDay; i++) { - quickEntries.add(new Entry(i, new Random().nextInt(20), "quick")); - } - for (int i = 0; i < maxDay; i++) { - packageEntries.add(new Entry(i, new Random().nextInt(10), "package")); - } - ChartViewHelper.setLineChartData(viewBinding.streetLineChart, commonEntries, quickEntries, packageEntries); - //初始化饼图 -// ChartUtil.initPieChart(this, viewBinding.streetPieChart); - //设置数据 - //TODO 这是模拟数据 - pieEntries.add(new PieEntry(new Random().nextInt(100), "普通")); - pieEntries.add(new PieEntry(new Random().nextInt(150), "快速")); - pieEntries.add(new PieEntry(new Random().nextInt(50), "三包")); - ChartViewHelper.setPieChartData(viewBinding.streetPieChart, pieEntries); - //初始化横向柱状图 -// ChartUtil.initBarChart(this, viewBinding.streetBarChart, horizontalLabelName); - //设置数据 - //TODO 这是模拟数据 - for (int i = 0; i < horizontalLabelName.size(); i++) { - barEntries.add(new BarEntry(i, new Random().nextInt(100))); - } - ChartViewHelper.setBarChartData(viewBinding.streetBarChart, barEntries); + dataAnalysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); + dataAnalysisViewModel.deptHandleConditionModel.observe(this, new Observer() { + @Override + public void onChanged(DeptHandleConditionBean conditionBean) { + if (conditionBean.getCode() == 200) { + int caseCount = 0; + List dataModels = conditionBean.getData(); + List totalCheckBars = new ArrayList<>(); + List checkedBars = new ArrayList<>(); + List effectiveModels = new ArrayList<>(); + for (int i = 0; i < dataModels.size(); i++) { + DeptHandleConditionBean.DataModel dataModel = dataModels.get(i); + if (!dataModel.getDepartName().equals("合计")) { + effectiveModels.add(dataModel); + + caseCount += Integer.parseInt(dataModel.getTotalCheckNum()); + + totalCheckBars.add(new BarEntry(i, Integer.parseInt(dataModel.getTotalCheckNum()))); + checkedBars.add(new BarEntry(i, Integer.parseInt(dataModel.getCheckedNum()))); + } + } + viewBinding.caseCountView.setText("案卷数:" + caseCount); + + ChartViewHelper.setBarChartData(viewBinding.horizontalBarChart, totalCheckBars, checkedBars); + + //绑定列表 + NormalRecyclerAdapter recyclerAdapter = new NormalRecyclerAdapter(R.layout.item_case_resource_lv_l, effectiveModels) { + @Override + public void convertView(ViewHolder viewHolder, int position, DeptHandleConditionBean.DataModel item) { + //设置随机颜色 + int[] color = ColorHub.generateColor(context); + + viewHolder.setText(R.id.numberTagView, String.valueOf(position + 1)) + .setBackgroundColor(R.id.numberTagView, color[0]) + .setTextColor(R.id.numberTagView, color[1]) + .setText(R.id.caseSourceView, item.getDepartName()) + .setText(R.id.caseNumView, item.getTotalCheckNum()); + } + }; + viewBinding.caseResourceView.addItemDecoration(new ItemDecoration(FloatHub.dp2px(context, 75), FloatHub.dp2px(context, 15))); + viewBinding.caseResourceView.setAdapter(recyclerAdapter); + recyclerAdapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, DeptHandleConditionBean.DataModel dataModel) { + + } + }); + } + } + }); + } + + @Override + protected void onResume() { + super.onResume(); + //默认加载当前时间往前一个月的 + dataAnalysisViewModel.getDeptHandleCondition(TimeOrDateUtil.getSixMonthDate(), LongHub.timestampToDate(System.currentTimeMillis())); } @Override protected void initEvent() { - viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() { + viewBinding.selectCalendarButton.setOnClickListener(new View.OnClickListener() { @Override - public void onClick(View view) { - new TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor)) - .setTitleStringId("选择日期") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH) - .setCallBack(new OnDateSetListener() { - @Override - public void onDateSet(TimePickerDialog timePickerView, long millSeconds) { - String date = TimeOrDateUtil.timestampToYearMonth(millSeconds); - viewBinding.titleBarLayout.dateView.setText(date); - } - }).build().show(getSupportFragmentManager(), "year_month"); + public void onClick(View v) { + new RangeDateActionSheet.Builder().setContext(context).setOnActionSheetListener(new RangeDateActionSheet.OnDateRangeSelectedListener() { + @Override + public void onDateRangeSelected(String startDate, String endDate) { + dataAnalysisViewModel.getDeptHandleCondition(startDate, endDate); + } + }).build().show(); + } + }); + + viewBinding.radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + if (checkedId == R.id.oneMonthRadioButton) { + dataAnalysisViewModel.getDeptHandleCondition(TimeOrDateUtil.getOneMonthDate(), LongHub.timestampToDate(System.currentTimeMillis())); + } else if (checkedId == R.id.threeMonthRadioButton) { + dataAnalysisViewModel.getDeptHandleCondition(TimeOrDateUtil.getThreeMonthDate(), LongHub.timestampToDate(System.currentTimeMillis())); + } else { + dataAnalysisViewModel.getDeptHandleCondition(TimeOrDateUtil.getSixMonthDate(), LongHub.timestampToDate(System.currentTimeMillis())); + } } }); } diff --git a/.idea/misc.xml b/.idea/misc.xml index 5907d9c..f681423 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -226,6 +226,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java b/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java new file mode 100644 index 0000000..d3e0780 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java @@ -0,0 +1,226 @@ +package com.casic.dcms.model; + +import java.util.List; + +public class DeptHandleConditionBean { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return 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; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String checkedNum; + private String currentCheckNum; + private String delayCheckRate; + private String delayCheckedNum; + private String delayGrade; + private String delayTotalNum; + private String delayUnCheckRate; + private String delayUncheckGrade; + private String delayUncheckNum; + private String depId; + private String departName; + private String grade; + private String lastCheckNum; + private String redoGrade; + private String redoNum; + private String redoRate; + private String score; + private String totalCheckNum; + private String workGrade; + private String workRate; + + public String getCheckedNum() { + return checkedNum; + } + + public void setCheckedNum(String checkedNum) { + this.checkedNum = checkedNum; + } + + public String getCurrentCheckNum() { + return currentCheckNum; + } + + public void setCurrentCheckNum(String currentCheckNum) { + this.currentCheckNum = currentCheckNum; + } + + public String getDelayCheckRate() { + return delayCheckRate; + } + + public void setDelayCheckRate(String delayCheckRate) { + this.delayCheckRate = delayCheckRate; + } + + public String getDelayCheckedNum() { + return delayCheckedNum; + } + + public void setDelayCheckedNum(String delayCheckedNum) { + this.delayCheckedNum = delayCheckedNum; + } + + public String getDelayGrade() { + return delayGrade; + } + + public void setDelayGrade(String delayGrade) { + this.delayGrade = delayGrade; + } + + public String getDelayTotalNum() { + return delayTotalNum; + } + + public void setDelayTotalNum(String delayTotalNum) { + this.delayTotalNum = delayTotalNum; + } + + public String getDelayUnCheckRate() { + return delayUnCheckRate; + } + + public void setDelayUnCheckRate(String delayUnCheckRate) { + this.delayUnCheckRate = delayUnCheckRate; + } + + public String getDelayUncheckGrade() { + return delayUncheckGrade; + } + + public void setDelayUncheckGrade(String delayUncheckGrade) { + this.delayUncheckGrade = delayUncheckGrade; + } + + public String getDelayUncheckNum() { + return delayUncheckNum; + } + + public void setDelayUncheckNum(String delayUncheckNum) { + this.delayUncheckNum = delayUncheckNum; + } + + public String getDepId() { + return depId; + } + + public void setDepId(String depId) { + this.depId = depId; + } + + public String getDepartName() { + return departName; + } + + public void setDepartName(String departName) { + this.departName = departName; + } + + public String getGrade() { + return grade; + } + + public void setGrade(String grade) { + this.grade = grade; + } + + public String getLastCheckNum() { + return lastCheckNum; + } + + public void setLastCheckNum(String lastCheckNum) { + this.lastCheckNum = lastCheckNum; + } + + public String getRedoGrade() { + return redoGrade; + } + + public void setRedoGrade(String redoGrade) { + this.redoGrade = redoGrade; + } + + public String getRedoNum() { + return redoNum; + } + + public void setRedoNum(String redoNum) { + this.redoNum = redoNum; + } + + public String getRedoRate() { + return redoRate; + } + + public void setRedoRate(String redoRate) { + this.redoRate = redoRate; + } + + public String getScore() { + return score; + } + + public void setScore(String score) { + this.score = score; + } + + public String getTotalCheckNum() { + return totalCheckNum; + } + + public void setTotalCheckNum(String totalCheckNum) { + this.totalCheckNum = totalCheckNum; + } + + public String getWorkGrade() { + return workGrade; + } + + public void setWorkGrade(String workGrade) { + this.workGrade = workGrade; + } + + public String getWorkRate() { + return workRate; + } + + public void setWorkRate(String workRate) { + this.workRate = workRate; + } + } +} 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 62f8271..4fbbff2 100644 --- a/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java @@ -3,8 +3,6 @@ import android.graphics.Color; -import androidx.core.content.ContextCompat; - import com.casic.dcms.R; import com.casic.dcms.base.BaseApplication; import com.casic.dcms.widgets.DetailsMarkerView; @@ -44,7 +42,6 @@ public class ChartViewHelper { private static final String TAG = "ChartViewHelper"; - private static final DecimalFormat decimalFormat = new DecimalFormat("##0.00"); private static final String[] labelName = {"普通", "快速", "三包"}; private static void initPieChart(PieChart chart) { @@ -83,6 +80,7 @@ dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); dataSet.setValueLineColor(Color.BLUE); PieData data = new PieData(dataSet); + DecimalFormat decimalFormat = new DecimalFormat("##0.00"); data.setValueFormatter(new ValueFormatter() { @Override public String getFormattedValue(float value) { @@ -96,6 +94,65 @@ chart.invalidate(); } + private static void initBarChart(HorizontalBarChart chart) { + chart.setDrawGridBackground(false); + chart.setDrawBorders(false); + chart.setScaleEnabled(false); + //去掉描述 + chart.getDescription().setEnabled(false); + //设置图例位置 + Legend legend = chart.getLegend(); + legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM); + legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER); + legend.setOrientation(Legend.LegendOrientation.HORIZONTAL); + legend.setWordWrapEnabled(true); + + XAxis xAxis = chart.getXAxis(); + xAxis.setTextColor(IntHub.convertColor(BaseApplication.get(), R.color.mainTextColor)); + xAxis.setTextSize(12f); + xAxis.setDrawLabels(false);//绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true);//是否绘制轴线 + xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 + xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); + //设置样式 + YAxis rightAxis = chart.getAxisRight(); + //设置图表右边的y轴禁用 + rightAxis.setEnabled(false); + YAxis leftAxis = chart.getAxisLeft(); + leftAxis.setAxisMinimum(0f); + } + + public static void setBarChartData(HorizontalBarChart chart, List totalCheckBars, List checkedBars) { + initBarChart(chart); + DecimalFormat decimalFormat = new DecimalFormat("##0"); + //绑定数据 + BarDataSet totalCheckBarDataSet = new BarDataSet(totalCheckBars, "派发数"); + totalCheckBarDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.barChartColor)); + totalCheckBarDataSet.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return decimalFormat.format(value); + } + }); + + BarDataSet checkedBarDataSet = new BarDataSet(checkedBars, "处置数"); + checkedBarDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor)); + checkedBarDataSet.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return decimalFormat.format(value); + } + }); + + BarData barData = new BarData(totalCheckBarDataSet, checkedBarDataSet); + barData.setBarWidth(0.5f); + barData.groupBars(0f, 0.5f, 0); + chart.setData(barData); + chart.invalidate(); + } + + /////////////////////////////////////////////////////////////////////////////////// + public static void initLineChart(LineChart chart) { chart.setDrawGridBackground(false); chart.setDrawBorders(false); @@ -110,7 +167,7 @@ chart.setScaleYEnabled(false);//Y轴不可缩放 //设置x轴 XAxis xAxis = chart.getXAxis(); - xAxis.setTextColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainTextColor)); + xAxis.setTextColor(IntHub.convertColor(BaseApplication.get(), R.color.mainTextColor)); xAxis.setTextSize(12f); xAxis.setAxisMinimum(1f); xAxis.setAxisMaximum(maxDay); @@ -137,13 +194,13 @@ List lineDataSets = new ArrayList<>(); //设置数据 LineDataSet totalDataSet = new LineDataSet(totalEntries, "上报案卷"); - totalDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//线条颜色 - totalDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 + totalDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//线条颜色 + totalDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 lineDataSets.add(totalDataSet); LineDataSet handleDataSet = new LineDataSet(handleEntries, "已处理案卷"); - handleDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 - handleDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 + handleDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 + handleDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 lineDataSets.add(handleDataSet); LineData lineData = new LineData(lineDataSets); @@ -156,18 +213,18 @@ List lineDataSets = new ArrayList<>(); //设置数据 LineDataSet commonDataSet = new LineDataSet(commonEntries, "普通上报"); - commonDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 - commonDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 + commonDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 + commonDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 lineDataSets.add(commonDataSet); LineDataSet quickDataSet = new LineDataSet(quickEntries, "快速上报"); - quickDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//线条颜色 - quickDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 + quickDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//线条颜色 + quickDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 lineDataSets.add(quickDataSet); LineDataSet packageDataSet = new LineDataSet(packageEntries, "三包上报"); - packageDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainThemeColor));//线条颜色 - packageDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainThemeColor));//圆点颜色 + packageDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.mainThemeColor));//线条颜色 + packageDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.mainThemeColor));//圆点颜色 lineDataSets.add(packageDataSet); LineData lineData = new LineData(lineDataSets); @@ -186,7 +243,7 @@ chart.getLegend().setEnabled(false); XAxis xAxis = chart.getXAxis(); - xAxis.setTextColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainTextColor)); + xAxis.setTextColor(IntHub.convertColor(BaseApplication.get(), R.color.mainTextColor)); xAxis.setTextSize(12f); xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 xAxis.setLabelCount(labelName.length); // 设置x轴上的标签个数 @@ -211,55 +268,8 @@ public static void setBarChartData(BarChart chart, List entries) { //绑定数据 BarDataSet barDataSet = new BarDataSet(entries, ""); - barDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.barChartColor)); - barDataSet.setValueFormatter(new ValueFormatter() { - @Override - public String getFormattedValue(float value) { - return decimalFormat.format(value); - } - }); - BarData barData = new BarData(barDataSet); - barData.setBarWidth(0.5f); - chart.setData(barData); - chart.invalidate(); - } - - public static void initBarChart(HorizontalBarChart chart, List labelName) { - chart.setDrawGridBackground(false); - chart.setDrawBorders(false); - chart.setScaleEnabled(false); - //去掉描述 - chart.getDescription().setEnabled(false); - //去掉图例 - chart.getLegend().setEnabled(false); - - XAxis xAxis = chart.getXAxis(); - xAxis.setTextColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainTextColor)); - xAxis.setTextSize(12f); - xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 - xAxis.setLabelCount(labelName.size()); // 设置x轴上的标签个数 - xAxis.setValueFormatter(new ValueFormatter() { - @Override - public String getFormattedValue(float value) { - return labelName.get((int) value); - } - }); - xAxis.setDrawAxisLine(true);//是否绘制轴线 - xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 - xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); - chart.setExtraBottomOffset(5f);//解决X轴显示不完全问题 - //设置样式 - YAxis rightAxis = chart.getAxisRight(); - //设置图表右边的y轴禁用 - rightAxis.setEnabled(false); - YAxis leftAxis = chart.getAxisLeft(); - leftAxis.setAxisMinimum(0f); - } - - public static void setBarChartData(HorizontalBarChart chart, List entries) { - //绑定数据 - BarDataSet barDataSet = new BarDataSet(entries, ""); - barDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.barChartColor)); + barDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.barChartColor)); + DecimalFormat decimalFormat = new DecimalFormat("##0"); barDataSet.setValueFormatter(new ValueFormatter() { @Override public String getFormattedValue(float value) { diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 9567429..1e7c4a8 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -170,7 +170,17 @@ ); /** - * 获取问题来源 + * 获取单位处置情况 + */ + @GET("/departmentAssess/departmentAccess") + Observable getDeptHandleCondition( + @Header("token") String token, + @Query("begTime") String begTime, + @Query("endTime") String endTime + ); + + /** + * 获取城市基础数据 */ @GET("/dcm/view/list") Observable getCityBaseData(@Header("token") String token); diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index f09aebf..5bbc8ef 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -118,6 +118,13 @@ } /** + * 获取单位处置情况 + */ + public static Observable getDeptHandleCondition(String begTime, String endTime) { + return api.getDeptHandleCondition(AuthenticationHelper.getToken(), begTime, endTime); + } + + /** * 获取城市基础数据 */ public static Observable getCityBaseData() { @@ -125,7 +132,7 @@ } /** - * 获取城市基础数据 + * 获取案卷来源 */ public static Observable getCaseResource(String begTime, String endTime) { return api.getCaseResource(AuthenticationHelper.getToken(), begTime, endTime); diff --git a/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java index e2466ce..158302f 100644 --- a/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java +++ b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java @@ -2,32 +2,35 @@ import android.content.Context; import android.view.View; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.TextView; +import android.widget.RadioGroup; import androidx.core.content.ContextCompat; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityDeptHandleConditionBinding; +import com.casic.dcms.model.DeptHandleConditionBean; import com.casic.dcms.utils.ChartViewHelper; +import com.casic.dcms.utils.ColorHub; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.utils.TimeOrDateUtil; +import com.casic.dcms.vm.DataAnalysisViewModel; +import com.casic.dcms.widgets.RangeDateActionSheet; import com.github.mikephil.charting.data.BarEntry; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.PieEntry; import com.gyf.immersionbar.ImmersionBar; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.jzxiang.pickerview.listener.OnDateSetListener; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.divider.ItemDecoration; +import com.pengxh.androidx.lite.hub.FloatHub; +import com.pengxh.androidx.lite.hub.LongHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; import java.util.List; -import java.util.Random; /** * @author a203 @@ -38,115 +41,117 @@ public class DeptHandleConditionActivity extends AndroidxBaseActivity { private static final String TAG = "DeptHandleConditionActivity"; - private static final List horizontalLabelName = Arrays.asList("销案", "不予立案", "结案", "待结案", "待核查", "待处理", "待核实"); private final Context context = DeptHandleConditionActivity.this; - private final List spinnerEntries = new ArrayList<>(); - private final List commonEntries = new ArrayList<>(); - private final List quickEntries = new ArrayList<>(); - private final List packageEntries = new ArrayList<>(); - private final List pieEntries = new ArrayList<>(); - private final List barEntries = new ArrayList<>(); - private String selectedStreet = ""; + private DataAnalysisViewModel dataAnalysisViewModel; @Override protected void setupTopBarLayout() { ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); ImmersionBar.with(this).statusBarDarkFont(false).init(); - //TODO 这是模拟数据 - StringBuilder str = new StringBuilder(); - for (int i = 0; i < 5; i++) { - for (int j = 0; j < i; j++) { - str.append("x"); - } - spinnerEntries.add(str.append("街道").toString()); - str.delete(0, str.length()); - } - ArrayAdapter arrayAdapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, spinnerEntries); - arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - int dimension = (int) getResources().getDimension(R.dimen.titleViewHeight); - viewBinding.titleBarLayout.titleSpinner.setDropDownVerticalOffset(dimension); - viewBinding.titleBarLayout.titleSpinner.setAdapter(arrayAdapter); - //默认选中第一条 - selectedStreet = spinnerEntries.get(0); - viewBinding.titleBarLayout.titleSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView adapterView, View view, int i, long l) { - //spinner 选中后显示字体的颜色设置 - TextView tv = (TextView) view; - tv.setTextColor(ContextCompat.getColor(context, R.color.white)); - selectedStreet = spinnerEntries.get(i); - } - - @Override - public void onNothingSelected(AdapterView adapterView) { - - } - }); - //默认显示当前月的分析数据 - viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis())); + viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(3)); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); } @Override protected void observeRequestState() { - + dataAnalysisViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "数据加载中,请稍后"); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override protected void initData() { - //初始化折线图 - ChartViewHelper.initLineChart(viewBinding.streetLineChart); - //TODO 这是模拟数据 - Calendar calendar = Calendar.getInstance(); - int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); - for (int i = 0; i < maxDay; i++) { - commonEntries.add(new Entry(i, new Random().nextInt(15), "common")); - } - for (int i = 0; i < maxDay; i++) { - quickEntries.add(new Entry(i, new Random().nextInt(20), "quick")); - } - for (int i = 0; i < maxDay; i++) { - packageEntries.add(new Entry(i, new Random().nextInt(10), "package")); - } - ChartViewHelper.setLineChartData(viewBinding.streetLineChart, commonEntries, quickEntries, packageEntries); - //初始化饼图 -// ChartUtil.initPieChart(this, viewBinding.streetPieChart); - //设置数据 - //TODO 这是模拟数据 - pieEntries.add(new PieEntry(new Random().nextInt(100), "普通")); - pieEntries.add(new PieEntry(new Random().nextInt(150), "快速")); - pieEntries.add(new PieEntry(new Random().nextInt(50), "三包")); - ChartViewHelper.setPieChartData(viewBinding.streetPieChart, pieEntries); - //初始化横向柱状图 -// ChartUtil.initBarChart(this, viewBinding.streetBarChart, horizontalLabelName); - //设置数据 - //TODO 这是模拟数据 - for (int i = 0; i < horizontalLabelName.size(); i++) { - barEntries.add(new BarEntry(i, new Random().nextInt(100))); - } - ChartViewHelper.setBarChartData(viewBinding.streetBarChart, barEntries); + dataAnalysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); + dataAnalysisViewModel.deptHandleConditionModel.observe(this, new Observer() { + @Override + public void onChanged(DeptHandleConditionBean conditionBean) { + if (conditionBean.getCode() == 200) { + int caseCount = 0; + List dataModels = conditionBean.getData(); + List totalCheckBars = new ArrayList<>(); + List checkedBars = new ArrayList<>(); + List effectiveModels = new ArrayList<>(); + for (int i = 0; i < dataModels.size(); i++) { + DeptHandleConditionBean.DataModel dataModel = dataModels.get(i); + if (!dataModel.getDepartName().equals("合计")) { + effectiveModels.add(dataModel); + + caseCount += Integer.parseInt(dataModel.getTotalCheckNum()); + + totalCheckBars.add(new BarEntry(i, Integer.parseInt(dataModel.getTotalCheckNum()))); + checkedBars.add(new BarEntry(i, Integer.parseInt(dataModel.getCheckedNum()))); + } + } + viewBinding.caseCountView.setText("案卷数:" + caseCount); + + ChartViewHelper.setBarChartData(viewBinding.horizontalBarChart, totalCheckBars, checkedBars); + + //绑定列表 + NormalRecyclerAdapter recyclerAdapter = new NormalRecyclerAdapter(R.layout.item_case_resource_lv_l, effectiveModels) { + @Override + public void convertView(ViewHolder viewHolder, int position, DeptHandleConditionBean.DataModel item) { + //设置随机颜色 + int[] color = ColorHub.generateColor(context); + + viewHolder.setText(R.id.numberTagView, String.valueOf(position + 1)) + .setBackgroundColor(R.id.numberTagView, color[0]) + .setTextColor(R.id.numberTagView, color[1]) + .setText(R.id.caseSourceView, item.getDepartName()) + .setText(R.id.caseNumView, item.getTotalCheckNum()); + } + }; + viewBinding.caseResourceView.addItemDecoration(new ItemDecoration(FloatHub.dp2px(context, 75), FloatHub.dp2px(context, 15))); + viewBinding.caseResourceView.setAdapter(recyclerAdapter); + recyclerAdapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, DeptHandleConditionBean.DataModel dataModel) { + + } + }); + } + } + }); + } + + @Override + protected void onResume() { + super.onResume(); + //默认加载当前时间往前一个月的 + dataAnalysisViewModel.getDeptHandleCondition(TimeOrDateUtil.getSixMonthDate(), LongHub.timestampToDate(System.currentTimeMillis())); } @Override protected void initEvent() { - viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() { + viewBinding.selectCalendarButton.setOnClickListener(new View.OnClickListener() { @Override - public void onClick(View view) { - new TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor)) - .setTitleStringId("选择日期") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH) - .setCallBack(new OnDateSetListener() { - @Override - public void onDateSet(TimePickerDialog timePickerView, long millSeconds) { - String date = TimeOrDateUtil.timestampToYearMonth(millSeconds); - viewBinding.titleBarLayout.dateView.setText(date); - } - }).build().show(getSupportFragmentManager(), "year_month"); + public void onClick(View v) { + new RangeDateActionSheet.Builder().setContext(context).setOnActionSheetListener(new RangeDateActionSheet.OnDateRangeSelectedListener() { + @Override + public void onDateRangeSelected(String startDate, String endDate) { + dataAnalysisViewModel.getDeptHandleCondition(startDate, endDate); + } + }).build().show(); + } + }); + + viewBinding.radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + if (checkedId == R.id.oneMonthRadioButton) { + dataAnalysisViewModel.getDeptHandleCondition(TimeOrDateUtil.getOneMonthDate(), LongHub.timestampToDate(System.currentTimeMillis())); + } else if (checkedId == R.id.threeMonthRadioButton) { + dataAnalysisViewModel.getDeptHandleCondition(TimeOrDateUtil.getThreeMonthDate(), LongHub.timestampToDate(System.currentTimeMillis())); + } else { + dataAnalysisViewModel.getDeptHandleCondition(TimeOrDateUtil.getSixMonthDate(), LongHub.timestampToDate(System.currentTimeMillis())); + } } }); } diff --git a/app/src/main/java/com/casic/dcms/vm/DataAnalysisViewModel.java b/app/src/main/java/com/casic/dcms/vm/DataAnalysisViewModel.java index 85fa4b2..dd7f28e 100644 --- a/app/src/main/java/com/casic/dcms/vm/DataAnalysisViewModel.java +++ b/app/src/main/java/com/casic/dcms/vm/DataAnalysisViewModel.java @@ -4,6 +4,7 @@ import com.casic.dcms.model.CaseResourceBean; import com.casic.dcms.model.CityBaseDataBean; +import com.casic.dcms.model.DeptHandleConditionBean; import com.casic.dcms.model.HighEventBean; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.retrofit.RetrofitServiceManager; @@ -24,6 +25,7 @@ public MutableLiveData cityBaseData = new MutableLiveData<>(); public MutableLiveData caseResourceData = new MutableLiveData<>(); public MutableLiveData highEventModel = new MutableLiveData<>(); + public MutableLiveData deptHandleConditionModel = new MutableLiveData<>(); public void getCityBaseData() { loadState.setValue(LoadState.Loading); @@ -123,4 +125,37 @@ } }); } + + public void getDeptHandleCondition(String begTime, String endTime) { + loadState.setValue(LoadState.Loading); + Observable observable = RetrofitServiceManager.getDeptHandleCondition(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 + public void onNext(ResponseBody responseBody) { + try { + String response = responseBody.string(); + int responseCode = StringHelper.separateResponseCode(response); + if (responseCode == 200) { + DeptHandleConditionBean resultBean = gson.fromJson(response, new TypeToken() { + }.getType()); + deptHandleConditionModel.setValue(resultBean); + } else { + loadState.setValue(LoadState.Fail); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + }); + } } diff --git a/.idea/misc.xml b/.idea/misc.xml index 5907d9c..f681423 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -226,6 +226,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java b/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java new file mode 100644 index 0000000..d3e0780 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/DeptHandleConditionBean.java @@ -0,0 +1,226 @@ +package com.casic.dcms.model; + +import java.util.List; + +public class DeptHandleConditionBean { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return 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; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String checkedNum; + private String currentCheckNum; + private String delayCheckRate; + private String delayCheckedNum; + private String delayGrade; + private String delayTotalNum; + private String delayUnCheckRate; + private String delayUncheckGrade; + private String delayUncheckNum; + private String depId; + private String departName; + private String grade; + private String lastCheckNum; + private String redoGrade; + private String redoNum; + private String redoRate; + private String score; + private String totalCheckNum; + private String workGrade; + private String workRate; + + public String getCheckedNum() { + return checkedNum; + } + + public void setCheckedNum(String checkedNum) { + this.checkedNum = checkedNum; + } + + public String getCurrentCheckNum() { + return currentCheckNum; + } + + public void setCurrentCheckNum(String currentCheckNum) { + this.currentCheckNum = currentCheckNum; + } + + public String getDelayCheckRate() { + return delayCheckRate; + } + + public void setDelayCheckRate(String delayCheckRate) { + this.delayCheckRate = delayCheckRate; + } + + public String getDelayCheckedNum() { + return delayCheckedNum; + } + + public void setDelayCheckedNum(String delayCheckedNum) { + this.delayCheckedNum = delayCheckedNum; + } + + public String getDelayGrade() { + return delayGrade; + } + + public void setDelayGrade(String delayGrade) { + this.delayGrade = delayGrade; + } + + public String getDelayTotalNum() { + return delayTotalNum; + } + + public void setDelayTotalNum(String delayTotalNum) { + this.delayTotalNum = delayTotalNum; + } + + public String getDelayUnCheckRate() { + return delayUnCheckRate; + } + + public void setDelayUnCheckRate(String delayUnCheckRate) { + this.delayUnCheckRate = delayUnCheckRate; + } + + public String getDelayUncheckGrade() { + return delayUncheckGrade; + } + + public void setDelayUncheckGrade(String delayUncheckGrade) { + this.delayUncheckGrade = delayUncheckGrade; + } + + public String getDelayUncheckNum() { + return delayUncheckNum; + } + + public void setDelayUncheckNum(String delayUncheckNum) { + this.delayUncheckNum = delayUncheckNum; + } + + public String getDepId() { + return depId; + } + + public void setDepId(String depId) { + this.depId = depId; + } + + public String getDepartName() { + return departName; + } + + public void setDepartName(String departName) { + this.departName = departName; + } + + public String getGrade() { + return grade; + } + + public void setGrade(String grade) { + this.grade = grade; + } + + public String getLastCheckNum() { + return lastCheckNum; + } + + public void setLastCheckNum(String lastCheckNum) { + this.lastCheckNum = lastCheckNum; + } + + public String getRedoGrade() { + return redoGrade; + } + + public void setRedoGrade(String redoGrade) { + this.redoGrade = redoGrade; + } + + public String getRedoNum() { + return redoNum; + } + + public void setRedoNum(String redoNum) { + this.redoNum = redoNum; + } + + public String getRedoRate() { + return redoRate; + } + + public void setRedoRate(String redoRate) { + this.redoRate = redoRate; + } + + public String getScore() { + return score; + } + + public void setScore(String score) { + this.score = score; + } + + public String getTotalCheckNum() { + return totalCheckNum; + } + + public void setTotalCheckNum(String totalCheckNum) { + this.totalCheckNum = totalCheckNum; + } + + public String getWorkGrade() { + return workGrade; + } + + public void setWorkGrade(String workGrade) { + this.workGrade = workGrade; + } + + public String getWorkRate() { + return workRate; + } + + public void setWorkRate(String workRate) { + this.workRate = workRate; + } + } +} 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 62f8271..4fbbff2 100644 --- a/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ChartViewHelper.java @@ -3,8 +3,6 @@ import android.graphics.Color; -import androidx.core.content.ContextCompat; - import com.casic.dcms.R; import com.casic.dcms.base.BaseApplication; import com.casic.dcms.widgets.DetailsMarkerView; @@ -44,7 +42,6 @@ public class ChartViewHelper { private static final String TAG = "ChartViewHelper"; - private static final DecimalFormat decimalFormat = new DecimalFormat("##0.00"); private static final String[] labelName = {"普通", "快速", "三包"}; private static void initPieChart(PieChart chart) { @@ -83,6 +80,7 @@ dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); dataSet.setValueLineColor(Color.BLUE); PieData data = new PieData(dataSet); + DecimalFormat decimalFormat = new DecimalFormat("##0.00"); data.setValueFormatter(new ValueFormatter() { @Override public String getFormattedValue(float value) { @@ -96,6 +94,65 @@ chart.invalidate(); } + private static void initBarChart(HorizontalBarChart chart) { + chart.setDrawGridBackground(false); + chart.setDrawBorders(false); + chart.setScaleEnabled(false); + //去掉描述 + chart.getDescription().setEnabled(false); + //设置图例位置 + Legend legend = chart.getLegend(); + legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM); + legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER); + legend.setOrientation(Legend.LegendOrientation.HORIZONTAL); + legend.setWordWrapEnabled(true); + + XAxis xAxis = chart.getXAxis(); + xAxis.setTextColor(IntHub.convertColor(BaseApplication.get(), R.color.mainTextColor)); + xAxis.setTextSize(12f); + xAxis.setDrawLabels(false);//绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true);//是否绘制轴线 + xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 + xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); + //设置样式 + YAxis rightAxis = chart.getAxisRight(); + //设置图表右边的y轴禁用 + rightAxis.setEnabled(false); + YAxis leftAxis = chart.getAxisLeft(); + leftAxis.setAxisMinimum(0f); + } + + public static void setBarChartData(HorizontalBarChart chart, List totalCheckBars, List checkedBars) { + initBarChart(chart); + DecimalFormat decimalFormat = new DecimalFormat("##0"); + //绑定数据 + BarDataSet totalCheckBarDataSet = new BarDataSet(totalCheckBars, "派发数"); + totalCheckBarDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.barChartColor)); + totalCheckBarDataSet.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return decimalFormat.format(value); + } + }); + + BarDataSet checkedBarDataSet = new BarDataSet(checkedBars, "处置数"); + checkedBarDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor)); + checkedBarDataSet.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return decimalFormat.format(value); + } + }); + + BarData barData = new BarData(totalCheckBarDataSet, checkedBarDataSet); + barData.setBarWidth(0.5f); + barData.groupBars(0f, 0.5f, 0); + chart.setData(barData); + chart.invalidate(); + } + + /////////////////////////////////////////////////////////////////////////////////// + public static void initLineChart(LineChart chart) { chart.setDrawGridBackground(false); chart.setDrawBorders(false); @@ -110,7 +167,7 @@ chart.setScaleYEnabled(false);//Y轴不可缩放 //设置x轴 XAxis xAxis = chart.getXAxis(); - xAxis.setTextColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainTextColor)); + xAxis.setTextColor(IntHub.convertColor(BaseApplication.get(), R.color.mainTextColor)); xAxis.setTextSize(12f); xAxis.setAxisMinimum(1f); xAxis.setAxisMaximum(maxDay); @@ -137,13 +194,13 @@ List lineDataSets = new ArrayList<>(); //设置数据 LineDataSet totalDataSet = new LineDataSet(totalEntries, "上报案卷"); - totalDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//线条颜色 - totalDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 + totalDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//线条颜色 + totalDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 lineDataSets.add(totalDataSet); LineDataSet handleDataSet = new LineDataSet(handleEntries, "已处理案卷"); - handleDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 - handleDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 + handleDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 + handleDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 lineDataSets.add(handleDataSet); LineData lineData = new LineData(lineDataSets); @@ -156,18 +213,18 @@ List lineDataSets = new ArrayList<>(); //设置数据 LineDataSet commonDataSet = new LineDataSet(commonEntries, "普通上报"); - commonDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 - commonDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 + commonDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//线条颜色 + commonDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.onLineColor));//圆点颜色 lineDataSets.add(commonDataSet); LineDataSet quickDataSet = new LineDataSet(quickEntries, "快速上报"); - quickDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//线条颜色 - quickDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 + quickDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//线条颜色 + quickDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.warnColor));//圆点颜色 lineDataSets.add(quickDataSet); LineDataSet packageDataSet = new LineDataSet(packageEntries, "三包上报"); - packageDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainThemeColor));//线条颜色 - packageDataSet.setCircleColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainThemeColor));//圆点颜色 + packageDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.mainThemeColor));//线条颜色 + packageDataSet.setCircleColor(IntHub.convertColor(BaseApplication.get(), R.color.mainThemeColor));//圆点颜色 lineDataSets.add(packageDataSet); LineData lineData = new LineData(lineDataSets); @@ -186,7 +243,7 @@ chart.getLegend().setEnabled(false); XAxis xAxis = chart.getXAxis(); - xAxis.setTextColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainTextColor)); + xAxis.setTextColor(IntHub.convertColor(BaseApplication.get(), R.color.mainTextColor)); xAxis.setTextSize(12f); xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 xAxis.setLabelCount(labelName.length); // 设置x轴上的标签个数 @@ -211,55 +268,8 @@ public static void setBarChartData(BarChart chart, List entries) { //绑定数据 BarDataSet barDataSet = new BarDataSet(entries, ""); - barDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.barChartColor)); - barDataSet.setValueFormatter(new ValueFormatter() { - @Override - public String getFormattedValue(float value) { - return decimalFormat.format(value); - } - }); - BarData barData = new BarData(barDataSet); - barData.setBarWidth(0.5f); - chart.setData(barData); - chart.invalidate(); - } - - public static void initBarChart(HorizontalBarChart chart, List labelName) { - chart.setDrawGridBackground(false); - chart.setDrawBorders(false); - chart.setScaleEnabled(false); - //去掉描述 - chart.getDescription().setEnabled(false); - //去掉图例 - chart.getLegend().setEnabled(false); - - XAxis xAxis = chart.getXAxis(); - xAxis.setTextColor(ContextCompat.getColor(BaseApplication.get(), R.color.mainTextColor)); - xAxis.setTextSize(12f); - xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 - xAxis.setLabelCount(labelName.size()); // 设置x轴上的标签个数 - xAxis.setValueFormatter(new ValueFormatter() { - @Override - public String getFormattedValue(float value) { - return labelName.get((int) value); - } - }); - xAxis.setDrawAxisLine(true);//是否绘制轴线 - xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 - xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); - chart.setExtraBottomOffset(5f);//解决X轴显示不完全问题 - //设置样式 - YAxis rightAxis = chart.getAxisRight(); - //设置图表右边的y轴禁用 - rightAxis.setEnabled(false); - YAxis leftAxis = chart.getAxisLeft(); - leftAxis.setAxisMinimum(0f); - } - - public static void setBarChartData(HorizontalBarChart chart, List entries) { - //绑定数据 - BarDataSet barDataSet = new BarDataSet(entries, ""); - barDataSet.setColor(ContextCompat.getColor(BaseApplication.get(), R.color.barChartColor)); + barDataSet.setColor(IntHub.convertColor(BaseApplication.get(), R.color.barChartColor)); + DecimalFormat decimalFormat = new DecimalFormat("##0"); barDataSet.setValueFormatter(new ValueFormatter() { @Override public String getFormattedValue(float value) { diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 9567429..1e7c4a8 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -170,7 +170,17 @@ ); /** - * 获取问题来源 + * 获取单位处置情况 + */ + @GET("/departmentAssess/departmentAccess") + Observable getDeptHandleCondition( + @Header("token") String token, + @Query("begTime") String begTime, + @Query("endTime") String endTime + ); + + /** + * 获取城市基础数据 */ @GET("/dcm/view/list") Observable getCityBaseData(@Header("token") String token); diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index f09aebf..5bbc8ef 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -118,6 +118,13 @@ } /** + * 获取单位处置情况 + */ + public static Observable getDeptHandleCondition(String begTime, String endTime) { + return api.getDeptHandleCondition(AuthenticationHelper.getToken(), begTime, endTime); + } + + /** * 获取城市基础数据 */ public static Observable getCityBaseData() { @@ -125,7 +132,7 @@ } /** - * 获取城市基础数据 + * 获取案卷来源 */ public static Observable getCaseResource(String begTime, String endTime) { return api.getCaseResource(AuthenticationHelper.getToken(), begTime, endTime); diff --git a/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java index e2466ce..158302f 100644 --- a/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java +++ b/app/src/main/java/com/casic/dcms/view/statistics/DeptHandleConditionActivity.java @@ -2,32 +2,35 @@ import android.content.Context; import android.view.View; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.TextView; +import android.widget.RadioGroup; import androidx.core.content.ContextCompat; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityDeptHandleConditionBinding; +import com.casic.dcms.model.DeptHandleConditionBean; import com.casic.dcms.utils.ChartViewHelper; +import com.casic.dcms.utils.ColorHub; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.utils.TimeOrDateUtil; +import com.casic.dcms.vm.DataAnalysisViewModel; +import com.casic.dcms.widgets.RangeDateActionSheet; import com.github.mikephil.charting.data.BarEntry; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.PieEntry; import com.gyf.immersionbar.ImmersionBar; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.jzxiang.pickerview.listener.OnDateSetListener; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.divider.ItemDecoration; +import com.pengxh.androidx.lite.hub.FloatHub; +import com.pengxh.androidx.lite.hub.LongHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; import java.util.List; -import java.util.Random; /** * @author a203 @@ -38,115 +41,117 @@ public class DeptHandleConditionActivity extends AndroidxBaseActivity { private static final String TAG = "DeptHandleConditionActivity"; - private static final List horizontalLabelName = Arrays.asList("销案", "不予立案", "结案", "待结案", "待核查", "待处理", "待核实"); private final Context context = DeptHandleConditionActivity.this; - private final List spinnerEntries = new ArrayList<>(); - private final List commonEntries = new ArrayList<>(); - private final List quickEntries = new ArrayList<>(); - private final List packageEntries = new ArrayList<>(); - private final List pieEntries = new ArrayList<>(); - private final List barEntries = new ArrayList<>(); - private String selectedStreet = ""; + private DataAnalysisViewModel dataAnalysisViewModel; @Override protected void setupTopBarLayout() { ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); ImmersionBar.with(this).statusBarDarkFont(false).init(); - //TODO 这是模拟数据 - StringBuilder str = new StringBuilder(); - for (int i = 0; i < 5; i++) { - for (int j = 0; j < i; j++) { - str.append("x"); - } - spinnerEntries.add(str.append("街道").toString()); - str.delete(0, str.length()); - } - ArrayAdapter arrayAdapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, spinnerEntries); - arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - int dimension = (int) getResources().getDimension(R.dimen.titleViewHeight); - viewBinding.titleBarLayout.titleSpinner.setDropDownVerticalOffset(dimension); - viewBinding.titleBarLayout.titleSpinner.setAdapter(arrayAdapter); - //默认选中第一条 - selectedStreet = spinnerEntries.get(0); - viewBinding.titleBarLayout.titleSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView adapterView, View view, int i, long l) { - //spinner 选中后显示字体的颜色设置 - TextView tv = (TextView) view; - tv.setTextColor(ContextCompat.getColor(context, R.color.white)); - selectedStreet = spinnerEntries.get(i); - } - - @Override - public void onNothingSelected(AdapterView adapterView) { - - } - }); - //默认显示当前月的分析数据 - viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis())); + viewBinding.titleBarLayout.titleView.setText(LocaleConstant.ANALYSIS_ITEMS.get(3)); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); } @Override protected void observeRequestState() { - + dataAnalysisViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "数据加载中,请稍后"); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override protected void initData() { - //初始化折线图 - ChartViewHelper.initLineChart(viewBinding.streetLineChart); - //TODO 这是模拟数据 - Calendar calendar = Calendar.getInstance(); - int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); - for (int i = 0; i < maxDay; i++) { - commonEntries.add(new Entry(i, new Random().nextInt(15), "common")); - } - for (int i = 0; i < maxDay; i++) { - quickEntries.add(new Entry(i, new Random().nextInt(20), "quick")); - } - for (int i = 0; i < maxDay; i++) { - packageEntries.add(new Entry(i, new Random().nextInt(10), "package")); - } - ChartViewHelper.setLineChartData(viewBinding.streetLineChart, commonEntries, quickEntries, packageEntries); - //初始化饼图 -// ChartUtil.initPieChart(this, viewBinding.streetPieChart); - //设置数据 - //TODO 这是模拟数据 - pieEntries.add(new PieEntry(new Random().nextInt(100), "普通")); - pieEntries.add(new PieEntry(new Random().nextInt(150), "快速")); - pieEntries.add(new PieEntry(new Random().nextInt(50), "三包")); - ChartViewHelper.setPieChartData(viewBinding.streetPieChart, pieEntries); - //初始化横向柱状图 -// ChartUtil.initBarChart(this, viewBinding.streetBarChart, horizontalLabelName); - //设置数据 - //TODO 这是模拟数据 - for (int i = 0; i < horizontalLabelName.size(); i++) { - barEntries.add(new BarEntry(i, new Random().nextInt(100))); - } - ChartViewHelper.setBarChartData(viewBinding.streetBarChart, barEntries); + dataAnalysisViewModel = new ViewModelProvider(this).get(DataAnalysisViewModel.class); + dataAnalysisViewModel.deptHandleConditionModel.observe(this, new Observer() { + @Override + public void onChanged(DeptHandleConditionBean conditionBean) { + if (conditionBean.getCode() == 200) { + int caseCount = 0; + List dataModels = conditionBean.getData(); + List totalCheckBars = new ArrayList<>(); + List checkedBars = new ArrayList<>(); + List effectiveModels = new ArrayList<>(); + for (int i = 0; i < dataModels.size(); i++) { + DeptHandleConditionBean.DataModel dataModel = dataModels.get(i); + if (!dataModel.getDepartName().equals("合计")) { + effectiveModels.add(dataModel); + + caseCount += Integer.parseInt(dataModel.getTotalCheckNum()); + + totalCheckBars.add(new BarEntry(i, Integer.parseInt(dataModel.getTotalCheckNum()))); + checkedBars.add(new BarEntry(i, Integer.parseInt(dataModel.getCheckedNum()))); + } + } + viewBinding.caseCountView.setText("案卷数:" + caseCount); + + ChartViewHelper.setBarChartData(viewBinding.horizontalBarChart, totalCheckBars, checkedBars); + + //绑定列表 + NormalRecyclerAdapter recyclerAdapter = new NormalRecyclerAdapter(R.layout.item_case_resource_lv_l, effectiveModels) { + @Override + public void convertView(ViewHolder viewHolder, int position, DeptHandleConditionBean.DataModel item) { + //设置随机颜色 + int[] color = ColorHub.generateColor(context); + + viewHolder.setText(R.id.numberTagView, String.valueOf(position + 1)) + .setBackgroundColor(R.id.numberTagView, color[0]) + .setTextColor(R.id.numberTagView, color[1]) + .setText(R.id.caseSourceView, item.getDepartName()) + .setText(R.id.caseNumView, item.getTotalCheckNum()); + } + }; + viewBinding.caseResourceView.addItemDecoration(new ItemDecoration(FloatHub.dp2px(context, 75), FloatHub.dp2px(context, 15))); + viewBinding.caseResourceView.setAdapter(recyclerAdapter); + recyclerAdapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, DeptHandleConditionBean.DataModel dataModel) { + + } + }); + } + } + }); + } + + @Override + protected void onResume() { + super.onResume(); + //默认加载当前时间往前一个月的 + dataAnalysisViewModel.getDeptHandleCondition(TimeOrDateUtil.getSixMonthDate(), LongHub.timestampToDate(System.currentTimeMillis())); } @Override protected void initEvent() { - viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() { + viewBinding.selectCalendarButton.setOnClickListener(new View.OnClickListener() { @Override - public void onClick(View view) { - new TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(context, R.color.mainThemeColor)) - .setTitleStringId("选择日期") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH) - .setCallBack(new OnDateSetListener() { - @Override - public void onDateSet(TimePickerDialog timePickerView, long millSeconds) { - String date = TimeOrDateUtil.timestampToYearMonth(millSeconds); - viewBinding.titleBarLayout.dateView.setText(date); - } - }).build().show(getSupportFragmentManager(), "year_month"); + public void onClick(View v) { + new RangeDateActionSheet.Builder().setContext(context).setOnActionSheetListener(new RangeDateActionSheet.OnDateRangeSelectedListener() { + @Override + public void onDateRangeSelected(String startDate, String endDate) { + dataAnalysisViewModel.getDeptHandleCondition(startDate, endDate); + } + }).build().show(); + } + }); + + viewBinding.radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + if (checkedId == R.id.oneMonthRadioButton) { + dataAnalysisViewModel.getDeptHandleCondition(TimeOrDateUtil.getOneMonthDate(), LongHub.timestampToDate(System.currentTimeMillis())); + } else if (checkedId == R.id.threeMonthRadioButton) { + dataAnalysisViewModel.getDeptHandleCondition(TimeOrDateUtil.getThreeMonthDate(), LongHub.timestampToDate(System.currentTimeMillis())); + } else { + dataAnalysisViewModel.getDeptHandleCondition(TimeOrDateUtil.getSixMonthDate(), LongHub.timestampToDate(System.currentTimeMillis())); + } } }); } diff --git a/app/src/main/java/com/casic/dcms/vm/DataAnalysisViewModel.java b/app/src/main/java/com/casic/dcms/vm/DataAnalysisViewModel.java index 85fa4b2..dd7f28e 100644 --- a/app/src/main/java/com/casic/dcms/vm/DataAnalysisViewModel.java +++ b/app/src/main/java/com/casic/dcms/vm/DataAnalysisViewModel.java @@ -4,6 +4,7 @@ import com.casic.dcms.model.CaseResourceBean; import com.casic.dcms.model.CityBaseDataBean; +import com.casic.dcms.model.DeptHandleConditionBean; import com.casic.dcms.model.HighEventBean; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.retrofit.RetrofitServiceManager; @@ -24,6 +25,7 @@ public MutableLiveData cityBaseData = new MutableLiveData<>(); public MutableLiveData caseResourceData = new MutableLiveData<>(); public MutableLiveData highEventModel = new MutableLiveData<>(); + public MutableLiveData deptHandleConditionModel = new MutableLiveData<>(); public void getCityBaseData() { loadState.setValue(LoadState.Loading); @@ -123,4 +125,37 @@ } }); } + + public void getDeptHandleCondition(String begTime, String endTime) { + loadState.setValue(LoadState.Loading); + Observable observable = RetrofitServiceManager.getDeptHandleCondition(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 + public void onNext(ResponseBody responseBody) { + try { + String response = responseBody.string(); + int responseCode = StringHelper.separateResponseCode(response); + if (responseCode == 200) { + DeptHandleConditionBean resultBean = gson.fromJson(response, new TypeToken() { + }.getType()); + deptHandleConditionModel.setValue(resultBean); + } else { + loadState.setValue(LoadState.Fail); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + }); + } } diff --git a/app/src/main/res/layout/activity_dept_handle_condition.xml b/app/src/main/res/layout/activity_dept_handle_condition.xml index 0bd5447..7a7ecc8 100644 --- a/app/src/main/res/layout/activity_dept_handle_condition.xml +++ b/app/src/main/res/layout/activity_dept_handle_condition.xml @@ -7,57 +7,96 @@ + layout="@layout/include_base_title" /> - + android:layout_marginHorizontal="@dimen/dp_10" + android:layout_marginTop="@dimen/dp_10" + android:gravity="center_vertical" + android:orientation="horizontal"> - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> + \ No newline at end of file