通过行政区划下载excel新增

master
徐杰盟 2024-05-28 17:27:22 +08:00
parent e39dc5b555
commit 1da721dc35
2 changed files with 157 additions and 101 deletions

View File

@ -27,10 +27,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -72,50 +69,50 @@ public class WarningController {
ArrayList<ApiDto.Filter> filter = Lists.newArrayList(); ArrayList<ApiDto.Filter> filter = Lists.newArrayList();
String publishUnit = dto.getPublishUnit(); String publishUnit = dto.getPublishUnit();
if (StringUtils.isNotBlank(publishUnit)) { // if (StringUtils.isNotBlank(publishUnit)) {
String[] split = publishUnit.split(","); // String[] split = publishUnit.split(",");
if (split.length > 1) { // if (split.length > 1) {
String str = "("; // String str = "(";
for (String s : split) { // for (String s : split) {
str += s + ","; // str += s + ",";
} // }
str = str.substring(0, str.length() - 1) + ")"; // str = str.substring(0, str.length() - 1) + ")";
filter.add(new ApiDto.Filter("publishUnit", "in " + str, "")); // filter.add(new ApiDto.Filter("publishUnit", "in " + str, ""));
//
} else { // } else {
filter.add(new ApiDto.Filter("publishUnit", "like", String.format("%s%s%s", "%", publishUnit, "%"))); // filter.add(new ApiDto.Filter("publishUnit", "like", String.format("%s%s%s", "%", publishUnit, "%")));
} // }
} // }
String warnSignalLevel = dto.getWarnSignalLevel(); String warnSignalLevel = dto.getWarnSignalLevel();
if (StringUtils.isNotBlank(warnSignalLevel)) { // if (StringUtils.isNotBlank(warnSignalLevel)) {
String[] split = warnSignalLevel.split(","); // String[] split = warnSignalLevel.split(",");
if (split.length > 1) { // if (split.length > 1) {
String str = "("; // String str = "(";
for (String s : split) { // for (String s : split) {
str += s + ","; // str += s + ",";
} // }
str = str.substring(0, str.length() - 1) + ")"; // str = str.substring(0, str.length() - 1) + ")";
filter.add(new ApiDto.Filter("warnSignalLevel", "in " + str, "")); // filter.add(new ApiDto.Filter("warnSignalLevel", "in " + str, ""));
//
} else { // } else {
filter.add(new ApiDto.Filter("warnSignalLevel", "like", String.format("%s%s%s", "%", warnSignalLevel, "%"))); // filter.add(new ApiDto.Filter("warnSignalLevel", "like", String.format("%s%s%s", "%", warnSignalLevel, "%")));
} // }
} // }
String warnSignalType = dto.getWarnSignalType(); String warnSignalType = dto.getWarnSignalType();
if (StringUtils.isNotBlank(warnSignalType)) { // if (StringUtils.isNotBlank(warnSignalType)) {
String[] split = warnSignalType.split(","); // String[] split = warnSignalType.split(",");
if (split.length > 1) { // if (split.length > 1) {
String str = "("; // String str = "(";
for (String s : split) { // for (String s : split) {
str += s + ","; // str += s + ",";
} // }
str = str.substring(0, str.length() - 1) + ")"; // str = str.substring(0, str.length() - 1) + ")";
filter.add(new ApiDto.Filter("warnSignalType", "in " + str, "")); // filter.add(new ApiDto.Filter("warnSignalType", "in " + str, ""));
//
} else { // } else {
filter.add(new ApiDto.Filter("warnSignalType", "like", String.format("%s%s%s", "%", warnSignalType, "%"))); // filter.add(new ApiDto.Filter("warnSignalType", "like", String.format("%s%s%s", "%", warnSignalType, "%")));
} // }
} // }
apiDto.setFilter(filter); apiDto.setFilter(filter);
// String str = HttpUtil.sendPost("http://223.75.53.141:8000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(apiDto)); // 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); JSONObject json = JSON.parseObject(str);
if (json != null && json.getInteger("code") == HttpStatus.SC_OK) { if (json != null && json.getInteger("code") == HttpStatus.SC_OK) {
List<WarningData> data = json.getJSONArray("data").toJavaList(WarningData.class); List<WarningData> data = json.getJSONArray("data").toJavaList(WarningData.class);
return ResultJson.ok(getList(data));
return ResultJson.ok(getList(data, publishUnit, warnSignalLevel, warnSignalType));
} }
return ResultJson.ok(json); return ResultJson.ok(json);
@ -147,50 +145,50 @@ public class WarningController {
ArrayList<ApiDto.Filter> filter = Lists.newArrayList(); ArrayList<ApiDto.Filter> filter = Lists.newArrayList();
String publishUnit = dto.getPublishUnit(); String publishUnit = dto.getPublishUnit();
if (StringUtils.isNotBlank(publishUnit)) { // if (StringUtils.isNotBlank(publishUnit)) {
String[] split = publishUnit.split(","); // String[] split = publishUnit.split(",");
if (split.length > 1) { // if (split.length > 1) {
String str = "("; // String str = "(";
for (String s : split) { // for (String s : split) {
str += s + ","; // str += s + ",";
} // }
str = str.substring(0, str.length() - 1) + ")"; // str = str.substring(0, str.length() - 1) + ")";
filter.add(new ApiDto.Filter("publishUnit", "in " + str, "")); // filter.add(new ApiDto.Filter("publishUnit", "in " + str, ""));
//
} else { // } else {
filter.add(new ApiDto.Filter("publishUnit", "like", String.format("%s%s%s", "%", publishUnit, "%"))); // filter.add(new ApiDto.Filter("publishUnit", "like", String.format("%s%s%s", "%", publishUnit, "%")));
} // }
} // }
String warnSignalLevel = dto.getWarnSignalLevel(); String warnSignalLevel = dto.getWarnSignalLevel();
if (StringUtils.isNotBlank(warnSignalLevel)) { // if (StringUtils.isNotBlank(warnSignalLevel)) {
String[] split = warnSignalLevel.split(","); // String[] split = warnSignalLevel.split(",");
if (split.length > 1) { // if (split.length > 1) {
String str = "("; // String str = "(";
for (String s : split) { // for (String s : split) {
str += s + ","; // str += s + ",";
} // }
str = str.substring(0, str.length() - 1) + ")"; // str = str.substring(0, str.length() - 1) + ")";
filter.add(new ApiDto.Filter("warnSignalLevel", "in " + str, "")); // filter.add(new ApiDto.Filter("warnSignalLevel", "in " + str, ""));
//
} else { // } else {
filter.add(new ApiDto.Filter("warnSignalLevel", "like", String.format("%s%s%s", "%", warnSignalLevel, "%"))); // filter.add(new ApiDto.Filter("warnSignalLevel", "like", String.format("%s%s%s", "%", warnSignalLevel, "%")));
} // }
} // }
String warnSignalType = dto.getWarnSignalType(); String warnSignalType = dto.getWarnSignalType();
if (StringUtils.isNotBlank(warnSignalType)) { // if (StringUtils.isNotBlank(warnSignalType)) {
String[] split = warnSignalType.split(","); // String[] split = warnSignalType.split(",");
if (split.length > 1) { // if (split.length > 1) {
String str = "("; // String str = "(";
for (String s : split) { // for (String s : split) {
str += s + ","; // str += s + ",";
} // }
str = str.substring(0, str.length() - 1) + ")"; // str = str.substring(0, str.length() - 1) + ")";
filter.add(new ApiDto.Filter("warnSignalType", "in " + str, "")); // filter.add(new ApiDto.Filter("warnSignalType", "in " + str, ""));
//
} else { // } else {
filter.add(new ApiDto.Filter("warnSignalType", "like", String.format("%s%s%s", "%", warnSignalType, "%"))); // filter.add(new ApiDto.Filter("warnSignalType", "like", String.format("%s%s%s", "%", warnSignalType, "%")));
} // }
} // }
apiDto.setFilter(filter); apiDto.setFilter(filter);
@ -199,7 +197,7 @@ public class WarningController {
JSONObject json = JSON.parseObject(str); JSONObject json = JSON.parseObject(str);
if (json != null && json.getInteger("code") == HttpStatus.SC_OK) { if (json != null && json.getInteger("code") == HttpStatus.SC_OK) {
List<WarningData> data = json.getJSONArray("data").toJavaList(WarningData.class); List<WarningData> data = json.getJSONArray("data").toJavaList(WarningData.class);
return ResultJson.ok(getCount(data)); return ResultJson.ok(getCount(data, publishUnit, warnSignalLevel, warnSignalType));
} }
return ResultJson.ok(json); return ResultJson.ok(json);
@ -211,21 +209,28 @@ public class WarningController {
* @param data * @param data
* @return * @return
*/ */
private List<WarningListVo> getList(List<WarningData> data) { private List<WarningListVo> getList(List<WarningData> data,
String reqPublishUnit,
String reqWarnSignalLevel,
String reqWarnSignalType) {
List<WarningListVo> respList = Lists.newArrayList(); List<WarningListVo> respList = Lists.newArrayList();
for (WarningData datum : data) { for (WarningData datum : data) {
for (WarningData.TypeList typeList : datum.getTypeList()) { for (WarningData.TypeList typeList : datum.getTypeList()) {
// 预警类型 // 预警类型
String type = typeList.getType(); String type = typeList.getType();
for (WarningData.Warning warning : typeList.getWarnList()) { List<WarningData.Warning> warnList = typeList.getWarnList();
warnList = warnListFilter(warnList, reqPublishUnit, reqWarnSignalLevel, reqWarnSignalType);
for (WarningData.Warning warning : warnList) {
WarningListVo vo = new WarningListVo(); WarningListVo vo = new WarningListVo();
String publishUnit = warning.getPublishUnit(); String publishUnit = warning.getPublishUnit();
vo.setTitle(publishUnit + "发布" + type + "预警"); vo.setTitle(publishUnit + "发布" + type + "预警");
vo.setPublishTime(warning.getPublishTime()); vo.setPublishTime(warning.getPublishTime());
vo.setContent(warning.getContent()); vo.setContent(warning.getContent());
vo.setWarnSignalType(warning.getWarnSignalType()); vo.setWarnSignalType(warning.getWarnSignalType());
vo.setWarnSignalLevel(warning.getWarnSignalLevel()); vo.setAdnm(publishUnit.replace("气象台", ""));
vo.setAddressBooks(addressBookService.getListByAdnm(publishUnit.replace("气象台", ""))); vo.setAddressBooks(addressBookService.getListByAdnm(publishUnit.replace("气象台", "")));
respList.add(vo); respList.add(vo);
} }
@ -238,10 +243,53 @@ public class WarningController {
/** /**
* *
* *
* @param data
* @return * @return
*/ */
private List<WarningHistoryListVo> getCount(List<WarningData> data) { private List<WarningData.Warning> warnListFilter(List<WarningData.Warning> warnList,
String publishUnit,
String warnSignalLevel,
String warnSignalType
) {
if (StringUtils.isNotBlank(publishUnit)) {
HashSet<String> 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<String> 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<String> 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<WarningHistoryListVo> getCount(List<WarningData> data,
String publishUnit,
String warnSignalLevel,
String reqWarnSignalType
) {
List<WarningData.Warning> warnList = Lists.newArrayList(); List<WarningData.Warning> warnList = Lists.newArrayList();
for (WarningData datum : data) { for (WarningData datum : data) {
@ -253,10 +301,13 @@ public class WarningController {
} }
} }
warnList = warnListFilter(warnList, publishUnit, warnSignalLevel, reqWarnSignalType);
Map<String, List<WarningData.Warning>> warnMap = warnList.stream() Map<String, List<WarningData.Warning>> warnMap = warnList.stream()
.collect(Collectors .collect(Collectors
.groupingBy(WarningData.Warning::getPublishUnit, Collectors.toList())); .groupingBy(WarningData.Warning::getPublishUnit, Collectors.toList()));
List<WarningHistoryListVo> voList = Lists.newArrayList(); List<WarningHistoryListVo> voList = Lists.newArrayList();
warnMap.forEach((k, v) -> { warnMap.forEach((k, v) -> {
@ -361,7 +412,7 @@ public class WarningController {
String adnm = adcdTree.getAdnm(); String adnm = adcdTree.getAdnm();
List<AdcdTree> children = adcdTree.getChildren(); List<AdcdTree> children = adcdTree.getChildren();
List<WarningHistoryListVo> vos = areaMap.get(adnm); List<WarningHistoryListVo> vos = areaMap.remove(adnm);
if (CollectionUtils.isNotEmpty(vos)) { if (CollectionUtils.isNotEmpty(vos)) {
WarningHistoryListVo vo = vos.get(0); WarningHistoryListVo vo = vos.get(0);
List<WarningHistoryListVo> childList = Lists.newArrayList(); List<WarningHistoryListVo> childList = Lists.newArrayList();
@ -371,7 +422,7 @@ public class WarningController {
for (int i = 1; i < children.size(); i++) { for (int i = 1; i < children.size(); i++) {
AdcdTree t = children.get(i); AdcdTree t = children.get(i);
String adnm1 = t.getAdnm(); String adnm1 = t.getAdnm();
List<WarningHistoryListVo> vos1 = areaMap.get(adnm1); List<WarningHistoryListVo> vos1 = areaMap.remove(adnm1);
if (CollectionUtils.isNotEmpty(vos1)) { if (CollectionUtils.isNotEmpty(vos1)) {
childList.addAll(vos1); childList.addAll(vos1);
} }
@ -384,6 +435,7 @@ public class WarningController {
} }
} }
return respList; return respList;
} }
} }

View File

@ -35,6 +35,10 @@ public class WarningListVo {
@ApiModelProperty(value = "预警级别", dataType = "java.lang.String") @ApiModelProperty(value = "预警级别", dataType = "java.lang.String")
private String warnSignalLevel; private String warnSignalLevel;
@ApiParam(value = "行政区划")
@ApiModelProperty(value = "行政区划", dataType = "java.lang.String")
private String adnm;
@ApiModelProperty(value = "预警内容") @ApiModelProperty(value = "预警内容")
private String content; private String content;