|
@@ -144,32 +144,53 @@ public class TaskTypeSettingManagerImpl implements ITaskTypeSettingManager{
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Map<Long, BigDecimal> findReachPerGroupByTypeId(Map<String, Object> param) {
|
|
|
+ public Map<String,Map<Long, BigDecimal>> findReachPerGroupByTypeId(Map<String, Object> param) {
|
|
|
+ Map<String,Map<Long, BigDecimal>> resultMap = new HashMap<>();
|
|
|
List<Map<String, Object>> list = taskTypeSettingDao.findReachCountGroupByTypeId(param);
|
|
|
- Map<Long, BigDecimal> map = new HashMap<>();
|
|
|
+ Map<Long, BigDecimal> reachMap = new HashMap<>();
|
|
|
+ Map<Long, BigDecimal> caseProportionMap = new HashMap<>();
|
|
|
if (!list.isEmpty()){
|
|
|
list.stream().forEach(e -> {
|
|
|
BigDecimal hundredBigDecimal = new BigDecimal(100);
|
|
|
BigDecimal reachPer = new BigDecimal(e.get("reachNum").toString()).divide(new BigDecimal(e.get("allNum").toString()), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- map.put(Long.parseLong(e.get("typeId").toString()),reachPer.multiply(hundredBigDecimal).setScale(0, RoundingMode.DOWN));
|
|
|
+ reachMap.put(Long.parseLong(e.get("typeId").toString()),reachPer.multiply(hundredBigDecimal).setScale(0, RoundingMode.DOWN));
|
|
|
+
|
|
|
+
|
|
|
+ BigDecimal caseProportion = new BigDecimal(e.get("caseProportionSum").toString()).divide(new BigDecimal(e.get("allCaseProportionNum").toString()), 1, BigDecimal.ROUND_HALF_UP);
|
|
|
+ caseProportionMap.put(Long.parseLong(e.get("typeId").toString()),caseProportion);
|
|
|
});
|
|
|
+
|
|
|
+ resultMap.put("reachMap",reachMap);
|
|
|
+ resultMap.put("caseProportionMap",caseProportionMap);
|
|
|
}
|
|
|
- return map;
|
|
|
+ return resultMap;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Map<String, Object> calculateCaseProportion(Map<String, Object> param) {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
- map.put("name","案件比");
|
|
|
+ map.put("name","全部事件");
|
|
|
map.put("allNum",0);
|
|
|
List<Map<String, Object>> list = taskTypeSettingDao.findCaseProportion(param);
|
|
|
if (!list.isEmpty()) {
|
|
|
Map<String, Object> caseProportionMap = list.get(0);
|
|
|
- String allNum = caseProportionMap.get("allNum").toString();
|
|
|
- if ("0".equals(allNum)) return map;
|
|
|
- BigDecimal caseProportion = new BigDecimal(caseProportionMap.get("caseProportionSum").toString()).divide(new BigDecimal(allNum), 1, BigDecimal.ROUND_HALF_UP);
|
|
|
- map.put("caseProportion",caseProportion);
|
|
|
- map.put("allNum",caseProportionMap.get("allNum"));
|
|
|
+ String allNum = caseProportionMap.get("allCaseProportionNum").toString();
|
|
|
+ //案件比
|
|
|
+ if (!"0".equals(allNum)){
|
|
|
+ BigDecimal caseProportion = new BigDecimal(caseProportionMap.get("caseProportionSum").toString()).divide(new BigDecimal(allNum), 1, BigDecimal.ROUND_HALF_UP);
|
|
|
+ map.put("caseProportion",caseProportion);
|
|
|
+ map.put("allNum",allNum);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ String allTypeNum = caseProportionMap.get("allTypeNum").toString();
|
|
|
+ //满足率
|
|
|
+ if (!"0".equals(allTypeNum)){
|
|
|
+ BigDecimal hundredBigDecimal = new BigDecimal(100);
|
|
|
+ BigDecimal reachPer = new BigDecimal(caseProportionMap.get("allReachTypeNum").toString()).divide(new BigDecimal(allTypeNum), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ map.put("reachPer",reachPer.multiply(hundredBigDecimal).setScale(0, RoundingMode.DOWN)+"%");
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
return map;
|