Browse Source

# 巡检消息推送

# 消息API修改
zhongwei
haungxing 2 years ago
parent
commit
9d51a3e05e
  1. 6
      hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/plan/entity/PlanEntity.java
  2. 5
      hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/task/entity/TaskEntity.java
  3. 4
      hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/dto/PlanMsgRecordDto.java
  4. 6
      hzims-service/inspect/pom.xml
  5. 131
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/aspect/TaskGenerateAspect.java
  6. 1
      hzims-service/message/src/main/java/com/hnac/hzims/message/fegin/MessageClient.java
  7. 3
      hzims-service/message/src/main/java/com/hnac/hzims/message/schedule/MessagePushSchedule.java
  8. 2
      hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/SmsMessageServiceImpl.java

6
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.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; 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.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import jdk.nashorn.internal.ir.annotations.Ignore; import jdk.nashorn.internal.ir.annotations.Ignore;
@ -195,4 +197,8 @@ public class PlanEntity extends TenantEntity {
@ApiModelProperty(value = "值班id") @ApiModelProperty(value = "值班id")
private Long dutyId; private Long dutyId;
@ApiModelProperty(value = "消息模板ID")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Long messageTemplateId;
} }

5
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.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; 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.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@ -165,5 +167,8 @@ public class TaskEntity extends TenantEntity {
@ApiModelProperty(value = "值班id") @ApiModelProperty(value = "值班id")
private Long dutyId; private Long dutyId;
@ApiModelProperty(value = "消息模板ID")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Long messageTemplateId;
} }

4
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) @JsonSerialize(nullsUsing = NullSerializer.class)
private Long createUser; private Long createUser;
@ApiModelProperty("阿里云短信模板参数")
private String smsParam;
@ApiModelProperty("消息推送耳机") @ApiModelProperty("消息推送耳机")
@NotNull @NotNull
private String content; private String content;
@ApiModelProperty("租户ID") @ApiModelProperty("租户ID")
private String tenantId; private String tenantId;

6
hzims-service/inspect/pom.xml

@ -134,7 +134,11 @@
<artifactId>blade-starter-oss-minio</artifactId> <artifactId>blade-starter-oss-minio</artifactId>
<version>${bladex.project.version}</version> <version>${bladex.project.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.hnac.hzims</groupId>
<artifactId>message-api</artifactId>
<version>${hzims.project.version}</version>
</dependency>
<!--短信发送平台 Start 引用后有druid版本冲突--> <!--短信发送平台 Start 引用后有druid版本冲突-->
<!--<dependency>--> <!--<dependency>-->

131
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<TaskEntity> 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<TaskUserEntity> eq = Wrappers.<TaskUserEntity>lambdaQuery().eq(TaskUserEntity::getTaskId, taskEntity.getId());
List<TaskUserEntity> 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<String,String> 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);*/
});
}
}
}

1
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.setPusherName(UserCache.getUser(request.getReceiver()).getName());
entity.setAccount(request.getReceiver().toString()); entity.setAccount(request.getReceiver().toString());
entity.setContent(request.getContent()); entity.setContent(request.getContent());
entity.setSmsParam(request.getSmsParam());
if(Func.isNotEmpty(request.getTenantId())) { if(Func.isNotEmpty(request.getTenantId())) {
entity.setTenantId(request.getTenantId()); entity.setTenantId(request.getTenantId());
} }

3
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); MessagePushRecordEntity request = records.get(0);
// 完善推送内容 // 完善推送内容
request.setContent(this.getPushContent(type,records)); request.setContent(this.getPushContent(type,records));
if(MessageConstants.SMS_PUSH.equals(type)) {
request.setSmsParam(request.getContent());
}
request.setMessageId(IdWorker.getId()); request.setMessageId(IdWorker.getId());
Boolean flag = service.send(request); Boolean flag = service.send(request);
if(!flag) { if(!flag) {

2
hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/SmsMessageServiceImpl.java

@ -51,7 +51,7 @@ public class SmsMessageServiceImpl implements IMessageService {
R<SmsResponse> response = smsClient.sendMessage( R<SmsResponse> response = smsClient.sendMessage(
Func.isNotEmpty(AuthUtil.getTenantId()) ? AuthUtil.getTenantId() : request.getTenantId(), Func.isNotEmpty(AuthUtil.getTenantId()) ? AuthUtil.getTenantId() : request.getTenantId(),
request.getResourceCode(), request.getResourceCode(),
request.getContent(), request.getSmsParam(),
this.getAccountByPusher(Long.parseLong(request.getPusher()),request.getType()) this.getAccountByPusher(Long.parseLong(request.getPusher()),request.getType())
); );
Assert.isTrue(response.isSuccess(),() -> { Assert.isTrue(response.isSuccess(),() -> {

Loading…
Cancel
Save