package com.iailab.module.bpm.service.message;
|
|
import com.iailab.framework.web.config.WebProperties;
|
import com.iailab.module.bpm.convert.message.BpmMessageConvert;
|
import com.iailab.module.bpm.enums.message.BpmMessageEnum;
|
import com.iailab.module.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceApproveReqDTO;
|
import com.iailab.module.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceRejectReqDTO;
|
import com.iailab.module.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO;
|
import com.iailab.module.bpm.service.message.dto.BpmMessageSendWhenTaskTimeoutReqDTO;
|
import com.iailab.module.system.api.sms.SmsSendApi;
|
import lombok.extern.slf4j.Slf4j;
|
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 iailab
|
*/
|
@Service
|
@Validated
|
@Slf4j
|
public class BpmMessageServiceImpl implements BpmMessageService {
|
|
@Resource
|
private SmsSendApi smsSendApi;
|
|
@Resource
|
private WebProperties webProperties;
|
|
@Override
|
public void sendMessageWhenProcessInstanceApprove(BpmMessageSendWhenProcessInstanceApproveReqDTO reqDTO) {
|
Map<String, Object> templateParams = new HashMap<>();
|
templateParams.put("processInstanceName", reqDTO.getProcessInstanceName());
|
templateParams.put("detailUrl", getProcessInstanceDetailUrl(reqDTO.getProcessInstanceId()));
|
smsSendApi.sendSingleSmsToAdmin(BpmMessageConvert.INSTANCE.convert(reqDTO.getStartUserId(),
|
BpmMessageEnum.PROCESS_INSTANCE_APPROVE.getSmsTemplateCode(), templateParams));
|
}
|
|
@Override
|
public void sendMessageWhenProcessInstanceReject(BpmMessageSendWhenProcessInstanceRejectReqDTO reqDTO) {
|
Map<String, Object> templateParams = new HashMap<>();
|
templateParams.put("processInstanceName", reqDTO.getProcessInstanceName());
|
templateParams.put("reason", reqDTO.getReason());
|
templateParams.put("detailUrl", getProcessInstanceDetailUrl(reqDTO.getProcessInstanceId()));
|
smsSendApi.sendSingleSmsToAdmin(BpmMessageConvert.INSTANCE.convert(reqDTO.getStartUserId(),
|
BpmMessageEnum.PROCESS_INSTANCE_REJECT.getSmsTemplateCode(), templateParams));
|
}
|
|
@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("detailUrl", getProcessInstanceDetailUrl(reqDTO.getProcessInstanceId()));
|
smsSendApi.sendSingleSmsToAdmin(BpmMessageConvert.INSTANCE.convert(reqDTO.getAssigneeUserId(),
|
BpmMessageEnum.TASK_ASSIGNED.getSmsTemplateCode(), templateParams));
|
}
|
|
@Override
|
public void sendMessageWhenTaskTimeout(BpmMessageSendWhenTaskTimeoutReqDTO reqDTO) {
|
Map<String, Object> templateParams = new HashMap<>();
|
templateParams.put("processInstanceName", reqDTO.getProcessInstanceName());
|
templateParams.put("taskName", reqDTO.getTaskName());
|
templateParams.put("detailUrl", getProcessInstanceDetailUrl(reqDTO.getProcessInstanceId()));
|
smsSendApi.sendSingleSmsToAdmin(BpmMessageConvert.INSTANCE.convert(reqDTO.getAssigneeUserId(),
|
BpmMessageEnum.TASK_TIMEOUT.getSmsTemplateCode(), templateParams)).checkError();
|
}
|
|
private String getProcessInstanceDetailUrl(String taskId) {
|
return webProperties.getAdminUi().getUrl() + "/bpm/process-instance/detail?id=" + taskId;
|
}
|
|
}
|