气象预警历史气象预警新增

master
徐杰盟 2024-05-24 14:02:15 +08:00
parent e0cdd77f19
commit 5b0ce3dc41
11 changed files with 621 additions and 77 deletions

View File

@ -21,12 +21,15 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Objects; import java.util.Objects;
import static com.whdc.model.MyConstant.REDIS_KEY;
/** /**
* @author xusan * @author xusan
* @date 2024-05-11 * @date 2024-05-11
@ -38,6 +41,8 @@ import java.util.Objects;
@Transactional @Transactional
public class AddressBookController { public class AddressBookController {
public static final String ADDRESS_BOOK_REDIS_KEY = REDIS_KEY + "addressbook:";
@Autowired @Autowired
private IAddressBookService service; private IAddressBookService service;
@ -54,7 +59,6 @@ public class AddressBookController {
private IAbUdRService abUdRService; private IAbUdRService abUdRService;
// @ApiOperation(value = "查询所有") // @ApiOperation(value = "查询所有")
// @PostMapping(value = "find") // @PostMapping(value = "find")
// public ResultJson<AddressBook> find(@RequestBody AddressBook dto) { // public ResultJson<AddressBook> find(@RequestBody AddressBook dto) {
@ -77,67 +81,77 @@ public class AddressBookController {
@ApiOperation(value = "添加") @ApiOperation(value = "添加")
@PostMapping(value = "save") @PostMapping(value = "save")
@CacheEvict(value = ADDRESS_BOOK_REDIS_KEY, allEntries = true)
public ResultJson insert(@RequestBody @Validated(Insert.class) AddressBook model) { public ResultJson insert(@RequestBody @Validated(Insert.class) AddressBook model) {
User user = userService.getRole(Integer.valueOf(String.valueOf(StpUtil.getLoginId()))); User user = userService.getRole(Integer.valueOf(String.valueOf(StpUtil.getLoginId())));
switch (Objects.requireNonNull(Role.getByName(user.getRole()))) { switch (Objects.requireNonNull(Role.getByName(user.getRole()))) {
case R000:return ResultJson.error("权限不足"); case R000:
return ResultJson.error("权限不足");
case R001: case R001:
case R099:break; case R099:
default:return ResultJson.error("权限不足!!"); break;
default:
return ResultJson.error("权限不足!!");
} }
if (StringUtils.isNotBlank(model.getRole())){ if (StringUtils.isNotBlank(model.getRole())) {
switch (Objects.requireNonNull(Role.getByName(user.getRole()))) { switch (Objects.requireNonNull(Role.getByName(user.getRole()))) {
case R000: case R000:
case R001: case R001:
case R099:break; case R099:
default:return ResultJson.error("权限不匹配"); break;
default:
return ResultJson.error("权限不匹配");
} }
if(Integer.parseInt(user.getRole()) < Integer.parseInt(model.getRole())){ if (Integer.parseInt(user.getRole()) < Integer.parseInt(model.getRole())) {
return ResultJson.error("权限不足!"); return ResultJson.error("权限不足!");
} }
} }
if (CollectionUtils.isNotEmpty( if (CollectionUtils.isNotEmpty(
service.lambdaQuery() service.lambdaQuery()
.eq(AddressBook::getName,String.valueOf(model.getName()).trim()) .eq(AddressBook::getName, String.valueOf(model.getName()).trim())
.list()) .list())
){ ) {
return ResultJson.error("该名称重复"); return ResultJson.error("该名称重复");
} }
if (StringUtils.isNotBlank(model.getPhone()) && CollectionUtils.isNotEmpty( if (StringUtils.isNotBlank(model.getPhone()) && CollectionUtils.isNotEmpty(
service.lambdaQuery() service.lambdaQuery()
.eq(AddressBook::getPhone,model.getPhone().trim()) .eq(AddressBook::getPhone, model.getPhone().trim())
.list()) .list())
){ ) {
return ResultJson.error("该手机号已存在"); return ResultJson.error("该手机号已存在");
} }
// 添加日志 // 添加日志
versionsService.saveInfo(model,VersionsType.ADD); versionsService.saveInfo(model, VersionsType.ADD);
model.setId(null); model.setId(null);
boolean save = service.save(model); boolean save = service.save(model);
if (save){ if (save) {
// 没有手机号用名字注册 // 没有手机号用名字注册
//"省防指".equals(organizationsService.getById(model.getOrganization()).getName()) //"省防指".equals(organizationsService.getById(model.getOrganization()).getName())
// && // &&
if (StringUtils.isBlank(model.getPhone())){ if (StringUtils.isBlank(model.getPhone())) {
if (StringUtils.isNotBlank(model.getTel())){ if (StringUtils.isNotBlank(model.getTel())) {
userService.register( model.getTel(), model.getId(),model.getRole()); userService.register(model.getTel(), model.getId(), model.getRole());
}else{ } else {
userService.register( model.getName(), model.getId(),model.getRole()); userService.register(model.getName(), model.getId(), model.getRole());
} }
}else{ } else {
userService.register( model.getPhone(), model.getId(),model.getRole()); userService.register(model.getPhone(), model.getId(), model.getRole());
} }
// 添加关联关系 if (StringUtils.isNotBlank(model.getAdcd())) {
abUdRService.save(new AbUdR(model.getId(),Integer.valueOf(model.getOrganization()),null,model.getType())); abUdRService.save(new AbUdR(model.getId(), Integer.valueOf(model.getAdcd().replaceFirst("000000", "")), model.getSort(), model.getType()));
} else {
// 添加关联关系`
abUdRService.save(new AbUdR(model.getId(), Integer.valueOf(model.getOrganization()), model.getSort(), model.getType()));
}
} }
return ResultJson.ok(save); return ResultJson.ok(save);
@ -146,54 +160,60 @@ public class AddressBookController {
@ApiOperation(value = "修改") @ApiOperation(value = "修改")
@PostMapping(value = "edit") @PostMapping(value = "edit")
@CacheEvict(value = ADDRESS_BOOK_REDIS_KEY, allEntries = true)
public ResultJson update(@RequestBody @Validated(Update.class) AddressBook model) { public ResultJson update(@RequestBody @Validated(Update.class) AddressBook model) {
Integer loginId = Integer.valueOf(String.valueOf(StpUtil.getLoginId())); Integer loginId = Integer.valueOf(String.valueOf(StpUtil.getLoginId()));
User user = userService.getRole(loginId); User user = userService.getRole(loginId);
switch (Objects.requireNonNull(Role.getByName(user.getRole()))) { switch (Objects.requireNonNull(Role.getByName(user.getRole()))) {
case R000:{ case R000: {
// 不是修改自己 // 不是修改自己
if (!model.getId().equals(user.getAbId())){ if (!model.getId().equals(user.getAbId())) {
return ResultJson.error("权限不足"); return ResultJson.error("权限不足");
} }
}; }
;
case R001: case R001:
case R099:break; case R099:
default:return ResultJson.error("权限不足!!"); break;
default:
return ResultJson.error("权限不足!!");
} }
if (StringUtils.isNotBlank(model.getRole())){ if (StringUtils.isNotBlank(model.getRole())) {
switch (Objects.requireNonNull(Role.getByName(user.getRole()))) { switch (Objects.requireNonNull(Role.getByName(user.getRole()))) {
case R000: case R000:
case R001: case R001:
case R099:break; case R099:
default:return ResultJson.error("权限不匹配"); break;
default:
return ResultJson.error("权限不匹配");
} }
if(Integer.parseInt(user.getRole()) < Integer.parseInt(model.getRole())){ if (Integer.parseInt(user.getRole()) < Integer.parseInt(model.getRole())) {
return ResultJson.error("权限不足!"); return ResultJson.error("权限不足!");
} }
} }
AddressBook byId = service.getById(model.getId()); AddressBook byId = service.getById(model.getId());
if (Objects.isNull(byId)){ if (Objects.isNull(byId)) {
return ResultJson.error("当前数据不存在"); return ResultJson.error("当前数据不存在");
} }
if (CollectionUtils.isNotEmpty( if (CollectionUtils.isNotEmpty(
service.lambdaQuery() service.lambdaQuery()
.eq(AddressBook::getName,String.valueOf(model.getName()).trim()) .eq(AddressBook::getName, String.valueOf(model.getName()).trim())
.ne(AddressBook::getId, model.getId()) .ne(AddressBook::getId, model.getId())
.list()) .list())
){ ) {
return ResultJson.error("该名称重复"); return ResultJson.error("该名称重复");
} }
if (StringUtils.isNotBlank(model.getPhone()) && CollectionUtils.isNotEmpty( if (StringUtils.isNotBlank(model.getPhone()) && CollectionUtils.isNotEmpty(
service.lambdaQuery() service.lambdaQuery()
.eq(AddressBook::getPhone,model.getPhone().trim()) .eq(AddressBook::getPhone, model.getPhone().trim())
.ne(AddressBook::getId, model.getId()) .ne(AddressBook::getId, model.getId())
.list()) .list())
){ ) {
return ResultJson.error("该手机号已存在"); return ResultJson.error("该手机号已存在");
} }
@ -211,46 +231,53 @@ public class AddressBookController {
// } // }
// // 添加日志 // // 添加日志
// versionsService.save(new Versions(null, JSON.toJSONString(model),model.getId(),++version,model.getCreateId(),new Date(), VersionsType.UPDATE.getName())); // versionsService.save(new Versions(null, JSON.toJSONString(model),model.getId(),++version,model.getCreateId(),new Date(), VersionsType.UPDATE.getName()));
versionsService.saveInfo(model,VersionsType.UPDATE); versionsService.saveInfo(model, VersionsType.UPDATE);
boolean data = service.updateById(model); boolean data = service.updateById(model);
if (data) { if (data) {
abUdRService.lambdaUpdate() String organization = model.getOrganization();
.set(AbUdR::getDictId,model.getOrganization()) if (StringUtils.isNotBlank(model.getAdcd())) {
.eq(AbUdR::getAdId,model.getId()); organization = model.getAdcd().replaceFirst("000000", "");
}
boolean update = abUdRService.lambdaUpdate()
.set(AbUdR::getSort, model.getSort())
.set(AbUdR::getDictId, organization)
.eq(AbUdR::getAdId, model.getId())
.update();
log.info("修改abUdR: " + update);
User one = userService.lambdaQuery().eq(User::getAbId, model.getId()).one(); User one = userService.lambdaQuery().eq(User::getAbId, model.getId()).one();
if (Objects.nonNull(one)){ if (Objects.nonNull(one)) {
// 没有就创建账号 // 没有就创建账号
if (StringUtils.isBlank(model.getPhone())){ if (StringUtils.isBlank(model.getPhone())) {
if (StringUtils.isNotBlank(model.getTel())){ if (StringUtils.isNotBlank(model.getTel())) {
if (!one.getUsername().equals(model.getTel())) { if (!one.getUsername().equals(model.getTel())) {
one.setUsername(model.getTel()) one.setUsername(model.getTel())
.updateById(); .updateById();
} }
}else{ } else {
if (!one.getUsername().equals(model.getName())) { if (!one.getUsername().equals(model.getName())) {
one.setUsername(model.getName()) one.setUsername(model.getName())
.updateById(); .updateById();
} }
} }
}else{ } else {
if (!one.getUsername().equals(model.getPhone())) { if (!one.getUsername().equals(model.getPhone())) {
one.setUsername(model.getPhone()) one.setUsername(model.getPhone())
.updateById(); .updateById();
} }
} }
}else{ } else {
// 没有就创建账号 // 没有就创建账号
if (StringUtils.isBlank(model.getPhone())){ if (StringUtils.isBlank(model.getPhone())) {
if (StringUtils.isNotBlank(model.getTel())){ if (StringUtils.isNotBlank(model.getTel())) {
userService.register( model.getTel(), model.getId(),model.getRole()); userService.register(model.getTel(), model.getId(), model.getRole());
}else{ } else {
userService.register( model.getName(), model.getId(),model.getRole()); userService.register(model.getName(), model.getId(), model.getRole());
} }
}else{ } else {
userService.register( model.getPhone(), model.getId(),model.getRole()); userService.register(model.getPhone(), model.getId(), model.getRole());
} }
} }
} }
@ -267,13 +294,16 @@ public class AddressBookController {
switch (Objects.requireNonNull(Role.getByName(user.getRole()))) { switch (Objects.requireNonNull(Role.getByName(user.getRole()))) {
case R000: case R000:
case R001: return ResultJson.error("权限不足"); case R001:
case R099:break; return ResultJson.error("权限不足");
default:return ResultJson.error("权限不足!!"); case R099:
break;
default:
return ResultJson.error("权限不足!!");
} }
AddressBook byId = service.getById(model.getAbId()); AddressBook byId = service.getById(model.getAbId());
if (Objects.isNull(byId)){ if (Objects.isNull(byId)) {
return ResultJson.error("当前数据不存在"); return ResultJson.error("当前数据不存在");
} }
@ -292,7 +322,7 @@ public class AddressBookController {
// } // }
// // 添加日志 // // 添加日志
// versionsService.save(new Versions(null, JSON.toJSONString(model),model.getId(),++version,model.getCreateId(),new Date(), VersionsType.UPDATE_ROLE.getName())); // versionsService.save(new Versions(null, JSON.toJSONString(model),model.getId(),++version,model.getCreateId(),new Date(), VersionsType.UPDATE_ROLE.getName()));
versionsService.saveInfo(byId,VersionsType.UPDATE_ROLE); versionsService.saveInfo(byId, VersionsType.UPDATE_ROLE);
// 只修改角色 // 只修改角色
@ -306,6 +336,7 @@ public class AddressBookController {
@ApiOperation(value = "删除") @ApiOperation(value = "删除")
@GetMapping(value = "del/{id}") @GetMapping(value = "del/{id}")
@CacheEvict(value = ADDRESS_BOOK_REDIS_KEY, allEntries = true)
public ResultJson delete(@PathVariable("id") Integer id) { public ResultJson delete(@PathVariable("id") Integer id) {
Integer loginId = Integer.valueOf(String.valueOf(StpUtil.getLoginId())); Integer loginId = Integer.valueOf(String.valueOf(StpUtil.getLoginId()));
@ -313,9 +344,12 @@ public class AddressBookController {
switch (Objects.requireNonNull(Role.getByName(user.getRole()))) { switch (Objects.requireNonNull(Role.getByName(user.getRole()))) {
case R000: case R000:
case R001: return ResultJson.error("权限不足"); case R001:
case R099:break; return ResultJson.error("权限不足");
default:return ResultJson.error("权限不足!!"); case R099:
break;
default:
return ResultJson.error("权限不足!!");
} }
AddressBook model = service.getById(id); AddressBook model = service.getById(id);
@ -340,7 +374,7 @@ public class AddressBookController {
// } // }
// // 添加日志 // // 添加日志
// versionsService.save(new Versions(null, JSON.toJSONString(model),model.getId(),++version,model.getCreateId(),new Date(), VersionsType.DEL.getName())); // versionsService.save(new Versions(null, JSON.toJSONString(model),model.getId(),++version,model.getCreateId(),new Date(), VersionsType.DEL.getName()));
versionsService.saveInfo(model,VersionsType.DEL); versionsService.saveInfo(model, VersionsType.DEL);
return ResultJson.ok(service.removeById(id)); return ResultJson.ok(service.removeById(id));
@ -352,10 +386,10 @@ public class AddressBookController {
public ResultJson get(@PathVariable("id") Integer id) { public ResultJson get(@PathVariable("id") Integer id) {
AddressBook byId = service.getById(id); AddressBook byId = service.getById(id);
if (byId != null){ if (byId != null) {
if (StringUtils.isNotBlank(byId.getOrganization())){ if (StringUtils.isNotBlank(byId.getOrganization())) {
Organization byId2 = organizationsService.getById(byId.getOrganization()); Organization byId2 = organizationsService.getById(byId.getOrganization());
if (byId2 != null){ if (byId2 != null) {
byId.setOname(byId2.getName()); byId.setOname(byId2.getName());
} }
} }
@ -367,15 +401,15 @@ public class AddressBookController {
@GetMapping(value = "getByUser/{userId}") @GetMapping(value = "getByUser/{userId}")
public ResultJson getByUser(@PathVariable("userId") Integer userId) { public ResultJson getByUser(@PathVariable("userId") Integer userId) {
User byId = userService.getById(userId); User byId = userService.getById(userId);
if (Objects.isNull(byId)){ if (Objects.isNull(byId)) {
return ResultJson.error("该用户不存在"); return ResultJson.error("该用户不存在");
} }
// return ResultJson.ok(JSON.parseObject(JSON.toJSONString(service.getById(byId.getAbId())).replaceAll("null",""))); // return ResultJson.ok(JSON.parseObject(JSON.toJSONString(service.getById(byId.getAbId())).replaceAll("null","")));
AddressBook byId1 = service.getById(byId.getAbId()); AddressBook byId1 = service.getById(byId.getAbId());
if (byId1 != null){ if (byId1 != null) {
if (StringUtils.isNotBlank(byId1.getOrganization())){ if (StringUtils.isNotBlank(byId1.getOrganization())) {
Organization byId2 = organizationsService.getById(byId1.getOrganization()); Organization byId2 = organizationsService.getById(byId1.getOrganization());
if (byId2 != null){ if (byId2 != null) {
byId1.setOname(byId2.getName()); byId1.setOname(byId2.getName());
} }
} }

View File

@ -0,0 +1,226 @@
package com.whdc.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.whdc.exception.MyException;
import com.whdc.model.dto.ApiDto;
import com.whdc.model.dto.GroupWarningDto;
import com.whdc.model.vo.WarningData;
import com.whdc.model.vo.WarningHistoryListVo;
import com.whdc.model.vo.WarningListVo;
import com.whdc.service.IAddressBookService;
import com.whdc.utils.HttpUtil;
import com.whdc.utils.ResultJson;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
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.stream.Collectors;
/**
* Description:
* Created by XuSan on 2024/5/23.
*
* @author XuSan
* @version 1.0
*/
@Slf4j
@Api(tags = "预警 - Controller")
@RestController
@RequestMapping("/warning")
public class WarningController {
@Autowired
private IAddressBookService addressBookService;
/**
*
*
* @param dto
* @return
*/
@ApiOperation(value = "气象预警")
@PostMapping("/getGroupWarning")
public ResultJson<List<WarningListVo>> getGroupWarning(
@RequestBody GroupWarningDto dto) {
ApiDto apiDto = new ApiDto();
apiDto.setStartTime(dto.getStartTime());
apiDto.setEndTime(dto.getEndTime());
apiDto.setPageNumber(dto.getPageNumber());
apiDto.setPageSize(dto.getPageSize());
ArrayList<ApiDto.Filter> filter = Lists.newArrayList();
if (StringUtils.isNotBlank(dto.getPublishUnit())) {
filter.add(new ApiDto.Filter("publishUnit", "LIKE", String.format("%s%s%s", "%", dto.getPublishUnit(), "%")));
}
if (StringUtils.isNotBlank(dto.getWarnSignalLevel())) {
filter.add(new ApiDto.Filter("warnSignalLevel", "LIKE", String.format("%s%s%s", "%", dto.getWarnSignalLevel(), "%")));
}
if (StringUtils.isNotBlank(dto.getWarnSignalType())) {
filter.add(new ApiDto.Filter("warnSignalType", "LIKE", String.format("%s%s%s", "%", dto.getWarnSignalType(), "%")));
}
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://64.97.146.240:9990/api/warning/getGroupWarning", JSON.toJSONString(apiDto));
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(json);
}
/**
*
*
* @param dto
* @return
*/
@ApiOperation(value = "历史气象预警")
@PostMapping("/getHistoryGroupWarning")
public ResultJson<List<WarningListVo>> getHistoryGroupWarning(@RequestBody GroupWarningDto dto) {
ApiDto apiDto = new ApiDto();
apiDto.setStartTime(dto.getStartTime());
apiDto.setEndTime(dto.getEndTime());
apiDto.setPageNumber(dto.getPageNumber());
apiDto.setPageSize(dto.getPageSize());
ArrayList<ApiDto.Filter> filter = Lists.newArrayList();
if (StringUtils.isNotBlank(dto.getPublishUnit())) {
filter.add(new ApiDto.Filter("publishUnit", "LIKE", String.format("%s%s%s", "%", dto.getPublishUnit(), "%")));
}
if (StringUtils.isNotBlank(dto.getWarnSignalLevel())) {
filter.add(new ApiDto.Filter("warnSignalLevel", "LIKE", String.format("%s%s%s", "%", dto.getWarnSignalLevel(), "%")));
}
if (StringUtils.isNotBlank(dto.getWarnSignalType())) {
filter.add(new ApiDto.Filter("warnSignalType", "LIKE", String.format("%s%s%s", "%", dto.getWarnSignalType(), "%")));
}
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://64.97.146.240:9990/api/warning/getGroupWarning", JSON.toJSONString(apiDto));
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(json);
}
/**
*
*
* @param data
* @return
*/
private List<WarningListVo> getList(List<WarningData> data) {
List<WarningListVo> respList = Lists.newArrayList();
for (WarningData datum : data) {
String effectArea = datum.getEffectArea();
for (WarningData.TypeList typeList : datum.getTypeList()) {
// 预警类型
String type = typeList.getType();
for (WarningData.Warning warning : typeList.getWarnList()) {
WarningListVo vo = new WarningListVo();
String publishUnit = warning.getPublishUnit();
vo.setTitle(effectArea + publishUnit + "发布" + type + "预警");
vo.setPublishTime(warning.getPublishTime());
vo.setContent(warning.getContent());
vo.setWarnSignalType(warning.getWarnSignalType());
vo.setWarnSignalLevel(warning.getWarnSignalLevel());
vo.setAddressBooks(addressBookService.getListByAdnm(publishUnit.replace("气象台", "")));
respList.add(vo);
}
}
}
return respList;
}
/**
*
*
* @param data
* @return
*/
private List<WarningHistoryListVo> getCount(List<WarningData> data) {
List<WarningHistoryListVo> respList = Lists.newArrayList();
for (WarningData datum : data) {
WarningHistoryListVo vo = new WarningHistoryListVo();
vo.setWarnSignalType("全部");
vo.setEffectArea(datum.getEffectArea());
List<WarningHistoryListVo> child = Lists.newArrayList();
for (WarningData.TypeList typeList : datum.getTypeList()) {
// 预警类型
List<WarningData.Warning> warnList = typeList.getWarnList();
// 类型分组
Map<String, List<WarningData.Warning>> types = warnList.stream()
.collect(Collectors.groupingBy(WarningData.Warning::getWarnSignalType, Collectors.toList()));
types.forEach((k, v) -> {
WarningHistoryListVo childVo = new WarningHistoryListVo();
// 等级分组
Map<String, Long> levels = v.stream()
.collect(Collectors.groupingBy(WarningData.Warning::getWarnSignalLevel, Collectors.counting()));
levels.forEach((k1, v1) -> {
switch (k1) {
case "红色":
childVo.setRedCount(v1.intValue());
vo.setRedCount(v1.intValue() + vo.getRedCount());
break;
case "橙色":
childVo.setOraCount(v1.intValue());
vo.setOraCount(v1.intValue() + vo.getOraCount());
break;
case "黄色":
childVo.setYelCount(v1.intValue());
vo.setYelCount(v1.intValue() + vo.getYelCount());
break;
case "蓝色":
childVo.setBluCount(v1.intValue());
vo.setBluCount(v1.intValue() + vo.getBluCount());
break;
default:
throw new MyException("当前预警等级不存在: " + k1);
}
});
childVo.setSumCount(v.size());
vo.setSumCount(vo.getSumCount() + v.size());
childVo.setWarnSignalType(k);
child.add(childVo);
});
}
vo.setSumCount(datum.getTypeList().size());
vo.setChild(child);
respList.add(vo);
}
return respList;
}
}

