车车 пре 7 месеци
родитељ
комит
5551af0246

+ 6 - 6
ktg-admin/src/main/resources/application.yml

@@ -152,17 +152,17 @@ minio:
 #邮件配置
 mail:
   # 邮箱服务地址
-  hostIp: 192.168.28.97
+  #hostIp: 192.168.28.97
   # 系统发件人邮箱地址
-  fromMail: cgj@192.168.28.97
+  #fromMail: cgj@192.168.28.97
   # HMailServer默认使用端口25
-  port: 25
+  #port: 25
   # 如果需要身份验证,设置为true
-  auth: false
+  #auth: false
   # 设置邮件发送人名称
-  name: 系统管理员
+  #name: 系统管理员
   # 设置公司名称
-  company: 玛氏
+  #company: 玛氏
   # 检查计划邮件模板设定
   checkPlan: CHECK_PLAN
   # 物资到期提醒模板

+ 8 - 5
ktg-iscs/src/main/java/com/ktg/iscs/config/EmailSender.java

@@ -1,6 +1,7 @@
 package com.ktg.iscs.config;
 
 import com.ktg.common.utils.DateUtils;
+import com.ktg.iscs.domain.vo.mail.MailVO;
 
 import javax.mail.Message;
 import javax.mail.MessagingException;
