|
@@ -1,17 +1,36 @@
|
|
|
package com.simuwang.manage.service.impl;
|
|
|
|
|
|
+import com.simuwang.base.common.enums.DeletionType;
|
|
|
import com.simuwang.base.common.enums.OpenStatusType;
|
|
|
+import com.simuwang.base.common.enums.ResultCode;
|
|
|
+import com.simuwang.base.common.util.DateUtils;
|
|
|
+import com.simuwang.base.common.util.EmailUtil;
|
|
|
+import com.simuwang.base.common.util.ExcelUtil;
|
|
|
import com.simuwang.base.common.util.StringUtil;
|
|
|
import com.simuwang.base.mapper.CompanyEmailConfigMapper;
|
|
|
+import com.simuwang.base.mapper.CompanyEmailSendHistoryMapper;
|
|
|
+import com.simuwang.base.mapper.DeletionInfoMapper;
|
|
|
+import com.simuwang.base.mapper.FundInfoMapper;
|
|
|
import com.simuwang.base.pojo.dos.CompanyEmailConfigDO;
|
|
|
+import com.simuwang.base.pojo.dos.CompanyEmailSendHistoryDO;
|
|
|
+import com.simuwang.base.pojo.dos.EmailDeletionInfoDO;
|
|
|
+import com.simuwang.base.pojo.dto.ExcelDeletionInfoDTO;
|
|
|
+import com.simuwang.base.pojo.dto.MailboxInfoDTO;
|
|
|
import com.simuwang.base.pojo.vo.CompanyEmailConfigVO;
|
|
|
import com.simuwang.manage.service.CompanyEmailConfigService;
|
|
|
+import jakarta.annotation.Resource;
|
|
|
+import jakarta.mail.Message;
|
|
|
+import jakarta.mail.Store;
|
|
|
+import jakarta.mail.internet.MimeMessage;
|
|
|
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.mail.javamail.JavaMailSender;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
+import java.io.File;
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* FileName: CompanyEmailConfigServiceImpl
|
|
@@ -23,6 +42,28 @@ import java.util.List;
|
|
|
public class CompanyEmailConfigServiceImpl implements CompanyEmailConfigService {
|
|
|
@Autowired
|
|
|
private CompanyEmailConfigMapper companyEmailConfigMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private CompanyEmailSendHistoryMapper companyEmailSendHistoryMapper;
|
|
|
+ @Autowired
|
|
|
+ private FundInfoMapper fundInfoMapper;
|
|
|
+ @Autowired
|
|
|
+ private DeletionInfoMapper deletionInfoMapper;
|
|
|
+ @Resource
|
|
|
+ private JavaMailSender javaMailSender;
|
|
|
+
|
|
|
+ @Value("${email.file.path}")
|
|
|
+ private String path;
|
|
|
+ @Value("${spring.mail.username}")
|
|
|
+ private String account;
|
|
|
+ @Value("${spring.mail.password}")
|
|
|
+ private String password;
|
|
|
+ @Value("${spring.mail.host}")
|
|
|
+ private String host;
|
|
|
+ @Value("${spring.mail.port}")
|
|
|
+ private String port;
|
|
|
+ @Value("${spring.mail.protocol}")
|
|
|
+ private String protocol;
|
|
|
@Override
|
|
|
public void saveCompanyEmailConfig(List<CompanyEmailConfigVO> companyEmailConfigVOS) {
|
|
|
try{
|
|
@@ -79,11 +120,98 @@ public class CompanyEmailConfigServiceImpl implements CompanyEmailConfigService
|
|
|
for(Integer id : idList){
|
|
|
CompanyEmailConfigDO configDO = companyEmailConfigMapper.selectCompanyEmailConfigById(id);
|
|
|
//把缺失数据的邮件发送到该公司名下的邮箱地址
|
|
|
- sendEmail(configDO.getCompanyId(),configDO.getEmail());
|
|
|
+ if(configDO.getOpenStatus().equals(OpenStatusType.YES.getCode())){
|
|
|
+ sendEmail(configDO.getCompanyId(),configDO.getEmail());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
//邮件校验处理
|
|
|
private void sendEmail(String companyId, String email) {
|
|
|
+ List<String> fundIdList = fundInfoMapper.getFundIdByCompanyId(companyId);
|
|
|
+ if(fundIdList.size() < 1){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<EmailDeletionInfoDO> emailDeletionInfoDOS = deletionInfoMapper.getDeletionInfoByFundId(fundIdList);
|
|
|
+ for(EmailDeletionInfoDO infoDO : emailDeletionInfoDOS){
|
|
|
+ infoDO.setDeletionType(DeletionType.getDeletionTypeByCode(Integer.valueOf(infoDO.getDeletionType())).getInfo());
|
|
|
+ }
|
|
|
+ if(emailDeletionInfoDOS.size() > 0){
|
|
|
+ //将数据写入excel文件
|
|
|
+ File file = writeExcelFile(emailDeletionInfoDOS);
|
|
|
+ file.setWritable(true);
|
|
|
+ file.setReadable(true);
|
|
|
+ file.setExecutable(true);
|
|
|
+ try {
|
|
|
+ MailboxInfoDTO dto = getFromEmailInfo();
|
|
|
+ EmailUtil.senEmail(dto,email,file,javaMailSender);
|
|
|
+ //发送成功之后修改数据为已发送
|
|
|
+ deletionInfoMapper.updateSendStatusByFundId(fundIdList);
|
|
|
+ //写入发送历史
|
|
|
+ saveCompanyEmailSendHistory(companyId,email,1,ResultCode.SEND_SUCCESS.getMsg());
|
|
|
+ } catch (Exception e) {
|
|
|
+ saveCompanyEmailSendHistory(companyId,email,0,e.getMessage());
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveCompanyEmailSendHistory(String companyId, String email,Integer sendStatus,String msg) {
|
|
|
+ CompanyEmailSendHistoryDO historyDO = new CompanyEmailSendHistoryDO();
|
|
|
+ historyDO.setCompanyId(companyId);
|
|
|
+ historyDO.setEmail(email);
|
|
|
+ historyDO.setSendStatus(sendStatus);
|
|
|
+ historyDO.setSendRemark(msg);
|
|
|
+ historyDO.setIsvalid(1);
|
|
|
+ historyDO.setSendTime(DateUtils.getNowDate());
|
|
|
+ historyDO.setCreateTime(DateUtils.getNowDate());
|
|
|
+ historyDO.setCreateTime(DateUtils.getNowDate());
|
|
|
+ companyEmailSendHistoryMapper.saveCompanyEmailSendHistory(historyDO);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private MailboxInfoDTO getFromEmailInfo(){
|
|
|
+ MailboxInfoDTO dto = new MailboxInfoDTO();
|
|
|
+ dto.setAccount(account);
|
|
|
+ dto.setProtocol(protocol);
|
|
|
+ dto.setPassword(password);
|
|
|
+ dto.setPort(port);
|
|
|
+ dto.setHost(host);
|
|
|
+ return dto;
|
|
|
+ }
|
|
|
|
|
|
+ private File writeExcelFile(List<EmailDeletionInfoDO> emailDeletionInfoDOS) {
|
|
|
+ Map<String,List<List<String>>> values = new HashMap<>();
|
|
|
+ List<String> head = new ArrayList<>();
|
|
|
+ head.add("基金全称");
|
|
|
+ head.add("管理人");
|
|
|
+ head.add("缺失类型");
|
|
|
+ head.add("缺失日期");
|
|
|
+ String sheetName = "基金缺失明细";
|
|
|
+ List<List<String>> dataList = new ArrayList<>();
|
|
|
+ for(EmailDeletionInfoDO dto : emailDeletionInfoDOS){
|
|
|
+ List<String> data = new ArrayList<>();
|
|
|
+ data.add(dto.getFundName());
|
|
|
+ data.add(dto.getCompanyName());
|
|
|
+ data.add(dto.getDeletionType());
|
|
|
+ data.add(dto.getDeletionDate());
|
|
|
+ dataList.add(data);
|
|
|
+ }
|
|
|
+ values.put(sheetName,dataList);
|
|
|
+ HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName,head,values,null);
|
|
|
+ File file = new File(path+"/"+DateUtils.getDate()+"基金缺失明细.xls");
|
|
|
+ if(!file.exists()){
|
|
|
+ try {
|
|
|
+ file.createNewFile();
|
|
|
+ } catch (IOException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ wb.write(file);
|
|
|
+ wb.close();
|
|
|
+ } catch (IOException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ return file;
|
|
|
}
|
|
|
}
|