Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Fedex
/
iClear-Connect-Pre-Clearance
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
zelong.shao
2024-11-18 18:16:42 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
9e24d9c8c1ae0b473236aa6417349768216a9ae0
9e24d9c8
1 parent
e80a867d
task|发送进口预清关文件邮件
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
555 additions
and
31 deletions
server/base-starter/pom.xml
server/common-dao/src/main/java/com/fedex/connect/common/model/biz/Email.java
server/common-dependencies/src/main/java/com/fedex/connect/common/dependencies/enums/biz/EmailTypeEnum.java
server/common-dependencies/src/main/java/com/fedex/connect/common/dependencies/template/clearanceEmail/ClearanceEmailTemplate.java
server/task-schedule/src/main/java/com/fedex/connect/task/data/bo/MailAttachmentBo.java
server/task-schedule/src/main/java/com/fedex/connect/task/data/dto/MailConfigDto.java
server/task-schedule/src/main/java/com/fedex/connect/task/repository/base/AbstractDaoRepository.java
server/task-schedule/src/main/java/com/fedex/connect/task/repository/dao/EmailExtMapper.java
server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/biz/IAttachmentExtRepository.java → server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/biz/IAttachmentRepository.java
server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/biz/IEmailExtRepository.java → server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/biz/IEmailRepository.java
server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/biz/impl/AttachmentExtRepositoryImpl.java → server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/biz/impl/AttachmentRepositoryImpl.java
server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/biz/impl/EmailExtRepositoryImpl.java → server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/biz/impl/EmailRepositoryImpl.java
server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/log/IEmailHistoryRepository.java
server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/log/impl/EmailHistoryRepositoryImpl.java
server/task-schedule/src/main/java/com/fedex/connect/task/service/base/BaseService.java
server/task-schedule/src/main/java/com/fedex/connect/task/service/biz/impl/PushConsignmentFileServiceImpl.java
server/task-schedule/src/main/java/com/fedex/connect/task/utils/sys/ConFileEmailUtil.java
server/task-schedule/src/main/java/com/fedex/connect/task/utils/sys/EmailUtil.java
server/base-starter/pom.xml
View file @
9e24d9c
...
...
@@ -204,6 +204,22 @@
</dependency>
<dependency>
<groupId>
org.apache.logging.log4j
</groupId>
<artifactId>
log4j-spring-boot
</artifactId>
<version>
2.17.1
</version>
<exclusions>
<exclusion>
<artifactId>
log4j-api
</artifactId>
<groupId>
org.apache.logging.log4j
</groupId>
</exclusion>
<exclusion>
<artifactId>
log4j-core
</artifactId>
<groupId>
org.apache.logging.log4j
</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>
io.jsonwebtoken
</groupId>
<artifactId>
jjwt-impl
</artifactId>
<version>
0.10.6
</version>
...
...
server/common-dao/src/main/java/com/fedex/connect/common/model/biz/Email.java
View file @
9e24d9c
...
...
@@ -61,7 +61,7 @@ public class Email implements Serializable {
/**
* 发送次数(0-3次)
*/
private
Long
sendNum
;
private
int
sendNum
;
/**
* 邮件发送时间
...
...
@@ -190,11 +190,11 @@ public class Email implements Serializable {
this
.
statusName
=
statusName
==
null
?
null
:
statusName
.
trim
();
}
public
Long
getSendNum
()
{
public
int
getSendNum
()
{
return
sendNum
;
}
public
void
setSendNum
(
Long
sendNum
)
{
public
void
setSendNum
(
int
sendNum
)
{
this
.
sendNum
=
sendNum
;
}
...
...
server/common-dependencies/src/main/java/com/fedex/connect/common/dependencies/enums/biz/EmailTypeEnum.java
View file @
9e24d9c
package
com
.
fedex
.
connect
.
common
.
dependencies
.
enums
.
biz
;
public
enum
EmailTypeEnum
{
P
ENDING
(
0L
,
"pushConFile"
,
"推送预清关文件"
),
P
USH_CON_FILE
(
0L
,
"pushConFile"
,
"推送预清关文件"
),
;
...
...
server/common-dependencies/src/main/java/com/fedex/connect/common/dependencies/template/clearanceEmail/ClearanceEmailTemplate.java
View file @
9e24d9c
...
...
@@ -11,7 +11,7 @@ public class ClearanceEmailTemplate implements EmailTemplate {
*/
@Override
public
String
getTitle
(
Object
...
arguments
)
{
return
MessageFormat
.
format
(
C
E_EMAIL
_TITLE
.
TITLE
,
arguments
);
return
MessageFormat
.
format
(
C
LEARANCE
_TITLE
.
TITLE
,
arguments
);
}
/**
...
...
@@ -19,6 +19,14 @@ public class ClearanceEmailTemplate implements EmailTemplate {
*/
@Override
public
String
getBody
(
Object
...
arguments
)
{
return
CE_EMAIL_BODY
.
BODY
;
return
CLEARANCE_BODY
.
BODY
;
}
interface
CLEARANCE_TITLE
{
String
TITLE
=
""
;
}
interface
CLEARANCE_BODY
{
String
BODY
=
""
;
}
}
...
...
server/task-schedule/src/main/java/com/fedex/connect/task/data/bo/MailAttachmentBo.java
0 → 100644
View file @
9e24d9c
package
com
.
fedex
.
connect
.
task
.
data
.
bo
;
import
java.io.File
;
public
class
MailAttachmentBo
{
private
File
file
;
private
String
fileName
;
private
String
fileType
;
public
File
getFile
()
{
return
file
;
}
public
void
setFile
(
File
file
)
{
this
.
file
=
file
;
}
public
String
getFileName
()
{
return
fileName
;
}
public
void
setFileName
(
String
fileName
)
{
this
.
fileName
=
fileName
;
}
public
String
getFileType
()
{
return
fileType
;
}
public
void
setFileType
(
String
fileType
)
{
this
.
fileType
=
fileType
;
}
public
MailAttachmentBo
()
{
}
public
MailAttachmentBo
(
File
file
,
String
fileName
)
{
this
.
file
=
file
;
this
.
fileName
=
fileName
;
}
public
MailAttachmentBo
(
File
file
,
String
fileName
,
String
fileType
)
{
this
.
file
=
file
;
this
.
fileName
=
fileName
;
this
.
fileType
=
fileType
;
}
}
server/task-schedule/src/main/java/com/fedex/connect/task/data/dto/MailConfigDto.java
0 → 100644
View file @
9e24d9c
package
com
.
fedex
.
connect
.
task
.
data
.
dto
;
import
com.fedex.connect.task.data.bo.MailAttachmentBo
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* 定义发送邮件内容对象
* @author Administrator
*/
@Data
public
class
MailConfigDto
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
8262893648898431866L
;
private
String
host
;
private
String
port
;
private
String
auth
;
/**
* 业务名称
*/
private
String
bizName
;
/**
* 发件人
*/
private
String
from
;
/**
* 发件人密码
*/
private
String
password
;
/**
* 收件人
*/
private
String
to
;
/**
* 抄送
*/
private
String
cc
;
/**
* 邮件主题
*/
private
String
subject
;
/**
* 邮件内容
*/
private
String
content
;
private
String
senderAccount
;
private
String
senderPassword
;
private
String
receiveAccount
;
private
String
ccAccount
;
private
List
<
Object
>
dataList
;
private
List
<
MailAttachmentBo
>
fileList
;
/**
* 是否启用代理(uat,prod 在外网,需要使用代理)
*/
private
String
proxyStartFlag
;
/**
* 代理服务器地址
*/
private
String
proxyHost
;
/**
* 代理服务器端口
*/
private
String
proxyPort
;
private
String
mailAccountFlag
;
@Override
public
String
toString
()
{
return
"MailMessageReq{"
+
"host='"
+
host
+
'\''
+
", port='"
+
port
+
'\''
+
", auth='"
+
auth
+
'\''
+
", bizName='"
+
bizName
+
'\''
+
", from='"
+
from
+
'\''
+
", to='"
+
to
+
'\''
+
", cc='"
+
cc
+
'\''
+
", subject='"
+
subject
+
'\''
+
", content='"
+
content
+
'\''
+
", proxyStartFlag='"
+
proxyStartFlag
+
'\''
+
", proxyHost='"
+
proxyHost
+
'\''
+
", proxyPort='"
+
proxyPort
+
'\''
+
'}'
;
}
}
server/task-schedule/src/main/java/com/fedex/connect/task/repository/base/AbstractDaoRepository.java
View file @
9e24d9c
package
com
.
fedex
.
connect
.
task
.
repository
.
base
;
import
com.fedex.connect.common.dao.biz.EmailMapper
;
import
com.fedex.connect.common.dao.log.EmailHistoryMapper
;
import
com.fedex.connect.common.dao.sys.KafkaStorageHistoryMapper
;
import
com.fedex.connect.common.dao.sys.KafkaTemporaryStorageMapper
;
import
com.fedex.connect.task.repository.dao.*
;
...
...
@@ -20,4 +22,8 @@ public class AbstractDaoRepository {
protected
AttachmentExtMapper
attachmentExtMapper
;
@Autowired
protected
PortclearEmailMappingExtMapper
portclearEmailMappingExtMapper
;
@Autowired
protected
EmailMapper
emailMapper
;
@Autowired
protected
EmailHistoryMapper
emailHistoryMapper
;
}
\ No newline at end of file
...
...
server/task-schedule/src/main/java/com/fedex/connect/task/repository/dao/EmailExtMapper.java
View file @
9e24d9c
package
com
.
fedex
.
connect
.
task
.
repository
.
dao
;
import
com.fedex.connect.common.model.biz.Email
;
import
org.apache.ibatis.annotations.Delete
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
@Mapper
public
interface
EmailExtMapper
{
List
<
Email
>
findConPushEmails
(
String
typeCode
,
String
statusCode
);
@Delete
(
"DELETE FROM T_BIZ_EMAIL WHERE ID = #{id}"
)
void
deleteById
(
@Param
(
"id"
)
Long
id
);
}
...
...
server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/biz/IAttachment
Ext
Repository.java
→
server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/biz/IAttachmentRepository.java
View file @
9e24d9c
...
...
@@ -5,7 +5,7 @@ import org.apache.ibatis.annotations.Param;
import
java.util.List
;
public
interface
IAttachment
Ext
Repository
{
public
interface
IAttachmentRepository
{
List
<
PushZipEmailDto
>
findAttachmentDetailsByBizId
(
@Param
(
"bizId"
)
Long
bizId
);
}
...
...
server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/biz/IEmail
Ext
Repository.java
→
server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/biz/IEmailRepository.java
View file @
9e24d9c
...
...
@@ -4,6 +4,10 @@ import com.fedex.connect.common.model.biz.Email;
import
java.util.List
;
public
interface
IEmail
Ext
Repository
{
public
interface
IEmailRepository
{
List
<
Email
>
findConPushEmails
(
String
typeCode
,
String
statusCode
);
void
deleteById
(
Long
id
);
void
save
(
Email
entity
);
}
...
...
server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/biz/impl/Attachment
Ext
RepositoryImpl.java
→
server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/biz/impl/AttachmentRepositoryImpl.java
View file @
9e24d9c
...
...
@@ -2,13 +2,13 @@ package com.fedex.connect.task.repository.repo.biz.impl;
import
com.fedex.connect.task.data.dto.PushZipEmailDto
;
import
com.fedex.connect.task.repository.base.AbstractDaoRepository
;
import
com.fedex.connect.task.repository.repo.biz.IAttachment
Ext
Repository
;
import
com.fedex.connect.task.repository.repo.biz.IAttachmentRepository
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
class
Attachment
ExtRepositoryImpl
extends
AbstractDaoRepository
implements
IAttachmentEx
tRepository
{
public
class
Attachment
RepositoryImpl
extends
AbstractDaoRepository
implements
IAttachmen
tRepository
{
@Override
public
List
<
PushZipEmailDto
>
findAttachmentDetailsByBizId
(
Long
bizId
)
{
...
...
server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/biz/impl/Email
Ext
RepositoryImpl.java
→
server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/biz/impl/EmailRepositoryImpl.java
View file @
9e24d9c
...
...
@@ -2,15 +2,30 @@ package com.fedex.connect.task.repository.repo.biz.impl;
import
com.fedex.connect.common.model.biz.Email
;
import
com.fedex.connect.task.repository.base.AbstractDaoRepository
;
import
com.fedex.connect.task.repository.repo.biz.IEmail
Ext
Repository
;
import
com.fedex.connect.task.repository.repo.biz.IEmailRepository
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
class
Email
ExtRepositoryImpl
extends
AbstractDaoRepository
implements
IEmailExt
Repository
{
public
class
Email
RepositoryImpl
extends
AbstractDaoRepository
implements
IEmail
Repository
{
public
List
<
Email
>
findConPushEmails
(
String
typeCode
,
String
statusCode
){
return
emailExtMapper
.
findConPushEmails
(
typeCode
,
statusCode
);
}
@Override
public
void
deleteById
(
Long
id
)
{
emailExtMapper
.
deleteById
(
id
);
}
public
void
save
(
Email
entity
){
if
(
entity
!=
null
)
{
if
(
entity
.
getId
()
==
null
||
entity
.
getId
()
<=
0
)
{
emailMapper
.
insertSelective
(
entity
);
}
else
if
(
entity
.
getId
()
!=
null
&&
entity
.
getId
()
>
0
){
emailMapper
.
updateByPrimaryKeySelective
(
entity
);
}
}
}
}
...
...
server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/log/IEmailHistoryRepository.java
0 → 100644
View file @
9e24d9c
package
com
.
fedex
.
connect
.
task
.
repository
.
repo
.
log
;
import
com.fedex.connect.common.model.log.EmailHistory
;
public
interface
IEmailHistoryRepository
{
void
save
(
EmailHistory
entity
);
}
server/task-schedule/src/main/java/com/fedex/connect/task/repository/repo/log/impl/EmailHistoryRepositoryImpl.java
0 → 100644
View file @
9e24d9c
package
com
.
fedex
.
connect
.
task
.
repository
.
repo
.
log
.
impl
;
import
com.fedex.connect.common.model.log.EmailHistory
;
import
com.fedex.connect.task.repository.base.AbstractDaoRepository
;
import
com.fedex.connect.task.repository.repo.log.IEmailHistoryRepository
;
import
org.springframework.stereotype.Repository
;
@Repository
public
class
EmailHistoryRepositoryImpl
extends
AbstractDaoRepository
implements
IEmailHistoryRepository
{
@Override
public
void
save
(
EmailHistory
entity
)
{
if
(
entity
!=
null
)
{
if
(
entity
.
getId
()
==
null
||
entity
.
getId
()
<=
0
)
{
emailHistoryMapper
.
insertSelective
(
entity
);
}
else
if
(
entity
.
getId
()
!=
null
&&
entity
.
getId
()
>
0
){
emailHistoryMapper
.
updateByPrimaryKeySelective
(
entity
);
}
}
}
}
server/task-schedule/src/main/java/com/fedex/connect/task/service/base/BaseService.java
View file @
9e24d9c
package
com
.
fedex
.
connect
.
task
.
service
.
base
;
import
com.fedex.connect.common.dependencies.repository.repo.sys.IRedisSlabRepository
;
import
com.fedex.connect.task.repository.repo.biz.IAttachment
Ext
Repository
;
import
com.fedex.connect.task.repository.repo.biz.IEmail
Ext
Repository
;
import
com.fedex.connect.task.repository.repo.biz.IAttachmentRepository
;
import
com.fedex.connect.task.repository.repo.biz.IEmailRepository
;
import
com.fedex.connect.task.repository.repo.sys.IKafkaStorageHistoryRepository
;
import
com.fedex.connect.task.repository.repo.sys.IKafkaTemporaryStorageRepository
;
import
com.fedex.connect.task.repository.repo.sys.IRedisSlabExtRepository
;
...
...
@@ -23,7 +23,7 @@ public class BaseService {
@Autowired
protected
IRedisSlabExtRepository
redisRepository
;
@Autowired
protected
IEmail
Ext
Repository
iEmailExtRepository
;
protected
IEmailRepository
iEmailExtRepository
;
@Autowired
protected
IAttachment
Ext
Repository
attachmentExtRepository
;
protected
IAttachmentRepository
attachmentExtRepository
;
}
\ No newline at end of file
...
...
server/task-schedule/src/main/java/com/fedex/connect/task/service/biz/impl/PushConsignmentFileServiceImpl.java
View file @
9e24d9c
...
...
@@ -3,13 +3,16 @@ package com.fedex.connect.task.service.biz.impl;
import
com.fedex.connect.common.dependencies.cache.CacheSystem
;
import
com.fedex.connect.common.dependencies.enums.biz.EmailStatusEnum
;
import
com.fedex.connect.common.dependencies.enums.biz.EmailTypeEnum
;
import
com.fedex.connect.common.dependencies.util.NIOFileUtils
;
import
com.fedex.connect.common.dependencies.util.ZipUtils
;
import
com.fedex.connect.common.model.biz.Email
;
import
com.fedex.connect.task.data.dto.MailConfigDto
;
import
com.fedex.connect.task.data.dto.PortFileDto
;
import
com.fedex.connect.task.data.dto.PushZipEmailDto
;
import
com.fedex.connect.task.service.base.BaseService
;
import
com.fedex.connect.task.service.biz.IPushConsignmentFileService
;
import
com.fedex.connect.task.utils.sys.ConFileEmailUtil
;
import
com.fedex.connect.task.utils.sys.EmailUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -34,6 +37,12 @@ public class PushConsignmentFileServiceImpl extends BaseService implements IPush
@Autowired
private
ConFileEmailUtil
conFileEmailUtil
;
@Autowired
private
EmailUtil
emailUtil
;
@Autowired
private
NIOFileUtils
nioFileUtils
;
/**
* @Author Szl
* @Description 功能说明 推送清关文件
...
...
@@ -46,17 +55,22 @@ public class PushConsignmentFileServiceImpl extends BaseService implements IPush
String
tempPath
=
""
;
String
finalPath
=
""
;
//查询需要发送的数据
List
<
Email
>
conPushEmails
=
iEmailExtRepository
.
findConPushEmails
(
cacheSystem
.
getDicEmailType
(
EmailTypeEnum
.
P
ENDING
.
getEnMsg
()).
getCode
(),
List
<
Email
>
conPushEmails
=
iEmailExtRepository
.
findConPushEmails
(
cacheSystem
.
getDicEmailType
(
EmailTypeEnum
.
P
USH_CON_FILE
.
getEnMsg
()).
getCode
(),
cacheSystem
.
getDicEmailStatus
(
EmailStatusEnum
.
PENDING
.
getEnMsg
()).
getCode
());
for
(
Email
conPushEmail
:
conPushEmails
)
{
//获取待发送的文件并打zip包
List
<
PushZipEmailDto
>
attachmentDetailsByBizId
=
attachmentExtRepository
.
findAttachmentDetailsByBizId
(
conPushEmail
.
getBizId
());
PortFileDto
portFileDto
=
new
PortFileDto
();
List
<
PushZipEmailDto
>
attachmentDetailsByBizId
=
attachmentExtRepository
.
findAttachmentDetailsByBizId
(
conPushEmail
.
getBizId
());
portFileDto
=
conFileEmailUtil
.
getPortZipMap
(
portFileDto
,
attachmentDetailsByBizId
,
tempPath
,
finalPath
,
zipUtils
);
//记录到发送邮件表中
//发送邮件
MailConfigDto
mailMessageReqDto
=
new
MailConfigDto
();
boolean
result
=
conFileEmailUtil
.
sendEmail
(
portFileDto
,
emailUtil
,
mailMessageReqDto
);
//根据是否成功发送邮件对文件进行备份
String
filePath
=
conFileEmailUtil
.
backFile
(
portFileDto
.
getZipPath
(),
nioFileUtils
,
result
);
//更新邮件记录表
conFileEmailUtil
.
createEmail
(
cacheSystem
,
conPushEmail
,
mailMessageReqDto
,
result
,
filePath
);
//保存入库
}
...
...
server/task-schedule/src/main/java/com/fedex/connect/task/utils/sys/ConFileEmailUtil.java
View file @
9e24d9c
package
com
.
fedex
.
connect
.
task
.
utils
.
sys
;
import
com.fedex.connect.common.dependencies.cache.CacheSystem
;
import
com.fedex.connect.common.dependencies.contants.BaseConstants
;
import
com.fedex.connect.common.dependencies.contants.BaseSeparatorConstants
;
import
com.fedex.connect.common.dependencies.enums.biz.AttachmentBizTypeEnum
;
import
com.fedex.connect.common.dependencies.enums.biz.EmailStatusEnum
;
import
com.fedex.connect.common.dependencies.template.clearanceEmail.ClearanceEmailTemplate
;
import
com.fedex.connect.common.dependencies.util.DateUtil
;
import
com.fedex.connect.common.dependencies.util.NIOFileUtils
;
import
com.fedex.connect.common.dependencies.util.ZipUtils
;
import
com.fedex.connect.common.model.bi.DictionaryEntries
;
import
com.fedex.connect.common.model.biz.Email
;
import
com.fedex.connect.common.model.log.EmailHistory
;
import
com.fedex.connect.task.data.bo.MailAttachmentBo
;
import
com.fedex.connect.task.data.dto.MailConfigDto
;
import
com.fedex.connect.task.data.dto.PortFileDto
;
import
com.fedex.connect.task.data.dto.PushZipEmailDto
;
import
com.fedex.connect.task.repository.repo.bi.IPortclearEmailMappingExtRepository
;
import
com.fedex.connect.task.repository.repo.biz.IEmailRepository
;
import
com.fedex.connect.task.repository.repo.log.IEmailHistoryRepository
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.nio.file.Paths
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
...
...
@@ -33,9 +46,18 @@ public class ConFileEmailUtil {
@Autowired
private
IPortclearEmailMappingExtRepository
portclearEmailMappingExtRepository
;
@Autowired
private
IEmailRepository
emailRepository
;
@Autowired
private
ClearanceEmailTemplate
clearanceEmailTemplate
;
@Autowired
private
IEmailHistoryRepository
emailHistoryRepository
;
/**
* @Author Szl
* @Description 功能说明 根据
口岸打包,每个口岸的文件打成
一个zip包
* @Description 功能说明 根据
运单打包,一票
一个zip包
* @Date 2024/11/14
* @param tempPath
* @param finalPath
...
...
@@ -55,7 +77,7 @@ public class ConFileEmailUtil {
filesList
.
add
(
file
);
}
}
String
date
=
DateUtil
.
formatTimeWithoutSlash
(
new
Date
());
String
date
=
DateUtil
.
yyyyMMddHHmmss
(
new
Date
());
String
fileName
=
date
+
BaseSeparatorConstants
.
SEPARATOR_UNDERLINE
+
portCode
+
BaseConstants
.
FILE_SUFFIX_KEYS
.
ZIP
;
String
fileNameTemp
=
date
+
BaseSeparatorConstants
.
SEPARATOR_UNDERLINE
+
portCode
+
BaseConstants
.
FILE_SUFFIX_KEYS
.
ZIP
+
BaseConstants
.
FILE_SUFFIX_KEYS
.
TEMP
;
FileOutputStream
fos
=
null
;
...
...
@@ -90,20 +112,183 @@ public class ConFileEmailUtil {
return
portFileDto
;
}
/**
* @Author Szl
* @Description 功能说明 发送邮件
* @Date 2024/11/18
* @param portFileDto
* @return void
*/
public
boolean
sendEmail
(
PortFileDto
portFileDto
,
EmailUtil
emailUtil
,
MailConfigDto
mailMessageReqDto
){
/**
* 获取邮件地址
*/
String
emailAddress
=
this
.
getEmailAddress
(
portFileDto
);
/**
* 构建发送邮件对象
*/
this
.
createMailMessageReqDto
(
emailAddress
,
portFileDto
,
mailMessageReqDto
);
/**
* 发送邮件
*/
boolean
result
=
emailUtil
.
sendMail
(
mailMessageReqDto
);
return
result
;
}
/**
* @Author Szl
* @Description 功能说明 构建发送邮件dto
* @Date 2024/11/18
* @param emailAddress
* @param portFileDto
* @return com.fedex.connect.task.data.dto.MailMessageReqDto
*/
private
MailConfigDto
createMailMessageReqDto
(
String
emailAddress
,
PortFileDto
portFileDto
,
MailConfigDto
mailConfigDto
){
mailConfigDto
.
setHost
(
""
);
mailConfigDto
.
setPort
(
""
);
mailConfigDto
.
setAuth
(
""
);
//设置代理
mailConfigDto
.
setProxyStartFlag
(
""
);
mailConfigDto
.
setProxyHost
(
""
);
mailConfigDto
.
setProxyPort
(
""
);
//发件人
mailConfigDto
.
setFrom
(
""
);
//发件人密码
mailConfigDto
.
setPassword
(
""
);
//ce接收人
mailConfigDto
.
setTo
(
emailAddress
);
//设置邮件标题
mailConfigDto
.
setSubject
(
clearanceEmailTemplate
.
getTitle
());
//设置邮件内容
mailConfigDto
.
setContent
(
clearanceEmailTemplate
.
getBody
());
//放入文件列表
List
<
MailAttachmentBo
>
srcFiles
=
new
ArrayList
<>();
File
file
=
new
File
(
portFileDto
.
getZipPath
());
srcFiles
.
add
(
new
MailAttachmentBo
(
file
,
""
));
mailConfigDto
.
setFileList
(
srcFiles
);
return
mailConfigDto
;
}
public
void
saveEmail
(
Email
conPushEmail
,
PortFileDto
portFileDto
){
//获取邮箱地址
/**
* @Author Szl
* @Description 功能说明 根据口岸获取邮件地址
* @Date 2024/11/18
* @param portFileDto
* @return java.lang.String
*/
private
String
getEmailAddress
(
PortFileDto
portFileDto
){
if
(
BaseConstants
.
CONSIGNMENT_TABLE_COLUMN_KEYS
.
DEST_IATA_CODE
.
equals
(
portFileDto
.
getDestIataCode
())){
portFileDto
.
setDestIataCode
(
AttachmentBizTypeEnum
.
OTH
.
getEnMsg
()
);
portFileDto
.
setDestIataCode
(
"OTHER"
);
}
String
emailByPortCode
=
portclearEmailMappingExtRepository
.
findEmailByPortCode
(
portFileDto
.
getDestIataCode
());
if
(
StringUtils
.
isEmpty
(
emailByPortCode
)){
emailByPortCode
=
portclearEmailMappingExtRepository
.
findEmailByPortCode
(
"OTHER"
);
}
return
emailByPortCode
;
}
/**
* @Author Szl
* @Description 功能说明 创建邮件记录
* @Date 2024/11/18
* @param cacheSystem
* @param conPushEmail
* @param mailMessageReqDto
* @param result
* @return void
*/
public
void
createEmail
(
CacheSystem
cacheSystem
,
Email
conPushEmail
,
MailConfigDto
mailMessageReqDto
,
boolean
result
,
String
filePath
){
DictionaryEntries
pending
=
cacheSystem
.
getDicEmailStatus
(
EmailStatusEnum
.
PENDING
.
getEnMsg
());
DictionaryEntries
success
=
cacheSystem
.
getDicEmailStatus
(
EmailStatusEnum
.
SUCCESS
.
getEnMsg
());
DictionaryEntries
failed
=
cacheSystem
.
getDicEmailStatus
(
EmailStatusEnum
.
FAILED
.
getEnMsg
());
conPushEmail
.
setToAddress
(
mailMessageReqDto
.
getTo
());
conPushEmail
.
setCcAddress
(
mailMessageReqDto
.
getCc
());
conPushEmail
.
setSubject
(
mailMessageReqDto
.
getSubject
());
conPushEmail
.
setBody
(
mailMessageReqDto
.
getContent
());
conPushEmail
.
setSendTime
(
new
Date
());
conPushEmail
.
setFilePath
(
filePath
);
//如果失败次数小于三则更新为待处理,继续处理
if
(
result
){
conPushEmail
.
setTypeCode
(
success
.
getCode
());
conPushEmail
.
setTypeName
(
success
.
getEnglishName
());
}
else
{
if
(
conPushEmail
.
getSendNum
()<
3
){
conPushEmail
.
setTypeCode
(
pending
.
getCode
());
conPushEmail
.
setTypeName
(
pending
.
getEnglishName
());
conPushEmail
.
setSendNum
(
conPushEmail
.
getSendNum
()+
1
);
}
else
{
conPushEmail
.
setTypeCode
(
failed
.
getCode
());
conPushEmail
.
setTypeName
(
failed
.
getEnglishName
());
}
}
}
/**
* @Author Szl
* @Description 功能说明 备份文件
* @Date 2024/11/18
* @param filePath
* @param nioFileUtils
* @param result
* @return java.lang.String
*/
public
String
backFile
(
String
filePath
,
NIOFileUtils
nioFileUtils
,
boolean
result
){
File
file
=
new
File
(
filePath
);
String
targetDirPath
=
null
;
try
{
// 获取文件的扩展名
String
extension
=
filePath
.
substring
(
filePath
.
lastIndexOf
(
"."
));
// 生成新的文件名
String
fileName
=
String
.
format
(
"%s%s%s%s"
,
""
,
""
,
new
SimpleDateFormat
(
"yyyyMMddHHmmss"
).
format
(
new
Date
()),
extension
);
String
basePath
=
""
;
// 构建目标文件路径
targetDirPath
=
String
.
join
(
File
.
separator
,
basePath
,
fileName
);
// 复制文件
nioFileUtils
.
copyFile
(
file
,
targetDirPath
);
nioFileUtils
.
deleteTempFile
(
Paths
.
get
(
filePath
));
}
catch
(
Exception
e
)
{
String
errorMsg
=
String
.
format
(
"文件复制失败:%s,portId:%s,fileName:%s"
,
e
.
getMessage
());
// 错误处理
log
.
error
(
errorMsg
,
e
);
}
return
targetDirPath
;
}
/**
* @Author Szl
* @Description 功能说明 保存数据
* @Date 2024/11/18
* @param conPushEmail
* @param result
* @return void
*/
@Transactional
private
void
saveEmail
(
Email
conPushEmail
,
boolean
result
){
EmailHistory
emailHistory
=
new
EmailHistory
();
BeanUtils
.
copyProperties
(
conPushEmail
,
emailHistory
);
if
(
result
){
//成功后需要将业务表数据删除,保存至历史表
emailRepository
.
deleteById
(
conPushEmail
.
getId
());
emailHistoryRepository
.
save
(
emailHistory
);
}
else
{
//失败则根据是否第三次,如果是第三次失败则删除,保存到历史表
if
(
conPushEmail
.
getSendNum
()
==
3
){
emailRepository
.
deleteById
(
conPushEmail
.
getId
());
emailHistoryRepository
.
save
(
emailHistory
);
}
else
{
emailRepository
.
save
(
conPushEmail
);
}
}
conPushEmail
.
setToAddress
(
emailByPortCode
);
conPushEmail
.
setSubject
();
conPushEmail
.
setBody
();
conPushEmail
.
setFilePath
(
portFileDto
.
getZipPath
());
}
...
...
server/task-schedule/src/main/java/com/fedex/connect/task/utils/sys/EmailUtil.java
0 → 100644
View file @
9e24d9c
package
com
.
fedex
.
connect
.
task
.
utils
.
sys
;
import
com.fedex.connect.task.data.bo.MailAttachmentBo
;
import
com.fedex.connect.task.data.dto.MailConfigDto
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.mail.javamail.JavaMailSenderImpl
;
import
org.springframework.mail.javamail.MimeMessageHelper
;
import
org.springframework.stereotype.Component
;
import
javax.mail.internet.InternetAddress
;
import
javax.mail.internet.MimeMessage
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.Optional
;
import
java.util.Properties
;
@Slf4j
@Component
public
class
EmailUtil
{
public
static
boolean
sendMail
(
MailConfigDto
mailConfig
)
{
System
.
setProperty
(
"mail.mime.splitlongparameters"
,
"false"
);
try
{
JavaMailSenderImpl
senderImpl
=
new
JavaMailSenderImpl
();
senderImpl
.
setHost
(
mailConfig
.
getHost
());
senderImpl
.
setPort
(
Integer
.
parseInt
(
Optional
.
ofNullable
(
mailConfig
.
getPort
()).
orElse
(
"25"
)));
if
(
"true"
.
equalsIgnoreCase
(
mailConfig
.
getMailAccountFlag
())){
log
.
info
(
"set user and pwd"
);
senderImpl
.
setUsername
(
mailConfig
.
getSenderAccount
());
senderImpl
.
setPassword
(
mailConfig
.
getSenderPassword
());
}
Properties
prop
=
new
Properties
();
prop
.
put
(
"mail.smtp.timeout"
,
"60000"
);
senderImpl
.
setJavaMailProperties
(
prop
);
MimeMessage
mailMessage
=
senderImpl
.
createMimeMessage
();
MimeMessageHelper
messageHelper
=
new
MimeMessageHelper
(
mailMessage
,
true
,
"UTF-8"
);
InternetAddress
[]
addressesTo
=
null
;
String
receiveAccount
=
mailConfig
.
getReceiveAccount
();
if
(!
StringUtils
.
isBlank
(
receiveAccount
)&&
receiveAccount
.
trim
().
length
()
>
0
)
{
receiveAccount
=
receiveAccount
.
trim
();
String
[]
receiveList
=
receiveAccount
.
split
(
","
);
int
receiveCount
=
receiveList
.
length
;
if
(
receiveCount
>
0
)
{
addressesTo
=
new
InternetAddress
[
receiveCount
];
for
(
int
i
=
0
;
i
<
receiveCount
;
i
++)
{
addressesTo
[
i
]
=
new
InternetAddress
(
receiveList
[
i
]);
}
}
}
messageHelper
.
setTo
(
addressesTo
);
// 4,抄送人
InternetAddress
[]
addressesCc
=
null
;
String
chaoSongCount
=
mailConfig
.
getCcAccount
();
if
(
StringUtils
.
isNotBlank
(
chaoSongCount
)
&&
StringUtils
.
trimToEmpty
(
chaoSongCount
).
length
()
>
0
)
{
String
[]
copyList
=
chaoSongCount
.
split
(
","
);
int
copyCount
=
copyList
.
length
;
if
(
copyCount
>
0
)
{
addressesCc
=
new
InternetAddress
[
copyCount
];
for
(
int
i
=
0
;
i
<
copyCount
;
i
++)
{
addressesCc
[
i
]
=
new
InternetAddress
(
copyList
[
i
]);
}
}
messageHelper
.
setCc
(
addressesCc
);
}
messageHelper
.
setFrom
(
mailConfig
.
getSenderAccount
(),
mailConfig
.
getBizName
());
messageHelper
.
setSubject
(
mailConfig
.
getSubject
());
messageHelper
.
setText
(
mailConfig
.
getContent
(),
true
);
List
<
MailAttachmentBo
>
fileList
=
mailConfig
.
getFileList
();
if
(
Objects
.
nonNull
(
fileList
)){
for
(
int
i
=
0
,
maxi
=
fileList
.
size
();
i
<
maxi
;
i
++)
{
MailAttachmentBo
bo
=
fileList
.
get
(
i
);
if
(
bo
!=
null
){
messageHelper
.
addAttachment
(
bo
.
getFileName
(),
bo
.
getFile
());
}
}
}
senderImpl
.
send
(
mailMessage
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
"发送邮件失败..........."
,
e
);
}
return
false
;
}
}
Please
register
or
login
to post a comment