View File

@ -17,5 +17,7 @@ public interface AddressBookMapper extends BaseMapper<AddressBook> {
IPage<AddressBookVo> page(@Param("page") IPage<AddressBook> page, @Param("dto") AddressBootDto dto); IPage<AddressBookVo> page(@Param("page") IPage<AddressBook> page, @Param("dto") AddressBootDto dto);
List<AddressBook> find(@Param("dto") AddressBook dto); List<AddressBook> find(@Param("dto") AddressBook dto);
List<AddressBook> getListByAdnm(@Param("adnm") String adnm);
} }

View File

@ -0,0 +1,48 @@
package com.whdc.model.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Author xusan
* @Date 2023/7/4 10:28
* @Notes
**/
@Data
public class ApiDto {
@ApiModelProperty(value = "开始时间, 格式应为yyyy-MM-dd HH:mm:ss", dataType = "java.lang.String", example = "2023-06-15 08:00:00")
private String startTime;
@ApiModelProperty(value = "结束时间, 格式应为yyyy-MM-dd HH:mm:ss", dataType = "java.lang.String", example = "2023-06-15 08:00:00")
private String endTime;
@ApiModelProperty(value = "页数", dataType = "java.lang.Integer", example = "1")
private Integer pageNumber = 1;
@ApiModelProperty(value = "条数", dataType = "java.lang.Integer", example = "10")
private Integer pageSize = 10;
@ApiModelProperty(value = "过滤条件", dataType = "java.lang.Array", example = "[]")
private List<Filter> filter;
@AllArgsConstructor
@NoArgsConstructor
@Data
public static class Filter {
@ApiModelProperty(value = "查询列名 publishUnit:发布单位,warnSignalType:类型,warnSignalLevel:级别", dataType = "java.lang.String", example = "publishUnit")
private String name;
@ApiModelProperty(value = "查询类型", dataType = "java.lang.String", example = "like")
private String condition;
@ApiModelProperty(value = "值", dataType = "java.lang.String", example = "%1%")
private String value;
}
}

