From 2075881c93887b2fc4c25c757918c52dc037fb69 Mon Sep 17 00:00:00 2001 From: wu Date: Thu, 4 Jan 2024 10:20:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=8A=A0=E4=B8=8A=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pt/controller/RemoteCallsController.java | 21 +++- .../java/com/ruoyi/pt/entity/EventsCopy.java | 107 ++++++++++++++++++ .../com/ruoyi/pt/mapper/EventsCopyMapper.java | 15 +++ .../java/com/ruoyi/pt/quartz/PushQuartz.java | 11 +- .../ruoyi/pt/service/EventsCopyService.java | 15 +++ .../ruoyi/pt/service/RemoteCallsService.java | 8 +- .../service/impl/EventsCopyServiceImpl.java | 19 ++++ .../service/impl/RemoteCallsServiceImpl.java | 74 ++++++++++-- 8 files changed, 255 insertions(+), 15 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/pt/entity/EventsCopy.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/pt/mapper/EventsCopyMapper.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/pt/service/EventsCopyService.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/pt/service/impl/EventsCopyServiceImpl.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pt/controller/RemoteCallsController.java b/ruoyi-admin/src/main/java/com/ruoyi/pt/controller/RemoteCallsController.java index f391cf3..f8d4ec2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/pt/controller/RemoteCallsController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/pt/controller/RemoteCallsController.java @@ -8,6 +8,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; 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; @@ -48,12 +49,25 @@ public class RemoteCallsController extends BaseController { /** * 事件进度推送接口 * + * @param allPush 是否全推送 1为推送所有 null为推送当天 * @return 响应类 */ @ApiOperation(value = "事件进度推送接口") @PostMapping("/imports") - public AjaxResult imports() { - remoteCallsService.imports(); + public AjaxResult imports(@RequestBody Integer allPush) { + remoteCallsService.imports(allPush); + return success(); + } + + /** + * 事件进度临时推送接口 + * + * @return 响应类 + */ + @ApiOperation(value = "事件进度临时推送接口") + @PostMapping("/temporaryImports") + public AjaxResult temporaryImports( ) { + remoteCallsService.temporaryImports(); return success(); } @@ -86,9 +100,10 @@ public class RemoteCallsController extends BaseController { // 同人事件接口 remoteCallsService.onepersonAlgorithm(); // 推送 - remoteCallsService.imports(); + remoteCallsService.imports(null); return success(); } + /** * 算法处理所有数据 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pt/entity/EventsCopy.java b/ruoyi-admin/src/main/java/com/ruoyi/pt/entity/EventsCopy.java new file mode 100644 index 0000000..b9e7b2c --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/pt/entity/EventsCopy.java @@ -0,0 +1,107 @@ +package com.ruoyi.pt.entity; + +import java.io.Serializable; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + + +/** + * 事件集合临时表(EventsCopy)表实体类 + * + * @author wu + * @since 2023-12-29 19:55:49 + */ +@Data +@ApiModel("事件集合临时表实体类") +@TableName(value = "events_copy") +public class EventsCopy implements Serializable { + + private static final long serialVersionUID = -93336216948940683L; + /** + * 事件集合编号(主键) + */ + @ApiModelProperty(value = "事件集合编号(主键)") + @TableField(value = "innerEventId") + private String innerEventId; + + /** + * 事件消息标题 + */ + @ApiModelProperty(value = "事件消息标题") + private String title; + + /** + * 事件类型编码 + */ + @ApiModelProperty(value = "事件类型编码") + @TableField(value = "msgType") + private String msgType; + + /** + * 事件类型名称 + */ + @ApiModelProperty(value = "事件类型名称") + @TableField(value = "msgTypeName") + private String msgTypeName; + + /** + * 案件类型编码 + */ + @ApiModelProperty(value = "案件类型编码") + @TableField(value = "scenceType") + private Integer scenceType; + + /** + * 案件类型名称 + */ + @ApiModelProperty(value = "案件类型名称") + @TableField(value = "scenceTypeName") + private String scenceTypename; + + /** + * 第一次预警时间 + */ + @ApiModelProperty(value = "第一次预警时间") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField(value = "firstWarnTime") + private Date firstWarnTimeDate; + + /** + * 事件发生时间 + */ + @ApiModelProperty(value = "事件发生时间") + @TableField(value = "eventTime") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date eventTimeDate; + + /** + * 预警因素 + */ + @ApiModelProperty(value = "预警因素") + @TableField(value = "warnFactor") + private String warnFactor; + + /** + * 预警关联的事件单号 + */ + @ApiModelProperty(value = "预警关联的事件单号") + @TableField(value = "relationNums") + private String relationNums; + + /** + * 紧急概率 + */ + @ApiModelProperty(value = "紧急概率") + @TableField(value = "urgentPercent") + private Float urgentPercent; +} + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pt/mapper/EventsCopyMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/pt/mapper/EventsCopyMapper.java new file mode 100644 index 0000000..3f988f0 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/pt/mapper/EventsCopyMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.pt.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.pt.entity.EventsCopy; + +/** + * 事件集合临时表(EventsCopy)表数据库访问层 + * + * @author wu + * @since 2023-12-29 19:55:49 + */ +public interface EventsCopyMapper extends BaseMapper { + +} + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pt/quartz/PushQuartz.java b/ruoyi-admin/src/main/java/com/ruoyi/pt/quartz/PushQuartz.java index 8e77280..295bf6c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/pt/quartz/PushQuartz.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/pt/quartz/PushQuartz.java @@ -9,6 +9,7 @@ import org.springframework.scheduling.annotation.Scheduled; import javax.annotation.Resource; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; /** @@ -26,8 +27,8 @@ public class PushQuartz { private RemoteCallsService remoteCallsService; @Scheduled(cron = "0 0 1 * * ? ") - public void pushData() { - log.info("==============开始定时任务============"); + public synchronized void pushData() { + log.info("==============开始定时任务" + LocalDateTime.now() + "============"); // 获取社会治理中心增量事件保存到events_import表 remoteCallsService.getEventDate(); // 获取昨天的数据 @@ -35,13 +36,17 @@ public class PushQuartz { LocalDate yesterday = localDate.minusDays(1); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String yesterdayStr = yesterday.format(formatter); + log.info("==============推送紧急事件接口" + LocalDateTime.now() + "============"); // 紧急事件接口 remoteCallsService.urgentAlgorithm(yesterdayStr); // 群体事件接口 + log.info("==============推送群体事件接口" + LocalDateTime.now() + "============"); remoteCallsService.groupAlgorithm(); // 同人事件接口 + log.info("==============推送同人事件接口" + LocalDateTime.now() + "============"); remoteCallsService.onepersonAlgorithm(); // 推送 - remoteCallsService.imports(); +// log.info("==============推送到预警平台接口" + LocalDateTime.now() + "============"); +// remoteCallsService.imports(null); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pt/service/EventsCopyService.java b/ruoyi-admin/src/main/java/com/ruoyi/pt/service/EventsCopyService.java new file mode 100644 index 0000000..6abb11d --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/pt/service/EventsCopyService.java @@ -0,0 +1,15 @@ +package com.ruoyi.pt.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.pt.entity.EventsCopy; + +/** + * 事件集合临时表(EventsCopy)表服务接口 + * + * @author wu + * @since 2023-12-29 19:55:49 + */ +public interface EventsCopyService extends IService { + +} + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pt/service/RemoteCallsService.java b/ruoyi-admin/src/main/java/com/ruoyi/pt/service/RemoteCallsService.java index ddbc688..c02dce9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/pt/service/RemoteCallsService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/pt/service/RemoteCallsService.java @@ -17,8 +17,14 @@ public interface RemoteCallsService { /** * 事件进度推送接口 + * @param allPush 是否全推送 1为推送所有 null为推送当天 */ - void imports(); + void imports(Integer allPush); + + /** + * 临时推送 + */ + void temporaryImports(); /** * 获取社会治理中心增量事件保存到events_import表 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pt/service/impl/EventsCopyServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/pt/service/impl/EventsCopyServiceImpl.java new file mode 100644 index 0000000..6cf1ac6 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/pt/service/impl/EventsCopyServiceImpl.java @@ -0,0 +1,19 @@ +package com.ruoyi.pt.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.pt.mapper.EventsCopyMapper; +import com.ruoyi.pt.entity.EventsCopy; +import com.ruoyi.pt.service.EventsCopyService; +import org.springframework.stereotype.Service; + +/** + * 事件集合临时表(EventsCopy)表服务实现类 + * + * @author wu + * @since 2023-12-29 19:55:49 + */ +@Service("eventsCopyService") +public class EventsCopyServiceImpl extends ServiceImpl implements EventsCopyService { + +} + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pt/service/impl/RemoteCallsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/pt/service/impl/RemoteCallsServiceImpl.java index af67c67..9f2828f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/pt/service/impl/RemoteCallsServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/pt/service/impl/RemoteCallsServiceImpl.java @@ -9,10 +9,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.pt.entity.CasesImport; import com.ruoyi.pt.entity.Events; +import com.ruoyi.pt.entity.EventsCopy; import com.ruoyi.pt.entity.dto.RemoteCallsDTO; import com.ruoyi.pt.entity.response.RemoteCallsResponse; import com.ruoyi.pt.entity.response.RemoteEventResponse; import com.ruoyi.pt.service.CasesImportService; +import com.ruoyi.pt.service.EventsCopyService; import com.ruoyi.pt.service.EventsService; import com.ruoyi.pt.service.RemoteCallsService; import org.slf4j.Logger; @@ -52,6 +54,9 @@ public class RemoteCallsServiceImpl implements RemoteCallsService { @Resource private EventsService eventsService; + @Resource + private EventsCopyService eventsCopyService; + @Resource private CasesImportService casesImportService; @@ -84,22 +89,27 @@ public class RemoteCallsServiceImpl implements RemoteCallsService { /** * 事件进度推送接口 + * + * @param allPush 是否全推送 1为推送所有 null为推送当天 */ @Override - public void imports() { + public void imports(Integer allPush) { String accessToken = this.getAccessToken(); // 初始化MyBatis-Plus的分页对象 查询第1页,每页100条 Page page = new Page<>(1, 100); // 创建查询条件 QueryWrapper queryWrapper = new QueryWrapper<>(); - // 获取昨天的日期 - LocalDate localDate = LocalDate.now(); - LocalDate yesterday = localDate.minusDays(1); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - String yesterdayStr = yesterday.format(formatter); + if (allPush != null && allPush == 1) { + // 获取昨天的日期 + LocalDate localDate = LocalDate.now(); + LocalDate yesterday = localDate.minusDays(1); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String yesterdayStr = yesterday.format(formatter); + queryWrapper.and(wrapper -> wrapper.gt("eventTime", yesterdayStr)); + } + queryWrapper.isNotNull("innerEventId") .and(wrapper -> wrapper.ne("innerEventId", "")) - .and(wrapper -> wrapper.gt("eventTime", yesterdayStr)) .and(wrapper -> wrapper .nested(i -> i.eq("scenceType", "3").gt("urgentPercent", 0.994)) .or() @@ -135,13 +145,61 @@ public class RemoteCallsServiceImpl implements RemoteCallsService { } + /** + * 临时推送 + */ + @Override + public void temporaryImports() { + log.info("==========推送开始========="); + String accessToken = this.getAccessToken(); + log.info("==========获取token=========> " + accessToken); + // 初始化MyBatis-Plus的分页对象 查询第1页,每页100条 + Page page = new Page<>(1, 100); + // 创建查询条件 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.isNotNull("innerEventId") + .and(wrapper -> wrapper.ne("innerEventId", "")) + .and(wrapper -> wrapper + .nested(i -> i.eq("scenceType", "3").gt("urgentPercent", 0.994)) + .or() + .ne("scenceType", "3") + ); + // 创建SimpleDateFormat对象,指定日期格式为yyyy-MM-dd HH:mm:ss + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + // 循环获取所有数据 + while (true) { + IPage dataPage = eventsCopyService.page(page, queryWrapper); + List data = dataPage.getRecords(); + List dtos = BeanUtil.copyToList(data, RemoteCallsDTO.class); + dtos.forEach(x -> { + x.setContent(x.getTitle()); + // 使用SimpleDateFormat对象将Date对象格式化为字符串 + String firstWarnTime = sdf.format(x.getFirstWarnTimeDate()); + String eventTime = sdf.format(x.getEventTimeDate()); + x.setContent(x.getTitle()); + x.setFirstWarnTime(firstWarnTime); + x.setEventTime(eventTime); + }); + String jsonStr = JSONUtil.toJsonStr(dtos); + HttpRequest.post(url + "/gateway/event/event/eventData/imports").header("Authorization", "Bearer " + accessToken).body(jsonStr).execute().body(); + // 判断是否还有下一页 + if (dataPage.getPages() > dataPage.getCurrent()) { + // 设置下一页的页码 + page.setCurrent(page.getCurrent() + 1); + } else { + log.info("==========推送完成========="); + return; // 已经获取完所有数据,结束循环 + } + } + } + /** * 获取社会治理中心增量事件保存到events_import表 */ @Override public void getEventDate() { Long id = casesImportService.findIdDesc(); - log.info("最新id是=============:"+id); + log.info("最新id是=============:" + id); if (id == null) { id = 0L; }