消息通知发起人

This commit is contained in:
wangliwen 2022-05-30 14:05:07 +08:00
parent d714038dfb
commit b5498b1a80
1 changed files with 40 additions and 4 deletions

View File

@ -2,10 +2,12 @@ package io.renren.common.aspect;
import io.renren.common.annotation.ActivitiNoticeOperation;
import io.renren.modules.notice.dto.SysNoticeDTO;
import io.renren.modules.notice.service.SysNoticeService;
import io.renren.modules.sys.service.SysUserService;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
@ -18,6 +20,8 @@ import org.springframework.stereotype.Component;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Date;
import java.util.Map;
/**
* 流程流转消息通知切面
@ -45,15 +49,47 @@ public class ActivitiNoticeAspect {
final ActivitiNoticeOperation activitiNoticeOperation = method.getAnnotation(ActivitiNoticeOperation.class);
Arrays.asList(joinPoint.getArgs()).stream().findFirst().ifPresent(arg -> {
final DelegateTask delegateTask = (DelegateTask) arg;
final Map<String, Object> kv = delegateTask.getVariables();
final String eventName = delegateTask.getEventName();
switch (eventName) {
case TaskListener.EVENTNAME_ASSIGNMENT: // 节点被委派给某人
{
logger.error(delegateTask.getOwner() == null ? "" : delegateTask.getOwner() + "的节点被委派给某人-->" + delegateTask.getAssignee());
}
break;
notice(delegateTask, activitiNoticeOperation);
break;
default:
}
});
//执行时长(毫秒)
long time = System.currentTimeMillis() - beginTime;
logger.error("执行时长{} ms", time);
}
private void notice(DelegateTask delegateTask, final ActivitiNoticeOperation activitiNoticeOperation) {
Map<String, Object> kv = delegateTask.getVariables();
logger.error("录入表单:" + kv.toString());
String creator = null;
if (kv.containsKey("creator")) { // 表单存在创建者
creator = kv.get("creator").toString();
} else if (kv.containsKey("userId")) {
creator = kv.get("userId").toString();
}
if (StringUtils.isEmpty(creator)) {
return;
}
try {
SysNoticeDTO dto = new SysNoticeDTO();
dto.setType(2);
dto.setTitle("流程流转系统通知");
dto.setContent("您发起的流程当前审核节点为:" + activitiNoticeOperation.value() + "<br>当前审核人为" + sysUserService.get(Long.valueOf(delegateTask.getAssignee())).getRealName()); // 通知内容
dto.setReceiverType(1);
dto.setReceiverTypeIds(creator);
dto.setStatus(1);
dto.setSenderName("流程系统");
dto.setSenderDate(new Date());
dto.setCreator(null);
dto.setCreateDate(new Date());
sysNoticeService.save(dto);
} catch (Exception e) {
logger.error("发送通知消息异常", e);
}
}
}