bpm 增加任务分配到指定人时,发送短信通知
parent
d839adedff
commit
e3b86b3d7a
@ -0,0 +1,39 @@
|
|||||||
|
package cn.iocoder.yudao.adminserver.modules.bpm.convert.message;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO;
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
|
||||||
|
import org.activiti.api.task.model.Task;
|
||||||
|
import org.activiti.engine.runtime.ProcessInstance;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.Mapping;
|
||||||
|
import org.mapstruct.MappingTarget;
|
||||||
|
import org.mapstruct.Mappings;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface BpmMessageConvert {
|
||||||
|
|
||||||
|
BpmMessageConvert INSTANCE = Mappers.getMapper(BpmMessageConvert.class);
|
||||||
|
|
||||||
|
default BpmMessageSendWhenTaskCreatedReqDTO convert(ProcessInstance processInstance, SysUserDO startUser, Task task) {
|
||||||
|
BpmMessageSendWhenTaskCreatedReqDTO reqDTO = new BpmMessageSendWhenTaskCreatedReqDTO();
|
||||||
|
copyTo(processInstance, reqDTO);
|
||||||
|
copyTo(startUser, reqDTO);
|
||||||
|
copyTo(task, reqDTO);
|
||||||
|
return reqDTO;
|
||||||
|
}
|
||||||
|
@Mapping(source = "name", target = "processInstanceName")
|
||||||
|
void copyTo(ProcessInstance from, @MappingTarget BpmMessageSendWhenTaskCreatedReqDTO to);
|
||||||
|
@Mappings({
|
||||||
|
@Mapping(source = "id", target = "startUserId"),
|
||||||
|
@Mapping(source = "nickname", target = "startUserNickname")
|
||||||
|
})
|
||||||
|
void copyTo(SysUserDO from, @MappingTarget BpmMessageSendWhenTaskCreatedReqDTO to);
|
||||||
|
@Mappings({
|
||||||
|
@Mapping(source = "id", target = "taskId"),
|
||||||
|
@Mapping(source = "name", target = "taskName"),
|
||||||
|
@Mapping(source = "assignee", target = "assigneeUserId")
|
||||||
|
})
|
||||||
|
void copyTo(Task task, @MappingTarget BpmMessageSendWhenTaskCreatedReqDTO to);
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
package cn.iocoder.yudao.adminserver.modules.bpm.enums.message;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bpm 消息的枚举
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public enum BpmMessageEnum {
|
||||||
|
|
||||||
|
TASK_ASSIGNED("bpm_task_assigned"); // 任务被分配时,发送给审批人
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 短信模板的标识
|
||||||
|
*
|
||||||
|
* 关联 {@link SysSmsTemplateDO#getCode()}
|
||||||
|
*/
|
||||||
|
private final String smsCode;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,46 @@
|
|||||||
|
package cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotEmpty;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BPM 发送任务创建的 Request DTO
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BpmMessageSendWhenTaskCreatedReqDTO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流程实例的编号
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "流程实例的编号不能为空")
|
||||||
|
private String processInstanceId;
|
||||||
|
/**
|
||||||
|
* 流程实例的名字
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "流程实例的名字不能为空")
|
||||||
|
private String processInstanceName;
|
||||||
|
@NotEmpty(message = "发起人的用户编号")
|
||||||
|
private String startUserId;
|
||||||
|
@NotEmpty(message = "发起人的昵称")
|
||||||
|
private String startUserNickname;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流程任务的编号
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "流程任务的编号不能为空")
|
||||||
|
private String taskId;
|
||||||
|
/**
|
||||||
|
* 流程任务的名字
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "流程任务的名字不能为空")
|
||||||
|
private String taskName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审批人的用户编号
|
||||||
|
*/
|
||||||
|
@NotNull(message = "审批人的用户编号不能为空")
|
||||||
|
private Long assigneeUserId;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
package cn.iocoder.yudao.adminserver.modules.bpm.service.message.impl;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.adminserver.modules.bpm.enums.message.BpmMessageEnum;
|
||||||
|
import cn.iocoder.yudao.adminserver.modules.bpm.service.message.BpmMessageService;
|
||||||
|
import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO;
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsCoreService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BPM 消息 Service 实现类
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Validated
|
||||||
|
@Slf4j
|
||||||
|
public class BpmMessageServiceImpl implements BpmMessageService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysSmsCoreService smsCoreService;
|
||||||
|
|
||||||
|
@Value("${yudao.url.admin-ui}")
|
||||||
|
private String adminUiUrl;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sendMessageWhenTaskAssigned(BpmMessageSendWhenTaskCreatedReqDTO reqDTO) {
|
||||||
|
Map<String, Object> templateParams = new HashMap<>();
|
||||||
|
templateParams.put("processInstanceName", reqDTO.getProcessInstanceName());
|
||||||
|
templateParams.put("taskName", reqDTO.getTaskName());
|
||||||
|
templateParams.put("startUserNickname", reqDTO.getStartUserNickname());
|
||||||
|
templateParams.put("taskDetailUrl", getTaskDetailUrl(reqDTO.getTaskId()));
|
||||||
|
smsCoreService.sendSingleSmsToAdmin(null, reqDTO.getAssigneeUserId(),
|
||||||
|
BpmMessageEnum.TASK_ASSIGNED.getSmsCode(), templateParams);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getTaskDetailUrl(String taskId) {
|
||||||
|
return adminUiUrl + "bpm/process-instance/detail?id=" + taskId;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue