From 81e3f4bf3e4e71c6d147eb34aa59c762f4056900 Mon Sep 17 00:00:00 2001 From: xjm Date: Mon, 24 Jun 2024 14:22:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/data.sql | 6 +- .../com/whdc/component/MyPostConstruct.java | 12 +++- .../com/whdc/controller/QXWarnController.java | 57 +++++++++++++++++-- .../java/com/whdc/mapper/QXWarningMapper.java | 3 +- .../java/com/whdc/model/vo/QXWarningVO.java | 4 ++ .../com/whdc/service/IQXWarningService.java | 5 +- .../service/impl/QXWarningServiceImpl.java | 3 +- src/main/resources/application.yml | 12 ++-- 8 files changed, 85 insertions(+), 17 deletions(-) diff --git a/sql/data.sql b/sql/data.sql index 16dead3..eb561db 100644 --- a/sql/data.sql +++ b/sql/data.sql @@ -49,4 +49,8 @@ alter table "FXKH_TXL"."QXWARNING" modify "PUBLISH_TIME" DATETIME(0); alter table "FXKH_TXL"."QXWARNING" modify "START_TIME" DATETIME(0); -alter table "FXKH_TXL"."QXWARNING" modify "END_TIME" DATETIME(0); \ No newline at end of file +alter table "FXKH_TXL"."QXWARNING" modify "END_TIME" DATETIME(0); + + +ALTER TABLE FXKH_TXL.QXWARNING + ADD CONSTRAINT WARNID UNIQUE (WARNID); diff --git a/src/main/java/com/whdc/component/MyPostConstruct.java b/src/main/java/com/whdc/component/MyPostConstruct.java index ad356f3..721b4b4 100644 --- a/src/main/java/com/whdc/component/MyPostConstruct.java +++ b/src/main/java/com/whdc/component/MyPostConstruct.java @@ -11,12 +11,13 @@ import com.whdc.utils.DateUtils; import com.whdc.utils.HttpUtil; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; 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.beans.factory.annotation.Value; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -29,6 +30,8 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; +import static com.whdc.controller.QXWarnController.QX_TEMP_REDIS_KEY; + /** * @author 李赛 * @date 2022-07-17 15:33 @@ -51,6 +54,10 @@ public class MyPostConstruct { private IQXWarningService service; + @Autowired + private RedisTemplate stringRedisTemplate; + + @Async @ApiOperation(value = "预警数据同步接口", notes = "预警数据同步接口") @GetMapping("/syncData") @@ -115,11 +122,14 @@ public class MyPostConstruct { qxwarning.setWarnid(warningVO.getWarnid()); qxwarning.setCtnm(warningVO.getCtnm()); qxwarning.setCnnm(warningVO.getCnnm()); + + stringRedisTemplate.opsForValue().set(QX_TEMP_REDIS_KEY + qxwarning.getWarnid(),JSON.toJSONString(warningVO)); adds.add(qxwarning); } } + if (CollectionUtils.isNotEmpty(adds)) { log.info("预警数据同步待添加预警 " + adds.size()); if (this.service.saveBatch(adds)) { diff --git a/src/main/java/com/whdc/controller/QXWarnController.java b/src/main/java/com/whdc/controller/QXWarnController.java index 4abf9ce..5b1f056 100644 --- a/src/main/java/com/whdc/controller/QXWarnController.java +++ b/src/main/java/com/whdc/controller/QXWarnController.java @@ -25,6 +25,7 @@ import org.apache.http.HttpStatus; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -35,6 +36,7 @@ import java.util.*; import java.util.stream.Collectors; import static com.whdc.controller.WarningController.THIS_REDIS_KEY; +import static com.whdc.model.MyConstant.REDIS_KEY; //湖北省防汛抗旱调度系统-气象预警 @Slf4j @@ -42,6 +44,10 @@ import static com.whdc.controller.WarningController.THIS_REDIS_KEY; @RestController @RequestMapping("/qxwarning") public class QXWarnController { + + public static final String QX_TEMP_REDIS_KEY = REDIS_KEY + "warning:temp:"; + + @Autowired private IAddressBookService addressBookService; @Autowired @@ -53,6 +59,9 @@ public class QXWarnController { @Autowired private IQXWarningService service; + @Autowired + private RedisTemplate stringRedisTemplate; + @Value("${getGroupWarning}") public String getGroupWarning; @@ -73,17 +82,17 @@ public class QXWarnController { return ResultJson.ok(save); } -// @Async + // @Async @ApiOperation(value = "预警数据同步接口", notes = "预警数据同步接口") @PostMapping("/syncData") // @Scheduled(cron ="0 0/5 * * * ?") - public void syncData( @RequestBody GroupWarningDto dto) { + public void syncData(@RequestBody GroupWarningDto dto) { log.info("预警数据同步开始!!!"); ApiDto apiDto = new ApiDto(); - if (StringUtils.isNotBlank(dto.getStartTime())){ + if (StringUtils.isNotBlank(dto.getStartTime())) { apiDto.setStartTime(dto.getStartTime()); } - if (StringUtils.isNotBlank(dto.getEndTime())){ + if (StringUtils.isNotBlank(dto.getEndTime())) { apiDto.setEndTime(dto.getEndTime()); } apiDto.setFilter(Lists.newArrayList()); @@ -144,7 +153,36 @@ public class QXWarnController { @PostMapping("/getGroupWarning") public ResultJson> getGroupWarning() { - return ResultJson.ok(service.find()); + Set tempKeys = stringRedisTemplate.keys(QX_TEMP_REDIS_KEY + "*"); + if (CollectionUtils.isNotEmpty(tempKeys)) { + List data = Lists.newArrayList(); + tempKeys.forEach(o -> { + String value = stringRedisTemplate.opsForValue().get(o); + QXWarningVO qxWarningVO = JSON.parseObject(value, QXWarningVO.class); + data.add(qxWarningVO); + }); + if (CollectionUtils.isNotEmpty(data)) { + + return ResultJson.ok(data.stream().sorted(Comparator.comparing(QXWarningVO::getPublishTime).reversed()).collect(Collectors.toList())); + } + } + + List data = service.find(); + if (CollectionUtils.isEmpty(data)) { + return ResultJson.ok(data); + } + Set keys = stringRedisTemplate.keys(THIS_REDIS_KEY + ":WARNID:*"); + data.forEach(o -> { + Integer warnid = o.getWarnid(); + String key = THIS_REDIS_KEY + ":WARNID:" + warnid; + if (!keys.contains(key)) { + data.get(0).setPlay(true); + stringRedisTemplate.opsForValue().set(key, String.valueOf(warnid)); + } + }); + + + return ResultJson.ok(data); } // // /** @@ -253,7 +291,16 @@ public class QXWarnController { return ResultJson.error("该名称或编码重复"); } + if (dto.getCallTime() == null) { + dto.setCallTime(dto.getHandleTime()); + } + boolean save = warnMsgFBService.save(dto); + + log.info("warnId " + dto.getWarnid()); + if (Boolean.FALSE.equals(stringRedisTemplate.delete(QX_TEMP_REDIS_KEY + dto.getWarnid()))) { + log.error("缓存删除失败: " + dto.getWarnid()); + } return ResultJson.ok(save); } diff --git a/src/main/java/com/whdc/mapper/QXWarningMapper.java b/src/main/java/com/whdc/mapper/QXWarningMapper.java index 1602e63..e03c29d 100644 --- a/src/main/java/com/whdc/mapper/QXWarningMapper.java +++ b/src/main/java/com/whdc/mapper/QXWarningMapper.java @@ -4,13 +4,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.whdc.model.dto.GroupWarningDto; import com.whdc.model.entity.QXWarning; +import com.whdc.model.vo.QXWarningVO; import org.apache.ibatis.annotations.Param; import java.util.List; public interface QXWarningMapper extends BaseMapper { List find(@Param("dto")QXWarning dto); - List findByMsgIsNull(); + List findByMsgIsNull(); IPage page(@Param("page") IPage page, @Param("dto") GroupWarningDto dto); diff --git a/src/main/java/com/whdc/model/vo/QXWarningVO.java b/src/main/java/com/whdc/model/vo/QXWarningVO.java index b9fd7e2..163fd15 100644 --- a/src/main/java/com/whdc/model/vo/QXWarningVO.java +++ b/src/main/java/com/whdc/model/vo/QXWarningVO.java @@ -10,6 +10,10 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class QXWarningVO { + + @ApiModelProperty(value = "是否播放报警声音") + private Boolean play; + @ApiModelProperty(value = "生成时间") private String createTime; diff --git a/src/main/java/com/whdc/service/IQXWarningService.java b/src/main/java/com/whdc/service/IQXWarningService.java index ac0927e..e082ac6 100644 --- a/src/main/java/com/whdc/service/IQXWarningService.java +++ b/src/main/java/com/whdc/service/IQXWarningService.java @@ -4,12 +4,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.whdc.model.dto.GroupWarningDto; import com.whdc.model.entity.QXWarning; +import com.whdc.model.vo.QXWarningVO; import java.util.List; public interface IQXWarningService extends IService { - List find(); + List find(); IPage page(GroupWarningDto dto); - List getWarnAndMsg(String stm,String etm); + List getWarnAndMsg(String stm, String etm); } \ No newline at end of file diff --git a/src/main/java/com/whdc/service/impl/QXWarningServiceImpl.java b/src/main/java/com/whdc/service/impl/QXWarningServiceImpl.java index 101d5d4..86ca236 100644 --- a/src/main/java/com/whdc/service/impl/QXWarningServiceImpl.java +++ b/src/main/java/com/whdc/service/impl/QXWarningServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.whdc.mapper.QXWarningMapper; import com.whdc.model.dto.GroupWarningDto; import com.whdc.model.entity.QXWarning; +import com.whdc.model.vo.QXWarningVO; import com.whdc.service.IQXWarningService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -15,7 +16,7 @@ import java.util.List; @Service public class QXWarningServiceImpl extends ServiceImpl implements IQXWarningService { @Override - public List find() { + public List find() { return getBaseMapper().findByMsgIsNull(); } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 8eac4da..e3da52e 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -40,10 +40,10 @@ spring: # Redis redis: database: 5 -# host: 10.42.6.75 - host: 127.0.0.1 - password: -# password: Whdc_890 + host: 10.42.6.75 +# host: 127.0.0.1 +# password: + password: Whdc_890 port: 6379 servlet: @@ -82,5 +82,5 @@ wx: appid: wxb9b07668d1ba20fe secret: 99a1b89ac30e28bcc9bba8be973027f4 -getGroupWarning: http://223.75.53.141:8000/shzh/met/zyqxfw/api/warning/getGroupWarning -#getGroupWarning: http://127.0.0.1:20000/shzh/met/zyqxfw/api/warning/getGroupWarning \ No newline at end of file +#getGroupWarning: http://223.75.53.141:8000/shzh/met/zyqxfw/api/warning/getGroupWarning +getGroupWarning: http://127.0.0.1:20000/shzh/met/zyqxfw/api/warning/getGroupWarning \ No newline at end of file