From 1da721dc35f12f4d802dc0f0ba24f7f05e5287af Mon Sep 17 00:00:00 2001 From: xjm Date: Tue, 28 May 2024 17:27:22 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E8=BF=87=E8=A1=8C=E6=94=BF=E5=8C=BA?= =?UTF-8?q?=E5=88=92=E4=B8=8B=E8=BD=BDexcel=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../whdc/controller/WarningController.java | 254 +++++++++++------- .../java/com/whdc/model/vo/WarningListVo.java | 4 + 2 files changed, 157 insertions(+), 101 deletions(-) diff --git a/src/main/java/com/whdc/controller/WarningController.java b/src/main/java/com/whdc/controller/WarningController.java index b5c50f7..dc3dd64 100644 --- a/src/main/java/com/whdc/controller/WarningController.java +++ b/src/main/java/com/whdc/controller/WarningController.java @@ -27,10 +27,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -72,50 +69,50 @@ public class WarningController { ArrayList filter = Lists.newArrayList(); String publishUnit = dto.getPublishUnit(); - if (StringUtils.isNotBlank(publishUnit)) { - String[] split = publishUnit.split(","); - if (split.length > 1) { - String str = "("; - for (String s : split) { - str += s + ","; - } - str = str.substring(0, str.length() - 1) + ")"; - filter.add(new ApiDto.Filter("publishUnit", "in " + str, "")); - - } else { - filter.add(new ApiDto.Filter("publishUnit", "like", String.format("%s%s%s", "%", publishUnit, "%"))); - } - } +// if (StringUtils.isNotBlank(publishUnit)) { +// String[] split = publishUnit.split(","); +// if (split.length > 1) { +// String str = "("; +// for (String s : split) { +// str += s + ","; +// } +// str = str.substring(0, str.length() - 1) + ")"; +// filter.add(new ApiDto.Filter("publishUnit", "in " + str, "")); +// +// } else { +// filter.add(new ApiDto.Filter("publishUnit", "like", String.format("%s%s%s", "%", publishUnit, "%"))); +// } +// } String warnSignalLevel = dto.getWarnSignalLevel(); - if (StringUtils.isNotBlank(warnSignalLevel)) { - String[] split = warnSignalLevel.split(","); - if (split.length > 1) { - String str = "("; - for (String s : split) { - str += s + ","; - } - str = str.substring(0, str.length() - 1) + ")"; - filter.add(new ApiDto.Filter("warnSignalLevel", "in " + str, "")); - - } else { - filter.add(new ApiDto.Filter("warnSignalLevel", "like", String.format("%s%s%s", "%", warnSignalLevel, "%"))); - } - } +// if (StringUtils.isNotBlank(warnSignalLevel)) { +// String[] split = warnSignalLevel.split(","); +// if (split.length > 1) { +// String str = "("; +// for (String s : split) { +// str += s + ","; +// } +// str = str.substring(0, str.length() - 1) + ")"; +// filter.add(new ApiDto.Filter("warnSignalLevel", "in " + str, "")); +// +// } else { +// filter.add(new ApiDto.Filter("warnSignalLevel", "like", String.format("%s%s%s", "%", warnSignalLevel, "%"))); +// } +// } String warnSignalType = dto.getWarnSignalType(); - if (StringUtils.isNotBlank(warnSignalType)) { - String[] split = warnSignalType.split(","); - if (split.length > 1) { - String str = "("; - for (String s : split) { - str += s + ","; - } - str = str.substring(0, str.length() - 1) + ")"; - filter.add(new ApiDto.Filter("warnSignalType", "in " + str, "")); - - } else { - filter.add(new ApiDto.Filter("warnSignalType", "like", String.format("%s%s%s", "%", warnSignalType, "%"))); - } - } +// if (StringUtils.isNotBlank(warnSignalType)) { +// String[] split = warnSignalType.split(","); +// if (split.length > 1) { +// String str = "("; +// for (String s : split) { +// str += s + ","; +// } +// str = str.substring(0, str.length() - 1) + ")"; +// filter.add(new ApiDto.Filter("warnSignalType", "in " + str, "")); +// +// } else { +// filter.add(new ApiDto.Filter("warnSignalType", "like", String.format("%s%s%s", "%", warnSignalType, "%"))); +// } +// } apiDto.setFilter(filter); // String str = HttpUtil.sendPost("http://223.75.53.141:8000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(apiDto)); @@ -123,7 +120,8 @@ public class WarningController { JSONObject json = JSON.parseObject(str); if (json != null && json.getInteger("code") == HttpStatus.SC_OK) { List data = json.getJSONArray("data").toJavaList(WarningData.class); - return ResultJson.ok(getList(data)); + + return ResultJson.ok(getList(data, publishUnit, warnSignalLevel, warnSignalType)); } return ResultJson.ok(json); @@ -147,50 +145,50 @@ public class WarningController { ArrayList filter = Lists.newArrayList(); String publishUnit = dto.getPublishUnit(); - if (StringUtils.isNotBlank(publishUnit)) { - String[] split = publishUnit.split(","); - if (split.length > 1) { - String str = "("; - for (String s : split) { - str += s + ","; - } - str = str.substring(0, str.length() - 1) + ")"; - filter.add(new ApiDto.Filter("publishUnit", "in " + str, "")); - - } else { - filter.add(new ApiDto.Filter("publishUnit", "like", String.format("%s%s%s", "%", publishUnit, "%"))); - } - } +// if (StringUtils.isNotBlank(publishUnit)) { +// String[] split = publishUnit.split(","); +// if (split.length > 1) { +// String str = "("; +// for (String s : split) { +// str += s + ","; +// } +// str = str.substring(0, str.length() - 1) + ")"; +// filter.add(new ApiDto.Filter("publishUnit", "in " + str, "")); +// +// } else { +// filter.add(new ApiDto.Filter("publishUnit", "like", String.format("%s%s%s", "%", publishUnit, "%"))); +// } +// } String warnSignalLevel = dto.getWarnSignalLevel(); - if (StringUtils.isNotBlank(warnSignalLevel)) { - String[] split = warnSignalLevel.split(","); - if (split.length > 1) { - String str = "("; - for (String s : split) { - str += s + ","; - } - str = str.substring(0, str.length() - 1) + ")"; - filter.add(new ApiDto.Filter("warnSignalLevel", "in " + str, "")); - - } else { - filter.add(new ApiDto.Filter("warnSignalLevel", "like", String.format("%s%s%s", "%", warnSignalLevel, "%"))); - } - } +// if (StringUtils.isNotBlank(warnSignalLevel)) { +// String[] split = warnSignalLevel.split(","); +// if (split.length > 1) { +// String str = "("; +// for (String s : split) { +// str += s + ","; +// } +// str = str.substring(0, str.length() - 1) + ")"; +// filter.add(new ApiDto.Filter("warnSignalLevel", "in " + str, "")); +// +// } else { +// filter.add(new ApiDto.Filter("warnSignalLevel", "like", String.format("%s%s%s", "%", warnSignalLevel, "%"))); +// } +// } String warnSignalType = dto.getWarnSignalType(); - if (StringUtils.isNotBlank(warnSignalType)) { - String[] split = warnSignalType.split(","); - if (split.length > 1) { - String str = "("; - for (String s : split) { - str += s + ","; - } - str = str.substring(0, str.length() - 1) + ")"; - filter.add(new ApiDto.Filter("warnSignalType", "in " + str, "")); - - } else { - filter.add(new ApiDto.Filter("warnSignalType", "like", String.format("%s%s%s", "%", warnSignalType, "%"))); - } - } +// if (StringUtils.isNotBlank(warnSignalType)) { +// String[] split = warnSignalType.split(","); +// if (split.length > 1) { +// String str = "("; +// for (String s : split) { +// str += s + ","; +// } +// str = str.substring(0, str.length() - 1) + ")"; +// filter.add(new ApiDto.Filter("warnSignalType", "in " + str, "")); +// +// } else { +// filter.add(new ApiDto.Filter("warnSignalType", "like", String.format("%s%s%s", "%", warnSignalType, "%"))); +// } +// } apiDto.setFilter(filter); @@ -199,7 +197,7 @@ public class WarningController { JSONObject json = JSON.parseObject(str); if (json != null && json.getInteger("code") == HttpStatus.SC_OK) { List data = json.getJSONArray("data").toJavaList(WarningData.class); - return ResultJson.ok(getCount(data)); + return ResultJson.ok(getCount(data, publishUnit, warnSignalLevel, warnSignalType)); } return ResultJson.ok(json); @@ -211,21 +209,28 @@ public class WarningController { * @param data * @return */ - private List getList(List data) { + private List getList(List data, + String reqPublishUnit, + String reqWarnSignalLevel, + String reqWarnSignalType) { List respList = Lists.newArrayList(); for (WarningData datum : data) { for (WarningData.TypeList typeList : datum.getTypeList()) { // 预警类型 String type = typeList.getType(); - for (WarningData.Warning warning : typeList.getWarnList()) { + List warnList = typeList.getWarnList(); + + warnList = warnListFilter(warnList, reqPublishUnit, reqWarnSignalLevel, reqWarnSignalType); + + for (WarningData.Warning warning : warnList) { WarningListVo vo = new WarningListVo(); String publishUnit = warning.getPublishUnit(); vo.setTitle(publishUnit + "发布" + type + "预警"); vo.setPublishTime(warning.getPublishTime()); vo.setContent(warning.getContent()); vo.setWarnSignalType(warning.getWarnSignalType()); - vo.setWarnSignalLevel(warning.getWarnSignalLevel()); + vo.setAdnm(publishUnit.replace("气象台", "")); vo.setAddressBooks(addressBookService.getListByAdnm(publishUnit.replace("气象台", ""))); respList.add(vo); } @@ -238,10 +243,53 @@ public class WarningController { /** * 正在生效预警 * - * @param data * @return */ - private List getCount(List data) { + private List warnListFilter(List warnList, + String publishUnit, + String warnSignalLevel, + String warnSignalType + ) { + if (StringUtils.isNotBlank(publishUnit)) { + HashSet set = Sets.newHashSet(publishUnit.split(",")); + if (CollectionUtils.isNotEmpty(set)) { + warnList = warnList.stream() + .filter(w -> + set.contains(w.getPublishUnit().split("气象")[0]) + ).collect(Collectors.toList()); + } + } + + + if (StringUtils.isNotBlank(warnSignalLevel)) { + HashSet set = Sets.newHashSet(warnSignalLevel.split(",")); + if (CollectionUtils.isNotEmpty(set)) { + warnList = warnList.stream() + .filter(w -> + set.contains(w.getWarnSignalLevel()) + ).collect(Collectors.toList()); + } + } + + + if (StringUtils.isNotBlank(warnSignalType)) { + HashSet set = Sets.newHashSet(warnSignalType.split(",")); + if (CollectionUtils.isNotEmpty(set)) { + warnList = warnList.stream() + .filter(w -> + set.contains(w.getWarnSignalType()) + ).collect(Collectors.toList()); + } + } + + return warnList; + } + + private List getCount(List data, + String publishUnit, + String warnSignalLevel, + String reqWarnSignalType + ) { List warnList = Lists.newArrayList(); for (WarningData datum : data) { @@ -253,10 +301,13 @@ public class WarningController { } } + warnList = warnListFilter(warnList, publishUnit, warnSignalLevel, reqWarnSignalType); + Map> warnMap = warnList.stream() .collect(Collectors .groupingBy(WarningData.Warning::getPublishUnit, Collectors.toList())); + List voList = Lists.newArrayList(); warnMap.forEach((k, v) -> { @@ -310,7 +361,7 @@ public class WarningController { }); // 保证完整数据 - warnSignalType.forEach(kt ->{ + warnSignalType.forEach(kt -> { WarningHistoryListVo voType = new WarningHistoryListVo(); voType.setWarnSignalType(kt); typeList.add(voType); @@ -335,8 +386,8 @@ public class WarningController { return setAll(voList); } - private List setAll( List vos){ - if (CollectionUtils.isNotEmpty(vos)){ + private List setAll(List vos) { + if (CollectionUtils.isNotEmpty(vos)) { WarningHistoryListVo vo = new WarningHistoryListVo(); vo.setWarnSignalType("全部"); vo.setEffectArea("总计"); @@ -349,7 +400,7 @@ public class WarningController { int yelSum = vos.stream().mapToInt(WarningHistoryListVo::getYelCount).sum(); vo.setYelCount(yelSum); vo.setSumCount(oraSum + redSum + bluSum + yelSum); - vos.add(0,vo); + vos.add(0, vo); } return vos; } @@ -361,7 +412,7 @@ public class WarningController { String adnm = adcdTree.getAdnm(); List children = adcdTree.getChildren(); - List vos = areaMap.get(adnm); + List vos = areaMap.remove(adnm); if (CollectionUtils.isNotEmpty(vos)) { WarningHistoryListVo vo = vos.get(0); List childList = Lists.newArrayList(); @@ -371,7 +422,7 @@ public class WarningController { for (int i = 1; i < children.size(); i++) { AdcdTree t = children.get(i); String adnm1 = t.getAdnm(); - List vos1 = areaMap.get(adnm1); + List vos1 = areaMap.remove(adnm1); if (CollectionUtils.isNotEmpty(vos1)) { childList.addAll(vos1); } @@ -384,6 +435,7 @@ public class WarningController { } } + return respList; } } diff --git a/src/main/java/com/whdc/model/vo/WarningListVo.java b/src/main/java/com/whdc/model/vo/WarningListVo.java index a25127a..3053720 100644 --- a/src/main/java/com/whdc/model/vo/WarningListVo.java +++ b/src/main/java/com/whdc/model/vo/WarningListVo.java @@ -35,6 +35,10 @@ public class WarningListVo { @ApiModelProperty(value = "预警级别", dataType = "java.lang.String") private String warnSignalLevel; + @ApiParam(value = "行政区划") + @ApiModelProperty(value = "行政区划", dataType = "java.lang.String") + private String adnm; + @ApiModelProperty(value = "预警内容") private String content;