diff --git a/app/src/main/java/com/casic/dcms/view/statistics/HighEventActivity.java b/app/src/main/java/com/casic/dcms/view/statistics/HighEventActivity.java index 023c399..5f36857 100644 --- a/app/src/main/java/com/casic/dcms/view/statistics/HighEventActivity.java +++ b/app/src/main/java/com/casic/dcms/view/statistics/HighEventActivity.java @@ -30,6 +30,9 @@ import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashSet; import java.util.List; /** @@ -77,34 +80,52 @@ List dataModels = resultBean.getData(); List pieEntries = new ArrayList<>(); List effectiveModels = new ArrayList<>(); + for (HighEventBean.DataModel dataModel : dataModels) { if (!dataModel.getCaseMajorType().equals("")) { effectiveModels.add(dataModel); - - caseCount += Integer.parseInt(dataModel.getCaseNum()); - - if (!dataModel.getCaseNum().equals("0")) { - pieEntries.add(new PieEntry(Float.parseFloat(dataModel.getCaseNum()), dataModel.getCaseType())); - } + } else { + caseCount = Integer.parseInt(dataModel.getCaseNum()); } } viewBinding.caseCountView.setText("案卷数:" + caseCount); + //获取大类 + HashSet majorTypeSet = new HashSet<>(); + for (HighEventBean.DataModel effectiveModel : effectiveModels) { + majorTypeSet.add(effectiveModel.getCaseMajorType()); + } + + //按大类重组数据 + List regroupModels = new ArrayList<>(); + for (String type : majorTypeSet) { + regroupModels.add(getEventByType(effectiveModels, type)); + } + + //按数量排序 + Collections.sort(regroupModels, new RegroupHighEventComparator()); + + for (RegroupHighEventBean model : regroupModels) { + if (model.getCaseNum() != 0) { + pieEntries.add(new PieEntry(model.getCaseNum(), model.getCaseMajorType())); + } + } + //数据绑定饼图 ChartViewHelper.setPieChartData(viewBinding.resourcePieChart, pieEntries); //绑定列表 - NormalRecyclerAdapter recyclerAdapter = new NormalRecyclerAdapter(R.layout.item_case_resource_lv_l, effectiveModels) { + NormalRecyclerAdapter recyclerAdapter = new NormalRecyclerAdapter(R.layout.item_case_resource_lv_l, regroupModels) { @Override - public void convertView(ViewHolder viewHolder, int position, HighEventBean.DataModel item) { + public void convertView(ViewHolder viewHolder, int position, RegroupHighEventBean 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.getCaseType()) - .setText(R.id.caseNumView, item.getCaseNum()); + .setText(R.id.caseSourceView, item.getCaseMajorType()) + .setText(R.id.caseNumView, String.valueOf(item.getCaseNum())); } }; viewBinding.highEventCaseView.addItemDecoration(new ItemDecoration(FloatHub.dp2px(context, 75), FloatHub.dp2px(context, 15))); @@ -114,6 +135,23 @@ }); } + private RegroupHighEventBean getEventByType(List effectiveModels, String type) { + List models = new ArrayList<>(); + for (HighEventBean.DataModel model : effectiveModels) { + if (model.getCaseMajorType().equals(type)) { + models.add(model); + } + } + RegroupHighEventBean eventBean = new RegroupHighEventBean(); + eventBean.setCaseMajorType(type); + int caseCount = 0; + for (HighEventBean.DataModel model : models) { + caseCount += Integer.parseInt(model.getCaseNum()); + } + eventBean.setCaseNum(caseCount); + return eventBean; + } + @Override protected void onResume() { super.onResume(); @@ -148,4 +186,35 @@ } }); } + + //内部类 + static class RegroupHighEventBean { + private String caseMajorType; + private int caseNum; + + public String getCaseMajorType() { + return caseMajorType; + } + + public void setCaseMajorType(String caseMajorType) { + this.caseMajorType = caseMajorType; + } + + public int getCaseNum() { + return caseNum; + } + + public void setCaseNum(int caseNum) { + this.caseNum = caseNum; + } + } + + static class RegroupHighEventComparator implements Comparator { + @Override + public int compare(RegroupHighEventBean o1, RegroupHighEventBean o2) { + int i = o1.getCaseNum(); + int j = o2.getCaseNum(); + return j - i; + } + } } \ No newline at end of file