@@ -12,7 +13,9 @@ import java.util.Date;
 import java.util.Properties;
 
 public class EmailSender {
-    public static Boolean sendLocalMail(String toMail, String hostIp, String fromMail, String subject, String text) {
+
+
+    public static Boolean sendLocalMail(String toMail, MailVO vo, String subject, String text) {
         // subject = "今天的主题";
         // text = "今天的天气真不错";
 
@@ -20,18 +23,18 @@ public class EmailSender {
         String to = toMail;
 
         // 发件人邮箱地址
-        String from = "cgj@192.168.28.97";
+        String from = vo.getFromMail();
 
         // SMTP服务器地址(HMailServer的地址)
-        String host = "192.168.28.97"; // 或者你的HMailServer的IP地址或域名
+        String host = vo.getHostIp(); // 或者你的HMailServer的IP地址或域名
 
         // 获取系统属性
         Properties properties = System.getProperties();
 
         // 设置邮件服务器
         properties.setProperty("mail.smtp.host", host);
-        properties.setProperty("mail.smtp.port", "25"); // HMailServer默认使用端口25
-        properties.setProperty("mail.smtp.auth", "false"); // 如果需要身份验证,设置为true
+        properties.setProperty("mail.smtp.port", vo.getPort()); // HMailServer默认使用端口25
+        properties.setProperty("mail.smtp.auth", vo.getAuth()); // 如果需要身份验证,设置为true
 
         // 获取默认的Session对象
         Session session = Session.getDefaultInstance(properties);

+ 1 - 0
ktg-iscs/src/main/java/com/ktg/iscs/controller/IsSystemAttributeController.java

@@ -104,4 +104,5 @@ public class IsSystemAttributeController extends BaseController {
         IsSystemAttribute result = isSystemAttributeService.getIsSystemAttributeByKey(sysAttrKey);
         return CommonResult.success(result);
     }
+
 }

+ 40 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/vo/mail/MailVO.java

@@ -0,0 +1,40 @@
+package com.ktg.iscs.domain.vo.mail;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class MailVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty(value = "邮箱服务地址")
+    private String hostIp;
+
+    @ApiModelProperty(value = "系统发件人邮箱地址")
+    private String fromMail;
+
+    @ApiModelProperty(value = "HMailServer默认使用端口25")
+    private String port;
+
+    @ApiModelProperty(value = "如果需要身份验证,设置为true")
+    private String auth;
+
+    @ApiModelProperty(value = "设置邮件发送人名称")
+    private String name;
+
+    @ApiModelProperty(value = "设置公司名称")
+    private String company;
+
+    @ApiModelProperty(value = "检查计划邮件模板设定")
+    private String checkPlan;
+
+    @ApiModelProperty(value = "物资到期提醒模板")
+    private String reminder;
+
+    @ApiModelProperty(value = "物资逾期告警模板")
+    private String alarm;
+
+}

+ 3 - 0
ktg-iscs/src/main/java/com/ktg/iscs/service/IIsSystemAttributeService.java

@@ -3,6 +3,7 @@ package com.ktg.iscs.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ktg.iscs.domain.IsSystemAttribute;
+import com.ktg.iscs.domain.vo.mail.MailVO;
 
 /**
  * 基础数据Service接口
@@ -16,4 +17,6 @@ public interface IIsSystemAttributeService extends IService<IsSystemAttribute> {
 
     IsSystemAttribute getIsSystemAttributeByKey(String sysAttrKey);
 
+    MailVO getMailVo();
+
 }

+ 4 - 6
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsMaterialsCheckPlanServiceImpl.java

@@ -45,12 +45,10 @@ public class IsMaterialsCheckPlanServiceImpl extends ServiceImpl<IsMaterialsChec
     private IIsMaterialsCabinetService iIsMaterialsCabinetService;
     @Autowired
     private ISysUserService iSysUserService;
-    @Value("${mail.name}")
-    private String sendName;
-    @Value("${mail.company}")
-    private String company;
     @Autowired
     private IIsMailSendTaskItemService iIsMailSendTaskItemService;
+    @Autowired
+    private IIsSystemAttributeService isSystemAttributeService;
 
     @Override
     public Page<IsMaterialsCheckPlan> getIsMaterialsCheckPlanPage(Page<IsMaterialsCheckPlan> page, PlanDTO dto) {
@@ -149,8 +147,8 @@ public class IsMaterialsCheckPlanServiceImpl extends ServiceImpl<IsMaterialsChec
             map.put("[计划日期]", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, dto.getPlanDate()));
             map.put("[物资柜]", cabinetNameStr);
             map.put("[检察员]", user.getNickName());
-            map.put("[发件人]", sendName);
-            map.put("[公司名称]", company);
+            map.put("[发件人]", isSystemAttributeService.getIsSystemAttributeByKey("info.mail.name").getSysAttrValue());
+            map.put("[公司名称]", isSystemAttributeService.getIsSystemAttributeByKey("info.mail.company").getSysAttrValue());
             map.put("[邮件发送时间]", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, newDateTime));
             // 邮件实体
             IsMailSendTaskItem taskItem = new IsMailSendTaskItem();

+ 4 - 6
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsMaterialsLoanServiceImpl.java

@@ -69,16 +69,14 @@ public class IsMaterialsLoanServiceImpl extends ServiceImpl<IsMaterialsLoanMappe
     private IIsMaterialsLoanExceptionService isMaterialsLoanExceptionService;
     @Resource
     private ISysUserService iSysUserService;
+    @Resource
+    private IIsSystemAttributeService isSystemAttributeService;
     @Autowired
     private RedisCache redisCache;
     @Value("${mail.reminder}")
     private String reminder;
     @Value("${mail.alarm}")
     private String alarm;
-    @Value("${mail.name}")
-    private String sendName;
-    @Value("${mail.company}")
-    private String company;
     private final ConcurrentHashMap<String, Long> messages = new ConcurrentHashMap<>();
     private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
 
@@ -400,8 +398,8 @@ public class IsMaterialsLoanServiceImpl extends ServiceImpl<IsMaterialsLoanMappe
                 map.put("[到期时间]", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, re));
                 map.put("[告警时间]", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, al));
                 map.put("[归还地址]", cabinet.getCabinetName());
-                map.put("[发件人]", sendName);
-                map.put("[公司名称]", company);
+                map.put("[发件人]", isSystemAttributeService.getIsSystemAttributeByKey("info.mail.name").getSysAttrValue());
+                map.put("[公司名称]", isSystemAttributeService.getIsSystemAttributeByKey("info.mail.company").getSysAttrValue());
                 // 2.3处理归还提醒
                 if (isMaterialsLoan.getReminderTime() != null && reminderConf != null && "1".equals(reminderConf.getStatus())) {
                     System.out.println("设置借用提醒邮件");

+ 4 - 3
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsMaterialsServiceImpl.java

@@ -204,6 +204,7 @@ public class IsMaterialsServiceImpl extends ServiceImpl<IsMaterialsMapper, IsMat
                 // 1.断言判断
                 Assert.isFalse(dto.getMaterialsId() == null && StringUtils.isBlank(dto.getMaterialsRfid()), "请告诉我物资的rfid!");
                 Assert.isFalse(StringUtils.isBlank(dto.getLoanState()), "请告诉我是借出还是归还!");
+
                 try {
                     // 1.1 开始查询物资,模拟传的id,物资柜传的rfid
                     if (dto.getMaterialsId() != null) {
@@ -213,9 +214,7 @@ public class IsMaterialsServiceImpl extends ServiceImpl<IsMaterialsMapper, IsMat
                         Assert.isFalse(materials == null, "通过RFID:" + dto.getMaterialsRfid() + "未查询到物资!");
                         dto.setMaterialsId(materials.getMaterialsId());
                     }
-                    // 2.开始更新物资状态
-                    update(Wrappers.<IsMaterials>lambdaUpdate().eq(IsMaterials::getMaterialsId, dto.getMaterialsId()).set(IsMaterials::getLoanState, dto.getLoanState()).set(IsMaterials::getUpdateTime, new Date()));
-                    // 3.物资信息
+                    // 2.物资信息
                     IsMaterials materials = getById(dto.getMaterialsId());
                     Assert.notNull(materials, "该物资不存在!");
                     // 如果物资是借出状态,又来借出就报错
@@ -228,6 +227,8 @@ public class IsMaterialsServiceImpl extends ServiceImpl<IsMaterialsMapper, IsMat
                         failRfidList.add(dto.getMaterialsRfid() + "物资已经是柜中状态,无法再放入!");
                         Assert.isFalse(true, dto.getMaterialsRfid() + "物资已经是柜中状态,无法再放入!");
                     }
+                    // 3.开始更新物资状态
+                    update(Wrappers.<IsMaterials>lambdaUpdate().eq(IsMaterials::getMaterialsId, dto.getMaterialsId()).set(IsMaterials::getLoanState, dto.getLoanState()).set(IsMaterials::getUpdateTime, new Date()));
                     // 4.开始更新借出表信息
                     if ("0".equals(dto.getLoanState())) {
                         // Assert.notNull(dto.getLoanUserId(), "请告诉我借取人员信息!");

+ 33 - 1
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsSystemAttributeServiceImpl.java

@@ -6,11 +6,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ktg.common.utils.StringUtils;
 import com.ktg.iscs.domain.IsSystemAttribute;
+import com.ktg.iscs.domain.vo.mail.MailVO;
 import com.ktg.iscs.mapper.IsSystemAttributeMapper;
 import com.ktg.iscs.service.IIsSystemAttributeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * 基础数据Service业务层处理
  *
@@ -38,7 +43,34 @@ public class IsSystemAttributeServiceImpl extends ServiceImpl<IsSystemAttributeM
         Assert.notBlank(sysAttrKey, "请传入key");
         IsSystemAttribute one = getOne(Wrappers.<IsSystemAttribute>lambdaQuery()
                 .eq(IsSystemAttribute::getSysAttrKey, sysAttrKey));
-        return one;
+        return one != null ? one : new IsSystemAttribute();
+    }
+
+    @Override
+    public MailVO getMailVo() {
+        ArrayList<String> strings = new ArrayList<>();
+        strings.add("info.mail.hostip");
+        strings.add("info.mail.from");
+        strings.add("info.mail.port");
+        strings.add("info.mail.auth");
+        strings.add("info.mail.name");
+        strings.add("info.mail.company");
+        List<IsSystemAttribute> list = list(Wrappers.<IsSystemAttribute>lambdaQuery()
+                .in(IsSystemAttribute::getSysAttrKey, strings));
+        // 邮箱服务地址
+        MailVO mailVO = new MailVO();
+        try {
+            mailVO.setHostIp(list.stream().filter(o -> "info.mail.hostip".equals(o.getSysAttrKey())).limit(1).collect(Collectors.toList()).get(0).getSysAttrValue());
+            mailVO.setFromMail(list.stream().filter(o -> "info.mail.from".equals(o.getSysAttrKey())).limit(1).collect(Collectors.toList()).get(0).getSysAttrValue());
+            mailVO.setPort(list.stream().filter(o -> "info.mail.port".equals(o.getSysAttrKey())).limit(1).collect(Collectors.toList()).get(0).getSysAttrValue());
+            mailVO.setAuth(list.stream().filter(o -> "info.mail.auth".equals(o.getSysAttrKey())).limit(1).collect(Collectors.toList()).get(0).getSysAttrValue());
+            mailVO.setName(list.stream().filter(o -> "info.mail.name".equals(o.getSysAttrKey())).limit(1).collect(Collectors.toList()).get(0).getSysAttrValue());
+            mailVO.setCompany(list.stream().filter(o -> "info.mail.company".equals(o.getSysAttrKey())).limit(1).collect(Collectors.toList()).get(0).getSysAttrValue());
+
+        } catch (Exception e) {
+            Assert.isTrue(false, "邮箱参数缺失,请检查!");
+        }
+        return mailVO;
     }
 
 }

+ 8 - 6
ktg-quartz/src/main/java/com/ktg/quartz/task/SendEmailsTask.java

@@ -9,10 +9,8 @@ import com.ktg.iscs.domain.IsCheckTask;
 import com.ktg.iscs.domain.IsCheckTaskMail;
 import com.ktg.iscs.domain.IsMailSendTaskItem;
 import com.ktg.iscs.domain.IsMaterialsCabinet;
-import com.ktg.iscs.service.IIsCheckTaskMailService;
-import com.ktg.iscs.service.IIsCheckTaskService;
-import com.ktg.iscs.service.IIsMailSendTaskItemService;
-import com.ktg.iscs.service.IIsMaterialsCabinetService;
+import com.ktg.iscs.domain.vo.mail.MailVO;
+import com.ktg.iscs.service.*;
 import com.ktg.system.service.ISysUserService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -42,6 +40,8 @@ public class SendEmailsTask {
     private IIsCheckTaskMailService isCheckTaskMailService;
     @Autowired
     private IIsMailSendTaskItemService iIsMailSendTaskItemService;
+    @Autowired
+    private IIsSystemAttributeService isSystemAttributeService;
 
     public void checkMaterialsCabinet(Long checkId) {
         Assert.notNull(checkId, "无效参数!");
@@ -60,7 +60,8 @@ public class SendEmailsTask {
             String text = isMaterialsCabinets.stream().map(IsMaterialsCabinet::getCabinetName).collect(Collectors.toList()).toString();
             for (SysUser sysUser : sysUsers) {
                 if (StringUtils.isNotBlank(sysUser.getEmail())) {
-                    EmailSender.sendLocalMail(sysUser.getEmail(), null, null,
+                    MailVO mailVo = isSystemAttributeService.getMailVo();
+                    EmailSender.sendLocalMail(sysUser.getEmail(), mailVo,
                             "定期检查物资柜提醒!", "物资柜:" + text);
                     IsCheckTaskMail isCheckTaskMail = new IsCheckTaskMail();
                     isCheckTaskMail.setChackId(checkId);
@@ -108,7 +109,8 @@ public class SendEmailsTask {
                 }
                 // 4.开始发送
                 try {
-                    EmailSender.sendLocalMail(user.getEmail(), null, null, sendTaskItem.getTitle(), sendTaskItem.getContent());
+                    MailVO mailVo = isSystemAttributeService.getMailVo();
+                    EmailSender.sendLocalMail(user.getEmail(), mailVo, sendTaskItem.getTitle(), sendTaskItem.getContent());
                     // 4.1 修改成已发送
                     iIsMailSendTaskItemService.update(Wrappers.<IsMailSendTaskItem>lambdaUpdate()
                             .eq(IsMailSendTaskItem::getMailId, sendTaskItem.getMailId())