Browse Source

[fix]

1、集成rocketmq
2、开发首页预警统计
pull/1/head
杨威 3 months ago
parent
commit
6429cfb3b9
  1. 12
      dk-api/api-rocketmq/src/main/java/org/dromara/rocketmq/api/RemoteRocketmqMessageService.java
  2. 12
      dk-api/api-rocketmq/src/main/java/org/dromara/rocketmq/api/domain/vo/RemoteProductMessageVo.java
  3. 1
      dk-api/pom.xml
  4. 12
      dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java
  5. 10
      dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java
  6. 3
      dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java
  7. 56
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java
  8. 9
      dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml
  9. 28
      dk-visual/rocketmq/pom.xml
  10. 32
      dk-visual/rocketmq/src/main/java/com/ruoyi/rocketmq/dubbo/RemoteRocketmqMessageServiceImpl.java

12
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<String,Object> sendSynchronizeMessage(RemoteProductMessageVo remoteProductMessageVo);
}

12
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;
}

1
dk-api/pom.xml

@ -14,6 +14,7 @@
<module>api-resource</module>
<module>api-workflow</module>
<module>api-business</module>
<module>api-rocketmq</module>
</modules>
<artifactId>dk-api</artifactId>

12
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<List<StatObj>> handlerRate(BusinessAlertBo businessAlertBo,Dict dict) {
return R.ok(statisticsService.handlerRate(businessAlertBo));
}

10
dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java

@ -69,11 +69,13 @@ public interface BusinessAlertMapper extends BaseMapperPlus<BusinessAlert, Busin
List<Map<String, Object>> countAlertTypeCompare(@Param("param") BusinessAlertBo businessAlertBo);
Integer countFromOldToCurrent(BusinessAlertBo businessAlertBo);
Integer countFromOldToCurrent(@Param("param") BusinessAlertBo businessAlertBo);
Map<String, Object> countCurrentAlert(BusinessAlertBo businessAlertBo);
Map<String, Object> countCurrentAlert(@Param("param") BusinessAlertBo businessAlertBo);
Map<String, Object> countMonthAlert(BusinessAlertBo businessAlertBo);
Map<String, Object> countMonthAlert(@Param("param") BusinessAlertBo businessAlertBo);
Map<String, Object> countCurrentDayAlert(BusinessAlertBo businessAlertBo);
Map<String, Object> countCurrentDayAlert(@Param("param") BusinessAlertBo businessAlertBo);
Map<String, Object> handlerRate(@Param("param") BusinessAlertBo businessAlertBo,@Param("month") String month);
}

3
dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java

@ -29,4 +29,7 @@ public interface IBusinessAlertStatisticsService {
Map<String,Object> countPostDayAlert(BusinessAlertBo businessAlertBo);
List<StatObj> countPostAlert(BusinessAlertBo businessAlertBo);
List<StatObj> handlerRate(BusinessAlertBo businessAlertBo);
}

56
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<String> labelList = getAiLabel(businessAlertBo.getPostCode());
List<String> labelList = getAiLabel(postVo.getPostCode());
businessAlertBo.setAiLabelEnList(labelList);
Map<String, Object> 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<String> labelList = getAiLabel(businessAlertBo.getPostCode());
List<String> labelList = getAiLabel(postVo.getPostCode());
businessAlertBo.setAiLabelEnList(labelList);
Map<String, Object> 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<StatObj> handlerRate(BusinessAlertBo businessAlertBo) {
//查询所有的职能岗位
List<RemotePostVo> postVoList = remotePostService.listPost();
List<String> monthList = getLastSixMonths();
List<StatObj> result = new ArrayList<>();
monthList.forEach(month -> {
StatObj statObj = new StatObj();
statObj.setStatKey(month);
List<StatObj> statObjs = new ArrayList<>();
postVoList.forEach(postVo -> {
List<String> labelList = getAiLabel(postVo.getPostCode());
businessAlertBo.setAiLabelEnList(labelList);
Map<String,Object> 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<String> getLastSixMonths() {
List<String> 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<String> buildDateList(BusinessAlertBo businessAlertBo) {
List<String> resultList = new ArrayList<>();
String currentYear = String.valueOf(Calendar.getInstance().get(Calendar.YEAR));

9
dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml

@ -428,4 +428,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="searchSql"></include>
</select>
<select id="handlerRate" resultType="java.util.Map">
select
SUM(TIMESTAMPDIFF(HOUR, ba.create_time, ba.complete_date)) / COUNT(*) AS avgInfo
from business_alert ba
where 1=1
and <![CDATA[ DATE_FORMAT(ba.create_time, '%Y-%m') = DATE_FORMAT(#{month}, '%Y-%m') ]]>
<include refid="searchSql"></include>
</select>
</mapper>

28
dk-visual/rocketmq/pom.xml

@ -62,6 +62,34 @@
<groupId>org.dromara</groupId>
<artifactId>common-web</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>common-dubbo</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>common-seata</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>api-workflow</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>api-resource</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>api-rocketmq</artifactId>
<version>2.2.2</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>

32
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<String,Object> sendSynchronizeMessage(RemoteProductMessageVo remoteProductMessageVo){
MessageProducer messageProducer = new MessageProducer();
//调用MessageProducer配置好的消息方法
SendResult sendResult = messageProducer.sendSynchronizeMessage(remoteProductMessageVo.getTopic(),"order_message_tag","title",remoteProductMessageVo.getMessage());
Map<String,Object> result = new HashMap<>();
result.put("data",sendResult);
return result;
}
}
Loading…
Cancel
Save