Browse Source

feature 资质证照复审定时提醒

xiahan 9 months ago
parent
commit
125e02ae23

+ 15 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspCompanyCertificationsDao.java

@@ -0,0 +1,15 @@
+package com.rongwei.sfcommon.sys.dao;
+
+import com.rongwe.scentity.domian.AspCompanyCertificationsDo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Entity generator.domain.AspCompanyCertifications
+ */
+public interface AspCompanyCertificationsDao extends BaseMapper<AspCompanyCertificationsDo> {
+
+}
+
+
+
+

+ 13 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/AspCompanyCertificationsService.java

@@ -0,0 +1,13 @@
+package com.rongwei.sfcommon.sys.service;
+
+import com.rongwe.scentity.domian.AspCompanyCertificationsDo;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.rwcommon.base.R;
+
+/**
+ *
+ */
+public interface AspCompanyCertificationsService extends IService<AspCompanyCertificationsDo> {
+    R createRemind(String id);
+
+}

+ 81 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspCompanyCertificationsServiceImpl.java

@@ -0,0 +1,81 @@
+package com.rongwei.sfcommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwe.scentity.domian.AspCompanyCertificationsDo;
+import com.rongwe.scentity.vo.UserMailOrgVo;
+import com.rongwei.rwadmincommon.system.domain.SysDictDo;
+import com.rongwei.rwadmincommon.system.service.SysDictService;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.utils.StringUtils;
+import com.rongwei.safecommon.utils.JSCommonUtils;
+import com.rongwei.sfcommon.sys.dao.AspCompanyCertificationsDao;
+import com.rongwei.sfcommon.sys.dao.SaveCheckCommonDao;
+import com.rongwei.sfcommon.sys.service.AspCompanyCertificationsService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import static com.rongwei.sfcommon.utils.MlConstants.SAFETY_MANAGER_CODE;
+
+/**
+ *
+ */
+@Service
+public class AspCompanyCertificationsServiceImpl extends ServiceImpl<AspCompanyCertificationsDao, AspCompanyCertificationsDo>
+        implements AspCompanyCertificationsService {
+
+    public static final String QUALIFICATION_CERTIFICATE_NOTIFY_STATUS = "qualificationCertificate";
+    public static final String QUALIFICATION_CERTIFICATE_REMIND_TEMP = "如下资质证照即将过期:【%s】 \n";
+    public static final String QUALIFICATION_CERTIFICATE_REMIND_ITEM = "证书编号:【%s】拥有者:【%s】证书类别:【%s】下次复审日期:【%tF】\n";
+    private final Logger log = LoggerFactory.getLogger(this.getClass().getName());
+    @Autowired
+    private SaveCheckCommonDao saveCheckCommonDao;
+    @Autowired
+    private SysDictService dictService;
+
+    @Override
+    public R createRemind(String id) {
+
+        JSCommonUtils.parameterCheck(() -> StringUtils.isBlank(id), "参数异常", "参数异常");
+        List<AspCompanyCertificationsDo> aspCompanyCertificationsDos = this.baseMapper.selectBatchIds(Collections.singleton(id));
+        this.sendRemind(aspCompanyCertificationsDos);
+        return R.ok();
+    }
+
+    public void sendRemind(List<AspCompanyCertificationsDo> aspCompanyCertificationsDos) {
+        if (aspCompanyCertificationsDos == null || aspCompanyCertificationsDos.isEmpty()) {
+            log.debug("暂无需要发送通知的资质证照信息");
+            return;
+        }
+        log.debug("需要发送通知提醒的资质证照信息为:{}", aspCompanyCertificationsDos);
+        // 对数据按照tenantId 进行分组
+        Map<String, List<AspCompanyCertificationsDo>> collect = aspCompanyCertificationsDos.stream().collect(Collectors.groupingBy(AspCompanyCertificationsDo::getTenantid));
+        // 获取对应的提醒人信息
+        List<String> roleCodes = Collections.singletonList(SAFETY_MANAGER_CODE);
+        List<SysDictDo> dictsByType = dictService.getDictsByType("zslb");
+        collect.forEach((k, v) -> {
+            List<UserMailOrgVo> userInfoByTenantIdAndRoleCode = saveCheckCommonDao.getUserInfoByTenantIdAndRoleCode(k, roleCodes);
+            String str = v.stream()
+                    .map(data -> {
+                        SysDictDo sysDictDo = dictsByType.stream().filter(dict -> dict.getValue().equals(data.getCertificatecategory())).findFirst().orElse(null);
+                        return String.format(QUALIFICATION_CERTIFICATE_REMIND_ITEM, data.getCertificatenumber(),
+                                data.getCertificateowner(), sysDictDo == null ? data.getCertificatecategory() : sysDictDo.getName(), data.getNextreviewdate());
+                    })
+                    .collect(Collectors.joining(""));
+            JSCommonUtils.sendNotify("资质证照复审提醒", String.format(QUALIFICATION_CERTIFICATE_REMIND_TEMP, str), null,
+                    userInfoByTenantIdAndRoleCode.stream().map(UserMailOrgVo::getId).collect(Collectors.toList()),
+                    v.stream().map(AspCompanyCertificationsDo::getId).collect(Collectors.joining(",")),
+                    QUALIFICATION_CERTIFICATE_NOTIFY_STATUS);
+        });
+    }
+}
+
+
+
+

