Browse Source

[feat]增加预警指派推送短信

dev
杨威 2 weeks ago
parent
commit
3901c2c5e0
  1. 6
      dk-api/api-business/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java
  2. 9
      dk-api/api-system/src/main/java/org/dromara/system/api/RemoteSubmailConfigService.java
  3. 10
      dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java
  4. 30
      dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteSubmailConfigServiceImpl.java
  5. 30
      dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java

6
dk-api/api-business/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java

@ -46,4 +46,10 @@ public interface RemoteBusinessAlertService {
*/
void batchUpdateDept(List<Map<String, Object>> alertList);
/**
* 查询单个预警信息
* @param businessId
* @return
*/
RemoteBusinessAlertVo getAlertInfo(String businessId);
}

9
dk-api/api-system/src/main/java/org/dromara/system/api/RemoteSubmailConfigService.java

@ -28,4 +28,13 @@ public interface RemoteSubmailConfigService {
*/
void remoteSend(String code,List<Map<String, Object>> alertList);
/**
* 根据用户id发送短信
* @param code
* @param userId
* @param noticeMap
*/
void remoteSendUser(String code,List<Long> userId,Map<String, Object> noticeMap);
}

10
dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java

@ -6,10 +6,12 @@ import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.business.api.RemoteBusinessAlertService;
import org.dromara.business.api.domain.bo.RemoteBusinessAlertBo;
import org.dromara.business.api.domain.vo.RemoteBusinessAlertVo;
import org.dromara.business.domain.BusinessAlert;
import org.dromara.business.domain.vo.BusinessAlertVo;
import org.dromara.business.service.IBusinessAlertService;
import org.dromara.business.utils.MinioUntil;
import org.dromara.business.utils.constants.MinIOConstants;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.system.api.RemoteSubmailConfigService;
import org.dromara.system.api.RemoteUserService;
import org.springframework.beans.BeanUtils;
@ -91,4 +93,12 @@ public class RemoteBusinessAlertServiceImpl implements RemoteBusinessAlertServic
//短信推送
remoteSubmailConfigService.remoteSend("smsMultixsend", alertList);
}
@Override
public RemoteBusinessAlertVo getAlertInfo(String businessId) {
BusinessAlert businessAlert = businessAlertService.getBusinessAlert(Long.valueOf(businessId));
return MapstructUtils.convert(businessAlert,RemoteBusinessAlertVo.class);
}
}

30
dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteSubmailConfigServiceImpl.java

@ -2,6 +2,7 @@ package org.dromara.system.dubbo;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import lombok.RequiredArgsConstructor;
@ -9,6 +10,7 @@ import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.system.api.RemoteSubmailConfigService;
import org.dromara.system.domain.vo.SysUserVo;
@ -17,10 +19,7 @@ import org.dromara.system.service.ISysUserService;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -67,4 +66,27 @@ public class RemoteSubmailConfigServiceImpl implements RemoteSubmailConfigServic
}
/**
* 根据用户发送短信
* @param code
* @param userIds
* @param noticeMap
*/
@Override
public void remoteSendUser(String code, List<Long> userIds, Map<String, Object> noticeMap) {
userIds.forEach(userId -> {
SysUserVo sysUserVo = userService.selectUserById(userId);
if (ObjectUtil.isNotEmpty(sysUserVo)) {
Set<String> phones = new HashSet<>();
phones.add(sysUserVo.getPhonenumber());
sysSubmailConfigService.sendPhone(code,phones, JSON.toJSONString(noticeMap));
}
});
}
}

30
dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java

@ -14,6 +14,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.business.api.RemoteBusinessAlertService;
import org.dromara.business.api.domain.vo.RemoteBusinessAlertVo;
import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.SpringUtils;
@ -25,6 +27,7 @@ import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.api.RemoteSubmailConfigService;
import org.dromara.system.api.RemoteUserService;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import org.dromara.warm.flow.core.dto.FlowParams;
@ -98,6 +101,12 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
@Autowired
private ApplicationContext applicationContext;
@DubboReference(timeout = 30000)
private RemoteSubmailConfigService remoteSubmailConfigService;
@DubboReference
private RemoteBusinessAlertService remoteBusinessAlertService;
/**
* 启动任务
*
@ -213,10 +222,29 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
this.setHandler(instance, flowTask, flowCopyList);
// 消息通知
try {
flwCommonService.sendMessage(definition.getFlowName(), ins.getId(), messageType, notice);
//根据业务id查找他是属于哪一个部门的
RemoteBusinessAlertVo remoteBusinessAlertVo = remoteBusinessAlertService.getAlertInfo(ins.getBusinessId());
//构建推送信息
Map<String,Object> noticeMap = new HashMap<>();
noticeMap.put("deptId",remoteBusinessAlertVo.getDeptId());
noticeMap.put("deptName",remoteBusinessAlertVo.getDeptName());
noticeMap.put("labelCn",remoteBusinessAlertVo.getLabelCn());
noticeMap.put("labelEn",remoteBusinessAlertVo.getLabelEn());
noticeMap.put("jobName",remoteBusinessAlertVo.getJobName());
//发送短信是否属于指派
if(completeTaskBo.getAssign()){
remoteSubmailConfigService.remoteSendUser("smsMultixsend",List.of(Long.valueOf(completeTaskBo.getHandler())),noticeMap);
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
//设置下一环节处理人
setNextHandler(ins.getId());
return String.valueOf(ins.getId());

Loading…
Cancel
Save