diff --git a/dk-api/api-business/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java b/dk-api/api-business/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java index 4efeaad..a655190 100644 --- a/dk-api/api-business/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java +++ b/dk-api/api-business/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java @@ -46,4 +46,10 @@ public interface RemoteBusinessAlertService { */ void batchUpdateDept(List> alertList); + /** + * 查询单个预警信息 + * @param businessId + * @return + */ + RemoteBusinessAlertVo getAlertInfo(String businessId); } diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteSubmailConfigService.java b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteSubmailConfigService.java index ee3af3a..9f4677e 100644 --- a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteSubmailConfigService.java +++ b/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> alertList); + + /** + * 根据用户id发送短信 + * @param code + * @param userId + * @param noticeMap + */ + void remoteSendUser(String code,List userId,Map noticeMap); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java index 9a1726d..7894365 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java +++ b/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); + + } } diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteSubmailConfigServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteSubmailConfigServiceImpl.java index f0f6960..f982ce3 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteSubmailConfigServiceImpl.java +++ b/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 userIds, Map noticeMap) { + userIds.forEach(userId -> { + + SysUserVo sysUserVo = userService.selectUserById(userId); + + if (ObjectUtil.isNotEmpty(sysUserVo)) { + Set phones = new HashSet<>(); + phones.add(sysUserVo.getPhonenumber()); + + sysSubmailConfigService.sendPhone(code,phones, JSON.toJSONString(noticeMap)); + } + + }); + + } } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index d8d4e04..e6d7bcc 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/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 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());