View File

@ -0,0 +1,37 @@
package com.whdc.model.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Description:
* Created by XuSan on 2024/5/23.
*
* @author XuSan
* @version 1.0
*/
@Data
public class GroupWarningDto {
@ApiModelProperty(value = "开始时间, 格式应为yyyy-MM-dd HH:mm:ss", dataType = "java.lang.String", example = "2023-06-15 08:00:00")
private String startTime;
@ApiModelProperty(value = "结束时间, 格式应为yyyy-MM-dd HH:mm:ss", dataType = "java.lang.String", example = "2023-06-15 08:00:00")
private String endTime;
@ApiModelProperty(value = "发布单位")
private String publishUnit;
@ApiModelProperty(value = "类型")
private String warnSignalType;
@ApiModelProperty(value = "级别")
private String warnSignalLevel;
@ApiModelProperty(value = "页数", dataType = "java.lang.Integer", example = "1")
private Integer pageNumber = 1;
@ApiModelProperty(value = "条数", dataType = "java.lang.Integer", example = "999")
private Integer pageSize = 999;
}

View File

@ -0,0 +1,85 @@
package com.whdc.model.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import java.util.List;
/**
* @Author xusan
* @Date 2023/7/4 10:28
* @Notes
**/
@Data
@ApiModel(value = "预报数据", description = "预报数据")
public class WarningData {
@ApiParam(value = "服务名")
@ApiModelProperty(value = "服务名", dataType = "java.lang.String")
private String effectArea;
@ApiParam(value = "预警信息列表")
@ApiModelProperty(value = "预警信息列表", dataType = "array")
private List<TypeList> typeList;
@Data
public static class TypeList {
@ApiParam(value = "预警信息详情")
@ApiModelProperty(value = "预警信息详情", dataType = "array")
private List<Warning> warnList;
@ApiParam(value = "预警信号")
@ApiModelProperty(value = "预警信号", dataType = "java.lang.String")
private String type;
}
@Data
public static class Warning {
@ApiParam(value = "ID")
@ApiModelProperty(value = "ID", dataType = "java.lang.Integer")
private int id;
@ApiParam(value = "创建时间")
@ApiModelProperty(value = "创建时间", dataType = "java.lang.String")
private String createTime;
@ApiParam(value = "发布时间")
@ApiModelProperty(value = "发布时间", dataType = "java.lang.String")
private String publishTime;
@ApiParam(value = "预警开始时间")
@ApiModelProperty(value = "预警开始时间", dataType = "java.lang.String")
private String startTime;
@ApiParam(value = "预警结束时间")
@ApiModelProperty(value = "预警结束时间", dataType = "java.lang.String")
private String endTime;
@ApiParam(value = "预警类型")
@ApiModelProperty(value = "预警类型", dataType = "java.lang.String")
private String warnSignalType;
@ApiParam(value = "预警级别")
@ApiModelProperty(value = "预警级别", dataType = "java.lang.String")
private String warnSignalLevel;
@ApiParam(value = "预警地区")
@ApiModelProperty(value = "预警地区", dataType = "java.lang.String")
private String effectArea;
@ApiParam(value = "发布单位")
@ApiModelProperty(value = "发布单位", dataType = "java.lang.String")
private String publishUnit;
@ApiParam(value = "预警内容")
@ApiModelProperty(value = "预警内容", dataType = "java.lang.String")
private String content;
}
}

