diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/thirdparty/YuGaoMsgParamBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/thirdparty/YuGaoMsgParamBo.java new file mode 100644 index 00000000..e48c7aef --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/thirdparty/YuGaoMsgParamBo.java @@ -0,0 +1,36 @@ +package com.zdxt.enforcementcode.domain.bo.thirdparty; + +import lombok.Data; + +import java.util.Map; + +@Data +public class YuGaoMsgParamBo { + + /** + * 创建人 + */ + private String createByName; + + + /** + * 执法部门名称 + */ + private String deptName; + + + /** + * 企业ID + */ + private String enterpriseId; + + /** + * 企业名称 + */ + private String enterpriseName; + + /** + * 执法时间 + */ + private String enforceDate; +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EnterpriseUserRefVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EnterpriseUserRefVo.java index 72a81b48..54a4869a 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EnterpriseUserRefVo.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EnterpriseUserRefVo.java @@ -46,6 +46,8 @@ public class EnterpriseUserRefVo implements Serializable { @ExcelProperty(value = "用户名称:冗余字段") private String userName; + @ExcelProperty(value = "登录用户名") + private String loginName; /** * 企业ID */ diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEnterpriseUserRefService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEnterpriseUserRefService.java index 32ff0781..7fe3c715 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEnterpriseUserRefService.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEnterpriseUserRefService.java @@ -89,4 +89,12 @@ public interface IEnterpriseUserRefService { * @return 企业用户关联信息列表 */ List queryListByEnterpriseNumber(String enterpriseNumber); + + /** + * 根据企业ID查询关联的用户信息 + * + * @param enterpriseId 企业ID + * @return 企业用户关联信息列表 + */ + List queryListByEnterpriseId(String enterpriseId); } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnterpriseUserRefServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnterpriseUserRefServiceImpl.java index 91de9a13..20b69269 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnterpriseUserRefServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnterpriseUserRefServiceImpl.java @@ -166,4 +166,14 @@ public class EnterpriseUserRefServiceImpl implements IEnterpriseUserRefService { lqw.eq(EnterpriseUserRef::getEnterpriseNumber, enterpriseNumber); return baseMapper.selectVoList(lqw); } + + @Override + public List queryListByEnterpriseId(String enterpriseId) { + if (StringUtils.isBlank(enterpriseId)) { + return java.util.Collections.emptyList(); + } + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(EnterpriseUserRef::getEnterpriseId, enterpriseId); + return baseMapper.selectVoList(lqw); + } } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/ISIQService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/ISIQService.java index 5ba7bbde..d4a5c582 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/ISIQService.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/ISIQService.java @@ -1,6 +1,7 @@ package com.zdxt.enforcementcode.service.thirdparty; import com.zdxt.enforcementcode.domain.bo.thirdparty.SIQMsgParamBo; +import com.zdxt.enforcementcode.domain.bo.thirdparty.YuGaoMsgParamBo; import com.zdxt.enforcementcode.domain.vo.siq.SIQTaskQueryBo; import com.zdxt.enforcementcode.domain.vo.siq.SIQTemplateVo; import com.zdxt.enforcementcode.domain.vo.siq.TaskQueryResultVo; @@ -22,6 +23,7 @@ public interface ISIQService { SIQTemplateVo getTemplateById(String templateId); + void sendYuGaoMsg(YuGaoMsgParamBo paramBo); /** * 发送消息 * @param paramBo diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/impl/SIQServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/impl/SIQServiceImpl.java index ef7d32f1..096eba96 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/impl/SIQServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/impl/SIQServiceImpl.java @@ -8,15 +8,23 @@ import com.esotericsoftware.minlog.Log; import com.zdxt.enforcementcode.common.config.SiqConfig; import com.zdxt.enforcementcode.common.util.StringUtils; import com.zdxt.enforcementcode.common.util.siq.SIQHttpUtil; +import com.zdxt.enforcementcode.domain.EnterpriseInformation; +import com.zdxt.enforcementcode.domain.EnterpriseUser; import com.zdxt.enforcementcode.domain.bo.thirdparty.SIQMsgParamBo; import com.zdxt.enforcementcode.domain.bo.thirdparty.SIQSendMsgBo; import com.zdxt.enforcementcode.domain.bo.thirdparty.ToUserMetaBo; +import com.zdxt.enforcementcode.domain.bo.thirdparty.YuGaoMsgParamBo; +import com.zdxt.enforcementcode.domain.vo.EnterpriseUserRefVo; import com.zdxt.enforcementcode.domain.vo.siq.*; +import com.zdxt.enforcementcode.mapper.EnterpriseInformationMapper; +import com.zdxt.enforcementcode.mapper.EnterpriseUserMapper; +import com.zdxt.enforcementcode.service.IEnterpriseUserRefService; import com.zdxt.enforcementcode.service.thirdparty.ISIQService; import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.exception.base.BaseException; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.util.*; @@ -34,6 +42,22 @@ public class SIQServiceImpl implements ISIQService { @Resource private SiqConfig siqConfig; + + /** + * 企业信息Mapper + */ + private EnterpriseInformationMapper enterpriseInformationMapper; + + /** + * 企业用户Mapper + */ + private EnterpriseUserMapper enterpriseUserMapper; + + /** + * 企业用户关联Service + */ + private IEnterpriseUserRefService enterpriseUserRefService; + @Override public SIQTemplateVo getTemplateById(String templateId) { try{ @@ -49,6 +73,36 @@ public class SIQServiceImpl implements ISIQService { throw new BaseException("获取模板详情失败"); } } + + /** + * 发送预告消息 + * @param paramBo + */ + @Override + @Async + public void sendYuGaoMsg(YuGaoMsgParamBo paramBo) { + String enterpriseId = paramBo.getEnterpriseId(); + + List userRefList = enterpriseUserRefService.queryListByEnterpriseId(enterpriseId); + if (CollectionUtil.isEmpty(userRefList)) { + log.warn("企业[{}]下未找到关联用户,无法发送预告消息", enterpriseId); + return; + } + + for (EnterpriseUserRefVo userRef : userRefList) { + SIQMsgParamBo siqMsgParamBo = new SIQMsgParamBo(); + siqMsgParamBo.setCreateBy(paramBo.getCreateByName()); + siqMsgParamBo.setReceiveAccount(String.valueOf(userRef.getLoginName())); + Map variables = new HashMap<>(); + variables.put("enterName", paramBo.getEnterpriseName()); + variables.put("dept", paramBo.getDeptName()); + variables.put("time", paramBo.getEnforceDate()); + siqMsgParamBo.setAdditionalData(variables); + sendMsg(siqMsgParamBo); + } + log.info("企业[{}]预告消息发送完成,共发送{}条", enterpriseId, userRefList.size()); + } + @Override public void sendMsg(SIQMsgParamBo paramBo) { try { diff --git a/zdxt-web-server/zdxt-admin-web-server/src/test/java/com/zdxt/rest/test/siq/SiqControllerTest.java b/zdxt-web-server/zdxt-admin-web-server/src/test/java/com/zdxt/rest/test/siq/SiqControllerTest.java index bc08bd87..afc3b930 100644 --- a/zdxt-web-server/zdxt-admin-web-server/src/test/java/com/zdxt/rest/test/siq/SiqControllerTest.java +++ b/zdxt-web-server/zdxt-admin-web-server/src/test/java/com/zdxt/rest/test/siq/SiqControllerTest.java @@ -7,6 +7,7 @@ import com.zdxt.enforcementcode.common.util.siq.SIQHttpUtil; import com.zdxt.enforcementcode.domain.bo.thirdparty.SIQMsgParamBo; import com.zdxt.enforcementcode.domain.bo.thirdparty.SIQSendMsgBo; import com.zdxt.enforcementcode.domain.bo.thirdparty.ToUserMetaBo; +import com.zdxt.enforcementcode.domain.bo.thirdparty.YuGaoMsgParamBo; import com.zdxt.enforcementcode.domain.vo.siq.SIQTaskQueryBo; import com.zdxt.enforcementcode.domain.vo.siq.SIQTemplateVo; import com.zdxt.enforcementcode.domain.vo.siq.TaskQueryResultVo; @@ -115,4 +116,19 @@ public class SiqControllerTest { // System.out.println("失败数: " + result.getSendFailedCount()); // } + @DisplayName("发送预告消息 - 根据企业ID查询关联用户并逐条发送") + @Test + @Order(9) + public void testSendYuGaoMsg() { + YuGaoMsgParamBo paramBo = new YuGaoMsgParamBo(); + paramBo.setCreateByName("测试管理员"); + paramBo.setDeptName("深圳市司法局"); + paramBo.setEnterpriseId("1"); + paramBo.setEnterpriseName("深圳市腾讯计算机系统有限公司"); + paramBo.setEnforceDate("2026-07-30"); + + assertDoesNotThrow(() -> siqService.sendYuGaoMsg(paramBo), + "发送预告消息不应抛出异常"); + } + }