通过行政区划下载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.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<ApiDto.Filter> 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<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);
@ -147,50 +145,50 @@ public class WarningController {
ArrayList<ApiDto.Filter> 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<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);
@ -211,21 +209,28 @@ public class WarningController {
* @param data
* @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();
for (WarningData datum : data) {
for (WarningData.TypeList typeList : datum.getTypeList()) {
// 预警类型
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();
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<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();
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()
.collect(Collectors
.groupingBy(WarningData.Warning::getPublishUnit, Collectors.toList()));
List<WarningHistoryListVo> voList = Lists.newArrayList();
warnMap.forEach((k, v) -> {
@ -361,7 +412,7 @@ public class WarningController {
String adnm = adcdTree.getAdnm();
List<AdcdTree> children = adcdTree.getChildren();
List<WarningHistoryListVo> vos = areaMap.get(adnm);
List<WarningHistoryListVo> vos = areaMap.remove(adnm);
if (CollectionUtils.isNotEmpty(vos)) {
WarningHistoryListVo vo = vos.get(0);
List<WarningHistoryListVo> 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<WarningHistoryListVo> vos1 = areaMap.get(adnm1);
List<WarningHistoryListVo> vos1 = areaMap.remove(adnm1);
if (CollectionUtils.isNotEmpty(vos1)) {
childList.addAll(vos1);
}
@ -384,6 +435,7 @@ public class WarningController {
}
}
return respList;
}
}

View File

@ -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;