View File

@ -0,0 +1,50 @@
package com.whdc.model.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* Description:
* Created by XuSan on 2024/5/24.
*
* @author XuSan
* @version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class WarningHistoryListVo {
@ApiModelProperty(value = "预警类型")
private String warnSignalType;
@ApiModelProperty(value = "预警级别")
private String warnSignalLevel;
@ApiModelProperty(value = "预警地区")
private String effectArea;
@ApiModelProperty(value = "统计")
private Integer sumCount = 0;
@ApiModelProperty(value = "红统计")
private Integer redCount = 0;
@ApiModelProperty(value = "橙统计")
private Integer oraCount = 0;
@ApiModelProperty(value = "黄统计")
private Integer yelCount = 0;
@ApiModelProperty(value = "蓝统计")
private Integer bluCount = 0;
@ApiModelProperty(value = "子统计")
private List<WarningHistoryListVo> child;
}

View File

@ -0,0 +1,45 @@
package com.whdc.model.vo;
import com.whdc.model.entity.AddressBook;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* Description:
* Created by XuSan on 2024/5/24.
*
* @author XuSan
* @version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class WarningListVo {
@ApiModelProperty(value = "预警标题")
public String title;
@ApiModelProperty(value = "发布时间")
private String publishTime;
@ApiParam(value = "预警类型")
@ApiModelProperty(value = "预警类型", dataType = "java.lang.String")
private String warnSignalType;
@ApiParam(value = "预警级别")
@ApiModelProperty(value = "预警级别", dataType = "java.lang.String")
private String warnSignalLevel;
@ApiModelProperty(value = "预警内容")
private String content;
@ApiModelProperty(value = "防汛责任人")
private List<AddressBook> addressBooks;
}