+ 2 - 0
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/ScheduledTasksService.java

@@ -24,4 +24,6 @@ public interface ScheduledTasksService {
     R createCheckPlanByTemp();
 
     R creatHazardInvestigationTask();
+
+    R qualificationCertificateRemind();
 }

+ 12 - 5
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/ScheduledTasksServiceImpl.java

@@ -2,10 +2,7 @@ package com.rongwei.sfcommon.sys.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.rongwe.scentity.domian.ApsHazardInvestigationTemplateDo;
-import com.rongwe.scentity.domian.ApsHazardInvestigationTemplateZibiaoDo;
-import com.rongwe.scentity.domian.CheckTemplateDo;
-import com.rongwe.scentity.domian.HiddenDangerTrackDo;
+import com.rongwe.scentity.domian.*;
 import com.rongwe.scentity.vo.ExportHiddenDangerVo;
 import com.rongwei.rwadmincommon.system.domain.SysDictDo;
 import com.rongwei.rwadmincommon.system.service.SysDictService;
@@ -76,7 +73,8 @@ public class ScheduledTasksServiceImpl implements ScheduledTasksService {
     private ApsHazardInvestigationTemplateZibiaoServiceImpl apsHazardInvestigationTemplateZibiaoService;
     @Autowired
     private HazardInvestigationServiceImpl hazardInvestigationService;
-
+    @Autowired
+    private AspCompanyCertificationsServiceImpl aspCompanyCertificationsService;
 
     public static void main(String[] args) {
         Calendar calendar = Calendar.getInstance();
@@ -247,6 +245,15 @@ public class ScheduledTasksServiceImpl implements ScheduledTasksService {
         return R.ok();
     }
 
+    @Override
+    public R qualificationCertificateRemind() {
+        List<AspCompanyCertificationsDo> list = aspCompanyCertificationsService.list(new LambdaQueryWrapper<AspCompanyCertificationsDo>()
+                .eq(AspCompanyCertificationsDo::getDeleted,"0")
+                .apply(" (DATEDIFF(NEXTREVIEWDATE,NOW()) <0  or DATEDIFF(NEXTREVIEWDATE,NOW()) in (30,15,7))"));
+        aspCompanyCertificationsService.sendRemind(list);
+        return R.ok();
+    }
+
     public Date preGenerationCheck(ApsHazardInvestigationTemplateDo hazardInvestigationTemplateDo,
                                    Calendar calendar) {
         int currentMonth = calendar.get(Calendar.MONTH) + 1; // 月份是从0开始的,所以加1

+ 120 - 0
js-security/security-entity/src/main/java/com/rongwe/scentity/domian/AspCompanyCertificationsDo.java

@@ -0,0 +1,120 @@
+package com.rongwe.scentity.domian;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 资质证照
+ * @TableName asp_company_certifications
+ */
+@TableName(value ="asp_company_certifications")
+@Data
+public class AspCompanyCertificationsDo implements Serializable {
+    /**
+     * 主键ID
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 是否删除Y/N
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    private Date createdate;
+
+    /**
+     * 创建用户ID
+     */
+    private String createuserid;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 修改用户ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 创建人
+     */
+    private String createusername;
+
+    /**
+     * 修改人
+     */
+    private String modifyusername;
+
+    /**
+     * 拥有者
+     */
+    private String certificateowner;
+
+    /**
+     * 证书编号
+     */
+    private String certificatenumber;
+
+    /**
+     * 发证机关
+     */
+    private String issuingauthority;
+
+    /**
+     * 作业项
+     */
+    private String workitem;
+
+    /**
+     * 证书类别
+     */
+    private String certificatecategory;
+
+    /**
+     * 领证日期
+     */
+    private Date certificatedate;
+
+    /**
+     * 有效期
+     */
+    private Date validityperiod;
+
+    /**
+     * 复审日期
+     */
+    private Date reviewdate;
+
+    /**
+     * 下次复审日期
+     */
+    private Date nextreviewdate;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 6 - 1
js-security/security-server/src/main/java/com/rongwei/savecheck/controller/ScheduledTasksController.java

@@ -103,5 +103,10 @@ public class ScheduledTasksController {
     }
 
 
-
+    @Scheduled(cron = "0 0 1 ? * *")
+    @PostMapping("/qualification-certificate")
+    public R qualificationCertificateRemind(){
+        log.info("资质证照复审定时提醒");
+        return scheduledTasksService.qualificationCertificateRemind();
+    }
 }