From 6429cfb3b9a213df01047f3e0cdab748cd84546c Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Wed, 26 Mar 2025 20:42:08 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=201=E3=80=81=E9=9B=86=E6=88=90rocketmq=20?= =?UTF-8?q?2=E3=80=81=E5=BC=80=E5=8F=91=E9=A6=96=E9=A1=B5=E9=A2=84?= =?UTF-8?q?=E8=AD=A6=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/RemoteRocketmqMessageService.java | 12 ++++ .../api/domain/vo/RemoteProductMessageVo.java | 12 ++++ dk-api/pom.xml | 1 + .../BusinessAlertStatisticsController.java | 12 +++- .../business/mapper/BusinessAlertMapper.java | 10 ++-- .../IBusinessAlertStatisticsService.java | 3 + .../BusinessAlertStatisticsServiceImpl.java | 56 ++++++++++++++++++- .../mapper/business/BusinessAlertMapper.xml | 9 +++ dk-visual/rocketmq/pom.xml | 28 ++++++++++ .../RemoteRocketmqMessageServiceImpl.java | 32 +++++++++++ 10 files changed, 168 insertions(+), 7 deletions(-) create mode 100644 dk-api/api-rocketmq/src/main/java/org/dromara/rocketmq/api/RemoteRocketmqMessageService.java create mode 100644 dk-api/api-rocketmq/src/main/java/org/dromara/rocketmq/api/domain/vo/RemoteProductMessageVo.java create mode 100644 dk-visual/rocketmq/src/main/java/com/ruoyi/rocketmq/dubbo/RemoteRocketmqMessageServiceImpl.java diff --git a/dk-api/api-rocketmq/src/main/java/org/dromara/rocketmq/api/RemoteRocketmqMessageService.java b/dk-api/api-rocketmq/src/main/java/org/dromara/rocketmq/api/RemoteRocketmqMessageService.java new file mode 100644 index 0000000..813c8a2 --- /dev/null +++ b/dk-api/api-rocketmq/src/main/java/org/dromara/rocketmq/api/RemoteRocketmqMessageService.java @@ -0,0 +1,12 @@ +package org.dromara.rocketmq.api; + + +import org.dromara.rocketmq.api.domain.vo.RemoteProductMessageVo; + +import java.util.Map; + +public interface RemoteRocketmqMessageService { + + Map sendSynchronizeMessage(RemoteProductMessageVo remoteProductMessageVo); + +} diff --git a/dk-api/api-rocketmq/src/main/java/org/dromara/rocketmq/api/domain/vo/RemoteProductMessageVo.java b/dk-api/api-rocketmq/src/main/java/org/dromara/rocketmq/api/domain/vo/RemoteProductMessageVo.java new file mode 100644 index 0000000..3466c0a --- /dev/null +++ b/dk-api/api-rocketmq/src/main/java/org/dromara/rocketmq/api/domain/vo/RemoteProductMessageVo.java @@ -0,0 +1,12 @@ +package org.dromara.rocketmq.api.domain.vo; + +import lombok.Data; + +@Data +public class RemoteProductMessageVo { + + private String topic; + + private String message; + +} diff --git a/dk-api/pom.xml b/dk-api/pom.xml index 273f93e..b68ef7c 100644 --- a/dk-api/pom.xml +++ b/dk-api/pom.xml @@ -14,6 +14,7 @@ api-resource api-workflow api-business + api-rocketmq dk-api diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java index c5b490e..279dbd9 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java @@ -1,5 +1,6 @@ package org.dromara.business.controller; +import cn.hutool.core.lang.Dict; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; @@ -80,7 +81,16 @@ public class BusinessAlertStatisticsController extends BaseController { } - + /** + * 出警效率 + * @param businessAlertBo + * @return + */ + @Operation(summary="出警效率", description="出警效率") + @GetMapping(value = "/handler/rate") + public R> handlerRate(BusinessAlertBo businessAlertBo,Dict dict) { + return R.ok(statisticsService.handlerRate(businessAlertBo)); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java index 58392b0..335f53a 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java @@ -69,11 +69,13 @@ public interface BusinessAlertMapper extends BaseMapperPlus> countAlertTypeCompare(@Param("param") BusinessAlertBo businessAlertBo); - Integer countFromOldToCurrent(BusinessAlertBo businessAlertBo); + Integer countFromOldToCurrent(@Param("param") BusinessAlertBo businessAlertBo); - Map countCurrentAlert(BusinessAlertBo businessAlertBo); + Map countCurrentAlert(@Param("param") BusinessAlertBo businessAlertBo); - Map countMonthAlert(BusinessAlertBo businessAlertBo); + Map countMonthAlert(@Param("param") BusinessAlertBo businessAlertBo); - Map countCurrentDayAlert(BusinessAlertBo businessAlertBo); + Map countCurrentDayAlert(@Param("param") BusinessAlertBo businessAlertBo); + + Map handlerRate(@Param("param") BusinessAlertBo businessAlertBo,@Param("month") String month); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java index 95b6d9e..11b8a2c 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java @@ -29,4 +29,7 @@ public interface IBusinessAlertStatisticsService { Map countPostDayAlert(BusinessAlertBo businessAlertBo); List countPostAlert(BusinessAlertBo businessAlertBo); + + List handlerRate(BusinessAlertBo businessAlertBo); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java index bcb4690..5736142 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java @@ -19,6 +19,8 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -222,7 +224,7 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist } postVoList.forEach(postVo -> { - List labelList = getAiLabel(businessAlertBo.getPostCode()); + List labelList = getAiLabel(postVo.getPostCode()); businessAlertBo.setAiLabelEnList(labelList); Map dayMap = this.baseMapper.countCurrentDayAlert(businessAlertBo); result.put(postVo.getPostName(), dayMap.get("total")); @@ -248,7 +250,7 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist } postVoList.forEach(postVo -> { - List labelList = getAiLabel(businessAlertBo.getPostCode()); + List labelList = getAiLabel(postVo.getPostCode()); businessAlertBo.setAiLabelEnList(labelList); Map dateMap = switch (businessAlertBo.getDateType()) { case 1 -> baseMapper.countCurrentAlert(businessAlertBo); @@ -269,6 +271,56 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist return result; } + /** + * 出警效率 + * @param businessAlertBo + * @return + */ + @Override + public List handlerRate(BusinessAlertBo businessAlertBo) { + //查询所有的职能岗位 + List postVoList = remotePostService.listPost(); + + List monthList = getLastSixMonths(); + + List result = new ArrayList<>(); + + monthList.forEach(month -> { + StatObj statObj = new StatObj(); + statObj.setStatKey(month); + List statObjs = new ArrayList<>(); + postVoList.forEach(postVo -> { + List labelList = getAiLabel(postVo.getPostCode()); + businessAlertBo.setAiLabelEnList(labelList); + Map rateMap = baseMapper.handlerRate(businessAlertBo,month); + StatObj statObj1 = new StatObj(); + statObj1.setStatKey(postVo.getPostName()); + statObj1.setStatVal(rateMap.get("avgInfo")); + statObjs.add(statObj1); + }); + statObj.setNextStatList(statObjs); + + result.add(statObj); + }); + return result; + } + + /** + * 获取近6个月的月份集合(格式:yyyy-MM) + */ + public static List getLastSixMonths() { + List months = new ArrayList<>(6); + LocalDate currentDate = LocalDate.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); + + for (int i = 0; i < 6; i++) { + LocalDate date = currentDate.minusMonths(i); + months.add(date.format(formatter)); + } + + return months; + } + private List buildDateList(BusinessAlertBo businessAlertBo) { List resultList = new ArrayList<>(); String currentYear = String.valueOf(Calendar.getInstance().get(Calendar.YEAR)); diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml index 353353d..9009c93 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -428,4 +428,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + diff --git a/dk-visual/rocketmq/pom.xml b/dk-visual/rocketmq/pom.xml index 9252d69..d222fc2 100644 --- a/dk-visual/rocketmq/pom.xml +++ b/dk-visual/rocketmq/pom.xml @@ -62,6 +62,34 @@ org.dromara common-web + + + org.dromara + common-dubbo + + + + org.dromara + common-seata + + + + org.dromara + api-workflow + + + + org.dromara + api-resource + + + org.dromara + api-rocketmq + 2.2.2 + compile + + + diff --git a/dk-visual/rocketmq/src/main/java/com/ruoyi/rocketmq/dubbo/RemoteRocketmqMessageServiceImpl.java b/dk-visual/rocketmq/src/main/java/com/ruoyi/rocketmq/dubbo/RemoteRocketmqMessageServiceImpl.java new file mode 100644 index 0000000..1a88289 --- /dev/null +++ b/dk-visual/rocketmq/src/main/java/com/ruoyi/rocketmq/dubbo/RemoteRocketmqMessageServiceImpl.java @@ -0,0 +1,32 @@ +package com.ruoyi.rocketmq.dubbo; + +import com.ruoyi.rocketmq.producer.MessageProducer; +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboService; +import org.apache.rocketmq.client.producer.SendResult; +import org.dromara.rocketmq.api.RemoteRocketmqMessageService; +import org.dromara.rocketmq.api.domain.vo.RemoteProductMessageVo; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +@DubboService +@Service +@RequiredArgsConstructor +public class RemoteRocketmqMessageServiceImpl implements RemoteRocketmqMessageService { + + /** + * + * @return + */ + @Override + public Map sendSynchronizeMessage(RemoteProductMessageVo remoteProductMessageVo){ + MessageProducer messageProducer = new MessageProducer(); + //调用MessageProducer配置好的消息方法 + SendResult sendResult = messageProducer.sendSynchronizeMessage(remoteProductMessageVo.getTopic(),"order_message_tag","title",remoteProductMessageVo.getMessage()); + Map result = new HashMap<>(); + result.put("data",sendResult); + return result; + } +}