diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/JudgmentController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/JudgmentController.java index 929a82e..b64a7e9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/JudgmentController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/JudgmentController.java @@ -108,7 +108,7 @@ } /** - * 修改每日研判通报 + * 修改每日研判通报(已废弃) */ @RequestMapping(value = "/update") @ResponseBody @@ -128,7 +128,16 @@ } /** - * 时间趋势分析接口 + * 时间趋势分析接口新 + */ + @RequestMapping(value = "/statisticsByDateTime") + @ResponseBody + public Object statisticsByDateTime() { + return ResponseData.success(judgmentService.statisticsByDateTime()); + } + + /** + * 标签分类占比接口 */ @RequestMapping(value = "/statisticsByTag") @ResponseBody @@ -136,19 +145,6 @@ return ResponseData.success(judgmentService.statisticsByTag()); } - /** - * 每日研判通报详情 - */ -// @RequestMapping(value = "/detail/{judgmentId}") -// @ResponseBody -// public Object detail(@PathVariable("judgmentId") String judgmentId) { -// ResultData resultData = new ResultData(); -// resultData.setCode(200); -// resultData.setMessage("查询详情成功"); -// resultData.setData(judgmentService.selectById(judgmentId)); -// return resultData; -// } - /** * 校验url有效性 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/JudgmentController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/JudgmentController.java index 929a82e..b64a7e9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/JudgmentController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/JudgmentController.java @@ -108,7 +108,7 @@ } /** - * 修改每日研判通报 + * 修改每日研判通报(已废弃) */ @RequestMapping(value = "/update") @ResponseBody @@ -128,7 +128,16 @@ } /** - * 时间趋势分析接口 + * 时间趋势分析接口新 + */ + @RequestMapping(value = "/statisticsByDateTime") + @ResponseBody + public Object statisticsByDateTime() { + return ResponseData.success(judgmentService.statisticsByDateTime()); + } + + /** + * 标签分类占比接口 */ @RequestMapping(value = "/statisticsByTag") @ResponseBody @@ -136,19 +145,6 @@ return ResponseData.success(judgmentService.statisticsByTag()); } - /** - * 每日研判通报详情 - */ -// @RequestMapping(value = "/detail/{judgmentId}") -// @ResponseBody -// public Object detail(@PathVariable("judgmentId") String judgmentId) { -// ResultData resultData = new ResultData(); -// resultData.setCode(200); -// resultData.setMessage("查询详情成功"); -// resultData.setData(judgmentService.selectById(judgmentId)); -// return resultData; -// } - /** * 校验url有效性 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IJudgmentService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IJudgmentService.java index 44604b6..8cf53c6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IJudgmentService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IJudgmentService.java @@ -21,6 +21,8 @@ List> statisticsByTime(); + List> statisticsByDateTime(); + Map statisticsByTag(); List getListByTime(JudgmentRequest judgmentRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/JudgmentController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/JudgmentController.java index 929a82e..b64a7e9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/JudgmentController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/JudgmentController.java @@ -108,7 +108,7 @@ } /** - * 修改每日研判通报 + * 修改每日研判通报(已废弃) */ @RequestMapping(value = "/update") @ResponseBody @@ -128,7 +128,16 @@ } /** - * 时间趋势分析接口 + * 时间趋势分析接口新 + */ + @RequestMapping(value = "/statisticsByDateTime") + @ResponseBody + public Object statisticsByDateTime() { + return ResponseData.success(judgmentService.statisticsByDateTime()); + } + + /** + * 标签分类占比接口 */ @RequestMapping(value = "/statisticsByTag") @ResponseBody @@ -136,19 +145,6 @@ return ResponseData.success(judgmentService.statisticsByTag()); } - /** - * 每日研判通报详情 - */ -// @RequestMapping(value = "/detail/{judgmentId}") -// @ResponseBody -// public Object detail(@PathVariable("judgmentId") String judgmentId) { -// ResultData resultData = new ResultData(); -// resultData.setCode(200); -// resultData.setMessage("查询详情成功"); -// resultData.setData(judgmentService.selectById(judgmentId)); -// return resultData; -// } - /** * 校验url有效性 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IJudgmentService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IJudgmentService.java index 44604b6..8cf53c6 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IJudgmentService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IJudgmentService.java @@ -21,6 +21,8 @@ List> statisticsByTime(); + List> statisticsByDateTime(); + Map statisticsByTag(); List getListByTime(JudgmentRequest judgmentRequest); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/JudgmentServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/JudgmentServiceImpl.java index 179baf4..c57f84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/JudgmentServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/JudgmentServiceImpl.java @@ -22,6 +22,7 @@ import org.springframework.stereotype.Service; import java.util.*; +import java.util.stream.Collectors; /** *

