From 9d51a3e05ef8fa2f499d6fcae1553b9b74340d82 Mon Sep 17 00:00:00 2001
From: haungxing <1203316822@qq.com>
Date: Mon, 17 Apr 2023 16:51:08 +0800
Subject: [PATCH] =?UTF-8?q?#=20=E5=B7=A1=E6=A3=80=E6=B6=88=E6=81=AF?=
=?UTF-8?q?=E6=8E=A8=E9=80=81=20#=20=E6=B6=88=E6=81=AFAPI=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../hzinfo/inspect/plan/entity/PlanEntity.java | 6 +
.../hzinfo/inspect/task/entity/TaskEntity.java | 5 +
.../hnac/hzims/message/dto/PlanMsgRecordDto.java | 4 +
hzims-service/inspect/pom.xml | 6 +-
.../inspect/task/aspect/TaskGenerateAspect.java | 131 +++++++++++++++++++++
.../hnac/hzims/message/fegin/MessageClient.java | 1 +
.../message/schedule/MessagePushSchedule.java | 3 +
.../service/impl/SmsMessageServiceImpl.java | 2 +-
8 files changed, 156 insertions(+), 2 deletions(-)
create mode 100644 hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/aspect/TaskGenerateAspect.java
diff --git a/hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/plan/entity/PlanEntity.java b/hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/plan/entity/PlanEntity.java
index 2382a03..ed78383 100644
--- a/hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/plan/entity/PlanEntity.java
+++ b/hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/plan/entity/PlanEntity.java
@@ -3,6 +3,8 @@ package com.hnac.hzinfo.inspect.plan.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import jdk.nashorn.internal.ir.annotations.Ignore;
@@ -195,4 +197,8 @@ public class PlanEntity extends TenantEntity {
@ApiModelProperty(value = "值班id")
private Long dutyId;
+ @ApiModelProperty(value = "消息模板ID")
+ @JsonSerialize(nullsUsing = NullSerializer.class)
+ private Long messageTemplateId;
+
}
diff --git a/hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/task/entity/TaskEntity.java b/hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/task/entity/TaskEntity.java
index f3ce072..83c4274 100644
--- a/hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/task/entity/TaskEntity.java
+++ b/hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/task/entity/TaskEntity.java
@@ -3,6 +3,8 @@ package com.hnac.hzinfo.inspect.task.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -165,5 +167,8 @@ public class TaskEntity extends TenantEntity {
@ApiModelProperty(value = "值班id")
private Long dutyId;
+ @ApiModelProperty(value = "消息模板ID")
+ @JsonSerialize(nullsUsing = NullSerializer.class)
+ private Long messageTemplateId;
}
diff --git a/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/dto/PlanMsgRecordDto.java b/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/dto/PlanMsgRecordDto.java
index 611fab7..d2e233d 100644
--- a/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/dto/PlanMsgRecordDto.java
+++ b/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/dto/PlanMsgRecordDto.java
@@ -59,9 +59,13 @@ public class PlanMsgRecordDto implements Serializable {
@JsonSerialize(nullsUsing = NullSerializer.class)
private Long createUser;
+ @ApiModelProperty("阿里云短信模板参数")
+ private String smsParam;
+
@ApiModelProperty("消息推送耳机")
@NotNull
private String content;
+
@ApiModelProperty("租户ID")
private String tenantId;
diff --git a/hzims-service/inspect/pom.xml b/hzims-service/inspect/pom.xml
index 7376582..9ac3564 100644
--- a/hzims-service/inspect/pom.xml
+++ b/hzims-service/inspect/pom.xml
@@ -134,7 +134,11 @@
blade-starter-oss-minio
${bladex.project.version}
-
+
+ com.hnac.hzims
+ message-api
+ ${hzims.project.version}
+
diff --git a/hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/aspect/TaskGenerateAspect.java b/hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/aspect/TaskGenerateAspect.java
new file mode 100644
index 0000000..1ffced5
--- /dev/null
+++ b/hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/aspect/TaskGenerateAspect.java
@@ -0,0 +1,131 @@
+package com.hnac.hzinfo.inspect.task.aspect;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.google.common.collect.Lists;
+import com.hnac.hzims.message.dto.PlanMsgRecordDto;
+import com.hnac.hzims.message.fegin.IMessageClient;
+import com.hnac.hzinfo.inspect.task.entity.TaskEntity;
+import com.hnac.hzinfo.inspect.task.entity.TaskUserEntity;
+import com.hnac.hzinfo.inspect.task.job.service.TaskRemindManager;
+import com.hnac.hzinfo.inspect.task.service.ITaskUserService;
+import lombok.AllArgsConstructor;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.After;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.CollectionUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName TaskGenerateAspect
+ * @description: 消息生成后业务操作
+ * @author: hx
+ * @create: 2023-04-17 11:21
+ * @Version 4.0
+ **/
+@Aspect
+@Component
+@RequiredArgsConstructor
+@Slf4j
+public class TaskGenerateAspect {
+
+ private final IMessageClient messageClient;
+ private final ITaskUserService taskUserService;
+
+ /**
+ * 巡检任务开始前发送短信信息阿里云模板
+ **/
+ @Value("${hzims.inspect.task.templateCode.taskBegin}")
+ private String taskBeginTemplateCode;
+
+ /**
+ * 巡检任务结束前发送短信信息阿里云模板
+ **/
+ @Value("${hzims.inspect.task.templateCode.taskEnd}")
+ private String taskEndTemplateCode;
+
+ @Pointcut("execution(* com.hnac.hzinfo.inspect.task.service.ITaskService.save(..))")
+ public void taskSaveCut() {
+ }
+
+ @Pointcut("execution(* com.hnac.hzinfo.inspect.task.service.ITaskService.saveBatch(..))")
+ public void taskSaveCutBatch() {
+ }
+
+ @After("taskSaveCut()")
+ private void saveTask(ProceedingJoinPoint joinPoint) throws Throwable {
+ Object[] args = joinPoint.getArgs();
+ new Thread(() -> {
+ if(ObjectUtil.isNotEmpty(args[0]) && args[0] instanceof TaskEntity) {
+ TaskEntity task = JSONObject.parseObject(JSON.toJSONString(args[0]),TaskEntity.class);
+ this.pushMessageByTask(task);
+ }
+ },"巡检任务消息推送");
+ joinPoint.proceed();
+ }
+
+ @After("taskSaveCutBatch()")
+ private void saveTaskBatch(ProceedingJoinPoint joinPoint) throws Throwable {
+ Object[] args = joinPoint.getArgs();
+ new Thread(() -> {
+ if(args.length == 1) {
+ List taskList = JSONArray.parseArray(JSON.toJSONString(args[0]),TaskEntity.class);
+ taskList.forEach(this::pushMessageByTask);
+ }
+ },"巡检任务消息批量推送").start();
+ joinPoint.proceed();
+ }
+
+ /**
+ * 根据巡检任务生成消息推送记录
+ * @param taskEntity 巡检任务
+ */
+ private void pushMessageByTask(TaskEntity taskEntity) {
+ PlanMsgRecordDto recordDto = new PlanMsgRecordDto();
+ recordDto.setDeptId(taskEntity.getCreateDept());
+ recordDto.setTemplateId(taskEntity.getMessageTemplateId());
+ recordDto.setTaskId(taskEntity.getId());
+ if(Func.isEmpty(AuthUtil.getUserId())) {
+ recordDto.setTenantId(taskEntity.getTenantId());
+ }
+ // 获取巡检任务的消息推送人
+ LambdaQueryWrapper eq = Wrappers.lambdaQuery().eq(TaskUserEntity::getTaskId, taskEntity.getId());
+ List taskUserList = taskUserService.list(eq);
+ if(CollectionUtil.isNotEmpty(taskUserList)) {
+ DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+ taskUserList.stream().map(TaskUserEntity::getUserId).filter(Func::isNotEmpty).forEach(userId -> {
+ recordDto.setReceiver(userId);
+ recordDto.setCreateUser(userId);
+ Map smsMap = new HashMap<>(2);
+ // 消息开始前提醒
+ recordDto.setResourceCode(taskBeginTemplateCode);
+ smsMap.put("one",taskEntity.getPlanName());
+ smsMap.put("two",df.format(taskEntity.getPlanStartTime()));
+ recordDto.setPlanTime(taskEntity.getPlanStartTime());
+ recordDto.setSmsParam(JSON.toJSONString(smsMap));
+ recordDto.setContent("任务“"+ taskEntity.getPlanName() + "”的计划执行时间是:" + df.format(taskEntity.getPlanStartTime())+ " —— " + df.format(taskEntity.getPlanEndTime()));
+ messageClient.planSendMessage(recordDto);
+ // 消息结束前提醒
+/* smsMap.put("two",df.format(taskEntity.getPlanEndTime()));
+ recordDto.setPlanTime(taskEntity.getPlanEndTime());
+ recordDto.setSmsParam(JSON.toJSONString(smsMap));
+ messageClient.planSendMessage(recordDto);*/
+ });
+ }
+ }
+}
diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/fegin/MessageClient.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/fegin/MessageClient.java
index 5869b26..bf43821 100644
--- a/hzims-service/message/src/main/java/com/hnac/hzims/message/fegin/MessageClient.java
+++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/fegin/MessageClient.java
@@ -101,6 +101,7 @@ public class MessageClient extends BladeController implements IMessageClient{
entity.setPusherName(UserCache.getUser(request.getReceiver()).getName());
entity.setAccount(request.getReceiver().toString());
entity.setContent(request.getContent());
+ entity.setSmsParam(request.getSmsParam());
if(Func.isNotEmpty(request.getTenantId())) {
entity.setTenantId(request.getTenantId());
}
diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/schedule/MessagePushSchedule.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/schedule/MessagePushSchedule.java
index 82fc76d..db349be 100644
--- a/hzims-service/message/src/main/java/com/hnac/hzims/message/schedule/MessagePushSchedule.java
+++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/schedule/MessagePushSchedule.java
@@ -84,6 +84,9 @@ public class MessagePushSchedule {
MessagePushRecordEntity request = records.get(0);
// 完善推送内容
request.setContent(this.getPushContent(type,records));
+ if(MessageConstants.SMS_PUSH.equals(type)) {
+ request.setSmsParam(request.getContent());
+ }
request.setMessageId(IdWorker.getId());
Boolean flag = service.send(request);
if(!flag) {
diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/SmsMessageServiceImpl.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/SmsMessageServiceImpl.java
index 488d385..65ccdf0 100644
--- a/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/SmsMessageServiceImpl.java
+++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/SmsMessageServiceImpl.java
@@ -51,7 +51,7 @@ public class SmsMessageServiceImpl implements IMessageService {
R response = smsClient.sendMessage(
Func.isNotEmpty(AuthUtil.getTenantId()) ? AuthUtil.getTenantId() : request.getTenantId(),
request.getResourceCode(),
- request.getContent(),
+ request.getSmsParam(),
this.getAccountByPusher(Long.parseLong(request.getPusher()),request.getType())
);
Assert.isTrue(response.isSuccess(),() -> {