|
@@ -1,6 +1,7 @@
|
|
package com.simuwang.manage.service.impl;
|
|
package com.simuwang.manage.service.impl;
|
|
|
|
|
|
import com.simuwang.base.common.enums.DeletionType;
|
|
import com.simuwang.base.common.enums.DeletionType;
|
|
|
|
+import com.simuwang.base.common.enums.Frequency;
|
|
import com.simuwang.base.common.enums.OpenStatusType;
|
|
import com.simuwang.base.common.enums.OpenStatusType;
|
|
import com.simuwang.base.common.enums.ResultCode;
|
|
import com.simuwang.base.common.enums.ResultCode;
|
|
import com.simuwang.base.common.util.DateUtils;
|
|
import com.simuwang.base.common.util.DateUtils;
|
|
@@ -9,9 +10,8 @@ import com.simuwang.base.common.util.ExcelUtil;
|
|
import com.simuwang.base.common.util.StringUtil;
|
|
import com.simuwang.base.common.util.StringUtil;
|
|
import com.simuwang.base.mapper.daq.*;
|
|
import com.simuwang.base.mapper.daq.*;
|
|
import com.simuwang.base.mapper.daq.system.SysConfigMapper;
|
|
import com.simuwang.base.mapper.daq.system.SysConfigMapper;
|
|
-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.dos.*;
|
|
|
|
+import com.simuwang.base.pojo.dto.EmailInfoDTO;
|
|
import com.simuwang.base.pojo.dto.MailboxInfoDTO;
|
|
import com.simuwang.base.pojo.dto.MailboxInfoDTO;
|
|
import com.simuwang.base.pojo.vo.CompanyEmailConfigVO;
|
|
import com.simuwang.base.pojo.vo.CompanyEmailConfigVO;
|
|
import com.simuwang.manage.service.CompanyEmailConfigService;
|
|
import com.simuwang.manage.service.CompanyEmailConfigService;
|
|
@@ -50,6 +50,8 @@ public class CompanyEmailConfigServiceImpl implements CompanyEmailConfigService
|
|
private FundInfoMapper fundInfoMapper;
|
|
private FundInfoMapper fundInfoMapper;
|
|
@Autowired
|
|
@Autowired
|
|
private DeletionInfoMapper deletionInfoMapper;
|
|
private DeletionInfoMapper deletionInfoMapper;
|
|
|
|
+ @Autowired
|
|
|
|
+ private DeletionTaskLogInfoMapper deletionTaskLogInfoMapper;
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private SysConfigMapper sysConfigMapper;
|
|
private SysConfigMapper sysConfigMapper;
|
|
@@ -58,6 +60,12 @@ public class CompanyEmailConfigServiceImpl implements CompanyEmailConfigService
|
|
|
|
|
|
@Value("${email.file.path}")
|
|
@Value("${email.file.path}")
|
|
private String path;
|
|
private String path;
|
|
|
|
+ @Autowired
|
|
|
|
+ private FundReportFrequencyMapper fundReportFrequencyMapper;
|
|
|
|
+ @Autowired
|
|
|
|
+ private NavMapper navMapper;
|
|
|
|
+ @Autowired
|
|
|
|
+ private AssetMapper assetMapper;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public ResultVo saveCompanyEmailConfig(List<CompanyEmailConfigVO> companyEmailConfigVOS) {
|
|
public ResultVo saveCompanyEmailConfig(List<CompanyEmailConfigVO> companyEmailConfigVOS) {
|
|
@@ -149,9 +157,10 @@ public class CompanyEmailConfigServiceImpl implements CompanyEmailConfigService
|
|
//邮件校验处理
|
|
//邮件校验处理
|
|
public void sendEmail(String companyId, String emails) {
|
|
public void sendEmail(String companyId, String emails) {
|
|
List<String> fundIdList = fundInfoMapper.getFundIdByCompanyId(companyId);
|
|
List<String> fundIdList = fundInfoMapper.getFundIdByCompanyId(companyId);
|
|
- List<EmailDeletionInfoDO> emailDeletionInfoDOS = deletionInfoMapper.selectDeletionInfoByFundId(fundIdList);
|
|
|
|
- for(EmailDeletionInfoDO infoDO : emailDeletionInfoDOS){
|
|
|
|
- infoDO.setDeletionType(DeletionType.getDeletionTypeByCode(Integer.valueOf(infoDO.getDeletionType())).getInfo());
|
|
|
|
|
|
+ List<EmailDeletionInfoDO> emailDeletionInfoDOS = new ArrayList<>();
|
|
|
|
+ for (String fundId : fundIdList) {
|
|
|
|
+ getNavDeletion(fundId,emailDeletionInfoDOS);
|
|
|
|
+ getAssetDeletion(fundId,emailDeletionInfoDOS);
|
|
}
|
|
}
|
|
if(emailDeletionInfoDOS.size() > 0){
|
|
if(emailDeletionInfoDOS.size() > 0){
|
|
try {
|
|
try {
|
|
@@ -182,6 +191,239 @@ public class CompanyEmailConfigServiceImpl implements CompanyEmailConfigService
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private void getNavDeletion(String fundId, List<EmailDeletionInfoDO> emailDeletionInfoDOS) {
|
|
|
|
+ List<EmailDeletionInfoDO> fundEmailDeletionInfoDOList = deletionInfoMapper.selectNavDeletionInfoByFundId(fundId);
|
|
|
|
+ if(fundEmailDeletionInfoDOList.isEmpty()){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ Map<Integer, List<EmailDeletionInfoDO>> channelDeletionMap = fundEmailDeletionInfoDOList.stream().collect(Collectors.groupingBy(EmailDeletionInfoDO::getChannelId));
|
|
|
|
+ FundReportFrequencyDO fundReportFrequencyDO = fundReportFrequencyMapper.getFrequencyByFundId(fundId);
|
|
|
|
+ if(fundReportFrequencyDO == null){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ for (Integer channelId : channelDeletionMap.keySet()) {
|
|
|
|
+ List<EmailDeletionInfoDO> channelEmailDeletionInfoDOList = channelDeletionMap.get(channelId);
|
|
|
|
+ if(channelEmailDeletionInfoDOList.isEmpty()){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ //根据渠道ID和基金ID去查最新的净值日期
|
|
|
|
+ Date priceDate = navMapper.selectMaxPriceDate(channelId,fundId);
|
|
|
|
+ if(priceDate == null){
|
|
|
|
+ FundInfoDO fundInformationDO = fundInfoMapper.searchFundDetail(fundId);
|
|
|
|
+ if(fundInformationDO != null && fundInformationDO.getInceptionDate() == null){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ try{
|
|
|
|
+ priceDate = DateUtils.parse(fundInformationDO.getInceptionDate(),"yyyy-MM-dd");
|
|
|
|
+ }catch (Exception e){
|
|
|
|
+ logger.error(e.getMessage(),e);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(Frequency.DAY.getCode().equals(fundReportFrequencyDO.getNavFrequency())){
|
|
|
|
+ List<DeletionTaskLogInfoDO> deletionTaskLogInfoDOList = deletionTaskLogInfoMapper.selectDeletionTaskLogInfoDO(fundId,channelId,fundReportFrequencyDO.getNavFrequency(),DateUtils.format(priceDate,"yyyy-MM-dd"),DeletionType.NAV_DELETION.getCode());
|
|
|
|
+ //最新净值不再更新,超过五次就不再发送
|
|
|
|
+ if(deletionTaskLogInfoDOList.size() >= 5){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ DeletionTaskLogInfoDO deletionTaskLogInfoDO = new DeletionTaskLogInfoDO();
|
|
|
|
+ deletionTaskLogInfoDO.setChannelId(channelId);
|
|
|
|
+ deletionTaskLogInfoDO.setFundId(fundId);
|
|
|
|
+ deletionTaskLogInfoDO.setIsvalid(1);
|
|
|
|
+ deletionTaskLogInfoDO.setCreateTime(new Date());
|
|
|
|
+ deletionTaskLogInfoDO.setUpdateTime(new Date());
|
|
|
|
+ deletionTaskLogInfoDO.setPriceDate(DateUtils.format(priceDate,"yyyy-MM-dd"));
|
|
|
|
+ deletionTaskLogInfoDO.setFrequency(fundReportFrequencyDO.getNavFrequency());
|
|
|
|
+ deletionTaskLogInfoDO.setDeletionType(DeletionType.NAV_DELETION.getCode());
|
|
|
|
+ deletionTaskLogInfoMapper.saveDeletionTaskLogInfoDO(deletionTaskLogInfoDO);
|
|
|
|
+ }
|
|
|
|
+ if(Frequency.WEEK.getCode().equals(fundReportFrequencyDO.getNavFrequency())){
|
|
|
|
+ List<DeletionTaskLogInfoDO> deletionTaskLogInfoDOList = deletionTaskLogInfoMapper.selectDeletionTaskLogInfoDO(fundId,channelId,fundReportFrequencyDO.getNavFrequency(),DateUtils.format(priceDate,"yyyy-MM-dd"),DeletionType.NAV_DELETION.getCode());
|
|
|
|
+ //最新净值不再更新,超过3次就不再发送
|
|
|
|
+ if(deletionTaskLogInfoDOList.size() >= 3){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ DeletionTaskLogInfoDO deletionTaskLogInfoDO = new DeletionTaskLogInfoDO();
|
|
|
|
+ deletionTaskLogInfoDO.setChannelId(channelId);
|
|
|
|
+ deletionTaskLogInfoDO.setFundId(fundId);
|
|
|
|
+ deletionTaskLogInfoDO.setIsvalid(1);
|
|
|
|
+ deletionTaskLogInfoDO.setCreateTime(new Date());
|
|
|
|
+ deletionTaskLogInfoDO.setUpdateTime(new Date());
|
|
|
|
+ deletionTaskLogInfoDO.setPriceDate(DateUtils.format(priceDate,"yyyy-MM-dd"));
|
|
|
|
+ deletionTaskLogInfoDO.setFrequency(fundReportFrequencyDO.getNavFrequency());
|
|
|
|
+ deletionTaskLogInfoDO.setDeletionType(DeletionType.NAV_DELETION.getCode());
|
|
|
|
+ deletionTaskLogInfoMapper.saveDeletionTaskLogInfoDO(deletionTaskLogInfoDO);
|
|
|
|
+ }
|
|
|
|
+ if(Frequency.MONTH.getCode().equals(fundReportFrequencyDO.getNavFrequency())){
|
|
|
|
+ List<DeletionTaskLogInfoDO> deletionTaskLogInfoDOList = deletionTaskLogInfoMapper.selectDeletionTaskLogInfoDO(fundId,channelId,fundReportFrequencyDO.getNavFrequency(),DateUtils.format(priceDate,"yyyy-MM-dd"),DeletionType.NAV_DELETION.getCode());
|
|
|
|
+ //最新净值不再更新,超过1次就不再发送
|
|
|
|
+ if(deletionTaskLogInfoDOList.size() >= 1){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ DeletionTaskLogInfoDO deletionTaskLogInfoDO = new DeletionTaskLogInfoDO();
|
|
|
|
+ deletionTaskLogInfoDO.setChannelId(channelId);
|
|
|
|
+ deletionTaskLogInfoDO.setFundId(fundId);
|
|
|
|
+ deletionTaskLogInfoDO.setIsvalid(1);
|
|
|
|
+ deletionTaskLogInfoDO.setCreateTime(new Date());
|
|
|
|
+ deletionTaskLogInfoDO.setUpdateTime(new Date());
|
|
|
|
+ deletionTaskLogInfoDO.setPriceDate(DateUtils.format(priceDate,"yyyy-MM-dd"));
|
|
|
|
+ deletionTaskLogInfoDO.setFrequency(fundReportFrequencyDO.getNavFrequency());
|
|
|
|
+ deletionTaskLogInfoDO.setDeletionType(DeletionType.NAV_DELETION.getCode());
|
|
|
|
+ deletionTaskLogInfoMapper.saveDeletionTaskLogInfoDO(deletionTaskLogInfoDO);
|
|
|
|
+ }
|
|
|
|
+ for(EmailDeletionInfoDO infoDO : channelEmailDeletionInfoDOList){
|
|
|
|
+ infoDO.setDeletionType(DeletionType.getDeletionTypeByCode(Integer.valueOf(infoDO.getDeletionType())).getInfo());
|
|
|
|
+ }
|
|
|
|
+ emailDeletionInfoDOS.addAll(channelEmailDeletionInfoDOList);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void getAssetDeletion(String fundId, List<EmailDeletionInfoDO> emailDeletionInfoDOS) {
|
|
|
|
+ List<EmailDeletionInfoDO> fundEmailDeletionInfoDOList = deletionInfoMapper.selectAssetDeletionInfoByFundId(fundId);
|
|
|
|
+ if(fundEmailDeletionInfoDOList.isEmpty()){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ Map<Integer, List<EmailDeletionInfoDO>> channelDeletionMap = fundEmailDeletionInfoDOList.stream().collect(Collectors.groupingBy(EmailDeletionInfoDO::getChannelId));
|
|
|
|
+ FundReportFrequencyDO fundReportFrequencyDO = fundReportFrequencyMapper.getFrequencyByFundId(fundId);
|
|
|
|
+ if(fundReportFrequencyDO == null){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ for (Integer channelId : channelDeletionMap.keySet()) {
|
|
|
|
+ List<EmailDeletionInfoDO> channelEmailDeletionInfoDOList = channelDeletionMap.get(channelId);
|
|
|
|
+ if(channelEmailDeletionInfoDOList.isEmpty()){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ //根据渠道ID和基金ID去查最新的净值日期
|
|
|
|
+ Date priceDate = assetMapper.selectMaxPriceDate(channelId,fundId);
|
|
|
|
+ if(priceDate == null){
|
|
|
|
+ FundInfoDO fundInformationDO = fundInfoMapper.searchFundDetail(fundId);
|
|
|
|
+ if(fundInformationDO != null && fundInformationDO.getInceptionDate() == null){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ try{
|
|
|
|
+ priceDate = DateUtils.parse(fundInformationDO.getInceptionDate(),"yyyy-MM-dd");
|
|
|
|
+ }catch (Exception e){
|
|
|
|
+ logger.error(e.getMessage(),e);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(Frequency.DAY.getCode().equals(fundReportFrequencyDO.getAssetFrequency())){
|
|
|
|
+ List<DeletionTaskLogInfoDO> deletionTaskLogInfoDOList = deletionTaskLogInfoMapper.selectDeletionTaskLogInfoDO(fundId,channelId,fundReportFrequencyDO.getNavFrequency(),DateUtils.format(priceDate,"yyyy-MM-dd"),DeletionType.NAV_DELETION.getCode());
|
|
|
|
+ //最新净值不再更新,超过五次就不再发送
|
|
|
|
+ if(deletionTaskLogInfoDOList.size() >= 5){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ DeletionTaskLogInfoDO deletionTaskLogInfoDO = new DeletionTaskLogInfoDO();
|
|
|
|
+ deletionTaskLogInfoDO.setChannelId(channelId);
|
|
|
|
+ deletionTaskLogInfoDO.setFundId(fundId);
|
|
|
|
+ deletionTaskLogInfoDO.setIsvalid(1);
|
|
|
|
+ deletionTaskLogInfoDO.setCreateTime(new Date());
|
|
|
|
+ deletionTaskLogInfoDO.setUpdateTime(new Date());
|
|
|
|
+ deletionTaskLogInfoDO.setPriceDate(DateUtils.format(priceDate,"yyyy-MM-dd"));
|
|
|
|
+ deletionTaskLogInfoDO.setFrequency(fundReportFrequencyDO.getNavFrequency());
|
|
|
|
+ deletionTaskLogInfoDO.setDeletionType(DeletionType.ASSET_DELETION.getCode());
|
|
|
|
+ deletionTaskLogInfoMapper.saveDeletionTaskLogInfoDO(deletionTaskLogInfoDO);
|
|
|
|
+ }
|
|
|
|
+ if(Frequency.WEEK.getCode().equals(fundReportFrequencyDO.getAssetFrequency())){
|
|
|
|
+ List<DeletionTaskLogInfoDO> deletionTaskLogInfoDOList = deletionTaskLogInfoMapper.selectDeletionTaskLogInfoDO(fundId,channelId,fundReportFrequencyDO.getNavFrequency(),DateUtils.format(priceDate,"yyyy-MM-dd"),DeletionType.NAV_DELETION.getCode());
|
|
|
|
+ //最新净值不再更新,超过3次就不再发送
|
|
|
|
+ if(deletionTaskLogInfoDOList.size() >= 3){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ DeletionTaskLogInfoDO deletionTaskLogInfoDO = new DeletionTaskLogInfoDO();
|
|
|
|
+ deletionTaskLogInfoDO.setChannelId(channelId);
|
|
|
|
+ deletionTaskLogInfoDO.setFundId(fundId);
|
|
|
|
+ deletionTaskLogInfoDO.setIsvalid(1);
|
|
|
|
+ deletionTaskLogInfoDO.setCreateTime(new Date());
|
|
|
|
+ deletionTaskLogInfoDO.setUpdateTime(new Date());
|
|
|
|
+ deletionTaskLogInfoDO.setPriceDate(DateUtils.format(priceDate,"yyyy-MM-dd"));
|
|
|
|
+ deletionTaskLogInfoDO.setFrequency(fundReportFrequencyDO.getNavFrequency());
|
|
|
|
+ deletionTaskLogInfoDO.setDeletionType(DeletionType.ASSET_DELETION.getCode());
|
|
|
|
+ deletionTaskLogInfoMapper.saveDeletionTaskLogInfoDO(deletionTaskLogInfoDO);
|
|
|
|
+ }
|
|
|
|
+ if(Frequency.MONTH.getCode().equals(fundReportFrequencyDO.getAssetFrequency())){
|
|
|
|
+ List<DeletionTaskLogInfoDO> deletionTaskLogInfoDOList = deletionTaskLogInfoMapper.selectDeletionTaskLogInfoDO(fundId,channelId,fundReportFrequencyDO.getNavFrequency(),DateUtils.format(priceDate,"yyyy-MM-dd"),DeletionType.NAV_DELETION.getCode());
|
|
|
|
+ //最新净值不再更新,超过1次就不再发送
|
|
|
|
+ if(deletionTaskLogInfoDOList.size() >= 1){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ DeletionTaskLogInfoDO deletionTaskLogInfoDO = new DeletionTaskLogInfoDO();
|
|
|
|
+ deletionTaskLogInfoDO.setChannelId(channelId);
|
|
|
|
+ deletionTaskLogInfoDO.setFundId(fundId);
|
|
|
|
+ deletionTaskLogInfoDO.setIsvalid(1);
|
|
|
|
+ deletionTaskLogInfoDO.setCreateTime(new Date());
|
|
|
|
+ deletionTaskLogInfoDO.setUpdateTime(new Date());
|
|
|
|
+ deletionTaskLogInfoDO.setPriceDate(DateUtils.format(priceDate,"yyyy-MM-dd"));
|
|
|
|
+ deletionTaskLogInfoDO.setFrequency(fundReportFrequencyDO.getNavFrequency());
|
|
|
|
+ deletionTaskLogInfoDO.setDeletionType(DeletionType.ASSET_DELETION.getCode());
|
|
|
|
+ deletionTaskLogInfoMapper.saveDeletionTaskLogInfoDO(deletionTaskLogInfoDO);
|
|
|
|
+ }
|
|
|
|
+ for(EmailDeletionInfoDO infoDO : channelEmailDeletionInfoDOList){
|
|
|
|
+ infoDO.setDeletionType(DeletionType.getDeletionTypeByCode(Integer.valueOf(infoDO.getDeletionType())).getInfo());
|
|
|
|
+ }
|
|
|
|
+ emailDeletionInfoDOS.addAll(channelEmailDeletionInfoDOList);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ @Override
|
|
|
|
+ public void sendDistributeEmail(String companyId, String emails) {
|
|
|
|
+ List<String> fundIdList = fundInfoMapper.getFundIdByCompanyId(companyId);
|
|
|
|
+ List<EmailDeletionInfoDO> emailDeletionInfoDOS = new ArrayList<>();
|
|
|
|
+ for (String fundId : fundIdList) {
|
|
|
|
+ List<EmailDeletionInfoDO> distributeDeletionList = deletionInfoMapper.selectDistributeDeletionInfoByFundId(fundId);
|
|
|
|
+ if(distributeDeletionList.isEmpty()){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ DistributeDeletionInfoDO distributeDeletionInfoDO = deletionInfoMapper.getDistributeDeletionInfo(fundId);
|
|
|
|
+ //查询第一次缺失日期,如果一样就不在发送,不一样才发生,同时更新最新的最小缺失日期
|
|
|
|
+ if(distributeDeletionInfoDO == null){
|
|
|
|
+ distributeDeletionInfoDO = new DistributeDeletionInfoDO();
|
|
|
|
+ distributeDeletionInfoDO.setFundId(fundId);
|
|
|
|
+ distributeDeletionInfoDO.setDeletionDate(distributeDeletionList.get(0).getDeletionDate());
|
|
|
|
+ distributeDeletionInfoDO.setIsvalid(1);
|
|
|
|
+ distributeDeletionInfoDO.setUpdateTime(new Date());
|
|
|
|
+ distributeDeletionInfoDO.setCreateTime(new Date());
|
|
|
|
+ deletionInfoMapper.saveDistributeFirstDeletion(distributeDeletionInfoDO);
|
|
|
|
+ }else{
|
|
|
|
+ String deletionDate = distributeDeletionInfoDO.getDeletionDate();
|
|
|
|
+ if(deletionDate.equals(distributeDeletionList.get(0).getDeletionDate())){
|
|
|
|
+ continue;
|
|
|
|
+ }else{
|
|
|
|
+ distributeDeletionInfoDO.setDeletionDate(distributeDeletionList.get(0).getDeletionDate());
|
|
|
|
+ deletionInfoMapper.updateDistributeDeletionInfoDO(distributeDeletionInfoDO);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ for(EmailDeletionInfoDO infoDO : distributeDeletionList){
|
|
|
|
+ infoDO.setDeletionType(DeletionType.getDeletionTypeByCode(Integer.valueOf(infoDO.getDeletionType())).getInfo());
|
|
|
|
+ }
|
|
|
|
+ emailDeletionInfoDOS.addAll(distributeDeletionList);
|
|
|
|
+ }
|
|
|
|
+ if(emailDeletionInfoDOS.size() > 0){
|
|
|
|
+ try {
|
|
|
|
+ //将数据写入excel文件
|
|
|
|
+ File file = writeExcelFile(emailDeletionInfoDOS);
|
|
|
|
+ file.setWritable(true);
|
|
|
|
+ file.setReadable(true);
|
|
|
|
+ file.setExecutable(true);
|
|
|
|
+ MailboxInfoDTO dto = getFromEmailInfo();
|
|
|
|
+ // "<p>您好,附件为产品的数据未发送到最新,麻烦尽快发送缺失的数据。若是产品清算或者有其他原因不再发送数据,还请将产品的清算日期或者不再发送数据的原因发送给我们,非常感谢~\n</p>";
|
|
|
|
+ String htmlText = sysConfigMapper.selectConfigByKey("deletion_distribute_email_body");
|
|
|
|
+ String emailTitle = sysConfigMapper.selectConfigByKey("deletion_distribute_email_title");
|
|
|
|
+ EmailUtil.senEmail(dto,emails,List.of(file),htmlText,sysConfigMapper.selectConfigByKey("email.host")==null?"":sysConfigMapper.selectConfigByKey("email.host"),emailTitle);
|
|
|
|
+ //发送成功之后修改数据为已发送
|
|
|
|
+ deletionInfoMapper.updateSendStatusByFundId(fundIdList);
|
|
|
|
+ //写入发送历史
|
|
|
|
+ String[] emailList = emails.split(";");
|
|
|
|
+ for(String email : emailList){
|
|
|
|
+ saveCompanyEmailSendHistory(companyId,email,1,ResultCode.SEND_SUCCESS.getMsg());
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ String[] emailList = emails.split(";");
|
|
|
|
+ for(String email : emailList){
|
|
|
|
+ saveCompanyEmailSendHistory(companyId,email,0,e.getMessage());
|
|
|
|
+ }
|
|
|
|
+ logger.error(e.getMessage(),e);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
private void saveCompanyEmailSendHistory(String companyId, String email,Integer sendStatus,String msg) {
|
|
private void saveCompanyEmailSendHistory(String companyId, String email,Integer sendStatus,String msg) {
|
|
CompanyEmailSendHistoryDO historyDO = new CompanyEmailSendHistoryDO();
|
|
CompanyEmailSendHistoryDO historyDO = new CompanyEmailSendHistoryDO();
|