@@ -51,79 +52,190 @@ List> hashMapList = new ArrayList<>(); dicts.forEach(dict -> { HashMap tagMap = new HashMap<>(); - tagMap.put(dict.getName(),0L); + tagMap.put(dict.getName(), 0L); //根据日期和一级标题统计总数 judgmentList.forEach(judgment -> { - if(dict.getName().equals(judgment.getFirstTitle())&& ObjectUtil.isNotEmpty(judgment.getCreateTime())){ - if(DateUtil.isSameDay(DateUtil.parseDate(judgment.getCreateTime()), dateTime)){ + if (dict.getName().equals(judgment.getFirstTitle()) && ObjectUtil.isNotEmpty(judgment.getCreateTime())) { + if (DateUtil.isSameDay(DateUtil.parseDate(judgment.getCreateTime()), dateTime)) { // tagMap.put(dict.getName(),tagMap.get(dict.getName())+judgment.getTitleCount()); } } }); hashMapList.add(tagMap); }); - dayMap.put(DateUtil.formatDate(dateTime),hashMapList); + dayMap.put(DateUtil.formatDate(dateTime), hashMapList); hashMaps.add(dayMap); }); return hashMaps; } @Override + public List> statisticsByDateTime() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge("END_TIME", DateUtil.offsetDay(new Date(), -6)); + List judgmentList = this.list(queryWrapper); + List> hashMaps = new ArrayList<>(); + //按照日期封装曲线图,默认一周 + List dateTimeList = DateUtil.rangeToList(DateUtil.offsetDay(new Date(), -6), new Date(), DateField.DAY_OF_YEAR); + dateTimeList.forEach(dateTime -> { + HashMap dayMap = new HashMap<>(); + List> hashMapList = new ArrayList<>(); + //涉党曲线 + HashMap tag1Map = new HashMap<>(); + tag1Map.put("first", 0L); + //涉政曲线 + HashMap tag2Map = new HashMap<>(); + tag2Map.put("second", 0L); + //常规曲线 + HashMap tag3Map = new HashMap<>(); + tag3Map.put("third", 0L); + judgmentList.forEach(judgment -> { + if (DateUtil.isSameDay(DateUtil.parseDate(judgment.getEndTime()), dateTime)) { + if (ObjectUtil.isNotEmpty(judgment.getFirstTitle())) { + JSONArray jsonArray = (JSONArray) JSONArray.parse(judgment.getFirstTitle()); + List firstList = JSONObject.parseArray(jsonArray.toJSONString(), CommonRequest.class); + Long firstTotal = 0L; + for (CommonRequest commonRequest : firstList) { + firstTotal += Long.valueOf(commonRequest.getValue() + ""); + } + tag1Map.put("first", tag1Map.get("first") + firstTotal); + } + if (ObjectUtil.isNotEmpty(judgment.getSecondTitle())) { + JSONArray jsonArray = (JSONArray) JSONArray.parse(judgment.getSecondTitle()); + List secondList = JSONObject.parseArray(jsonArray.toJSONString(), CommonRequest.class); + Long secondTotal = 0L; + for (CommonRequest commonRequest : secondList) { + secondTotal += Long.valueOf(commonRequest.getValue() + ""); + } + tag2Map.put("second", tag2Map.get("second") + secondTotal); + } + if (ObjectUtil.isNotEmpty(judgment.getThirdTitle())) { + JSONArray jsonArray = (JSONArray) JSONArray.parse(judgment.getThirdTitle()); + List thirdList = JSONObject.parseArray(jsonArray.toJSONString(), CommonRequest.class); + Long thirdTotal = 0L; + for (CommonRequest commonRequest : thirdList) { + thirdTotal += Long.valueOf(commonRequest.getValue() + ""); + } + tag3Map.put("third", tag3Map.get("third") + thirdTotal); + } + } + }); + hashMapList.add(tag1Map); + hashMapList.add(tag2Map); + hashMapList.add(tag3Map); + dayMap.put(DateUtil.formatDate(dateTime), hashMapList); + hashMaps.add(dayMap); + }); + return hashMaps; + } + + public List processUtil(List list1, List list2) { + list1.forEach(obj -> { + boolean isExist = false; + for (CommonRequest commonRequest : list2) { + if (commonRequest.getName().equals(obj.getName())) { + commonRequest.setValue(Integer.valueOf(commonRequest.getValue()) + Integer.valueOf(obj.getValue()) + ""); + isExist = true; + } + } + if (!isExist) { + list2.add(obj); + } + }); + return list2; + } + + @Override public List getListByTime(JudgmentRequest judgmentRequest) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.ge(ObjectUtil.isNotEmpty(judgmentRequest.getBeginTime()),"endTime",judgmentRequest.getBeginTime()); - queryWrapper.le(ObjectUtil.isNotEmpty(judgmentRequest.getEndTime()),"endTime",judgmentRequest.getEndTime()); + queryWrapper.ge(ObjectUtil.isNotEmpty(judgmentRequest.getBeginTime()), "endTime", judgmentRequest.getBeginTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(judgmentRequest.getEndTime()), "endTime", judgmentRequest.getEndTime()); List judgmentList = this.list(queryWrapper); judgmentList.forEach(judgment -> { - if(ObjectUtil.isNotEmpty(judgment.getFirstTitle())){ + if (ObjectUtil.isNotEmpty(judgment.getFirstTitle())) { JSONArray jsonArray = (JSONArray) JSONArray.parse(judgment.getFirstTitle()); List list = JSONObject.parseArray(jsonArray.toJSONString(), CommonRequest.class); - judgment.setTitle1List(list); + judgment.setTitle1List(ObjectUtil.isNotEmpty(judgment.getTitle1List()) ? processUtil(list, judgment.getTitle1List()) : list); } - if(ObjectUtil.isNotEmpty(judgment.getSecondTitle())){ + if (ObjectUtil.isNotEmpty(judgment.getSecondTitle())) { JSONArray jsonArray = (JSONArray) JSONArray.parse(judgment.getSecondTitle()); List list = JSONObject.parseArray(jsonArray.toJSONString(), CommonRequest.class); - judgment.setTitle2List(list); + judgment.setTitle2List(ObjectUtil.isNotEmpty(judgment.getTitle2List()) ? processUtil(list, judgment.getTitle2List()) : list); + } - if(ObjectUtil.isNotEmpty(judgment.getThirdTitle())){ + if (ObjectUtil.isNotEmpty(judgment.getThirdTitle())) { JSONArray jsonArray = (JSONArray) JSONArray.parse(judgment.getThirdTitle()); List list = JSONObject.parseArray(jsonArray.toJSONString(), CommonRequest.class); - judgment.setTitle3List(list); + judgment.setTitle3List(ObjectUtil.isNotEmpty(judgment.getTitle3List()) ? processUtil(list, judgment.getTitle3List()) : list); } }); return judgmentList; } @Override - public MapstatisticsByTag() { + public Map statisticsByTag() { List judgmentList = this.list(); List firstTagDicts = dictService.findInDictByCode(DictEnum.FIRST_TAG); - Map resultMap = new HashMap<>(); - Map hashMap = new HashMap<>(); - firstTagDicts.forEach(firstTagDict->{ - List secondTagDicts = dictService.findInDictByPid(firstTagDict.getId()); + Map resultMap = new HashMap<>(); + Map hashMap = new HashMap<>(); + firstTagDicts.forEach(firstTagDict -> { + List secondTagDicts = dictService.findInDictByPid(firstTagDict.getId()); //获取二级标签 - secondTagDicts.forEach(secondTagDict->{ - hashMap.put(secondTagDict.getName(),0L); + secondTagDicts.forEach(secondTagDict -> { + hashMap.put(firstTagDict.getName()+"-"+secondTagDict.getName(), 0L); //统计二级标签数量 judgmentList.forEach(judgment -> { - if(secondTagDict.getName().equals(judgment.getSecondTitle())){ -// hashMap.put(secondTagDict.getName(),hashMap.get(secondTagDict.getName())+judgment.getTitleCount()); + if (ObjectUtil.isNotEmpty(judgment.getFirstTitle())) { + JSONArray jsonArray = (JSONArray) JSONArray.parse(judgment.getFirstTitle()); + List list = JSONObject.parseArray(jsonArray.toJSONString(), CommonRequest.class); + for (CommonRequest commonRequest : list) { + if (secondTagDict.getName().equals(commonRequest.getName())) { + hashMap.put(firstTagDict.getName()+"-"+secondTagDict.getName(), hashMap.get(firstTagDict.getName()+"-"+secondTagDict.getName()) + Long.valueOf(commonRequest.getValue())); + } + } } + if (ObjectUtil.isNotEmpty(judgment.getSecondTitle())) { + JSONArray jsonArray = (JSONArray) JSONArray.parse(judgment.getSecondTitle()); + List list = JSONObject.parseArray(jsonArray.toJSONString(), CommonRequest.class); + for (CommonRequest commonRequest : list) { + if (secondTagDict.getName().equals(commonRequest.getName())) { + hashMap.put(firstTagDict.getName()+"-"+secondTagDict.getName(), hashMap.get(firstTagDict.getName()+"-"+secondTagDict.getName()) + Long.valueOf(commonRequest.getValue())); + } + } + } + if (ObjectUtil.isNotEmpty(judgment.getThirdTitle())) { + JSONArray jsonArray = (JSONArray) JSONArray.parse(judgment.getThirdTitle()); + List list = JSONObject.parseArray(jsonArray.toJSONString(), CommonRequest.class); + for (CommonRequest commonRequest : list) { + if (secondTagDict.getName().equals(commonRequest.getName())) { + hashMap.put(firstTagDict.getName()+"-"+secondTagDict.getName(), hashMap.get(firstTagDict.getName()+"-"+secondTagDict.getName()) + Long.valueOf(commonRequest.getValue())); + } + } + } + }); }); }); - long count=0; - for (Map.Entry < String, Long > entry: hashMap.entrySet()) { - resultMap.put(entry.getKey(),0); - count+=entry.getValue(); + + long count = 0; + for (Map.Entry entry : hashMap.entrySet()) { + resultMap.put(entry.getKey(), entry.getValue()); + count += entry.getValue(); } - if(count!=0){ - for (Map.Entry < String, Object > entry: resultMap.entrySet()) { - resultMap.put(entry.getKey(),String.format("%.2f", (Double)entry.getValue()/count)); + if (count != 0) { + for (Map.Entry entry : resultMap.entrySet()) { + resultMap.put(entry.getKey(), String.format("%.2f", Double.valueOf(entry.getValue() + "") / count)); } } - return resultMap; + + //根据数量排序 + HashMap finalOut = new LinkedHashMap<>(); + resultMap.entrySet() + .stream() + .sorted((p1, p2) -> p2.getValue().toString().compareTo(p1.getValue().toString())) + .collect(Collectors.toList()).forEach(ele -> finalOut.put(ele.getKey(), ele.getValue())); + return finalOut; } + }