View File

@ -23,4 +23,6 @@ public interface IAddressBookService extends IService<AddressBook> {
// 获取所有规则 // 获取所有规则
List<AddressBook> find(AddressBook dto); List<AddressBook> find(AddressBook dto);
List<AddressBook> getListByAdnm(String adnm);
} }

View File

@ -8,11 +8,13 @@ import com.whdc.model.entity.AddressBook;
import com.whdc.model.vo.AddressBookVo; import com.whdc.model.vo.AddressBookVo;
import com.whdc.service.IAddressBookService; import com.whdc.service.IAddressBookService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import static com.whdc.controller.AddressBookController.ADDRESS_BOOK_REDIS_KEY;
import static com.whdc.utils.AdinfoUtils.likeAdcd; import static com.whdc.utils.AdinfoUtils.likeAdcd;
/** /**
@ -57,6 +59,11 @@ public class AddressBookServiceImpl extends ServiceImpl<AddressBookMapper, Addre
return baseMapper.find(dto); return baseMapper.find(dto);
} }
@Cacheable(value=ADDRESS_BOOK_REDIS_KEY,key = "#root.methodname+':'+#adnm")
@Override
public List<AddressBook> getListByAdnm(String adnm) {
return baseMapper.getListByAdnm(adnm);
}
} }

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.whdc.mapper.AddressBookMapper"> <mapper namespace="com.whdc.mapper.AddressBookMapper">
<!-- AND AB.ADCD ${dto.v} #{dto.adcd}-->
<select id="page" resultType="com.whdc.model.vo.AddressBookVo"> <select id="page" resultType="com.whdc.model.vo.AddressBookVo">
SELECT SELECT
AB.*,F.SORT FSORT,F.ID FCID,U.ROLE,F.TYPE FTYPE,IF(O.NAME IS NULL,UD.NAME,O.NAME) ONAME,A.ADNM AB.*,F.SORT FSORT,F.ID FCID,U.ROLE,F.TYPE FTYPE,IF(O.NAME IS NULL,UD.NAME,O.NAME) ONAME,A.ADNM
@ -28,7 +28,7 @@
AND AB.NAME LIKE CONCAT('%', #{dto.name}, '%') AND AB.NAME LIKE CONCAT('%', #{dto.name}, '%')
</if> </if>
<if test="dto.adcd != null and dto.adcd != '' "> <if test="dto.adcd != null and dto.adcd != '' ">
AND AB.ADCD ${dto.v} #{dto.adcd} AND R.DICT_ID ${dto.v} #{dto.adcd}
</if> </if>
<if test="dto.phone != null and dto.phone != '' "> <if test="dto.phone != null and dto.phone != '' ">
AND AB.PHONE LIKE CONCAT('', #{dto.phone}, '%') AND AB.PHONE LIKE CONCAT('', #{dto.phone}, '%')
@ -43,11 +43,19 @@
OR AB.POSITION LIKE CONCAT('%', #{dto.allLikeStr}, '%') OR AB.POSITION LIKE CONCAT('%', #{dto.allLikeStr}, '%')
) )
</if> </if>
ORDER BY F.SORT NULLS LAST,F.SORT,AB.SORT ORDER BY F.SORT NULLS LAST,F.SORT,R.SORT,AB.SORT
</select> </select>
<select id="find" resultType="com.whdc.model.entity.AddressBook"> <select id="getListByAdnm" resultType="com.whdc.model.entity.AddressBook">
SELECT
AB.*,
A.ADNM
FROM
ADDRESS_BOOK AB
LEFT JOIN ADINFO A ON AB.ADCD = A.ADCD
WHERE
A.ADNM = #{adnm}
</select> </select>
</mapper> </mapper>