diff --git a/web-adapter/pom.xml b/web-adapter/pom.xml
index b4b3795..bca7653 100644
--- a/web-adapter/pom.xml
+++ b/web-adapter/pom.xml
@@ -26,5 +26,9 @@
com.zcloud.certificate
web-client
+
+ com.jjb.saas
+ jjb-saas-framework-job
+
diff --git a/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireFifteenDayCopyJob.java b/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireFifteenDayCopyJob.java
new file mode 100644
index 0000000..296f350
--- /dev/null
+++ b/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireFifteenDayCopyJob.java
@@ -0,0 +1,31 @@
+package com.zcloud.certificate.plan;
+
+import com.jjb.saas.framework.job.Job;
+import com.jjb.saas.framework.job.annotation.JobRegister;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.zcloud.certificate.api.UserCertificateServiceI;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@RequiredArgsConstructor
+@Component
+@Slf4j
+public class ExpireFifteenDayCopyJob implements Job {
+
+ @Autowired
+ private UserCertificateServiceI userCertificateService;
+
+ @Override
+ @JobRegister(cron = "0 30 8 * * ?", jobDesc = "持证人员证件到期提醒-提前15天-抄送上级",triggerStatus = 1)
+ @XxlJob("com.zcloud.certificate.plan.ExpireFifteenDayCopyJob")
+ public ReturnT execute(String param) {
+ System.out.println("开始执行计划任务");
+ XxlJobHelper.log( "============持证人员证件到期提醒-提前15天-抄送上级==========");
+ userCertificateService.listExpireCertCopy("15");
+ return ReturnT.SUCCESS;
+ }
+}
diff --git a/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireFifteenDayJob.java b/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireFifteenDayJob.java
new file mode 100644
index 0000000..50c25b6
--- /dev/null
+++ b/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireFifteenDayJob.java
@@ -0,0 +1,31 @@
+package com.zcloud.certificate.plan;
+
+import com.jjb.saas.framework.job.Job;
+import com.jjb.saas.framework.job.annotation.JobRegister;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.zcloud.certificate.api.UserCertificateServiceI;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@RequiredArgsConstructor
+@Component
+@Slf4j
+public class ExpireFifteenDayJob implements Job {
+
+ @Autowired
+ private UserCertificateServiceI userCertificateService;
+
+ @Override
+ @JobRegister(cron = "0 30 8 * * ?", jobDesc = "持证人员证件到期提醒-提前15天",triggerStatus = 1)
+ @XxlJob("com.zcloud.certificate.plan.ExpireFifteenDayJob")
+ public ReturnT execute(String param) {
+ System.out.println("开始执行计划任务");
+ XxlJobHelper.log( "============持证人员证件到期提醒-提前15天==========");
+ userCertificateService.listExpireCert("15");
+ return ReturnT.SUCCESS;
+ }
+}
diff --git a/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireNinetyDayJob.java b/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireNinetyDayJob.java
new file mode 100644
index 0000000..58bc8e1
--- /dev/null
+++ b/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireNinetyDayJob.java
@@ -0,0 +1,31 @@
+package com.zcloud.certificate.plan;
+
+import com.jjb.saas.framework.job.Job;
+import com.jjb.saas.framework.job.annotation.JobRegister;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.zcloud.certificate.api.UserCertificateServiceI;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@RequiredArgsConstructor
+@Component
+@Slf4j
+public class ExpireNinetyDayJob implements Job {
+
+ @Autowired
+ private UserCertificateServiceI userCertificateService;
+
+ @Override
+ @JobRegister(cron = "0 30 8 * * ?", jobDesc = "持证人员证件到期提醒-提前90天",triggerStatus = 1)
+ @XxlJob("com.zcloud.certificate.plan.ExpireNinetyDayJob")
+ public ReturnT execute(String param) {
+ System.out.println("开始执行计划任务");
+ XxlJobHelper.log( "============持证人员证件到期提醒-提前90天==========");
+ userCertificateService.listExpireCert("90");
+ return ReturnT.SUCCESS;
+ }
+}
diff --git a/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireOneDayJob.java b/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireOneDayJob.java
new file mode 100644
index 0000000..febf7b6
--- /dev/null
+++ b/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireOneDayJob.java
@@ -0,0 +1,34 @@
+package com.zcloud.certificate.plan;
+
+import com.jjb.saas.framework.job.Job;
+import com.jjb.saas.framework.job.annotation.JobRegister;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.zcloud.certificate.api.UserCertificateServiceI;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@RequiredArgsConstructor
+@Component
+@Slf4j
+public class ExpireOneDayJob implements Job {
+
+ @Autowired
+ private UserCertificateServiceI userCertificateService;
+
+ @Override
+ @JobRegister(cron = "0 30 8 * * ?", jobDesc = "持证人员证件到期提醒-提前1天",triggerStatus = 1)
+ @XxlJob("com.zcloud.certificate.plan.ExpireOneDayJob")
+ public ReturnT execute(String param) {
+ System.out.println("开始执行计划任务");
+ XxlJobHelper.log( "============持证人员证件到期提醒-提前1天==========");
+ userCertificateService.listExpireCert("1");
+ return ReturnT.SUCCESS;
+ }
+}
diff --git a/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireSevenDayCopyJob.java b/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireSevenDayCopyJob.java
new file mode 100644
index 0000000..2d91d35
--- /dev/null
+++ b/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireSevenDayCopyJob.java
@@ -0,0 +1,31 @@
+package com.zcloud.certificate.plan;
+
+import com.jjb.saas.framework.job.Job;
+import com.jjb.saas.framework.job.annotation.JobRegister;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.zcloud.certificate.api.UserCertificateServiceI;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@RequiredArgsConstructor
+@Component
+@Slf4j
+public class ExpireSevenDayCopyJob implements Job {
+
+ @Autowired
+ private UserCertificateServiceI userCertificateService;
+
+ @Override
+ @JobRegister(cron = "0 30 8 * * ?", jobDesc = "持证人员证件到期提醒-提前7天-抄送上级",triggerStatus = 1)
+ @XxlJob("com.zcloud.certificate.plan.ExpireSevenDayCopyJob")
+ public ReturnT execute(String param) {
+ System.out.println("开始执行计划任务");
+ XxlJobHelper.log( "============持证人员证件到期提醒-提前7天-抄送上级==========");
+ userCertificateService.listExpireCertCopy("7");
+ return ReturnT.SUCCESS;
+ }
+}
diff --git a/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireSevenDayJob.java b/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireSevenDayJob.java
new file mode 100644
index 0000000..acdecb6
--- /dev/null
+++ b/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireSevenDayJob.java
@@ -0,0 +1,31 @@
+package com.zcloud.certificate.plan;
+
+import com.jjb.saas.framework.job.Job;
+import com.jjb.saas.framework.job.annotation.JobRegister;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.zcloud.certificate.api.UserCertificateServiceI;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@RequiredArgsConstructor
+@Component
+@Slf4j
+public class ExpireSevenDayJob implements Job {
+
+ @Autowired
+ private UserCertificateServiceI userCertificateService;
+
+ @Override
+ @JobRegister(cron = "0 30 8 * * ?", jobDesc = "持证人员证件到期提醒-提前7天",triggerStatus = 1)
+ @XxlJob("com.zcloud.certificate.plan.ExpireSevenDayJob")
+ public ReturnT execute(String param) {
+ System.out.println("开始执行计划任务");
+ XxlJobHelper.log( "============持证人员证件到期提醒-提前7天==========");
+ userCertificateService.listExpireCert("7");
+ return ReturnT.SUCCESS;
+ }
+}
diff --git a/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireThirtyDayJob.java b/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireThirtyDayJob.java
new file mode 100644
index 0000000..41a7ae5
--- /dev/null
+++ b/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireThirtyDayJob.java
@@ -0,0 +1,31 @@
+package com.zcloud.certificate.plan;
+
+import com.jjb.saas.framework.job.Job;
+import com.jjb.saas.framework.job.annotation.JobRegister;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.zcloud.certificate.api.UserCertificateServiceI;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@RequiredArgsConstructor
+@Component
+@Slf4j
+public class ExpireThirtyDayJob implements Job {
+
+ @Autowired
+ private UserCertificateServiceI userCertificateService;
+
+ @Override
+ @JobRegister(cron = "0 30 8 * * ?", jobDesc = "持证人员证件到期提醒-提前30天",triggerStatus = 1)
+ @XxlJob("com.zcloud.certificate.plan.ExpireThirtyDayJob")
+ public ReturnT execute(String param) {
+ System.out.println("开始执行计划任务");
+ XxlJobHelper.log( "============持证人员证件到期提醒-提前30天==========");
+ userCertificateService.listExpireCert("30");
+ return ReturnT.SUCCESS;
+ }
+}
diff --git a/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireThreeDayJob.java b/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireThreeDayJob.java
new file mode 100644
index 0000000..8af32e7
--- /dev/null
+++ b/web-adapter/src/main/java/com/zcloud/certificate/plan/ExpireThreeDayJob.java
@@ -0,0 +1,31 @@
+package com.zcloud.certificate.plan;
+
+import com.jjb.saas.framework.job.Job;
+import com.jjb.saas.framework.job.annotation.JobRegister;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.zcloud.certificate.api.UserCertificateServiceI;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@RequiredArgsConstructor
+@Component
+@Slf4j
+public class ExpireThreeDayJob implements Job {
+
+ @Autowired
+ private UserCertificateServiceI userCertificateService;
+
+ @Override
+ @JobRegister(cron = "0 30 8 * * ?", jobDesc = "持证人员证件到期提醒-提前3天",triggerStatus = 1)
+ @XxlJob("com.zcloud.certificate.plan.ExpireThreeDayJob")
+ public ReturnT execute(String param) {
+ System.out.println("开始执行计划任务");
+ XxlJobHelper.log( "============持证人员证件到期提醒-提前3天==========");
+ userCertificateService.listExpireCert("3");
+ return ReturnT.SUCCESS;
+ }
+}
diff --git a/web-adapter/src/main/java/com/zcloud/certificate/web/CorpCertificateController.java b/web-adapter/src/main/java/com/zcloud/certificate/web/CorpCertificateController.java
index ebd982d..1c063aa 100644
--- a/web-adapter/src/main/java/com/zcloud/certificate/web/CorpCertificateController.java
+++ b/web-adapter/src/main/java/com/zcloud/certificate/web/CorpCertificateController.java
@@ -56,6 +56,13 @@ public class CorpCertificateController {
return corpCertificateService.list(qry);
}
+
+ @ApiOperation("所有数据")
+ @GetMapping("/sendMessage")
+ public void sendMessage() {
+ corpCertificateService.sendMessage();
+ }
+
@ApiOperation("详情")
@GetMapping("/getInfoById")
public SingleResponse getInfoById(@RequestParam(value = "id") Long id) {
diff --git a/web-app/src/main/java/com/zcloud/certificate/command/CorpCertificateAddExe.java b/web-app/src/main/java/com/zcloud/certificate/command/CorpCertificateAddExe.java
index 6bf14e3..978e1a5 100644
--- a/web-app/src/main/java/com/zcloud/certificate/command/CorpCertificateAddExe.java
+++ b/web-app/src/main/java/com/zcloud/certificate/command/CorpCertificateAddExe.java
@@ -2,18 +2,27 @@ package com.zcloud.certificate.command;
import cn.hutool.core.lang.UUID;
import cn.hutool.core.util.IdUtil;
+import com.alibaba.cola.dto.SingleResponse;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
+import com.jjb.saas.message.client.message.facede.MessageFacade;
+import com.jjb.saas.message.client.message.request.MessageSendCmd;
+import com.jjb.saas.message.client.message.request.MessageTargetCmd;
import com.zcloud.certificate.domain.gateway.CorpCertificateGateway;
import com.zcloud.certificate.domain.model.CorpCertificateE;
import com.zcloud.certificate.dto.CorpCertificateAddCmd;
import com.alibaba.cola.exception.BizException;
import com.zcloud.certificate.persistence.dataobject.CorpCertificateDO;
+import com.zcloud.gbscommon.utils.UuidUtil;
import lombok.AllArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* web-app
@@ -51,5 +60,24 @@ public class CorpCertificateAddExe {
}
return true;
}
+ @DubboReference
+ private final MessageFacade messageFacade;
+ @Transactional(rollbackFor = Exception.class)
+ public void sendMessage() {
+ MessageSendCmd messageSendCmd = new MessageSendCmd();
+ messageSendCmd.setBusinessId(UuidUtil.get32UUID());
+ MessageTargetCmd messageTargetCmd = new MessageTargetCmd();
+ messageTargetCmd.setUserId(2029741219479408640L);
+ messageSendCmd.setTargetCmd(messageTargetCmd);
+ messageSendCmd.setSourceCode("MS000093");
+ messageSendCmd.setNeedTokenEnum(false);
+ Map sendParams = new HashMap();
+ sendParams.put("Name", "1");
+ sendParams.put("DocumentName", "2");
+ sendParams.put("IdentificationNumber", "3");
+ sendParams.put("MaturityDate", "5");
+ messageSendCmd.setParams(sendParams);
+ SingleResponse d = messageFacade.send(messageSendCmd);
+ }
}
diff --git a/web-app/src/main/java/com/zcloud/certificate/command/query/UserCertificateQueryExe.java b/web-app/src/main/java/com/zcloud/certificate/command/query/UserCertificateQueryExe.java
index 3626c64..66f1293 100644
--- a/web-app/src/main/java/com/zcloud/certificate/command/query/UserCertificateQueryExe.java
+++ b/web-app/src/main/java/com/zcloud/certificate/command/query/UserCertificateQueryExe.java
@@ -1,10 +1,16 @@
package com.zcloud.certificate.command.query;
+import cn.hutool.log.Log;
+import com.alibaba.cola.dto.SingleResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
+import com.jjb.saas.message.client.message.facede.MessageFacade;
+import com.jjb.saas.message.client.message.request.MessageSendCmd;
+import com.jjb.saas.message.client.message.request.MessageTargetCmd;
import com.zcloud.certificate.command.convertor.UserCertificateCoConvertor;
+import com.zcloud.certificate.domain.config.MessageTemplateConfig;
import com.zcloud.certificate.domain.model.UserBasicInfo;
import com.zcloud.certificate.domain.model.UserCertificateE;
import com.zcloud.certificate.dto.CorpCertificateStatPageQry;
@@ -21,7 +27,10 @@ import com.zcloud.certificate.persistence.dataobject.UserDO;
import com.zcloud.certificate.persistence.repository.UserCertificateRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.alibaba.cola.dto.PageResponse;
+import com.zcloud.gbscommon.utils.UuidUtil;
import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
import org.ehcache.core.util.CollectionUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
@@ -38,10 +47,11 @@ import java.util.stream.Collectors;
*/
@Component
@AllArgsConstructor
+@Slf4j
public class UserCertificateQueryExe {
private final UserCertificateRepository userCertificateRepository;
private final UserCertificateCoConvertor userCertificateCoConvertor;
-
+ private final MessageTemplateConfig messageTemplateConfig;
/**
* 根据id查询
* @param id
@@ -133,6 +143,98 @@ public class UserCertificateQueryExe {
return userCertificateCoConvertor.converEsToCOs(userCertificateES);
}
+
+ /**
+ * 临期证照
+ */
+ public void listExpireCert(String days) {
+ Map params = new HashMap();
+ params.put("days", Integer.valueOf(days)-1);
+ // 查询临期证照
+ List expirelist = userCertificateRepository.listExpireCert(params);
+ if(expirelist != null && expirelist.size() > 0){
+ //15天的提醒特殊,需要单独查部门负责人
+ Map deptMap = new HashMap();
+ if (days.equals("15") || days.equals("3")){
+ // 查询对应部门负责人
+ List deptIds = expirelist.stream().map(UserCertificateDO::getDepartmentId).distinct().collect(Collectors.toList());
+ if(deptIds != null && deptIds.size() > 0){
+ List leaders = userCertificateRepository.listDeptLeader(deptIds);
+ // leaders 根据 departmentId 分组 将 name 按逗号拼接
+ deptMap = leaders.stream().collect(Collectors.groupingBy(UserDO::getDepartmentId, Collectors.mapping(UserDO::getName, Collectors.joining(","))));
+ }
+ }
+ String template = messageTemplateConfig.getTemplate(days);
+ for (UserCertificateDO userCertificateDO : expirelist){
+
+ // 给持证人员发站内信
+ sendMessage(userCertificateDO, template, userCertificateDO.getUserId(), deptMap.get(userCertificateDO.getDepartmentId()));
+ }
+ }
+ }
+
+
+
+
+ /**
+ * 临期证照
+ */
+ public void listExpireCertCopy(String days) {
+ Map params = new HashMap();
+ params.put("days", Integer.valueOf(days)-1);
+ // 查询临期证照
+ List expirelist = userCertificateRepository.listExpireCert(params);
+ // 查询对应部门负责人
+ List deptIds = expirelist.stream().map(UserCertificateDO::getDepartmentId).distinct().collect(Collectors.toList());
+ Map> deptMap = new HashMap>();
+ if(deptIds != null && deptIds.size() > 0){
+ List leaders = userCertificateRepository.listDeptLeader(deptIds);
+ deptMap = leaders.stream().collect(Collectors.groupingBy(UserDO::getDepartmentId));
+ }
+ if(expirelist != null && expirelist.size() > 0){
+ for (UserCertificateDO userCertificateDO : expirelist){
+ // 给部门负责人发站内信
+ if(deptMap != null && deptMap.size() > 0){
+ String leaderTemplate = messageTemplateConfig.getTemplate(days + "_copy_leader");
+ List leaderList = deptMap.get(userCertificateDO.getDepartmentId());
+ for (UserDO leader : leaderList){
+ sendMessage(userCertificateDO, leaderTemplate, leader.getId(), leader.getName());
+ }
+ }
+ }
+ }
+ }
+
+ @DubboReference
+ private MessageFacade messageFacade;
+ private void sendMessage(UserCertificateDO userCertificateDO, String template, Long userId, String LeaderName) {
+ try {
+ MessageSendCmd messageSendCmd = new MessageSendCmd();
+ messageSendCmd.setBusinessId(UuidUtil.get32UUID());
+ MessageTargetCmd messageTargetCmd = new MessageTargetCmd();
+ messageTargetCmd.setUserId(userId);
+ messageSendCmd.setTargetCmd(messageTargetCmd);
+ messageSendCmd.setSourceCode(template);
+ messageSendCmd.setNeedTokenEnum(false);
+ Map sendParams = new HashMap();
+ sendParams.put("Name", userCertificateDO.getUserName());
+ sendParams.put("DocumentName", userCertificateDO.getCertificateName());
+ sendParams.put("IdentificationNumber", userCertificateDO.getCertificateCode());
+ sendParams.put("MaturityDate", userCertificateDO.getCertificateDateEnd());
+ if(LeaderName != null){
+ sendParams.put("SuperiorName", LeaderName);
+ }
+ messageSendCmd.setParams(sendParams);
+
+ log.info("发送站内信人员:{}", userCertificateDO.getUserName());
+ SingleResponse result = messageFacade.send(messageSendCmd);
+ log.info("发送站内信结果:{}", result.toString());
+ } catch (Exception e){
+ e.printStackTrace();
+ }
+
+ }
+
private void getUserInfo(List userCertificateES, List userIds) {
List userBasicInfos = userCertificateRepository.getUserNamesByUserIds(userIds);
diff --git a/web-app/src/main/java/com/zcloud/certificate/service/CorpCertificateServiceImpl.java b/web-app/src/main/java/com/zcloud/certificate/service/CorpCertificateServiceImpl.java
index c778f73..f51be0c 100644
--- a/web-app/src/main/java/com/zcloud/certificate/service/CorpCertificateServiceImpl.java
+++ b/web-app/src/main/java/com/zcloud/certificate/service/CorpCertificateServiceImpl.java
@@ -74,5 +74,10 @@ public class CorpCertificateServiceImpl implements CorpCertificateServiceI {
public boolean isExistCertNo(String certNo, Long id) {
return corpCertificateQueryExe.checkCertNoExist(certNo, id);
}
+
+ @Override
+ public void sendMessage() {
+ corpCertificateAddExe.sendMessage();
+ }
}
diff --git a/web-app/src/main/java/com/zcloud/certificate/service/UserCertificateServiceImpl.java b/web-app/src/main/java/com/zcloud/certificate/service/UserCertificateServiceImpl.java
index c1cd0ea..db577f1 100644
--- a/web-app/src/main/java/com/zcloud/certificate/service/UserCertificateServiceImpl.java
+++ b/web-app/src/main/java/com/zcloud/certificate/service/UserCertificateServiceImpl.java
@@ -80,9 +80,20 @@ public class UserCertificateServiceImpl implements UserCertificateServiceI {
return userCertificateQueryExe.listAll(qry);
}
+ @Override
+ public void listExpireCert(String days) {
+ userCertificateQueryExe.listExpireCert(days);
+ }
+
+ @Override
+ public void listExpireCertCopy(String days) {
+ userCertificateQueryExe.listExpireCertCopy(days);
+ }
+
@Override
public boolean isExistCertNo(String certNo, Long id) {
return userCertificateQueryExe.checkCertNoExist(certNo, id);
}
+
}
diff --git a/web-client/src/main/java/com/zcloud/certificate/api/CorpCertificateServiceI.java b/web-client/src/main/java/com/zcloud/certificate/api/CorpCertificateServiceI.java
index b56bfbd..9a1e98d 100644
--- a/web-client/src/main/java/com/zcloud/certificate/api/CorpCertificateServiceI.java
+++ b/web-client/src/main/java/com/zcloud/certificate/api/CorpCertificateServiceI.java
@@ -38,5 +38,7 @@ public interface CorpCertificateServiceI {
* 判断证书编号是否存在
*/
boolean isExistCertNo(String certNo, Long id);
+
+ void sendMessage();
}
diff --git a/web-client/src/main/java/com/zcloud/certificate/api/UserCertificateServiceI.java b/web-client/src/main/java/com/zcloud/certificate/api/UserCertificateServiceI.java
index ae37257..bda01de 100644
--- a/web-client/src/main/java/com/zcloud/certificate/api/UserCertificateServiceI.java
+++ b/web-client/src/main/java/com/zcloud/certificate/api/UserCertificateServiceI.java
@@ -40,9 +40,17 @@ public interface UserCertificateServiceI {
*/
List listAll(UserCertificatePageQry qry);
+
/**
* 查询证书编号是否存在
*/
boolean isExistCertNo(String certNo, Long id);
+
+ void listExpireCert(String days);
+
+ /**
+ * 持证人员证件到期提醒-抄送上级
+ */
+ void listExpireCertCopy(String days);
}
diff --git a/web-domain/src/main/java/com/zcloud/certificate/domain/config/MessageTemplateConfig.java b/web-domain/src/main/java/com/zcloud/certificate/domain/config/MessageTemplateConfig.java
new file mode 100644
index 0000000..d0b43dc
--- /dev/null
+++ b/web-domain/src/main/java/com/zcloud/certificate/domain/config/MessageTemplateConfig.java
@@ -0,0 +1,69 @@
+package com.zcloud.certificate.domain.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author zhangyue
+ * @date 2026/2/11 10:05
+ */
+@Component
+@ConfigurationProperties(prefix = "certificate.message.template")
+@Data
+public class MessageTemplateConfig {
+
+ //持证人员证件到期提醒-提前1天
+ private String oneDayBeforeExpire;
+
+ // 持证人员证件到期提醒-提前3天
+ private String threeDayBeforeExpire;
+
+ // 持证人员证件到期提醒-提前7天
+ private String sevenDayBeforeExpire;
+ // 持证人员证件到期提醒-提前15天
+ private String fifteenDayBeforeExpire;
+ // 持证人员证件到期提醒-提前30天
+ private String thirtyDayBeforeExpire;
+ // 持证人员证件到期提醒-提前90天
+ private String ninetyDayBeforeExpire;
+ // 持证人员证件到期提醒-提前7天-抄送上级
+ private String sevenDayBeforeExpireCopyLeader;
+ // 持证人员证件到期提醒-提前15天-抄送上级
+ private String fifteenDayBeforeExpireCopyLeader;
+
+ // 存储所有模板的 Map
+ private Map templateMap;
+
+ @PostConstruct
+ public void init() {
+ templateMap = new HashMap<>();
+ templateMap.put("1", oneDayBeforeExpire);
+ templateMap.put("3", threeDayBeforeExpire);
+ templateMap.put("7", sevenDayBeforeExpire);
+ templateMap.put("15", fifteenDayBeforeExpire);
+ templateMap.put("30", thirtyDayBeforeExpire);
+ templateMap.put("90", ninetyDayBeforeExpire);
+ templateMap.put("7_copy_leader", sevenDayBeforeExpireCopyLeader);
+ templateMap.put("15_copy_leader", fifteenDayBeforeExpireCopyLeader);
+ }
+
+ /**
+ * 通过 key 获取模板
+ */
+ public String getTemplate(String key) {
+ return templateMap.get(key);
+ }
+
+ /**
+ * 通过天数获取模板(不抄送上级)
+ */
+ public String getByDays(Integer days) {
+ return templateMap.get(String.valueOf(days));
+ }
+}
diff --git a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/UserCertificateDO.java b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/UserCertificateDO.java
index cc5f13e..b8ce3c8 100644
--- a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/UserCertificateDO.java
+++ b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/UserCertificateDO.java
@@ -1,6 +1,7 @@
package com.zcloud.certificate.persistence.dataobject;
import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jjb.saas.framework.repository.basedo.BaseDO;
import com.zcloud.gbscommon.utils.Tools;
@@ -87,6 +88,15 @@ public class UserCertificateDO extends BaseDO {
//复审日期
@ApiModelProperty(value = "复审日期")
private LocalDate reviewDate;
+ //用户名称
+ @ApiModelProperty(value = "用户名称")
+ @TableField(exist = false)
+ private String userName;
+ //班级id
+ @ApiModelProperty(value = "班级id")
+ @TableField(exist = false)
+ private Long departmentId;
+
public UserCertificateDO(String userCertificateId) {
if (StrUtil.isNotBlank(userCertificateId)) this.userCertificateId = userCertificateId;
diff --git a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/mapper/UserCertificateMapper.java b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/mapper/UserCertificateMapper.java
index db59d71..67cd1d0 100644
--- a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/mapper/UserCertificateMapper.java
+++ b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/mapper/UserCertificateMapper.java
@@ -48,7 +48,8 @@ public interface UserCertificateMapper extends BaseMapper {
IPage certifiedPersonnelListPage(IPage page, @Param("params") Map params);
-
+ List listExpireCert(@Param("params") Map params);
+ List listDeptLeader(@Param("deptIds") List deptIds);
}
diff --git a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/UserCertificateRepository.java b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/UserCertificateRepository.java
index 866d1c0..dcde015 100644
--- a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/UserCertificateRepository.java
+++ b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/UserCertificateRepository.java
@@ -46,5 +46,13 @@ public interface UserCertificateRepository extends BaseRepository listAll(Map params);
+
+
+ List listExpireCert(Map params);
+
+
+ List listDeptLeader(List deptIds);
+
+
}
diff --git a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/impl/UserCertificateRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/impl/UserCertificateRepositoryImpl.java
index 7d89ea1..72b5000 100644
--- a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/impl/UserCertificateRepositoryImpl.java
+++ b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/impl/UserCertificateRepositoryImpl.java
@@ -89,5 +89,15 @@ public class UserCertificateRepositoryImpl extends BaseRepositoryImpl listExpireCert(Map params) {
+ return userCertificateMapper.listExpireCert(params);
+ }
+
+ @Override
+ public List listDeptLeader(List deptIds) {
+ return userCertificateMapper.listDeptLeader(deptIds);
+ }
+
}
diff --git a/web-infrastructure/src/main/resources/mapper/UserCertificateMapper.xml b/web-infrastructure/src/main/resources/mapper/UserCertificateMapper.xml
index d0bbd28..a080d6b 100644
--- a/web-infrastructure/src/main/resources/mapper/UserCertificateMapper.xml
+++ b/web-infrastructure/src/main/resources/mapper/UserCertificateMapper.xml
@@ -316,5 +316,21 @@
group by u.id
order by u.sort asc,u.create_time desc
+
+
+
+