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 + + + +